Design & implementation Flashcards
Förklara begreppet completness kopplat till krav och design/implementation
Att man ska täcka in alla krav i designen
Förklara begreppet consistency kopplat till krav och design/implementation
- Samma vokabulär behålls från krav till design
- Konsekvent i hur kommunikation sker i exempelvis felmeddelande
Förklara vilka metrics man utgår ifrån för Halsteads Complexity Metric och vad denna kan användas för att mäta.
Metrics vi räknar är
- n1: antalet unika operatorer, eg. if, for, while etc.**
- n2: antalet unika operander, eg. variabler, konstanter
- N1 - summan av alla förekomster av n1 (har vi två if-satser och en while-loop blir N1 = 3)
- N2 - summan av alla operander (hur många gånger används operanderna)
Vad räknas Halsteads Complexity Metrics ut?
Mäter storlek på kod som en form av intern komplexitet, men inte enbart antal rader. utan tar hänsyn till vads om finns på raderna.
Baserat på metrics räknar vi ut:
Program vocabulary (hur stort ordförråd behövs för att förstå) = n = n1 + n2
Program length N = N1 + N2
Ge exempel på vad som är bra egenskaper för design.
(1) Readability - hur lätt det är att förstå design och kod
(2) Maintainability - hur lätt är systemet att modifiera och underhålla
(3) Performance - hur effektiv koden är
(4) Traceability - kan vi koppla ihop krav-design-kod-test, kan man förstå valen som finns i designen? Vilken kod med vilka test?
(5) Correctness - gör koden vad som avses
(6) Completeness - är alla krav uppfyllda?
Coincidental cohesion
Slumpmässig cohesion, kod gör orelaterad saker. Låg cohesion.
Logical cohesion
Liknande uppgifter på ytan, eg samlat alla i/o-kommunikationer trots att dessa kan vara väldigt olika.
Temporal cohesion
Relaterade uppgifter i ett flöde, eg. initieringar oavsett hur relaterade dessa är till varandra
Procedural cohesion
Aktiviteter i samma kontrollflöde, lätt hänt i event-drivna system. Eg. nu sparar jag en fil, då sparar vi allt relaterat till det på samma ställe
Communicational cohesion
Sekvenser av aktiviteter kopplat till en specifik typ av data
Sequential/Functional cohesion
Ett mål, en modul - eg. allt relaterat till modifiera just den här datan
Förklara begreppet coupling.
Coupling kollar på hur olika delar hänger samman, låg coupling är bra. Hänger det samman för mycket blir den svår att pilla i utan stor påverkan på andra delar. Hög cohesion kan leda till hög coupling för det krävs fler delar som alla göra sin unika grej
Förklara begreppet cohesion.
Cohesion handlar om hur väl sammanhållet något är i sitt syfte. Hög cohesion är bra, låg cohesion är dåligt - denna filen göra många olika saker.
Content coupling
Moduler använder varandras interna data, eg. publika instansvariabler
Common coupling
Moduler använder samma globala variabler