Table of Contents

Szablon dokumentacji projektowej

1. Ogólny opis systemu (wizja)

Cel (przeznaczenie) systemu

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.

Udziałowcy i użytkownicy

Inaczej: interesariusze.

Użytkownicy, właściciele, nabywcy systemu, pracownicy obsługi technicznej, użytkownicy wewnętrzni, zewnętrzni

Podstawowe cele udziałowców i użytkowników

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łowiecCelPriorytet
KlientMożliwość dodania towaru do koszykaWysoki
KlientMożliwość usunięcia towaru z koszykaWysoki
KlientWystawienie opinii o sklepieŚredni
KlientWyszukiwanie podobnych towarów i rekomendacjeNiski
KlientWybór opcji dostawyWysoki
NabywcaMożliwość zmiany szaty graficznejŚredni
NabywcaWyświetlanie aktualnych promocjiWysoki
NabywcaWdrożenie w systemie LinuxWysoki
ZespółZastosowanie JEEWysoki
ZespółZastosowanie bazy danych OracleNiski

Granice systemu (wejścia, wyjścia)

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

Lista możliwości (funkcji systemu)

Wyliczenie bez szczegółowych opisów, można podzielić na funkcje dostępne dla grup użytkowników.

Procesy biznesowe / biznesowe przypadki użycia

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.:

  1. Czytelnik wyszukuje książkę w katalogu i sprawdza jej dostępność i lokalizację na półce
  2. Czytelnik bierze książkę z półki i zanosi do stanowiska bibliotekarza
  3. Bibliotekarz rejestruje wypożyczenie

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)

2. Analiza dziedziny (analiza obiektów biznesowych)

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

3. SRS - Specyfikacja wymagań

Przypadki użycia

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)

Jak sprawdzić kompletność diagramu przypadków użycia

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.

User stories

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ą

Patrz Analiza i modelowanie oprogramowania - zadanie 2

4. IRS Wymagania dla interfejsu użytkownika

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

Analiza i projekt

5. Architektura systemu

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

6. Projekt interfejsu IDD

W tym rozdziale należy zamieścić projekt interfejsu pomiędzy komponentami systemu.

REST API

W większości przypadków będzie to zestawienie adresów usług REST (ang. endpoints).

AdresPolecenie (verb)Opis
/usersPOSTDodaje nowego użytkownika. Dane użytkownika są przesłane w formacie JSON. Zwraca odpowiedź w nadany identyfikator
/users{param_list}GETZwraca listę użytkowników, których dane odpowiadają przekazanym parametrom: name, birth_date, etc.
/users/{id}GETZwraca 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

RPC i kolejki

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.

7. Projekt oprogramowania

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

Patrz Analiza i modelowanie oprogramowania - zadanie 6 (diagram klas i sekwencji dla realizacji przypadków użycia)

8. Projekt bazy danych DBDD (jeżeli występuje)

Oczekiwana jest spójność diagramu ERD z diagramem klas…

1 diagram + tabela ze specyfikacjami kwerend

Patrz diagramy ERD