Task: Návrh řešení
Návrh řešení je úlohou, jejímž hlavním cílem je navrhnout řešení IS/ICT, které by maximálně vyhovovalo všem specifikovaným požadavkům.
Disciplines: Vývoj
Purpose
Navrhovaný IS/ICT je v rámci této úlohy popsán a zachycen grafickými modely, na základě kterých je řešení komunikováno se zbytkem projektového týmu a v dalších iteracích postupně implementováno.
Relationships
RolesPrimary Performer: Additional Performers:
InputsMandatory:
    Optional:
      Outputs
        Main Description
        Návrh řešení je zde popsán jako proces jednotlivých dílčích kroků, které na sebe navazují, nicméně v praxi můžou být různé kroky této úlohy prováděny opakovaně a ne přesně za sebou, podle toho, jak jsou v jeho průběhu identifikovány nové požadavky. Je doporučováno, aby byla úloha návrh řešení v co nejkratší době následována jeho implementací.
        Steps
        Analýza požadavků
        Prvním krokem, který je nutné při návrhu řešení provést, je podrobná analýza všech požadavků, které by měly být respektovány. Je možné, že bude Vývojář muset v rámci této analýzy komunikovat s Analytikem či Zainteresovanými stranami, kteří by mu měli upřesnit a dovysvětlit jakékoliv nejasnosti, na které narazí.
        Identifikace typů objektů a jejich vztahů

        Na základě požadavků, které by měly být do řešení v dané iteraci zahrnuty, jsou následně identifikovány typy objektů, kterými by měl být systém tvořen a jejich vzájemné vztahy. Vývojář může do značné míry vycházet z definice byznys a návrhových tříd vytvářených při návrhu architektury, nicméně obvykle je nutné je podrobněji vymezit a rozšířit o třídy další, které při návrhu architektury nebyly brány v úvahu jako např. třídy uživatelského rozhraní (presentation classes) a třídy obsluhující systémové události (control classes).

        Na základě požadavků, které by měly být do řešení v dané iteraci zahrnuty, jsou následně identifikovány typy objektů, kterými by měl být systém tvořen a jejich vzájemné vztahy. Vývojář může do značné míry vycházet z definice byznys a návrhových tříd vytvářených při návrhu architektury, nicméně obvykle je nutné je podrobněji vymezit a rozšířit o třídy další, které při návrhu architektury nebyly brány v úvahu jako např. třídy uživatelského rozhraní (presentation classes) a třídy obsluhující systémové události (control classes).

        Za účelem ověření, zda byly opravdu definovány veškeré vazby mezi jednotlivými třídami, včetně metod, prostřednictvím kterých je jejich interakce prováděna, je vhodné krok po kroku projít jednotlivé případy užití a zkontrolovat, zda navrhované řešení podporuje opravdu veškerou požadovanou funkcionalitu.

        Pokud se v návrhu vyskytují komplexní prvky, nebo prvky s komplikovanějším chováním, je vhodné je detailněji popsat. Za tímto účelem může být využit například stavový diagram jazyka UML 2, který umožňuje zachytit stavy jednotlivých objektů a přechodů mezi nimi.

        V průběhu všech dílčích kroků návrhu je vhodné navrhované řešení zaznamenávat např. prostřednictvím diagramů jazyka UML, datových modelů či částí navrženého kódů a návrh konzultovat s ostatními členy týmu. Je tak zajištěno, že budou včas identifikovány jakékoliv změny architektury a požadavků, které návrh ovlivní, a zároveň je získávána rychlá zpětná vazba.

        Key Considerations
        Návrh řešení by nikdy neměl být prováděn najednou pro celý IS/ICT, nýbrž by vždy měl podporovat pouze menší množinu požadavků, aby nebyly iterace příliš dlouhé a jednotlivé přírůstky mohly být dodávány uživatelům v krátkých intervalech. Vždy je ale nutné, aby navržený přírůstek přinášel uživatelům přidanou hodnotu.