Introductie: Het doel van Design fase in de Software Development Life Cycle is het produceren van een oplossing voor een probleem gegeven in het SRS(Software Requirement Specification) document. De output van de ontwerpfase is Sofware Design Document (SDD).
Basically, ontwerp is een tweedelig iteratief proces. Het eerste deel is Conceptueel Ontwerp dat de klant vertelt wat het systeem zal doen. Het tweede deel is het Technisch Ontwerp dat de systeembouwers in staat stelt de feitelijke hardware en software te begrijpen die nodig is om het probleem van de klant op te lossen.
Conceptueel ontwerp van het systeem:
- Geschreven in eenvoudige, d.w.z. voor de klant begrijpelijke taal.
- Detailleerde toelichting op de systeemkenmerken.
- Beschrijft de functionaliteit van het systeem.
- Het is onafhankelijk van de implementatie.
- Gekoppeld aan het document met eisen.
Technisch ontwerp van het systeem:
- Hardwarecomponent en ontwerp.
- Functionaliteit en hiërarchie van softwarecomponent.
- Software-architectuur
- Netwerkarchitectuur
- Gegevensstructuur en gegevensstroom.
- I/O-component van het systeem.
- Toont interface.
Modularisatie: Modularisatie is het proces van het verdelen van een softwaresysteem in meerdere onafhankelijke modules waarbij elke module onafhankelijk werkt. Er zijn vele voordelen van Modularization in software engineering. Sommige van deze worden hieronder gegeven:
- Eenvoudig te begrijpen van het systeem.
- Systeem onderhoud is eenvoudig.
- Een module kan vele malen worden gebruikt als hun eisen. Geen behoefte om het te schrijven opnieuw en opnieuw.
Coupling: Koppeling is de maatstaf voor de mate van onderlinge afhankelijkheid tussen de modules. Een goede software zal een lage koppeling hebben.
Types van koppeling:
- Gegevenskoppeling: Als de afhankelijkheid tussen de modules is gebaseerd op het feit dat zij communiceren door alleen gegevens door te geven, dan wordt gezegd dat de modules datakoppeling zijn. Bij datakoppeling zijn de componenten onafhankelijk van elkaar en communiceren ze via gegevens. De communicatie tussen modules bevat geen tramp data. Voorbeeld-klant-factureringssysteem.
- Stempelkoppeling Bij stempelkoppeling wordt de volledige gegevensstructuur van de ene module aan de andere module doorgegeven. Daarom gaat het om “tramp data”. Het kan noodzakelijk zijn vanwege efficiency-factoren- deze keuze is gemaakt door de inzichtelijke ontwerper, niet door een luie programmeur.
- Control Coupling: Als de modules communiceren door besturingsinformatie door te geven, dan wordt gezegd dat ze control coupled zijn. Het kan slecht zijn als parameters totaal verschillend gedrag aangeven en goed als parameters factoring en hergebruik van functionaliteit mogelijk maken. Voorbeeld- sorteer functie die vergelijkingsfunctie als argument neemt.
- Externe Koppeling: Bij externe koppeling zijn de modules afhankelijk van andere modules, extern aan de software die wordt ontwikkeld of aan een bepaald type hardware. Ex- protocol, extern bestand, apparaat formaat, enz.
- Common Coupling: De modules hebben gedeelde gegevens zoals globale gegevensstructuren.De veranderingen in globale gegevens betekenen tracing terug naar alle modules die toegang hebben tot die gegevens om het effect van de verandering te evalueren. Het heeft dus nadelen zoals moeilijkheid om modules te hergebruiken, verminderde mogelijkheid om gegevenstoegang te controleren en verminderde onderhoudbaarheid.
- Content Coupling: Bij een inhoudskoppeling kan een module de gegevens van een andere module wijzigen of wordt de controlestroom van de ene module naar de andere module doorgegeven. Dit is de slechtste vorm van koppeling en moet worden vermeden.
Cohesie: Cohesie is een maatstaf voor de mate waarin de elementen van de module functioneel met elkaar zijn verbonden. Het is de mate waarin alle elementen die gericht zijn op het uitvoeren van een enkele taak in de component zijn vervat. Cohesie is in feite de interne lijm die de module bij elkaar houdt. Een goed softwareontwerp zal een hoge cohesie hebben.
Typen cohesie:
- Functionele cohesie: Elk essentieel element voor een enkele berekening is vervat in de component. Een functionele samenhang voert de taak en functies uit. Het is een ideale situatie.
- Sequentiële Cohesie: Een element voert bepaalde gegevens uit die de invoer worden voor een ander element, d.w.z. gegevensstroom tussen de onderdelen. Het komt van nature voor in functionele programmeertalen.
- Communicatieve cohesie: Twee elementen werken op dezelfde invoergegevens of dragen bij aan dezelfde uitvoergegevens. Voorbeeld- update record in de database en stuur het naar de printer.
- Procedurele cohesie: Elementen van procedurele cohesie zorgen voor de volgorde van uitvoering. Acties zijn nog steeds zwak verbonden en het is onwaarschijnlijk dat ze herbruikbaar zijn. Ex- bereken student GPA, print student record, bereken cumulatieve GPA, print cumulatieve GPA.
- Temporele Cohesie: De elementen zijn gerelateerd door hun betrokken timing. Een module verbonden met temporele samenhang alle taken moeten worden uitgevoerd in dezelfde tijd-spanne. Deze samenhang bevat de code voor het initialiseren van alle onderdelen van het systeem. Veel verschillende activiteiten vinden plaats, allemaal op initiële tijd.
- Logische Cohesie: De elementen zijn logisch met elkaar verbonden en niet functioneel. Ex- Een component leest invoer van tape, disk, en netwerk. Alle code voor deze functies zit in dezelfde component. De operaties zijn verwant, maar de functies zijn aanzienlijk verschillend.
- Toevallige samenhang: De elementen zijn niet verwant(ongerelateerd). De elementen hebben geen andere conceptuele relatie dan de plaats in de broncode. Het is toevallig en de slechtste vorm van samenhang. Ex-print volgende regel en omgekeerde de tekens van een string in een enkele component.
Attentie lezer! Stop nu niet met leren. Krijg grip op alle belangrijke CS Theorie concepten voor SDE interviews met de CS Theorie Cursus tegen een student-vriendelijke prijs en word klaar voor de industrie.