Na funkcích nezáleží. Na systémech ano.

Hero image for 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.