====== Modelowanie systemu ====== /* Modelowanie systemu jest podstawowym narzędziem w inżynierii wymagań, za jego pomocą tworzymy modele procesów, które: * definiują procesy zaspokajające potrzeby użytkownika opisują zachowania tych procesów oraz przyczyny tych zachowań, definiuje zewnętrzne i wewnętrzne wejścia dla fragmentów systemu (modułów), reprezentują wszelkie powiązania, zarówno wewnętrzne jak i zewnętrzne, by lepiej zobrazować całość systemu. */ ===== Przydatne narzędzia ===== * [[wp>Unified Modeling Language]] * Diagramy struktur * [[wp>Class_diagram|Diagram klas]] * Obiektów (ang. object diagram) * Komponentów (ang. component diagram) * Wdrożenia (ang. deployment diagram) * Struktur złożonych (ang. composite structure diagram) * Pakietów (ang. package diagram) * Profili (ang. profile diagram, nowość wprowadzona w UML 2.2) * Diagramy zachowań * Czynności ([[wp>Activity_diagram|activity diagram]]) * Przypadków użycia ([[wp>Use_case_diagram|use case diagram]]) * Maszyny stanów (ang. state machine diagram) (dla UML 1.x Stanów, ang. statechart diagram) * Interakcji (diagram abstrakcyjny) * Komunikacji (ang. communication diagram) (dla UML 1.x Współdziałania, ang. collaboration diagram) * Sekwencji ([[wp>Sequence_diagram|sequence diagram]]) * Czasowe (ang. timing diagram) * Przeglądu interakcji (ang. interaction overview diagram) Projektując system informatyczny, rozpoczyna się przeważnie od tworzenia diagramów w następującej kolejności: - Przypadków użycia - Sekwencji - Klas - Aktywności Są to najczęściej wykorzystywane diagramy. Pozostałe bywają pomijane, zwłaszcza przy budowaniu niedużych systemów informatycznych. [Żródlo: Wikipedia] [[wppl>|Narzędzia UML]] \\ [[wp>List_of_UML_tools|List of UML tools]] \\ * [[http://argouml.tigris.org/|ArgoUML]] (OpenSource, Linux/Wndows/Mac OS) * Eclipse UML2 Tools * [[http://live.gnome.org/Dia|Dia]] (GTK, GPL, Linux/Win/Mac) + Dia2code * MS Visio * [[http://uml.sourceforge.net/|Umbrello UML Modeller]] (KDE) * StarUML (Win) * VS2010 Ultimate (?!) ([[http://msdn.microsoft.com/en-us/library/dd409436.aspx|Developing Models for Software Design]]) * VS2012 {{:zajecia:ppz:vs-2010-design.jpg?400|}} ===== Projektowanie oprogramowania ===== Produkty procesu projektowani: - Projekt architektury * wyodrębnienie podsystemów, modułów, **komponentów** i relacji między nimi * Diagramy: np. [[wp>Component_diagram|komponentów]] , [[wp>Package_diagram|pakietów]] * Przykład: [[http://trac.edgewall.org/wiki/TracDev/ComponentArchitecture|Przykład - Trac]], [[http://trac.edgewall.org/milestone/0.13|Kompinenty zdefiniowane w projekcjie Trac v 0.13 ]]]) - Specyfikacja abstrakcji (oprogramowania) * wyszczególnienie dostarczanych **usług** i **ograniczeń** dla każdego podsystemu (środowisko, biblioteki, technologie, itp.) * Diagramy: np. [[wp>Use_case_diagram|użycia]] - Specyfikacja interfejsu dla każdego podsystemu - Specyfikacja komponentu * usługi komponentu (diagram użycia, sekwencji, itp.) * budowa komponentu (diagram klas) - Specyfikacja danych * struktury danych * Diagramy: np. [[wp>Class_diagram|klas]] - Specyfikacja algorytmu * projektowanie algorytmów dostarczających usługi Trac może być z powodzeniem wykorzystany do dokumentowania wszystkich aspektów projektu. Strony wiki pozwalają na tworzenie dokumentacji i jej modyfikacji w łatwy sposób, wspierając wymianę informacji. Linki łączące usługi Trac (wiki, repozytorium, harmonogram, zadania, itd.) ułatwiają śledzenie postępów pracy oraz tworzenie raportów.