Diagram stanów
Halina Tańska
Diagram stanów
• Jeżeli system wchodzi w interakcję z
użytkownikami lub z innym systemem wówczas tworzące go obiekty w wyniku tej interakcji
zmieniają się. Chcąc modelować system, trzeba dysponować mechanizmem modelowania
zmian.
• Jednym ze sposobów scharakteryzowania zmiany systemu jest stwierdzenie, że jego obiekty zmieniają stan w odpowiedzi na zdarzenia i interakcje.
Przykłady stanów
• Kilka prostych przykładów zmian:
– Po zmianie przełącznika światło zmienia swój stan z wyłączonego na włączone (lub odwrotnie).
– Po naciśnięciu przycisku na pilocie do zdalnego sterowania telewizor zmieni stan, pokazując program innego kanału.
– Po upływie odpowiedniego przedziału czasu pralka zmieni swój stan z Prania na Płukanie.
• Tego rodzaju zmiany są pokazywane na diagramie stanów.
• Diagram stanów prezentuje stany obiektu i przejścia między nimi od rozpoczynającego ciąg stanu
początkowego po ostatni w kolejności stan końcowy.
Diagram stanów
Diagram stanów (state machine diagram) służy do modelowania dynamicznych
aspektów systemu.
Diagram stanów przedstawia maszynę stanów.
Diagram stanów przedstawia przepływ
sterowania między stanami.
Diagram stanów
Diagram stanów składa się z:
– stanów zwykłych i złożonych
– przejścia ze zdarzeniami i akcjami
Diagram stanów stosuje się do
modelowania obiektów, których działania
są najlepiej określane przez ciąg odpowiedzi
na zdarzenia wywołane w ich otoczeniu.
Diagram stanów
Diagramy stanów mogą być związane z:
– obiektami – klasami
– przypadkami użycia – całymi systemami
Diagram stanów
Diagram przedstawia maszynę stanową z uwypukleniem przepływu sterowania między stanami.
Maszyna stanowa to ciąg stanów przyjmowanych przez obiekt w
odpowiedzi na zdarzenia zachodzące w
czasie jego życia.
Diagram stanów
W diagramie stanów występują następujące symbole:
– stany obiektu (state) – początek (initial)
– koniec (final)
– przejścia między stanami (transition) – zdarzenia (trigger)
– akcje (effect) – historia (history)
– rozwidlenie/złączenie (fork/join) – punkt synchronizacji (synch)
– rozgałęzienie decyzyjne (decision)
Stan obiektu
Stan obiektu to sytuacja, w której obiekt
znajduje się w określonej chwili, kiedy
spełnia jakiś warunek, wykonuje jakąś
czynność lub czeka na jakieś zdarzenie.
Stan obiektu
• Stan jest kolekcją powiązań obiektu z innymi obiektami i typami obiektowymi.
• Stan jest kolekcją egzemplarzy odwzorowań danego obiektu.
• Stan jest kolekcją atrybutów i związków
dotyczących danego obiektu.
Stan obiektu
Przykładowy system z dwoma stanami obiektu:
Stan jest kolekcją egzemplarzy odwzorowań danego obiektu.
Stan jest kolekcją atrybutów i związków dotyczących danego obiektu.
Zwyczajowo nazwę stanu piszemy z wielkiej litery w formie rzeczowników odczasownikowych, np. Faksowanie, Wykręcanie numeru.
Stan obiektu
Stany Osoby na podstawie tego, czy istnieje powiązanie pracuje w
Stany Osoby na podstawie tego, czy istnieje
powiązanie posiada
Stany Osoby na podstawie daty
urodzenia i bieżącej daty
Zatrudniony Niezatrudniony
Nie posiadający majątku Właściciel
Niemowlę Dziecko Nastolatek Dorosły
Ikona stanu
Nazwa
Zmienne
Czynności entry
do exit
Semestr koniecSemestru Sesja
[uregulowaneOpłaty]/rozpocznijSesję
Stany obiektu Student
Podawanie szczegółów w ikonie stanu
• UML pozwala umieszczać na symbolach
informacje szczegółowe: nazwę stanu, zmienne i czynności.
• Zmienne stanu, np. liczniki i zegary, czasami bywają przydatne.
• Czynności to zdarzenia i akcje. Najczęściej używane są trzy: entry (wejdź – określa, co się dzieje przy wejściu do stanu), exit (wyjdź –
określa, co się dzieje przy wychodzeniu ze
stanu) i do (wykonaj – określa, co się dzieje, gdy system pozostaje w danym stanie)
Aparat faksowy - stany
• Aparat faksowy jest przykładem obiektu, którego stan ma i zmienne i czynności.
• Gdy wysyłamy faks, tzn. aparat jest w stanie Faksowanie, notuje on datę i czas rozpoczęcia wysyłania (wartości zmiennych stanu „data”
i „czas”) oraz własny numer telefoniczny i nazwisko/nazwę właściciela (wartości zmiennych stanu „numer telefonu” i
„właściciel”).
• W stanie Faksowanie aparat wykonuje następujące czynności:
dodawanie do faksu znacznika daty, znacznika czasu, numeru telefonu i nazwiska (lub nazwy) właściciela. Inne czynności to
odczytywanie po kolei wszystkich faksowanych stron, podzielenie faksu na strony i wykonanie pełnej transmisji.
• W stanie Bezczynnym aparat faksowy wyświetla na konsoli datę i czas.
Faksowanie
Data = Data bieżąca Czas = Czas rozpoczęcia faksowania Numer = Własny numer telef. aparatu Właściciel = Nazwisko właściciela
entry/wpiszNumerFaksuAdresata exit/zakończTransmisję
do/dodajZnacznikDaty do/dodajZnacznikCzasu
do/dodajWłasnyNumerTelefoniczny do/dodajWłaściciela
do/przeciągnijWszystkieStrony do/podzielNaStrony
Bezczynny
Data = Data bieżąca Czas = Czas bieżący Numer = Własny numer telef. aparatu Właściciel = Nazwisko właściciela
entry/zakończFaksowanie exit/rozpocznijFaksowanie
do/pokażDatę do/pokażCzas
Przykład - graficzny interfejs użytkownika
• GUI może znajdować się w trzech stanach:
– Włączanie – Działanie – Wyłączanie
• Po włączeniu PC następuje start systemu. Włączenie jest tu zdarzeniem uruchamiającym, które powoduje przejście w stan Wyłączanie, a start systemu jest akcją, która
zostaje podjęta w wyniku tego zdarzenia.
• W rezultacie wykonania wszystkich akcji stanu Włączanie następuje przejście w stan Działanie. Gdy chcemy
wyłączyć komputer należy doprowadzić do zajścia
zdarzenia uruchamiającego przejście w stan Wyłączenie.
Włączanie Działanie Wyłączenie Wyłącz
Stany i przejścia graficznego interfejsu użytkownika
Na rys pokazane są: zdarzenie uruchamiające, akcje i przejścia bez zdarzenia uruchamiającego.
Na diagramie stanów GUI zostało pominięte wiele istotnych spraw m.in. jeżeli pozostawimy włączony komputer lub siedzimy obok niego bezczynnie,
włącza się wygaszacz ekranu oszczędzający monitor. Opisując to jako zmianę stanów można powiedzieć, że po upływie określonego czasu bez żadnego uderzenia w klawisze i bez żadnego poruszania myszą GUI przechodzi ze stanu Działanie do stanu Oszczędzanie Monitora.
Włączanie Działanie Wyłączenie Wyłącz
Stany i przejścia graficznego interfejsu użytkownika ze stanem Oszczędzanie Monitora i warunkiem dozoru
Czas po którym następuje wyłączenie wygaszacza ekranu jest określany w
Panelu sterowania Windows. Zwykle po 15 minutach. Każde uderzenie w klawisz lub ruch myszą powoduje przejście monitora w stan Działanie.
Ten 15-minutowy upływ czasu jest warunkiem dozoru – gdy zostanie spełniony, następuje przejście z jednego stanu w drugi.
Uwaga: warunek dozoru [czasMinął] jest wyrażeniem logicznym.
Oszczędzanie
Monitora
[czasMinął] Uderzenie klawisza lub poruszenie myszą
Podstany sekwencyjne
Oczekiwanie na działanie użytkownika
Rejestrowanie działania użytkownika
Wizualizacja działania użytkownika Działanie
Działanie użytkownika
Podstany sekwencyjne występują kolejno – jeden po drugim. Porządkując podstany stanu Działanie GUI można wskazać następującą listę:
Oczekiwanie na działanie użytkownika Rejestrowanie działania użytkownika Wizualizacja działania użytkownika
Podstany współbieżne
Oczekiwanie na działanie użytkownika
Rejestrowanie działania użytkownika
Wizualizacja działania użytkownika Działanie
Działanie użytkownika
Podstany współbieżna występują równolegle w tym samym czasie.
Współbieżność przedstawiamy na diagramie za pomocą linii przerywanej.
Śledzenie zegara systemowego
Uaktualnianie obrazu
[minąłWyznaczonyCzas]
Stan obiektu
Złożone elementy stanu obiektu obejmują
akcje zachodzące w konkretnym stanie.
Stan obiektu
entry – gdy obiekt przyjmie dany stan zostanie wykonana akcja wejściowa
do – czynność, która jest wykonywana
ciągle od zakończenia akcji wejściowej do rozpoczęcia akcji wyjściowej
exit – gdy obiekt opuści stan zostanie
wykonana akcja wyjściowa
Początek i koniec
Początek jest rozpoczęciem diagramu
stanów. Od niego rozpoczyna się wędrówka zdarzeń i stanów obiektu.
Koniec jest zakończeniem działań obiektu.
Podstany
Podstan (sub state/composite state) to stany
zagnieżdżone w innym stanie.
Przejście między stanami
Przejście to związek między dwoma
stanami, wskazujący, że obiekt znajdujący się w pierwszy stanie wykona pewne akcje i przejdzie do drugiego stanu,
za każdym razem kiedy zajdzie określone
zdarzenie i będą spełnione odpowiednie
warunki.
Przejście między stanami
Przejście między stanami zawiera:
– zdarzenie uruchamiające (trigger) – warunek dozoru (guard)
– akcja (effect)
Przejście między stanami
•Zdarzenie uruchamiające jest wystąpieniem bodźca, który może
uruchomić przejście między stanami
•Warunek dozoru to wyrażenie logiczne obliczane jedynie zajściu zdarzenia
•Akcja to wykonywalna procedura
obliczeniowa. Może to być wywołanie operacji na obiekcie, utworzenie /
zniszczenie innego obiektu lub wysłanie
komunikatu.
Przejście między stanami
Przejście automatyczne
Przejście zwrotne
Zdarzenie i akcja
Zdarzenie (trigger) uruchamia przejście między stanami obiektu.
Akcja (effect) to niepodzielna czynność przy
przejściu między stanami obiektu.
Historia
Stan wznowienia – bieżące zachowanie obiektu zależy od jego przeszłości. Definiuje zatem zbiór poprawnych stanów, przez które obiekt może przejść w czasie swojego życia.
Jest to punkt w którym system pamięta swój
poprzedni krok.
Historia
Podstan z historią pamięta do którego stanu przejść, jeżeli wcześniej ekstra zdarzenie
przerwało normalną drogę przebiegu stanów
obiektu.
Rozwidlenie/Złączenie
Rozwidlenie (fork) rozdziela strumień działań na dwie współbieżne drogi
postępowania.
Złączenie (join) łączy strumienie
współbieżne do jednej pojedynczej drogi
postępowania w diagramie stanów.
Rozwidlenie/Złączenie
Punkt synchronizacji
Punkt synchronizacji
wskazuje miejsce w
którym współbieżne
strumienie zostaną
zsynchronizowane.
Rozgałęzienie decyzyjne
Rozgałęzienie decyzyjne opisuje ścieżki alternatywne zachowania systemu.
Do wyboru jednej ze ścieżek postępowania
dochodzi na podstawie wartości pewnego
wyrażenie logicznego.
Diagram stanów
Diagramy stanów używa się do
specyfikowania dynamiki poszczególnych obiektów.
Diagramy stanów ukazuje jak obiekt zmienia
stany, definiując jego zachowanie, w czasie
życia systemu.
Rodzaje akcji na diagramach stanów
Akcja Opis Składnia
przypisanie przypisanie wartości do zmiennej zmienna:= wyrażenie
wołanie Wywołanie operacji na obiekcie z oczekiwaniem na jej zakończenie;
operacja może zwrócić wartość
nazwa_op (arg, …)
utwórz nowy utworzenie nowego obiektu create nazwa_klasy (arg, …)
usuń usunięcie obiektu destroy()
wyślij utworzenie wystąpienia sygnału i
wysłania go do obiektu (obiektów) nazwa_sygnału (arg, …) zakończ Samodestrukcja obiektu terminate
stm złóż zamów ienie
początek
Spraw dzanie
Oczekiw anie
Wysyłka
Dostarczone /pobierz pierwsza pozycje
[wszystkie pozycje sprawdzone i niektórych pozycji brak w magazynie]
pobierz nastepna pozycje [nie wszystkie pozycje sprawdzone]
[wszystkie pozycje sprawdzone i dostepne]
pozycja otrzymana [wszystkie pozycje dostepne]
dostarczone
pozycja otrzymana [niektórych pozycji brak w magazynie]
stm Samochód
Jazda do przodu na 1- szym biegu
Samochod zatrzymany
Jazda do przodu na 2-
gim biegu Jazda do tylu
wybrano następny bieg wybrano poprzedni bieg
naciśnięto hamulec
wybrano wsteczny bieg naciśnięto hamulec wybrano 1-szy bieg
naciśnięto hamulec
stm rej estruj poj azd
urządzenie niesprzedane
urządzenie sprzedane
Initial Final
kupno urządzenia przez klienta
zwrot urządzenia przez klienta
stm rej estruj poj azd
Wprow adzanie hasla + entry / ustaw echo na gwiazdke + entry / zeruj haslo
+ exit / ustaw normalne echo + do / obsluz znak(do) + do / zeruj znak + do / wyswietl pomoc