Budovat systémy místo funkcí

Hero image for Budovat systémy místo funkcí.

Shrnutí

K vývoji softwaru se často přistupuje spíše jako k vytváření individuálních funkcí než k návrhu koherentních systémů. Tento článek zkoumá omezení vývoje řízeného funkcemi a tvrdí, že zaměření na systémy vede k škálovatelnějším, udržovatelnějším a efektivnějším řešením. Článek vychází z výzkumu softwarové architektury a návrhu systémů a zkoumá, jak přechod od myšlení zaměřeného na funkce k myšlení zaměřenému na systém zlepšuje dlouhodobé výsledky a snižuje složitost.

1. Úvod

Většina vývojářů začíná vytvářením funkcí.

Funkce je:

  • viditelné
  • snadné definovat
  • snadné měření

Díky tomu je přirozeným výchozím bodem.

Jak však projekty rostou, objevuje se vzorec:

Funkce samy o sobě nevytvářejí fungující systém.

Tento článek zkoumá rozdíl mezi stavebními prvky a stavebními systémy.

2. Co je funkce?

Funkce je konkrétní část funkce.

Příklady:

  • přihlašovací formulář
  • stránka produktu
  • funkce vyhledávání

Funkce řeší izolované problémy.

Jsou užitečné, ale omezené.

Když jsou vyvíjeny nezávisle, funkce často:

  • chybí integrace
  • vytvářet nesrovnalosti
  • zvýšit složitost systému

3. Co je to systém?

Systém je soubor propojených komponent, které spolupracují na vytvoření výsledku.

V softwaru to zahrnuje:

  • backendová logika
  • rozhraní frontend
  • datové toky
  • uživatelské interakce

systém:

  • spojuje funkce
  • definuje, jak interagují
  • zajišťuje konzistenci

4. Problém s vývojem řízeným funkcemi

Zaměření pouze na funkce vytváří několik problémů:

4.1 Fragmentace

Funkce jsou sestaveny nezávisle bez ohledu na celý systém.

4.2 Nekonzistentní chování

Různé části systému se chovají odlišně.

4.3 Problémy se změnou měřítka

Přidání dalších funkcí zvyšuje složitost bez zlepšení struktury.

4.4 Technický dluh

Nedostatek návrhu systému vede k dlouhodobým problémům s údržbou.

5. Myšlení v systémech

Posun k systémovému myšlení mění přístup.

Místo dotazu:

Jakou funkci mám vytvořit?

Ptáte se:

Jaký systém produkuje výsledek, který chci?

To vede k:

  • lepší integrace
  • přehlednější struktura
  • předvídatelnější chování

6. Praktický příklad

Zvažte aplikaci pro elektronický obchod.

Přístup řízený funkcemi:

  • vytvořit stránku produktu
  • vybudovat pokladnu
  • vytvořit uživatelský účet

Systémově řízený přístup:

  • navrhněte cestu uživatele
  • definovat datový tok
  • připojte všechny komponenty

Druhý přístup vede k soudržnějšímu systému.

7. Praktické důsledky

Chcete-li sestavit systémy namísto funkcí:

  • nejprve definovat celkový výsledek
  • návrh interakcí mezi komponentami
  • zajistit konzistenci v celém systému
  • vyhnout se izolovanému vývoji

Tento přístup postupem času snižuje složitost.

8. Závěr

Funkce jsou nutné, ale nestačí.

Systémy určují, zda funkce efektivně spolupracují.

Zaměřením se na systémy spíše než na jednotlivé funkce mohou vývojáři vytvářet:

  • škálovatelnější
  • spolehlivější
  • udržitelnější řešení

Cílem není vytvářet další funkce.

Cílem je vybudovat něco, co funguje jako celek.

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.