6.1 Bomlás

A sokféle kritérium ellenére a nagy rendszerek fejlesztésének fő feladata a rendszer összetettségének csökkentése . A bonyolultság csökkentése érdekében a részekre osztáson kívül mást még nem találtak ki.

Néha az egyszerűség kedvéért ezt az "oszd meg és uralkodj" elvének nevezik, de a szoftvertervező szemszögéből hierarchikus lebontásról beszélünk .

Egy összetett rendszert kell felépíteni néhány egyszerűbb alrendszerből, amelyek mindegyike kisebb részekből épül fel, és így tovább, amíg a legkisebb részek elég egyszerűek ahhoz, hogy közvetlenül megértsék és létrehozzák.

Bomlás

A nagyszerű hír, hogy ez a megoldás nem csak az egyetlen ismert, hanem univerzális is. Amellett, hogy csökkenti a bonyolultságot, egyidejűleg biztosítja a rendszer rugalmasságát , jó méretezhetőségét és a kritikus részek megkettőzésével nagyobb rugalmasságot.

Ennek megfelelően, ha a program architektúrájáról, struktúrájának kialakításáról van szó, akkor ez a program alrendszerekre, szolgáltatásokra, rétegekre, szubrutinokra és funkcionális modulokra bontását, valamint ezek egymással és a külvilággal való interakciójának megszervezését jelenti.

És a legértékesebb itt a következő: minél függetlenebbek az alrendszerek, annál biztonságosabb mindegyikük fejlesztésére egy adott időpontban külön-külön összpontosítani, és nem kell aggódni az összes többi rész miatt.

6.2 A moduláris architektúra előnyei

A hierarchikus dekompozíció elve lehetővé teszi, hogy megszabaduljon a káosztól a kód több ezer osztályában. Emlékszel, hogy a kódod csomagokra (csomagokra) és alcsomagokra van felosztva? Ez a hierarchikus dekompozíció egyik kifejezése.

A programja egy csomó osztályból könyvtárak és modulok halmazává válik, amelyek jól meghatározott és egyszerű szabályok szerint működnek együtt. Ez pedig lehetővé teszi az összetettségének szabályozását, és lehetőséget ad arra is, hogy megkapja mindazokat az előnyöket, amelyek általában a jó architektúra koncepciójához társulnak.

Íme a legalapvetőbbek:

  • Skálázhatóság - a rendszer bővítésének és teljesítményének növelésének lehetősége új modulok hozzáadásával.
  • Karbantarthatóság - egy modul megváltoztatása nem igényel más modulok cseréjét.
  • Modulok cserélhetősége (Swappability) - a modul könnyen cserélhető egy másikra.
  • Egységteszt – Egy egység leválasztható az összes többiről és tesztelhető/javítható .
  • Újrafelhasználhatóság – a modul újrafelhasználható más programokban és más környezetekben.
  • Karbantartás – a modulokra osztott program könnyebben érthető és karbantartható.

Elmondható, hogy egy összetett probléma egyszerű töredékekre bontása minden tervezési technika célja . Az „architektúra” kifejezés pedig a legtöbb esetben egyszerűen egy ilyen felosztás eredményére utal, plusz „néhány tervezési döntésre, amelyeket elfogadásuk után nehéz megváltoztatni” (Martin Fowler „Vállalati szoftveralkalmazások architektúrája”).

Ezért a legtöbb meghatározás ilyen vagy olyan formában a következőkre csapódik le:

" Az architektúra azonosítja a rendszer fő összetevőit és azok kölcsönhatását. Az ilyen döntések megválasztását is alapvetőnek értelmezik, és nem változtatják meg a jövőben ."

" Az architektúra egy rendszer felépítése, amely összetevőiben, azok egymással és a környezettel való kapcsolatában testesül meg. A rendszer egy meghatározott funkció végrehajtására kombinált összetevők összessége ."

Így a jó architektúra mindenekelőtt egy moduláris/blokk architektúra . A jó architektúra kialakításához tudnia kell, hogyan kell megfelelően lebontani a rendszert. Ez azt jelenti, hogy meg kell érteni, hogy melyik lebontást tekintik „helyesnek”, és hogyan a legjobb végrehajtani.