Projektowanie systemu
Faza projektowania systemu jest fazą, w której rozstrzygane są kwestie jak zbudowany ma być system, aby zrealizować wszystkie wymagania określone w fazach poprzedzających. Z punktu widzenia tworzenia modelu systemu faza projektowania oznacza wzbogacenie modelu o wiele szczegółów, zwłaszcza szczegółów technicznych
Elementy, na które zwraca się większą uwagę w fazie projektowania to:
- wydajność, niezawodność, łatwość konserwacji systemu
- ponowne wykorzystanie istniejących składników
W fazie projektowania można także podjąć szereg decyzji związanych z implementacją, takich jak:
- uszczegółowienie modeli obiektowych, np.:
- ustalenie charakteru dostępu do atrybutów i metod
- ustalenie szczegółów hierarchii dziedziczenia
- ustalenie sposobu realizacji zestawiania obiektów
- wzbogacenie modeli o elementy konieczne dla implementacji, ale będące poza zainteresowaniem w fazie określenia wymagań, np.:
- zarządzanie pamięcią
- zarządzanie trwałym przechowywaniem danych
- szczegóły interfejsu graficznego
- optymalizacja systemu
Projektowanie systemu może być realizowane w metodologii strukturalnej – wtedy jego efektem będzie struktura danych programu oraz zestaw funkcji operujących na tej strukturze (funkcje np. w postaci szczegółowej specyfikacji – z warunkami początkowymi końcowymi itp. – oraz dołączonego pseudo-kodu).
Jeżeli projektowanie jest realizowane w metodologii obiektowej, jego efektem będzie szczegółowy projekt obiektowy, w postaci hierarchii klas, uwzględniającej dziedziczenie, oraz zestawów atrybutów i metod charakteryzujących obiekty poszczególnych klas (każda z klas powinna także zawierać elementy wymagane w programowaniu kontraktowym: warunki początkowe i końcowe metod oraz niezmienniki klasy).