Oto częste błędy i braki. Proszę ich unikać.
Etap 1 – wymagania i przypadki użycia
- nazwa wymagania jest niejasna zamiast zawierać podmiot, orzeczenie i dopełnienie;
- wymagania na liście nie są ponumerowane;
- wymaganie, które ogranicza działanie systemu, opisane jest jako funkcjonalne zamiast niefunkcjonalne;
- wymaganie, które opisuje zadanie stawiane systemowi, opisane jest jako niefunkcjonalne zamiast funkcjonalne.
- przypadki użycia, między którymi nie ma relacji całość-część, są powiązane relacją include lub extend;
- powiązanie między przypadkami użycia pokazuje kolejność ich wykonania, zamiast relacji całość-część;
- grot relacji include nie wskazuje na zawierany przypadek;
- grot relacji extend nie wskazuje na zawierający przypadek;
- przypadki użycia są powiązane ze sobą inną relacją niż include, extend lub generalizacją/uogólnieniem;
- aktor jest powiązany z aktorem lub przypadkiem użycia relacją include lub extend;
- nie ma relacji include lub nie ma relacji extend;
- samodzielna, wspólna, alternatywna lub opcjonalna część realizacji przypadku użycia nie jest osobnym przypadkiem użycia;
- nie ma relacji uogólniania między aktorami, którzy mają identyczny udział w realizacji przypadków użycia.
Etap 2 – czynności
- brak węzła początkowego lub jest ich więcej niż 1;
- jeden z przepływów równoległych kończy się węzłem activity final (zamiast flow final), podczas gdy pozostałe przepływy powinny być nadal aktywne;
- węzeł rozgałęzienia na przepływy alternatywne (<>, decision) ma nieopisane wyjścia, lub ich opisy nie są w nawiasach kwadratowych;
- do węzła złączającego przepływy równoległe (|, join) wchodzą przepływy alternatywne;
- nazwy partycji nie odpowiadają aktorom wykonującym umieszczone w nich akcje i czynności;
- do czynności lub akcji wchodzi bezpośrednio (bez węzła merge lub join) więcej niż jeden przepływ (strzałka);
- z czynności wychodzi bezpośrednio (bez węzła decision lub fork) więcej niż jeden przepływ (strzałka).
Poniższe listy jeszcze nie zostały dostosowane do aktualnych zadań.
Etap 3 – klasy
- klasy z różnych warstw (model, widok, kontroler) nie znajdują się w osobnych pakietach;
- główna klasa warstwy kontrolera nie zawiera statycznej metody main;
- nazwy metod lub pól statycznych nie są podkreślone;
- klasy z różnych warstw są połączone agregacją lub kompozycją, zamiast asocjacją lub zależnością;
- klasa, która posiada pole będące instancją innej (lub tej samej) klasy, nie jest połączona z tą klasą przez asocjację, agregację lub kompozycję lub jest połączona zależnością;
- romb agregacji lub kompozycji jest po stronie klasy posiadanej, a nie posiadającej;
- asocjacja, agregacja lub kompozycja nie ma opisu w postaci roli (po właściwej stronie relacji), liczności (z wyjątkiem 1) lub grotu (jeśli jest skierowana);
- rola z jednego końca asocjacji, agregacji lub kompozycji nie znajduje się na liście pól klasy z jej drugiego końca;
- rola z jednego końca asocjacji, agregacji lub kompozycji nie jest ustawiona jako własność klasy z jej drugiego końca (brak kropki przy grocie);
- pole odpowiadające roli w asocjacji, agregacji lub kompozycji, gdzie liczność jest mnoga, nie jest zdefiniowane jako kolekcja;
- enumeracja nie jest połączona z klasą, która ją wykorzystuje, zależnością lub jest połączona innym typem relacji;
- brak metod lub klas (z wyjątkiem standardowych) używanych na diagramach sekwencji;
- brak kodu definiującego klasy modelowane na diagramie;
- kod klas jest niepełny: brak definicji pól, nagłówków metod lub treści metody main;
- kod klas nie odpowiada dokładnie modelowi z diagramu.
Etapy 4 – sekwencje
- w nazwie linii życia podano tylko nazwę instancji klasy, bez podania nazwy klasy;
- nazwa klasy w opisie linii życia nie zaczyna się od dwukropka;
- nazwa lub postać metody nie odpowiada jej definicji na diagramie klas;
- wywołanie metody jest asynchroniczne (otwarty grot), zamiast synchronicznego (zamknięty grot);
- brak powrotu z wywołania metody innego typu niż void;
- powrót z wywołania metody innego typu niż void nie jest opisany zwracanym obiektem;
- powrót z wywołania metody nie jest typu reply (ciągła linia zamiast przerywanej);
- powrót z wywołania metody nie wchodzi do linii życia, z której metoda została wywołana;
- po konstruktorze obiektu następuje powrót z linii życia utworzonego obiektu do linii życia obiektu tworzącego (chyba że między nimi pokazano operacje wykonywane przez konstruktor);
- ramka ref nie obejmuje wszystkich linii życia, które znajdują się też na referowanym diagramie (nie chodzi o dodawanie linii życia);
- ramka opt, alt lub loop nie ma opisu warunkującego wykonanie jej zawartości;
- ramka wielokrotnego wyboru jest typu opt zamiast alt;
- brakuje nawiasów kwadratowych w warunku wykonania ramki opt, loop lub regionu ramki alt;
- metoda zawarta w warunku wykonania ramki opt, loop lub regionu ramki alt nie została umieszczona na diagramie lub została nie została umieszczona jako pierwsza w tej ramce lub regionie;
- brak kodu definiującego ciało metody z diagramu;
- kod metody z diagramu jest niepełny lub nie odpowiada dokładnie diagramowi.
Etap 5 – stany
- diagram nie opisuje obiektu klasy modelującej encje;
- diagram zawiera stany innego obiektu, niż obiekt, którego dotyczy;
- brak pseudostanu początkowego, wskazującego na początkowy stan, lub jest ich więcej niż 1;
- węzeł rozgałęzienia na przejścia alternatywne (<>, decision) ma nieopisane wyjścia, lub ich opisy nie są w kwadratowych nawiasach;
- do węzła złączającego przejścia równoległe (|, join) wchodzą przejścia alternatywne;
- przejście z początkowego pseudostanu do początkowego stanu zawiera wyzwalacz (zdarzenie powodujące przejście);
- jest więcej niż jedno przejście z początkowego pseudostanu;
- warunek (dozór) wykonania przejścia między stanami nie jest umieszczony w kwadratowych nawiasach;
- wynik (akcja) wykonania przejścia między stanami nie jest poprzedzony ukośnikiem;
- brakuje wartości zwracanej (akcja z return) przez metodę powodującą przejście między stanami, jeśli ta metoda coś zwraca, a zwracana wartość ma znaczenie dla zmiany stanu;
- operacja wykonywana na początku aktywności danego stanu nie jest poprzedzona przez entry/;
- operacja wykonywana na końcu aktywności danego stanu nie jest poprzedzona przez exit/;
- operacja wykonywana w trakcie aktywności danego stanu nie jest poprzedzona przez do/;
- metoda, pole z operacją (w notacji z kropką) lub inna operacja umieszczona na przejściu między stanami lub wewnątrz stanu nie jest metodą, polem lub operacją zdefiniowaną w obiekcie, którego stanów dotyczy diagram.