dokumentacja etapu III

Politechnika Gdańska

WYDZIAŁ ELEKTRONIKI TELEKOMUNIKACJI I INFORMATYKI

Inteligentny dom

Wielousługowe architektury IP – projekt

Etap III

Tadeusz Balcer

Bartosz Próchniak

Mariusz Redwanz

Streszczenie dokumentu: Dokument projektowy aplikacji stworzony przy użyciu notacji UML obejmujący: diagram przypadków użycia, diagram klas, opis znaczenia klas w formie tabelarycznej, diagram obiektów oraz ważniejsze diagramy sekwencji (interakcji).

Gdańsk, 2012

Przypadki użycia

Aktorzy

Abonent

Każdy użytkownik zarejestrowanego numeru telefonu.

Domownik

Specjalny abonent, który jest mieszkańcem domu a właściwie użytkownikiem numeru telefonu należącym do mieszkańca.

Przypadki użycia

Rejestracja abonenta

Warunki początkowe:

Brak.

Przebieg:

  1. Abonent zgłasza żądanie rejestracji poprzez wysłanie wiadomości SMS o dowolnej treści lub połączenie pod numer 6666.

  2. System zapisuje numer, z którego wysłano wiadomość lub wykonano połączenie (numer ten stanowi identyfikator abonenta) oraz wysyła wiadomość SMS z potwierdzeniem rejestracji.

Przebiegi alternatywne:

  1. System stwierdza, że abonent o podanym numerze już istnieje i informuje o tym użytkownika poprzez wysłanie odpowiedniej wiadomości SMS.

Warunki końcowe:

Abonent zarejestrowany.

Dodanie domownika

Warunki początkowe:

Brak.

Przebieg:

  1. Abonent zgłasza żądanie rejestracji poprzez wysłanie wiadomości SMS o treści „Dodaj domownika” pod adres 6666.

  2. System oznacza abonenta, jako domownika i o sukcesie operacji informuje wiadomością SMS.

Przebiegi alternatywne:

1a. System stwierdza, że abonent o podanym numerze nie jest jeszcze zapisany i dokonuje rejestracji zgodnie z przypadkiem użycia „Rejestracja abonenta”, lecz z wykluczeniem przebiegu alternatywnego.

1b. Domownik o podanym numerze został już dodany. Do adresata wiadomości zostaje wysłana odpowiednia wiadomość SMS.

Warunki końcowe:

Domownik dodany.

Opuszczenie domu przez ostatniego mieszkańca.

Warunki początkowe:

Przynajmniej jeden domownik został oddany i znajduje się on w domu.

Przebieg:

  1. Domownik opuszcza dom.

  2. System spostrzega nieobecność domowników, zapamiętuje aktualny stan domu (włączone/wyłączone oświetlenie oraz otwarte/zamknięte drzwi) oraz wyłącza światło i zamyka drzwi.

Przebiegi alternatywne:

Brak.

Warunki końcowe:

Wykryto wyjście ostatniego domownika. Zapamiętany stan domu sprzed opuszczenia go przez ostatniego domownika, wyłączone oświetlenie i zamknięte drzwi.

Przybycie pierwszego domownika do domu

Warunki początkowe:

Przynajmniej jeden domownik został oddany i znajduje się on poza domem.

Przebieg:

  1. Domownik pojawia się w domu.

  2. System spostrzega obecność domownika i przywraca stan domu sprzed opuszczenia go przez ostatniego mieszkańca.

Przebiegi alternatywne:

Brak.

Warunki końcowe:

Wykryto domownika w domu. Przywrócony stan domu sprzed opuszczenia go przez ostatniego domownika.

Wykrycie intruza

Warunki początkowe:

Istnieje przynajmniej jeden zarejestrowany abonent i domownik. Zarejestrowany abonent oraz wszyscy domownicy znajdują się poza domem.

Przebieg:

  1. Zarejestrowany abonent pojawia się w domu.

  2. System spostrzega obecność abonenta, który nie jest domownikiem, robi zdjęcie i wysyła je do wszystkich domowników w postaci wiadomości MMS.

Przebiegi alternatywne:

Brak.

Warunki końcowe:

Intruz został wykryty a o jego obecności zostali poinformowani domownicy za pomocą wiadomości MMS.

Informowanie o gościach

Warunki początkowe:

Istnieje przynajmniej jeden zarejestrowany abonent i domownik. Zarejestrowany abonent oraz wszyscy domownicy znajdują się poza domem.

Przebieg:

  1. Zarejestrowany abonent używa domofonu.

  2. System robi zdjęcie i wysyła je do wszystkich domowników w postaci wiadomości MMS.

