Introduktion: Formålet med designfasen i softwareudviklingslivscyklussen er at producere en løsning på et problem, der er angivet i SRS-dokumentet (Software Requirement Specification). Resultatet af designfasen er Sofware Design Document (SDD).
Design er grundlæggende set en iterativ proces i to dele. Første del er Conceptual Design, der fortæller kunden, hvad systemet skal gøre. Anden del er teknisk design, som giver systemkonstruktørerne mulighed for at forstå den faktiske hardware og software, der er nødvendig for at løse kundens problem.
Konceptuelt design af systemet:
- Skrevet i et enkelt sprog, dvs. et sprog, som kunden kan forstå.
- Detaljeretaljeret forklaring om systemets egenskaber.
- Beskriver systemets funktionalitet.
- Det er uafhængigt af implementeringen.
- Linked with requirement document.
Teknisk design af systemet:
- Hardwarekomponent og design.
- Funktionalitet og hierarki af softwarekomponent.
- Softwarearkitektur
- Netværksarkitektur
- Datastruktur og datastrøm.
- Systemets I/O-komponent.
- Giver grænseflade.
Modularisering: Modularisering er processen med at opdele et softwaresystem i flere uafhængige moduler, hvor hvert modul fungerer uafhængigt af hinanden. Der er mange fordele ved modularisering inden for softwareudvikling. Nogle af disse er angivet nedenfor:
- Nemt at forstå systemet.
- Systemvedligeholdelse er let.
- Et modul kan bruges mange gange som deres behov. Ingen grund til at skrive det igen og igen.
Kobling: Kobling er et mål for graden af indbyrdes afhængighed mellem modulerne. En god software vil have lav kobling.
Typer af kobling:
- Datakobling: Hvis afhængigheden mellem modulerne er baseret på, at de kommunikerer ved kun at videregive data, siges modulerne at være datakoblede. Ved datakobling er komponenterne uafhængige af hinanden og kommunikerer via data. Modulkommunikation indeholder ikke trampdata. Eksempel – kundefaktureringssystem.
- Stempelkobling Ved stempelkobling overføres den komplette datastruktur fra et modul til et andet modul. Derfor omfatter det tramp-data. Det kan være nødvendigt på grund af effektivitetsfaktorer – dette valg er truffet af den indsigtsfulde designer, ikke af en doven programmør.
- Kontrolkobling: Hvis modulerne kommunikerer ved at videregive kontrolinformation, siges de at være kontrolkoblet. Det kan være dårligt, hvis parametre indikerer helt forskellig adfærd, og godt, hvis parametre tillader factoring og genbrug af funktionalitet. Eksempel – sorteringsfunktion, der tager sammenligningsfunktion som et argument.
- Ekstern kobling: Ved ekstern kobling er modulerne afhængige af andre moduler, der er eksterne i forhold til den software, der udvikles, eller i forhold til en bestemt type hardware. Eks- protokol, ekstern fil, enhedsformat osv.
- Fælles kobling: Modulerne har fælles data, f.eks. globale datastrukturer. ændringer i globale data betyder, at der skal spores tilbage til alle de moduler, der har adgang til disse data, for at evaluere virkningen af ændringen. Det har derfor ulemper som f.eks. vanskeligheder med at genbruge moduler, nedsat evne til at kontrollere dataadgang og nedsat vedligeholdelsesvenlighed.
- Indholdskobling: I en indholdskobling kan et modul ændre data fra et andet modul, eller kontrolflowet overføres fra et modul til det andet modul. Dette er den værste form for kobling og bør undgås.
Kohæsion: Samhørighed er et mål for, i hvor høj grad modulets elementer er funktionelt forbundet. Det er den grad, i hvilken alle elementer, der er rettet mod at udføre en enkelt opgave, er indeholdt i komponenten. Grundlæggende er kohæsion den interne lim, der holder modulet sammen. Et godt softwaredesign vil have en høj kohesion.
Typer af kohesion:
- Funktionel kohesion: Alle væsentlige elementer til en enkelt beregning er indeholdt i komponenten. En funktionel samhørighed udfører opgaven og funktionerne. Det er en ideel situation.
- Sekventiel kohæsion: Et element udsender nogle data, som bliver input til et andet element, dvs. datastrøm mellem delene. Det forekommer naturligt i funktionelle programmeringssprog.
- Kommunikativ sammenhængskraft: To elementer opererer med de samme inputdata eller bidrager til de samme outputdata. Eksempel: Opdatering af en post i databasen og overførsel til printeren.
- Proceduremæssig kohærens: Elementer med proceduremæssig sammenhæng sikrer rækkefølgen af udførelsen. Handlinger er stadig svagt forbundet og vil sandsynligvis ikke kunne genbruges. F.eks. beregn studenterkarakter, udskriv studenterrekord, beregn kumulativt karaktergennemsnit, udskriv kumulativt karaktergennemsnit.
- Tidsmæssig sammenhæng: Elementerne er forbundet ved deres tidsmæssige involvering. Et modul, der er forbundet med tidsmæssig sammenhæng, skal alle opgaver udføres inden for samme tidsrum. Denne sammenhæng indeholder koden til initialisering af alle dele af systemet. Der sker mange forskellige aktiviteter, alle på init-tidspunktet.
- Logisk sammenhæng: Elementerne er logisk forbundet og ikke funktionelt. Eks- En komponent læser input fra bånd, disk og netværk. Al koden til disse funktioner befinder sig i den samme komponent. Operationerne er relaterede, men funktionerne er væsentligt forskellige.
- Tilfældig sammenhæng: Elementerne er ikke relateret(ikke beslægtet). Elementerne har ingen anden begrebsmæssig relation end placering i kildekoden. Det er tilfældigt og den værste form for sammenhængskraft. Eks- udskriv næste linje og omvendt tegn i en streng i en enkelt komponent.
Attention læser! Du må ikke stoppe med at lære nu. Få fat i alle de vigtige CS Theory begreber til SDE-interviews med CS Theory Course til en elevvenlig pris og bliv klar til industrien.