Modelowanie z wykorzystaniem notacji UML

Transkrypt

Modelowanie z wykorzystaniem notacji UML
Inżynieria Oprogramowania 1
Modelowanie z wykorzystaniem notacji UML – część 1
Modelowanie z wykorzystaniem notacji UML
Część 2
Wstęp
Celem zajęć jest zapoznanie studentów z elementami notacji UML (ang. Unified Modeling Language)
służącej do modelowania oprogramowania. W ramach części II zostaną przybliżone studentom dwa typy
diagramów UML: diagram stanów oraz diagram interakcji.
Szczegółowe informacje odnośnie diagramów UML można znaleźć w materiałach wykładowych oraz
w prezentacjach:
• http://wazniak.mimuw.edu.pl/images/7/76/Io-5-wyk.pdf
• http://wazniak.mimuw.edu.pl/images/f/f3/Io-6-wyk.pdf
Podstawowe informacje zostaną dodatkowo przedstawione przez osobę prowadzącą zajęcia laboratoryjne
w ramach wstępu do zajęć.
W trakcie zajęć studenci pracując w grupach 3-4 osobowych będą mieli za zadanie stworzyć diagramy
UML opisujące fragmenty systemu do zarządzania należnościami i płatnościami.
System BillMonk
* jeśli pamiętasz kontekst z zeszłych zajęć możesz pominąć ten opis
System BillMonk (www.billmonk.com) jest systemem do zarządzania należnościami i płatnościami.
Użytkownik ma możliwość wprowadzenia rachunku. Na każdym rachunku zamieszczona jest lista
kupionych pozycji oraz lista płatności.
Każda pozycja rachunku to nazwa kupionego towaru lub usługi, cena oraz lista partycypantów: osób,
które tę pozycję zamawiały, z przypisaną do nich częścią należności.
Lista płatności to lista osób, które zapłaciły rachunek z przypisanymi do tych osób zapłaconymi kwotami.
Dla każdego takiego rachunku system oblicza, ile każda z osób umieszczonych na rachunku zapłaciła,
a za jaką kwotę kupiła. Dla osób, które zapłaciły mniej niż kupiły system wylicza należność, jaką muszą
zapłacić tym, którzy zapłacili więcej niż kupili.
Nie ma konieczności wyrównywania należności z rachunku od razu. Dla każdej z osób umieszczonych na
rachunku system zapamiętuje rachunki, w których ta osoba uczestniczyła, wraz ze stanem rozliczenia.
W dowolnym momencie użytkownik może sprawdzić ile ma zobowiązań i wobec jakich osób. Może też
zapisać w systemie informację, że zapłacił zobowiązanie wobec innej osoby.
W systemie musi być możliwe wycofanie jakiejkolwiek wprowadzonego wcześniej rachunku czy
przeprowadzonej operacji zapłaty czy operacji uproszczenia rozliczeń. Efekt usunięcia operacji powinien
być z punktu widzenia bilansu każdej z osób taki, jakby ta operacja nigdy nie miała miejsca.
Diagram czynności przestawiający proces wprowadzenia pojedynczego rachunku oraz diagram klas dla
systemu BillMonk zostały umieszczone w osobnych plikach.
strona 1 / 2
Inżynieria Oprogramowania 1
Modelowanie z wykorzystaniem notacji UML – część 1
Zadanie 1.
Przedstaw na diagramie stanów cykl życia rachunku. Należy uwzględnić następujące informacje o
stanach i przejściach pomiędzy stanami:
•
Po zakończeniu zakupów rachunek zostaje wystawiony przez sprzedawcę,
•
Uczestnicy podejmują decyzję o rozliczeniu i rachunek przechodzi w stan rozliczany,
•
Rozliczany rachunek jest rozpatrywany na dwóch płaszczyznach:
◦ pierwsza dotyczy stanu zapłaty – początkowo rachunek jest niezapłacony, następnie jeśli
przekazano kwotę zapłaty równą kwocie zakupu rachunek jest uznany za zapłacony,
◦ druga dotyczy rozliczenia rachunku w systemie – rachunek zostaje dodany do systemu
(uwzględnij akcję, która jest wykonywana aby dodać rachunek – zgodnie z diagramem klas)
i jego stan jest określany jako „wprowadzony”; następnie rachunek jest rozliczany przez
system, w wyniku czego rachunek może być uważany za „zamknięty” jeśli żadna osoba nie
nadpłaciła albo „do wyrównania” jeśli przynajmniej jedna osoba dokonała nadpłaty;
w dowolnym momencie od wprowadzenia rachunek może zostać usunięty – jest to stan
finalny (uwzględnij odpowiednią akcję). Dodatkowo wprowadzono opcję, która umożliwia
zamrożenie rachunku (zamrożony rachunek nie jest brany pod uwagę w rozliczeniach, ale
nadal jest obecny w systemie). Rachunek może być zamrożony w dowolnym momencie,
w którym jest obecny w systemie. Zamrożony rachunek może zostać przywrócony. W takiej
sytuacji rachunek wraca do stanu w jakim znajdował się przed jego zamrożeniem.
•
Rachunek, który został zapłacony i usunięty z systemu kończy swój cykl życia.
Zadanie 2.
Przeanalizuj powiązania pomiędzy diagramem czynności a diagramem stanów cyklu życia rachunku w
systemie BillMonk. Zastanów się jak wykonywane czynności na diagramie czynności wpływają na
zmiany stanów na diagramie stanów (dokonaj symulacji porównując diagramy dla konkretnego
przypadku).
Zadanie 3.
Korzystając z załączonego diagramu klas przedstaw na diagramie sekwencji sposób realizacji operacji
Rachunek.obliczNadplate(kto :Osoba):double.
Przy konstrukcji diagramu weź pod uwagę asocjacje pomiędzy klasami oraz dostępne metody na
diagramie klas; przydatne mogą być sekcje "loop", "alt" oraz "opt".
Dodatkowo załóż, że operacja obliczNapdplate() zwraca liczbę ujemną jeśli osoba ma niedopłatę w
ramach rachunku.
Zadanie 4.
Korzystając z załączonego diagramu klas przedstaw na diagramie sekwencji sposób realizacji operacji
Billmonk.obliczZobowiazania(kto :Osoba):double. Wykorzystaj wcześniej opracowany
fragment diagramu przedstawiający realizację operacji obliczNapdplate().
Przy konstrukcji diagramu weź pod uwagę asocjacje pomiędzy klasami oraz dostępne metody na
diagramie klas; przydatne mogą być sekcje "loop", "alt" oraz "opt".
strona 2 / 2