Requirements Engineering Processes
Download
Report
Transcript Requirements Engineering Processes
UML – Unified Modeling
Language (1)
Bartosz Baliś,
Na podstawie, m.in.:
Introduction to UML: Structural and Use Case
Modeling, Cris Kobryn
Projektowanie Obiektowe, Ian Sommerville
Agile modeling: http://www.agilemodeling.com
Wstęp
UML – Unified Modeling Language
Graficzny język do analizy i projektowania obiektowego
Standaryzuje kilka metod graficznej reprezentacji
UML jest językiem – posiada składnię (notacja graficzna)
i semantykę (znaczenie symboli graficznych)
Diagramy
4 strukturalne (klas, obiektów, komponentów, wdrożeń)
5 do modelowania zachowania (przypadków użycia, sekwencji,
aktywności, współpracy / kolaboracji, stanów)
3 do zarządzania modelem (pakiety, podsystemy, modele)
Historia
UML 1.1 – 1997
UML 1.3 – listopad 1999
UML 1.4
UML 1.5
Obecnie – UML 2.0 – znaczne zmiany
Zasadnicze składniki UML
Elementy modelu (klasy, interfejsy, komponenty,
przypadki użycia, etc.)
Relacje pomiędzy nimi (powiązania, generalizacja,
zależności, etc.)
Diagramy (diagramy klas, diagramy przypadków
użycia, diagramy interakcji, etc.)
Przykład diagramu klas
Element
<<covalent>>
C
Carbon
Hydrogen
C
<<covalent>>
C
H
Przykład diagramu obiektów
(instancji klas)
:Hydrogen
:Hydrogen
:Hydrogen
:Carbon
:Carbon
:Hydrogen
:Hydrogen
:Hydrogen
Modele struktury
Modelowanie struktury
Model systemu, który podkreśla strukturę
obiektów, powiązania między klasami, ich
atrybuty i operacje
Rodzaje diagramów:
Statyczne diagramy struktury
Klas, obiektów
Diagramy implementacji
Komponentów, wdrożeń
Model struktury – zasadnicze elementy
Nazwa
Opis
klasa
Opis zbioru obiektów, które
posiadają te same atrybuty,
operacje, powiązania i semantykę
Zbiór operacji, które określają
zachowanie się elementu
interfejs
Notacja
«interface»
Moduł kodu, który zawiera
implementację i udostępnia zbiór
interfejsów
węzeł (node) Fizyczny zasób obliczeniowy, na
którym działa system.
komponent
ograniczenie Komentarz, warunek, ograniczenie
(constraint)
{constraint}
Model struktury – podstawowe relacje
Construct
Description
powiązanie /
skojarzenie
(association)
agregacja
Relacja pomiędzy klasami
generalizacja
relacja określająca, że dany element
jest generalizacją innego (który jest
jego specjalizacją)
Relacja określająca, iż zmiana w
jednym elemencie wpływa na element
zależny
Relacja pomiędzy specyfikacją i jej
implementacją
zależność
realizacja
Powiązanie całość-część
Syntax
Statyczne diagramy struktury
Diagram klas
Diagram obiektów – instancji klas
Klasy: przykład
Pracownik
nazwisko : string
adres : string
dataUrodzenia : Date
numerPracownika : integer
PESEL : string
dział : Dział
przełożony : Pracownik
wynagrodzenie : integer
tatus:
{current,
left, retired}
stan : {zatrudniony,
zwolniony,
emerytowany}
taxCode: integer
NIP : integer
. ..
...
dołącz()
join ()
leave ()
opuść()
retire ()
przejdźNaEmeryturę()
changeDetails (
zmieńSzczegóły()
Diagram klas – przykład
Hierarchia uogólnień – przykład
Pracownik
Kierownik
Programista
zarządzaneBudżety
dataPrzyjęcia
przedsięwzięcie
językiProg
Kierownik
Przedsięwzięcia
Kierownik
Działu
Kierownik
Strategiczny
przedsięwzięcie
dział
obowiązki
Powiązania – przykład
Pracownik
jest-członkiem
Dział
jest-zarządzany-przez
zarządza
Kierownik
Powiązania – jedno i dwukierunkowe
http://www.agilemodeling.com
Agregacja i kompozycja
Agregacja i kompozycja – obiekt
składa się z innych obiektów
Agregacja – zespół składa się
z pracowników
Kompozycja – samolot składa się
z części
Reguła: kompozycja jest "silniejszą"
formą agregacji – jeśli całość jest
niszczona, to jej części także, w
przypadku agregacji tak nie jest.
Generalizacja-specjalizacja – przykład:
taksonomia obiektów
Interfejsy: notacja skrótowa
StoreHome
Store
-storeId: Integer
-POSlist: List
POSterminalHome
POSterminal
<<use>>
POSterminal
Store
Fig. 3-29, UML Notation Guide
+create()
+login(UserName, Passwd)
+find(StoreId)
+getPOStotals(POSid)
+updateStoreTotals(Id,Sales)
+get(Item)
Interfejsy: notacja rozszerzona
StoreHome
-storeId: Integer
-POSlist: List
POSterminalHome
POSterminal
<<use>>
POSterminal
Store
<<interface>>
Store
+getPOStotals(POSid)
+updateStoreTotals(Id,Sales)
+get(Item)
Fig. 3-29, UML Notation Guide
+create()
+login(UserName, Passwd)
+find(StoreId)
+getPOStotals(POSid)
+updateStoreTotals(Id,Sales)
+get(Item)
Diagram obiektów
Diagramy implementacji
Pokazują takie aspekty implementacji
jak struktura kodu źródłowego, oraz
struktura podczas wykonywania się
systemu
Rodzaje
Diagram komponentów
Diagram wdrożeń (deployment)
Komponenty i wdrożenia: przykład
Komponenty – przykłady
ShoppingSessionHome
<<Session>>
ShoppingSession
ShoppingSession
<<Entity>>
030303zak:Order
OrderHome
<<auxiliary>>
:OrderPK
OrderHome
<<focus>>
:Order
Order
OrderPK
OrderInfo
<<auxiliary>>
:OrderInfo
Order
Fig. 3-99, UML Notation Guide
Diagram komponentów – przykład
ShoppingSessionHome
ShoppingSession
<<EJBSession>>
ShoppingSession
<<EJBEntity>>
Catalog
CatalogHome
CatalogPK
<<auxiliary>>
CatalogPK
CatalogHome
<<focus>>
Catalog
CatalogInfo
<<auxiliary>>
CatalogInfo
Catalog
Catalog
<<file>>
CatalogJAR
ShoppingCartHome
ShoppingCart
<<EJBEntity>>
ShoppingCart
Fig. 3-95, UML Notation Guide
Diagram wdrożeń – przykład
:Client
<<browser>>
:OpenSourceBrowser
videoStoreServer:AppServer
<<Container>>
VideoStoreApplication
<<Session>>
ShoppingSession
<<Focus>>
ShoppingSession
<<Entity>>
Catalog
<<Focus>>
Catalog
<<Entity>>
ShoppingCart
<<Focus>>
ShoppingCart
:DBServer
<<database>>
:VideoStoreDB
Fig. 3-97, UML Notation Guide
Projektowanie oparte o interfejsy
Projektowanie oparte o interfejsy
(interface-based design)
Skupia się na specyfikacji interfejsów systemu
Oddziela się specyfikację operacji jakiejś usługi
(interfejsy) od ich realizacji (implementacja)
Przykład: CORBA IDL (Interface design
language) jako projektowanie aplikacji
rozproszonych oparte o interfejsy
IDL definiuje interfejsy obiektów bez nakładania
ograniczeń na ich implementację
Definiuje strukturę aplikacji rozproszonej
Nie pozwala na specyfikowanie zachowania obiektów
lub relacji pomiędzy klasami poza generalizacją
Przykład: punkt sprzedaży (point of sale)
module POS
{
typedef long
POSId;
typedef string Barcode;
interface InputMedia
{
typedef string OperatorCmd;
void
void
barcode_input(in Barcode item);
keypad_input(in OperatorCmd cmd);
};
interface OutputMedia
{
boolean
output_text(in string string_to_print );
};
...
Generic IDL Point of Sale (POS) example. [Siegel 00]
Przykład punkt sprzedaży (c.d.)
...
interface
{
void
void
void
void
void
void
};
POSTerminal
login();
print_POS_sales_summary();
print_store_sales_summary();
send_barcode(in Barcode item);
item_quantity(in long quantity);
end_of_sale();
};
#endif /* _POS_IDL_ */
From [Kobryn 00].
Point-of-Sale
«IDLinterface»
IinputMedia
«IDLinterface»
IPOSterminal
+storeRef : Store
+storeAccessRef : StoreAccess
+outputMediaRef : OutputMedia
+taxRef : Tax
+POSid : Integer
+itemBarcode : Integer
+itemQuantity : Integer
+itemInfo : ItemInfo
+itemPrice : Currency
+itemTaxPrice : Currency
+itemExtension : Currency
+saleSubtotal : Currency
+taxableSubtotal : Currency
+saleTotal : Currency
+saleTax : Currency
+POSlist : List
+initialization()
+login()
+printPOSsalesSummary()
+printStoreSalesSummary()
+setItemQuantity()
+sendBarcode()
+endSale()
+POSref : POSterminal
InputMedia
+initialization()
+barcodeInput()
+keypadInput()
«IDLinterface»
IOutputMedia
OutputMedia
+outputText()
POSterminal
+totals : Totals
+POSlist : List
+initialization()
+login()
+getPOStotals()
+updateStoreTotals()
Store
«IDLinterface»
IStoreAccess
«IDLinterface»
ITax
Tax
«IDLinterface»
IStore
+rate : float
+initialization()
+calculateTax()
+findTaxablePrice()
StoreAccess
+depotRef : Depot
+taxRef : Tax
+storeMarkup : float
+storeId : Integer
+initialization()
+findPrice()
Przypadki użycia
Diagram przypadków użycia
T el ep hon e Ca ta log
C he c k
s ta tus
P la ce
or de r
S al es pe r so n
F ill or de r s
S hip pin g C le r k
C us tom er
E sta bl is h
c re di t
S upe r vi so r
Fig. 3-53, UML Notation Guide
Relacje pomiędzy przypadkami użycia
Generalizacja (uogólnienie)
Dołączanie (include)
Jeden przypadek użycia jest uogólnieniem
innego
Zachowanie dołączanego przypadku użycia jest
dołączane do podstawowego przypadku użycia
Rozszerzenie (extend)
<<include>>
Zachowanie rozszerzającego przypadku użycia
jest dołączane do podstawowego przypadku
użycia w ściśle określonym miejscu (określanym
przez tzw. extension point)
<<extend>>
Extend vs. include
<<include>>
Używa się wtedy, gdy dołączany przypadek
użycia musi być wykonany
<<extend>>
Używa się, gdy rozszerzający przypadek użycia
może lecz nie musi być wykonany
Przez zdefiniowanie tzw. extension points określa
się w którym dokładnie miejscu może być
wykonany rozszerzający przypadek użycia
Diagram przypadków użycia – przykład
Update Medical
Plan
<<include>>
Update Dental
Plan
<<include>>
Update
Insurance Plan
<<include>>
Update Benefits
Employee
______________
Extension points
benefit options:
after required enrollments
<<extend>>
employee requests
reimbursement option
Elect
Reimbursement
for Healthcare
extension point
name and
location
<<extend>>
employee requests
stock purchase option
Elect Stock
Purchase
extension
condition
Relacje pomiędzy aktorami
1
*
Place
Order
Salesperson
1
*
Establish
Credit
Supervisor
Fig. 3-55, UML Notation Guide
Opis przypadku użycia
Actors:
traveler, client account db, airline reservation system
Preconditions:
Traveler has logged on to the system and selected ‘change flight
itinerary’ option
Basic
course (podstawowy przebieg)
System retrieves traveler’s account and flight itinerary from client
account database
System asks traveler to select itinerary segment she wants to
change; traveler selects itinerary segment.
System asks traveler for new departure and destination
information; traveler provides information.
If flights are available then
…
System displays transaction summary.
Alternative
courses (gdy wystąpi jakaś sytuacja wyjątkowa)
If no flights are available then …
Opis przypadku użycia – tabela
Dalsza lektura
Ian Sommerville, Inżynieria oprogramowania,
r. 12
http://www.agilemodeling.com Artifacts,
UML 2