Należy opisać przeznaczenie systemu. Na przykład system obsługi biblioteki może dotyczyć biblioteki w AGH lub biblioteki w domu kultury. Skale tych systemów są nieporównywalne.
Inaczej: interesariusze.
Użytkownicy, właściciele, nabywcy systemu, pracownicy obsługi technicznej, użytkownicy wewnętrzni, zewnętrzni
Należy krótko (np.: w tabeli) wyliczyć podstawowe cele stawiane systemowi przez poszczególnych interesariuszy. Porównać sposób ich realizacji w aktualnym systemie (np.: manualnym) i systemie proponowanym. Należy nadać im priorytet.
Celem:
Na przykład
Udziałowiec | Cel | Priorytet |
---|---|---|
Klient | Możliwość dodania towaru do koszyka | Wysoki |
Klient | Możliwość usunięcia towaru z koszyka | Wysoki |
Klient | Wystawienie opinii o sklepie | Średni |
Klient | Wyszukiwanie podobnych towarów i rekomendacje | Niski |
Klient | Wybór opcji dostawy | Wysoki |
Nabywca | Możliwość zmiany szaty graficznej | Średni |
Nabywca | Wyświetlanie aktualnych promocji | Wysoki |
Nabywca | Wdrożenie w systemie Linux | Wysoki |
Zespół | Zastosowanie JEE | Wysoki |
Zespół | Zastosowanie bazy danych Oracle | Niski |
W notacji UML - granicami systemu są Aktorzy
Aktorem może być:
Diagram pokazuje system oraz aktorów. Odpowiednik diagramu kontekstowego DFD. Np.: Obrazek z sieci
Wyliczenie bez szczegółowych opisów, można podzielić na funkcje dostępne dla grup użytkowników.
Zamieszczone tu (jeden lub kilka) diagramy czynności pokazują typowe sekwencje działań wykonywanych w systemie. Obejmują czynności realizowane za pomocą systemu komputerowego oraz manualne wykonywane przez aktorów oraz innych aktywnych interesariuszy. Wybranym czynnościom można nadać identyfikatory przypadków użycia.
Ideą jest, aby diagram czynności pokazywał pewien większy proces, obejmujący różne aktywności. Np.:
Pierwsza czynność jest kandydatem na przypadek użycia Wyszukaj w katalogu; druga: jest manualna i nie jest przypadkiem użycia systemu; trzecia to: Zarejestruj wypożyczenie.
2-5 stron
Patrz Analiza i modelowanie oprogramowania - zadanie 4 (diagram czynności)
Zazwyczaj w dziedzinie problemu identyfikuje się klasy odpowiadające:
Słownik pojęć powinien definiować podstawowe pojęcia (termin – znaczenie), którymi będziemy posługiwać się w dokumentacji. Najlepiej w formie tabeli. Słownik może przyrastać w miarę sporządzania dokumentacji.
Ogólna zasada: identyfikowane tu klasy odpowiadają najczęściej typom rekordów przechowywanym w bazie danych. W zależności od frameworku klasy te są nazywane https://www.geeksforgeeks.org/pojo-vs-java-beans/POJO, Entity, klasami modelu. Nie ma potrzeby specyfikowania metod tych klas.
Na tym diagramie nie zamieszczamy klas, które pojawią się później w projekcie, np. klas do obsługi baz danych typu Repository, czy DAO, czy też takich klas, jak kontroler czegoś, np. KontrolerBramkiWjazdowej.
2-5 stron
Specyfikacja wymagań definiuje wymagania stawiane systemowi w postaci przypadków użycia. Przypadki użycia mogą być zgrupowane w pakiety.
Przypadek użycia powinien zostać zdefiniowany zgodnie z przedstawionym dalej szablonem. Ponieważ dążymy do zdefiniowania wszystkich przypadków użycia, należy starać się ograniczyć ich liczbę i złożoność relacji. Dla podanych tematów należy oczekiwać 5-20 przypadków użycia. Zbyt mała liczba (np.: 3) świadczy o ogólnikowym potraktowaniu tematu, zbyt duża o nadmiernym zagłębieniu w szczegóły.
Cztery czy jeden. W zasadzie bardzo dużo operacji to CRUD C(reate) R(ead) U(pdate) D(elete). Mogą być wyrażone jako cztery przypadki użycia:
W przypadku dużej liczby przypadków użycia można starać się scalić je w jeden (głowny to Utwórz nowe zamówienie) przedstawiając pozostałe jako przebiegi alternatywne. Zwyczajowym polskim terminem w przypadku scalania jest Definiuj (np. Definiuj zamówienie)
Zasadą jest, że możemy manipulować każdym obiektem dziedziny. Czyli na ogół oznacza to możliwość wykonania operacji CRUD na każdej klasie z diagramu klas.
Inną formą wyrażenia wymagań są historie użytkownika (ang. user story). Są znacznie krótsze i mniej sformalizowane. Zazwyczaj mają postać opisu mającego formę:
Przykład pochodzący z tej strony.
Historia użytkownika powinna mieć też zdefiniowane kryteria akceptacji (ang. Acceptance criteria). W tym momencie zaczynają się pojawiać testowalne wymagania
brak ograniczeń objętościowych, należy zamieścić specyfikacje dla 5 przypadków użycia i 3 historii użytkownika. Przypadki użycia nie powinny obejmować rejestracji i logowania - ale historie użytkownika mogą
W tej sekcji zamieszczamy diagramy tych elementów interfejsu użytkownika, które pojawiły się w opisach przypadków użycia. Można je narysować za pomocą wielu narzędzi online (szukaj wireframe i mockups) ale także w Visio (gdzie występują pod nazwą diagram szkieletowy)
należy przedstawić najbardziej interesujące diagramy; można pominąć elementy typu menu, lista opcji
Architektura systemu to mówiąc ogólnie zbiór komponentów połączonych interfejsami. Komponenty te mogą być przypisane do jednego lub kilku węzłów obliczeniowych.
W opisie architektury należy określić
Patrz Analiza i modelowanie oprogramowania - zadanie 6 (diagram komponentów na początku)
1 – 5 stron
W tym rozdziale należy zamieścić projekt interfejsu pomiędzy komponentami systemu.
W większości przypadków będzie to zestawienie adresów usług REST (ang. endpoints).
Adres | Polecenie (verb) | Opis |
---|---|---|
/users | POST | Dodaje nowego użytkownika. Dane użytkownika są przesłane w formacie JSON. Zwraca odpowiedź w nadany identyfikator |
/users{param_list} | GET | Zwraca listę użytkowników, których dane odpowiadają przekazanym parametrom: name, birth_date, etc. |
/users/{id} | GET | Zwraca dane użytkownika o identyfikatorze id. Dane zwracane formacie JSON. |
Typowe polecenia są opisane tu
Opisy API w formacie REST są często pojawiającym się elementem dokumentacji. Dla trzech zapytań proszę zamieścić dokładną specyfikację, np. wzorując się na
Inne typy/implementacje interfejsów (nadające się do komunikacji pomiędzy komponentami, zwłaszcza dla urządzeń oraz aplikacji mobilnych przesyłających masowo dane ):
W przypadku trzech pierwszych - specyfikuje się nazwę metody/funkcji oraz jej parametry i zwracane wartości. Metoda jest wywoływana przez klienta i wykonywana przez serwer. W obie strony wędrują komunikaty z danymi i ich strukturę należy wyspecyfikować.
W przypadku RabbitMQ wysyłane są komunikaty pomiędzy stronami uczestniczącymi w komunikacji. Jest to realizacja wzorca producent-bufor-konsument. Middleware obsługuje bufor i zajmuje się dostarczaniem komunikatów i potwierdzeń. Należy wyspecyfikować strukturę komunikatów.
Projekt systemu jest realizowany dla konkretnej platformy (języka programowania zapewniającego podstawowy zestaw klas, biblioteki, architektury systemu, itd.). W zasadzie rozdział ten powinien być największym objętościowo fragmentem. Jeżeli system składa się z niezależnych modułów (klient-serwer, nadawca-odbiorca) należy dla każdego z nich podać osobny projekt.
W projekcie należy określić platformę implementacji komponentu. Java, .NET, PHP, Oracle, MySQL, React, Angular, itp. Może to również zostać określone przy definicji architektury systemu.
Zawartość:
Klasy mogą należeć do różnych warstw (frontend/backend). Interfejs backendu może być potraktowany jako:
Mimo, że baza danych wykonuje kwerendy, aspekt interpretowania zapytań i przetwarzania kwerend w postaci danych tekstowych nie interesuje nas. Każda kwerenda ma być potraktowana jako metoda jakiejś klasy o w miarę semantycznej nazwie. Czyli np. oczekiwana jest klasa:
Można zajrzeć tu. Specyfikacja kwerend - pojawi się w rozdziale 8. DBDD
Objętość: każdy przypadek użycia powinien zostać zdefiniowany za pomocą odpowiedniego diagramu interakcji. Klasy (z atrybutami i metodami) oraz ich związki powinny zostać również zdefiniowane. W miarę możliwości zestaw powiązanych zależnościami klas należy umieszczać przed diagramem interakcji. opis klas w tabelach, 5 diagramów związków klas, 5 diagramów dla zachowania
Uwaga
wyświetlKomunikat()
Oczekiwana jest spójność diagramu ERD z diagramem klas…
1 diagram + tabela ze specyfikacjami kwerend
Patrz diagramy ERD