Introduktion: Syftet med designfasen i livscykeln för mjukvaruutveckling är att ta fram en lösning på ett problem som anges i SRS-dokumentet (Software Requirement Specification). Resultatet av designfasen är Sofware Design Document (SDD).
Design är i grund och botten en iterativ process i två delar. Den första delen är Conceptual Design som talar om för kunden vad systemet kommer att göra. Den andra är teknisk design som gör det möjligt för systemkonstruktörerna att förstå den faktiska hård- och mjukvara som behövs för att lösa kundens problem.
Konceptuell design av systemet:
- Skrivet på ett enkelt språk, dvs. på ett språk som är begripligt för kunden.
- Detaljförklaring av systemets egenskaper.
- Beskrivning av systemets funktionalitet.
- Det är oberoende av genomförandet.
- Länkad till kravdokumentet.
Teknisk utformning av systemet:
- Hårdvarukomponent och utformning.
- Mjukvarukomponentens funktionalitet och hierarki.
- Mjukvaruarkitektur
- Nätverksarkitektur
- Datastruktur och dataflöde.
- Systemets I/O-komponent.
- Visar gränssnitt.
Modularisering: Modularisering är processen att dela upp ett programvarusystem i flera oberoende moduler där varje modul fungerar självständigt. Det finns många fördelar med modularisering inom programvaruteknik. Några av dessa anges nedan:
- Lätt att förstå systemet.
- Systemunderhållet är enkelt.
- En modul kan användas många gånger beroende på deras behov. Ingen behöver skriva det om och om igen.
Koppling: Koppling är ett mått på graden av ömsesidigt beroende mellan modulerna. En bra programvara har låg koppling.
Typer av koppling:
- Datakoppling: Om beroendet mellan modulerna bygger på att de kommunicerar genom att endast överföra data sägs modulerna vara datakopplade. Vid datakoppling är komponenterna oberoende av varandra och kommunicerar genom data. Modulkommunikation innehåller inte trampdata. Exempel – kundfaktureringssystem.
- Stämpelkoppling Vid stämpelkoppling överförs hela datastrukturen från en modul till en annan modul. Därför innehåller den trampdata. Det kan vara nödvändigt på grund av effektivitetsfaktorer – detta val görs av den insiktsfulla konstruktören, inte av en lat programmerare.
- Kontrollkoppling: Om modulerna kommunicerar genom att överföra kontrollinformation sägs de vara kontrollkopplade. Det kan vara dåligt om parametrar indikerar helt olika beteenden och bra om parametrar tillåter factoring och återanvändning av funktionalitet. Exempel – sorteringsfunktion som tar jämförelsefunktion som ett argument.
- Extern koppling: Vid extern koppling är modulerna beroende av andra moduler, utanför den programvara som utvecklas eller en viss typ av hårdvara. Ex- protokoll, extern fil, enhetsformat etc.
- Gemensam koppling: Moduler har gemensamma data, t.ex. globala datastrukturer.Ändringar i globala data innebär att man måste spåra tillbaka till alla moduler som har tillgång till dessa data för att utvärdera effekten av ändringen. Det har alltså nackdelar som svårighet att återanvända moduler, minskad förmåga att kontrollera dataåtkomst och minskad underhållbarhet.
- Innehållskoppling: I en innehållskoppling kan en modul ändra data i en annan modul eller så skickas kontrollflödet från en modul till en annan modul. Detta är den värsta formen av koppling och bör undvikas.
Kohesion: Sammanhållning är ett mått på i vilken grad modulens beståndsdelar är funktionellt relaterade till varandra. Det är den grad i vilken alla element som är inriktade på att utföra en enda uppgift ingår i komponenten. I grund och botten är sammanhållningen det interna limmet som håller ihop modulen. En bra programvarudesign kommer att ha hög sammanhållning.
Typer av sammanhållning:
- Funktionell sammanhållning: Varje väsentligt element för en enskild beräkning finns i komponenten. En funktionell sammanhållning utför uppgiften och funktionerna. Det är en idealisk situation.
- Sekventiell sammanhållning: En del ger ut vissa data som blir indata för andra delar, dvs. dataflödet mellan delarna. Det förekommer naturligt i funktionella programmeringsspråk.
- Kommunikativ sammanhållning: Två element arbetar med samma indata eller bidrar till samma utdata. Exempel: Uppdatera en post i databasen och skicka den till skrivaren.
- Procedurell sammanhållning: Element av procedurell sammanhållning säkerställer ordningen för utförandet. Åtgärderna är fortfarande svagt sammankopplade och kan sannolikt inte återanvändas. Exempel: Beräkna studentens genomsnittliga betyg, skriv ut studentjournalen, beräkna det sammanlagda betyget, skriv ut det sammanlagda betyget.
- Tidsmässig sammanhållning: Elementen är relaterade genom att de är tidsmässigt involverade. En modul som är kopplad till tidsmässig sammanhållning måste alla uppgifter utföras inom samma tidsperiod. Denna sammanhållning innehåller koden för initialisering av alla delar av systemet. Många olika aktiviteter sker vid samma tidpunkt.
- Logisk sammanhållning: Elementen är logiskt relaterade och inte funktionellt. Ex- En komponent läser inmatningar från band, disk och nätverk. All kod för dessa funktioner finns i samma komponent. Operationerna är relaterade, men funktionerna är väsentligt olika.
- Sammanhållning av tillfälligheter: Elementen är inte relaterade(orelaterade). Elementen har inget begreppsmässigt samband annat än placering i källkoden. Det är oavsiktligt och den sämsta formen av sammanhållning. Ex- skriva ut nästa rad och vända tecken i en sträng i en enda komponent.
Attention läsare! Sluta inte att lära dig nu. Få grepp om alla viktiga CS Theory-begrepp för SDE-intervjuer med CS Theory-kursen till ett studentvänligt pris och bli redo för industrin.