6.1 Nedbrytning

Trots mångfalden av kriterier är huvuduppgiften i utvecklingen av stora system uppgiften att minska systemets komplexitet . För att minska komplexiteten har inget annat än uppdelning i delar ännu uppfunnits.

Ibland, för enkelhetens skull, kallas detta principen om "dela och erövra", men ur mjukvaruarkitektens synvinkel talar vi om hierarkisk nedbrytning .

Ett komplext system måste byggas av ett litet antal enklare delsystem, som vart och ett i sin tur är byggt av mindre delar, och så vidare tills de minsta delarna är enkla nog att direkt förstås och skapas.

Sönderfall

Den stora nyheten är att denna lösning inte bara är den enda kända, utan också universell. Förutom att minska komplexiteten ger det samtidigt systemflexibilitet , god skalbarhet och ökad motståndskraft genom att duplicera viktiga delar.

Följaktligen, när det kommer till att bygga programmets arkitektur, skapa dess struktur, innebär detta att dekomponera programmet i delsystem, tjänster, lager, subrutiner och funktionsmoduler och organisera deras interaktion med varandra och omvärlden.

Och det mest värdefulla här är detta: ju mer oberoende delsystemen är, desto säkrare är det att fokusera på utvecklingen av var och en av dem separat vid en viss tidpunkt och inte oroa sig för alla andra delar.

6.2 Fördelar med modulär arkitektur

Genom att använda principen om hierarkisk nedbrytning kan du bli av med kaos i tusentals klasser av din kod. Kommer du ihåg att din kod är uppdelad i paket (paket) och underpaket? Detta är ett av uttrycken för hierarkisk nedbrytning.

Ditt program förvandlas från ett gäng klasser till en uppsättning bibliotek och moduler som interagerar med varandra enligt väldefinierade och enkla regler. Detta i sin tur låter dig kontrollera dess komplexitet, och ger dig också möjlighet att få alla fördelar som vanligtvis är förknippade med konceptet med en bra arkitektur.

Här är de mest grundläggande:

  • Skalbarhet - möjligheten att utöka systemet och öka dess prestanda genom att lägga till nya moduler.
  • Underhållbarhet - att byta en modul kräver inte att andra moduler ändras.
  • Bytbarhet av moduler (Swappability) - modulen kan enkelt bytas ut mot en annan.
  • Enhetstestning – En enhet kan kopplas loss från alla andra och testas/repareras .
  • Återanvändbarhet - modulen kan återanvändas i andra program och andra miljöer.
  • Underhåll – ett program som är uppdelat i moduler är lättare att förstå och underhålla.

Man kan säga att att bryta ett komplext problem i enkla fragment är målet för alla designtekniker . Och termen "arkitektur" hänvisar i de flesta fall helt enkelt till resultatet av en sådan uppdelning plus " några designbeslut som, när de väl har antagits, är svåra att ändra" (Martin Fowler "Architecture of Enterprise Software Applications").

Därför kokar de flesta definitioner i en eller annan form ner till följande:

" Arkitektur identifierar huvudkomponenterna i systemet och hur de interagerar. Det är också valet av sådana beslut som tolkas som grundläggande och inte kan förändras i framtiden ."

" Arkitektur är organisationen av ett system, förkroppsligad i dess komponenter, deras förhållande till varandra och med miljön. Ett system är en uppsättning komponenter som kombineras för att utföra en specifik funktion. "

En bra arkitektur är alltså först och främst en modulär/blockarkitektur . För att få en bra arkitektur måste du veta hur man korrekt sönderdelar systemet. Det betyder att det är nödvändigt att förstå vilken nedbrytning som anses vara "korrekt" och hur det är bäst att genomföra det.