Inżynieria Oprogramowania (najczęstsze błędy)

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.

Comments are closed.