Na funkcích nezáleží. Na systémech ano.
Shrnutí
Vývoj funkcí je v softwarových systémech často považován za primární hnací sílu hodnoty produktu. Tato perspektiva však přehlíží důležitost návrhu systému a integrace. Tento článek tvrdí, že samotné funkce nevytvářejí smysluplné výsledky; místo toho se hodnota objevuje ze systémů, které tyto funkce propojují, koordinují a provádějí. Článek vychází z výzkumu softwarové architektury a vývoje produktů a zkoumá, proč je myšlení na systémové úrovni nezbytné pro vytváření škálovatelných a účinných řešení.
1. Úvod
Většina produktů je postavena vlastnost po funkci.
Logika je jednoduchá:
- více funkcí -> vyšší hodnota
Ale v praxi to funguje jen zřídka.
Mnoho produktů:
- mají mnoho funkcí
- vypadat jako kompletní
- stále se nedaří
Problémem nejsou funkce.
Je to systém.
2. Iluze hodnoty funkce
Vlastnosti jsou viditelné.
Jsou to:
- snadné prokázat
- snadné srovnání
- snadné prodat
Díky tomu se cítí důležití.
Samotné funkce však nezaručují užitečnost.
Produkt s mnoha funkcemi stále může:
- být matoucí
- být nekonzistentní
- nepodaří se vyřešit skutečný problém
3. Co ve skutečnosti vytváří hodnotu
Hodnota nepochází z jednotlivých vlastností.
Pochází z:
- jak jsou propojeny
- jak se spolu chovají
- jak produkují výsledky
systém:
- definuje interakce
- prosazuje logiku
- zajišťuje konzistenci
To je to, co dělá produkt použitelným.
4. Fragmentace vs. integrace
Vývoj řízený funkcemi vede k fragmentaci.
Každá funkce:
- je postaven v izolaci
- řeší místní problém
- ignoruje větší obrázek
Výsledkem je:
- nekonzistentní uživatelská zkušenost
- zdvojená logika
- rostoucí složitost
Naproti tomu systémový vývoj se zaměřuje na integraci.
5. Složitost bez struktury
Přidávání funkcí zvyšuje složitost.
Bez struktury se tato složitost stává neovladatelnou.
Struktura systému je primárním faktorem při řízení složitosti.
Bez toho:
- systémy se stávají křehkými
- změny přinášejí nové problémy
- vývoj se zpomaluje
6. Systém definuje produkt
Produkt není definován tím, co obsahuje.
Je definována tím, jak funguje.
Vlastnosti jsou komponenty.
Systém je produkt.
Uživatelé nepociťují funkce izolovaně.
Zažijí systém.
7. Od funkcí k systémům
Chcete-li vytvářet lepší produkty, zaměření se musí změnit:
Od:
- přidání funkcí
Komu:
- navrhování systémů
To zahrnuje:
- definování interakcí
- zajištění konzistence
- upřednostňování výsledků
8. Praktické důsledky
Chcete-li se vyhnout selhání způsobenému funkcemi:
- navrhněte systém před přidáním funkcí
- zaměření na integraci
- odstranit zbytečné složitosti
- vyhodnotit funkce na základě jejich přínosu do systému
9. Závěr
Funkce samy o sobě hodnotu nevytvářejí.
Systémy ano.
Rozdíl mezi produktem, který funguje, a produktem, který selže, není v počtu funkcí.
Takto se scházejí.
Reference
Bass, L., Clements, P., & Kazman, R. (2012). Softwarová architektura v praxi (3. vydání). Addison-Wesley.
Kruchten, P., Nord, R. L., & Ozkaya, I. (2012). Technický dluh: Od metafory k teorii a praxi. IEEE Software, 29(6), 18-21.

