Design
,Inhoud
1: Inleiding ................................................................................................................................................................ 3
Wat is software engeneering? ............................................................................................................................. 3
Best Practices! ...................................................................................................................................................... 3
RUP: de oplossing? ............................................................................................................................................... 6
2: Concepten............................................................................................................................................................. 7
Levenscyclus van software ................................................................................................................................... 7
Software levenscycli modellen ............................................................................................................................. 8
RUP ..................................................................................................................................................................... 10
3: Inception ............................................................................................................................................................. 14
Wat is inception?................................................................................................................................................ 14
Evolutionaire vereisten ...................................................................................................................................... 14
Use Cases............................................................................................................................................................ 15
4: Elaboration ......................................................................................................................................................... 28
Wat is elaboration? ............................................................................................................................................ 28
Domain models .................................................................................................................................................. 30
System Sequence Diagrams ............................................................................................................................... 35
Intermezzo: richting object design ..................................................................................................................... 37
Interaction diagrams .......................................................................................................................................... 38
Class diagrams .................................................................................................................................................... 39
OCL ..................................................................................................................................................................... 45
State machine diagrams ..................................................................................................................................... 46
5: Software design .................................................................................................................................................. 48
Inleiding .............................................................................................................................................................. 48
GRASP ................................................................................................................................................................. 50
GoF patterns ....................................................................................................................................................... 54
Besluit ................................................................................................................................................................. 66
6: Software testing ................................................................................................................................................. 67
Inleiding .............................................................................................................................................................. 67
Soorten testen.................................................................................................................................................... 68
Software testprincipes ....................................................................................................................................... 71
Test-case design ................................................................................................................................................. 72
Debugging .......................................................................................................................................................... 74
,1: Inleiding
Wat is software engeneering?
Software engeneering = nadenken en redeneren over ontwerp!
Best Practices!
Zonder software engineering...
• Software te laat geleverd
• Budgetten overschrijden
• Bugs
• Gebruikers/business behoeften niet gehaald
• Modules die niet integreren
• Slechte performantie onder grote belasting
• Fatale fouten
• Overdosis straling patiënten (Therac 25)
• Ariane 5: 7 miljard $
• …
Waarom SE?
• Complexiteit
• ...van het toepassingsgebied
• ...van de communicatie klant/programmeur
• ...van het werken met natuurlijke taal
• ...van de grootte van het project
• Beheersen van deze complexiteit
• Organisatie en structuur
Eerdere technieken
• Gestructureerd programmeren: GOTO
• Functionele decompositie
• Gestructureerde analyse en ontwerp
• Gegevensgericht model: ER
• Object-georiënteerd model
• Nu: component en agent georiënteerd model
3 belangrijke stappen
• Beeldvorming
• Procesgeoriënteerd
• Objectgeoriënteerd
• Representatie
• Notatie (UML)
• Implementatie
,Best practice 1: ontwikkel iteratief
• Software niet ineens volledig ‘af’
• Ontwikkelen in stadia
• Afstappen van klassieke waterfall model (zie
later)
• Snel risico’s inschatten
• Snelle user feedback
• Continu testen/integratie
• Gedeeltelijke implementatie
Best practice 2: requirements managen
• In 1998
• 74% van software projecten te laat, gecancelled, over budget, …
• Requirements managen wil zeggen
• Juiste probleem oplossen
• Juiste systeem ontwerpen
• Hoe?
• Organiseren, documenteren en managen van de requirements (vereisten)
,Best practice 3: gebruik componenten
• Basis voor herbruikbaarheid
• Hergebruik van
componenten/architectuur
• Basis voor project management
• Planning, personeel, aflevering
• Basis voor “intellectuele controle”
• Complexiteit aankunnen
• Integriteit handhaven
Best practice 4: modelleer visueel
• Een model geeft een gedeeltelijke weergave van de realiteit weer, gezien vanuit een
bepaald perspectief.
• Modellen zijn nodig om de complexiteit van het geheel de baas te kunnen
• ~bouwplan voor een huis
• Taal bij uitstek: UML (Unified Modeling Language)
• 1 standaardtaal, geen twijfel over betekenis
Best practice 5: continue kwaliteitscontrole
• Testing kan 30%-50% van project
inhouden!
• Redenen voor bugs in release
• Testen blijft enorm moeilijk
• Testen gebeurt dikwijls ad hoc,
zonder methodologie
, Best practice 6: verandering managen
• Grootste uitdaging
• Met meer programmeurs tegelijk werken, op verschillende locaties, op
verschillende builds, platformen, releases, …
• Problemen
• Simultane update (2 programmeurs op zelfde code)
• Niet iedereen is op de hoogte van wijzigingen
• Multiple versions
RUP: de oplossing?
RUP = Rational Unified Process
• = gestandaardiseerd proces om software te ontwikkelen
• Voordelen van het gebruik van een proces
• Gids voor ontwikkelen van kwaliteitssoftware
• Verminderen van risico’s en verbeteren voorspelbaarheid
• Gedeelde visie en cultuur voor ontwikkeling
• Is doorspekt met best practices
RUP bestaat uit 4 fases
• Inception
• Elaboration
• Construction
• Transition
,2: Concepten
Levenscyclus van software
I. Beeldvorming (vereisten)
II. Specificatie
III. Ontwerp (representatie)
IV. Implementatie
V. Integratie
VI. Onderhoud
VII. Buiten werking stellen
Opmerkingen
• Geen testfase!
• Gebeurt gedurende ganse project
• Geen documentatiefase!
• Gebeurt gedurende ganse project
Specificatie = Contract tussen klant en informaticus
• Geen dubbelzinnigheden
• Volledig
• Dikwijls met behulp van juristen
• Documenteren!
Ontwerp:
Produktontwerp
- Architectuur, database, ...
Architecturaal ontwerp
- Modules, Pakketten
Gedetailleerd ontwerp
- Leunt zeer dicht aan bij implementatie
- UML schema’s
- “Testen!”
Implementatie:
Ontwerp omzetten in code
- Coderingsstandaarden
Testen!
Documenteren!
Integratie:
Interne integratie
- Combineer modules en check product
Externe integratie
- Installatie van hardware, software, opleiding van de klant, finale review van
klant
- Testen zeer belangrijk
- Opnemen in documentatie
, Onderhoud:
= eender welke verandering
• Na acceptatie van de klant!
Groot probleem in huidige projecten
Regressietesten
Buiten werking stellen:
Eerder uitzonderlijk
• Drastische veranderingen
• Totaal nieuwe platformen ingebruiknemen
• Geen of foute documentatie
• “Maak jezelf niet onmisbaar...”
Software levenscycli modellen
1. Build & repair model
Maak een eerste versie
- Pas aan tot klant tevreden
Slechtste model!
2. Waterfall
Volgende stap kan pas als vorige stap afgewerkt
Idee
• Veel tijd spenderen aan initiële fasen, bespaart
veel geld!
• Fout in later stadium (bv.
implementatiefase) zorgt inderdaad
voor veel problemen
• Deze situatie is niet realistisch
-> Met trugkoppeling