![]() |
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
Każdy użytkownik zarejestrowanego numeru telefonu.
Specjalny abonent, który jest mieszkańcem domu a właściwie użytkownikiem numeru telefonu należącym do mieszkańca.
Warunki początkowe:
Brak.
Przebieg:
Abonent zgłasza żądanie rejestracji poprzez wysłanie wiadomości SMS o dowolnej treści lub połączenie pod numer 6666.
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:
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.
Warunki początkowe:
Brak.
Przebieg:
Abonent zgłasza żądanie rejestracji poprzez wysłanie wiadomości SMS o treści „Dodaj domownika” pod adres 6666.
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.
Warunki początkowe:
Przynajmniej jeden domownik został oddany i znajduje się on w domu.
Przebieg:
Domownik opuszcza dom.
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.
Warunki początkowe:
Przynajmniej jeden domownik został oddany i znajduje się on poza domem.
Przebieg:
Domownik pojawia się w domu.
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.
Warunki początkowe:
Istnieje przynajmniej jeden zarejestrowany abonent i domownik. Zarejestrowany abonent oraz wszyscy domownicy znajdują się poza domem.
Przebieg:
Zarejestrowany abonent pojawia się w domu.
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.
Warunki początkowe:
Istnieje przynajmniej jeden zarejestrowany abonent i domownik. Zarejestrowany abonent oraz wszyscy domownicy znajdują się poza domem.
Przebieg:
Zarejestrowany abonent używa domofonu.
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.
Warunki początkowe:
Istnieje przynajmniej jeden domownik.
Przebieg:
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.
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:
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.
Warunki początkowe:
Istnieje przynajmniej jeden domownik.
Przebieg:
Domownik wykonuje połączenie pod numer 6666.
System wymienia możliwe usługi (np. ustawienie temperatury, otwarcie/zamknięcie okna, przygotowanie kąpieli).
Domownik wybiera na klawiaturze numer opowiadający wybranej usłudze.
System wymienia możliwe opcje (np. dla ustawienia temperatury będą to wartości temperatury).
Domownik wybiera na klawiaturze numer opowiadający wybranej opcji.
System realizuje wybraną usługę i informuje o tym domownika zwrotną wiadomością SMS.
Przebiegi alternatywne:
Domownik wybrał nieprawidłowy numer. System wraca do punktu 2.
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.
Rysunek 1 Diagram przypadków użycia (wygenerowany za pomocą Enterprise Architect)
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.
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.
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
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
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ą
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)
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)
Rysunek 4 Diagram sekwencji dla przypadku użycia "Rejestracja abonenta" (wygenerowany za pomocą Enterprise Architect)
Rysunek 5 Diagram sekwencji dla przypadku użycia "Dodanie domownika" (wygenerowany za pomocą Enterprise Architect)
Rysunek 6 Diagram sekwencji dla przypadku użycia "Opuszczenie domu przez ostatniego domownika" (wygenerowany za pomocą Enterprise Architect)
Rysunek 7 Diagram sekwencji dla przypadku użycia "Przybycie pierwszego domownika do domu" (wygenerowany za pomocą Enterprise Architect)
Rysunek 8 Diagram sekwencji dla przypadku użycia "Wykrycie intruza" (wygenerowany za pomocą Enterprise Architect)
Rysunek 9 Diagram sekwencji dla przypadku użycia "Informowanie o gościach" (wygenerowany za pomocą Enterprise Architect)
Rysunek 10 Diagram sekwencji dla przypadku użycia "Przesłanie listy zakupów" (wygenerowany za pomocą Enterprise Architect)
Rysunek 11 Diagram sekwencji dla przypadku użycia "Zarządzanie domem" (wygenerowany za pomocą Enterprise Architect)