6.1 Ontleding

Ondanks de verscheidenheid aan criteria, is de belangrijkste taak bij de ontwikkeling van grote systemen de taak om de complexiteit van het systeem te verminderen . Om de complexiteit te verminderen, is er nog niets anders uitgevonden dan de opdeling in delen.

Soms wordt dit voor de eenvoud het principe van "verdeel en heers" genoemd, maar vanuit het oogpunt van de software-architect hebben we het over hiërarchische decompositie .

Een complex systeem moet worden opgebouwd uit een klein aantal eenvoudigere subsystemen, die elk op hun beurt weer uit kleinere onderdelen zijn opgebouwd, enzovoort, totdat de kleinste onderdelen eenvoudig genoeg zijn om direct te begrijpen en te creëren.

Ontleding

Het goede nieuws is dat deze oplossing niet alleen de enige is die bekend is, maar ook universeel. Naast het verminderen van de complexiteit, biedt het tegelijkertijd systeemflexibiliteit , goede schaalbaarheid en verhoogde veerkracht door kritieke onderdelen te dupliceren.

Dienovereenkomstig, als het gaat om het bouwen van de architectuur van het programma, het creëren van de structuur ervan, betekent dit het ontleden van het programma in subsystemen, services, lagen, subroutines en functionele modules en het organiseren van hun interactie met elkaar en de buitenwereld.

En het meest waardevolle hier is dit: hoe onafhankelijker de subsystemen, hoe veiliger het is om je te concentreren op de ontwikkeling van elk afzonderlijk op een bepaald tijdstip en je geen zorgen te maken over alle andere onderdelen.

6.2 Voordelen van modulaire architectuur

Door het principe van hiërarchische decompositie te gebruiken, kunt u de chaos in duizenden klassen van uw code verwijderen. Weet je nog dat je code is opgedeeld in pakketten (pakket) en subpakketten? Dit is een van de uitdrukkingen voor hiërarchische decompositie.

Uw programma verandert van een stel klassen in een set bibliotheken en modules die met elkaar communiceren volgens goed gedefinieerde en eenvoudige regels. Dit stelt u op zijn beurt in staat de complexiteit ervan te beheersen en geeft u ook de mogelijkheid om alle voordelen te krijgen die gewoonlijk worden geassocieerd met het concept van een goede architectuur.

Dit zijn de meest elementaire:

  • Schaalbaarheid - de mogelijkheid om het systeem uit te breiden en de prestaties te verbeteren door nieuwe modules toe te voegen.
  • Onderhoudbaarheid - het veranderen van één module vereist geen verandering van andere modules.
  • Uitwisselbaarheid van modules (Swappability) - de module kan eenvoudig worden vervangen door een andere.
  • Eenheid testen – Een eenheid kan van alle andere worden losgemaakt en getest/gerepareerd .
  • Herbruikbaarheid - de module kan worden hergebruikt in andere programma's en andere omgevingen.
  • Onderhoud - een programma dat is opgedeeld in modules is gemakkelijker te begrijpen en te onderhouden.

Men kan stellen dat het opdelen van een complex probleem in eenvoudige fragmenten het doel is van alle ontwerptechnieken . En de term 'architectuur' verwijst in de meeste gevallen simpelweg naar het resultaat van een dergelijke deling plus 'enkele ontwerpbeslissingen die, eenmaal aangenomen, moeilijk te veranderen zijn' (Martin Fowler, 'Architecture of Enterprise Software Applications').

Daarom komen de meeste definities in een of andere vorm op het volgende neer:

" Architectuur identificeert de belangrijkste componenten van het systeem en hoe ze op elkaar inwerken. Het is ook de keuze van dergelijke beslissingen die als fundamenteel worden geïnterpreteerd en niet onderhevig zijn aan verandering in de toekomst ."

" Architectuur is de organisatie van een systeem, belichaamd in zijn componenten, hun relatie met elkaar en met de omgeving. Een systeem is een set componenten gecombineerd om een ​​specifieke functie uit te voeren ."

Een goede architectuur is dus in de eerste plaats een modulaire/blokarchitectuur . Om een ​​goede architectuur te krijgen, moet je weten hoe je het systeem op de juiste manier ontbindt. Dit betekent dat het noodzakelijk is om te begrijpen welke decompositie als "juist" wordt beschouwd en hoe deze het beste kan worden uitgevoerd.