Przebiegi alternatywne:

Brak.

Warunki końcowe:

Wszyscy domownicy zostali poinformowani o przybyciu gościa poprzez wiadomość MMS.

Przesłanie listy zakupów

Warunki początkowe:

Istnieje przynajmniej jeden domownik.

Przebieg:

  1. Domownik zgłasza prośbę wysłania listy brakujących produktów poprzez wysłanie wiadomości SMS o treści „Lista zakupow” pod numer 6666.

  2. System sprawdza ilość poszczególnych produktów i przy stwierdzeniu braku któregokolwiek dodaje go do listy. Po zakończeniu przeglądu lista zostaje wysłana w wiadomości SMS.

Przebiegi alternatywne:

  1. Wiadomość SMS o treści „Lista zakupow” została wysłana przez abonenta niebędącego domownikiem. W takim przypadku w odpowiedzi zostaje wysłana wiadomość SMS informująca, że z tej usługi mogą skorzystać wyłącznie domownicy.

Warunki końcowe:

Stworzona zostaje lista brakujących produktów. Jest on dostarczona domownikowi poprzez wiadomość SMS.

Zarządzanie domem

Warunki początkowe:

Istnieje przynajmniej jeden domownik.

Przebieg:

  1. Domownik wykonuje połączenie pod numer 6666.

  2. System wymienia możliwe usługi (np. ustawienie temperatury, otwarcie/zamknięcie okna, przygotowanie kąpieli).

  3. Domownik wybiera na klawiaturze numer opowiadający wybranej usłudze.

  4. System wymienia możliwe opcje (np. dla ustawienia temperatury będą to wartości temperatury).

  5. Domownik wybiera na klawiaturze numer opowiadający wybranej opcji.

  6. System realizuje wybraną usługę i informuje o tym domownika zwrotną wiadomością SMS.

Przebiegi alternatywne:

  1. Domownik wybrał nieprawidłowy numer. System wraca do punktu 2.

  1. Domownik wybrał numer spoza zakresu. System powraca do punktu 4.

Warunki końcowe:

Wybrana usługa została wykonana i użytkownik został o tym poinformowany.

Diagram przypadków użycia

Rysunek 1 Diagram przypadków użycia (wygenerowany za pomocą Enterprise Architect)

Klasy

W celu realizacji projektu wykorzystaliśmy jedną z aplikacji dołączoną do środowiska jako przykład a dokładniej program „Where am I”. Poniżej opisane zostaną wyłącznie klasy dodane przez nas.

Opis znaczenia klas i ich zawartość

Abonent

Pola prywatne:

String numer

Numer abonenta będący jednocześnie identyfikatorem.

LocationProcessor itsLocationProcessor

Obiekt klasy LocationProcessor, której implementacja została dołączona do przykładu. Obiekt ten wykorzystywany jest do sprawdzenia aktualnej lokalizacji abonenta.

Metody publiczne:

Abonent (String numer, LocationProcessor aLocationProcessor)

Konstruktor, który tworzy nowy obiekt reprezentujący abonenta, zapisuje jego numer stanowiący jednocześnie jego identyfikator oraz kopiuje obiekt LocationProcessor z obiektu Feature.

String getNumer()

Zwraca numer abonenta.

void run()

Uruchamia wątek, który przez cały czas działania sprawdza lokalizację abonenta.

Dom

Pola prywatne:

Feature rodzic

Pozwala na zwrócenie odpowiedzi abonentowi/domownikowi w postaci wiadomości SMS lub MMS.

int szerokosc

Szerokosc mapy w pikselach

int wysokość

Wysokosc mapy w pikselach

Polygon dom

Wielobok reprezentujący dom wraz z ogrodem

ArrayList<Abonent> abonenci

Lista wszystkich zarejestrowanych abonentów

ArrayList<Abonent> domownicyWDomu

Lista domowników przebywających aktualnie na terenie posesji

ArrayList<Abonent> intruzi

Lista intruzów przebywających aktualnie na terenie posesji

boolean oswietlenie

Określenie czy światło jest włączone

boolean drzwi

Określenie czy drzwi są otwarte

boolean oswietleniePrzed

Określenie czy światło było włączone zanim ostatni domownik opuścił posesję

boolean drzwiPrzed

Określenie czy drzwi były otwarte zanim ostatni domownik opuścił posesję

ArrayList<Usluga> usługi

Lista usług realizowanych przez system

Metody prywatne:

void przywrocStanDomu()

Przywrócenie stanu oświetlenia i drzwi sprzed opuszczenia posiadłości przez ostatniego mieszkańca

void wylaczWszystko()

Zgaszenie światła oraz zamknięcie drzwi

void powiadomOIntruzie()

Wysłanie wiadomości MMS ze zdjęciem z monitoringu po wtargnięciu na posesję

void stworzUslugi()

Stworzenie realizowanych usług wraz z możliwymi opcjami

Metody publiczne:

Dom (Feature rodzic)

Wszystkie czynności inicjalizacyjne: określenie wymiarów posiadłości oraz jej położenia na mapie, zdefiniowanie realizowanych usług oraz określenie czy drzwi są otwarte i czy oświetlenie jest włączone

void run()

Uruchamia wątek, który przez cały czas działania losowo zmienia stan oświetlenia i drzwi. Dodatkowo symuluje przybycie gościa

void sprawdzStanDomu()

Podanie aktualnego stanu domu

boolean dodajDomownika(Abonent domownik)

Dodanie nowego abonenta do listy domowników

String czyAbonentJestWDomu(Abonent abonent, float x, float y)

Sprawdzenie czy abonent znajduje się na terenie posesji

void powiadomOGosciu()

Wysłanie wiadomości MMS ze zdjęciem z domofonu po przybyciu gościa

boolean sprawdzCzyDomownik(Abonent abonent)

Sprawdzenie czy abonent znajduje się na liście domowników

Lodowka

Pola prywatne:

Map<String, Integer> produkty

Lista produktów wraz z ich ilością

Metody prywatne:

void dodajProdukty()

Dodanie produktów wraz z ilością do listy

int losujIlosc()

Ustalanie ilości produktu

Metody publiczne:

Lodowka()

Stworzenie listy produktów i uzupełnienie jej przykładowymi danymi

String brakujaceProdukty()

Stworzenie listy brakujących produktów

Usluga

Pola prywatne:

String nazwa

Nazwa usługi

ArrayList<String> opcje

Lista możliwych opcji

Metody publiczne:

Usluga()

Stworzenie nowej usługi wraz z możliwymi opcjami

String getNazwa()

Pobranie nazwy usługi

ArrayList<String> getOpcje()

Pobranie możliwych opcji

void realizujUsluge(int opcja)

Realizuj usługę wraz z podaną opcją

Diagram klas

W związku z dużą ilością klas i nieczytelnością diagramu postanowiliśmy ograniczyć się wyłącznie do klas napisanych przez nas oraz klasą Feature, która jest bezpośrednio z nimi powiązana.

Rysunek 2 Diagram klas (wygenerowany za pomocą ObjectAid UML Explorer)

Diagram obiektów

Poniżej przedstawiony został diagram będący wizualizacją hipotetycznego stanu systemu, w którym zdefiniowane są: jeden inteligentny dom wraz z lodówką, trzy usługi które realizuje wraz z przykładowymi opcjami oraz dwaj zarejestrowani abonenci, z czego jeden jest domownikiem.

Rysunek 3 Diagram obiektów (wygenerowany za pomocą Visual Paradigm for UML Enterprise Edition)

Ważniejsze diagramy sekwencji

Rejestracja abonenta

Rysunek 4 Diagram sekwencji dla przypadku użycia "Rejestracja abonenta" (wygenerowany za pomocą Enterprise Architect)

Dodanie domownika

Rysunek 5 Diagram sekwencji dla przypadku użycia "Dodanie domownika" (wygenerowany za pomocą Enterprise Architect)

Opuszczenie domu przez ostatniego mieszkańca

Rysunek 6 Diagram sekwencji dla przypadku użycia "Opuszczenie domu przez ostatniego domownika" (wygenerowany za pomocą Enterprise Architect)

Przybycie pierwszego domownika do domu

Rysunek 7 Diagram sekwencji dla przypadku użycia "Przybycie pierwszego domownika do domu" (wygenerowany za pomocą Enterprise Architect)

Wykrycie intruza

Rysunek 8 Diagram sekwencji dla przypadku użycia "Wykrycie intruza" (wygenerowany za pomocą Enterprise Architect)

Informowanie o gościach

Rysunek 9 Diagram sekwencji dla przypadku użycia "Informowanie o gościach" (wygenerowany za pomocą Enterprise Architect)

Przesłanie listy zakupów

Rysunek 10 Diagram sekwencji dla przypadku użycia "Przesłanie listy zakupów" (wygenerowany za pomocą Enterprise Architect)

Zarządzanie domem

Rysunek 11 Diagram sekwencji dla przypadku użycia "Zarządzanie domem" (wygenerowany za pomocą Enterprise Architect)


Wyszukiwarka