Analyse I - Dominic Meulemans

Download Report

Transcript Analyse I - Dominic Meulemans

OO Analyse
in de praktijk
I Inleiding & dX
Inhoudstafel

Inleiding
3 klassieke stadia
 Literatuurgeschiedenis
 Wat maakt het verschil (Critical Succes Factors)
 Enkele anti-patterns en code smells vooraf


Het proces: Extreme programming en dX
Iteratieve ontwikkeling
 Planning
 Wat gebeurt er in 1 iteratie

OO Analyse, I Inleiding & dX
2
3 klassieke stadia in softwareontwikkeling

0 Achtergrond (hier wordt zelden over gesproken)




1 Conceptie



=klassieke analyse in enge zin
Heeft geen zin zonder vorige fase
2 Design/Specificatie


=kennis van het onderwerp
=belangrijkste fase
Wordt vaak vergeten !
Bevat al sommige implementatiebeslissingen
3 Implementatie
Belangrijker dan veel managers denken
OO Analyse, I Inleiding & dX
3
Opmerkingen




Stadia hoeven niet in volgorde doorlopen te
worden
WEL weten op welk niveau je bezig bent
Analyse ≠ exacte wetenschap. Informatica is te
jong. Enig criterium: BRUIKBAARHEID
Implementatiefase is WEL belangrijk. Hier kan
het nog altijd fout gaan.
OO Analyse, I Inleiding & dX
4
Literatuur voor deze cursus:
UML is in principe een notatie, onafhankelijk van het te volgen
proces. Maar de meeste boeken erover, hebben het ook over het
te volgen proces.

UML distilled, Martin Fowler


Notatie bruikbaar voor fases 1 & 2
UML for Java programmers, Robert C. Martin

Fases 2 & 3
OO Analyse, I Inleiding & dX
5
Literatuur

’50ies en ’60ies: Vroege werken ivm Simula ,
Nygaard & Dahl
Fase 3, programmeren van simulaties
 1e echte OO taal, werd inspiratie voor OO Analyse


1991: Object-Oriented Analysis, Coad &
Yourdon
Fase 1
 Kort & eenvoudig maar theoretisch

OO Analyse, I Inleiding & dX
6
Literatuur

1985: Eiffel, A Language for Software
Engeneering, Bertrand Meyer


Fase 3, maar ook 1 en 2 (dat is juist de clou)
1988: OO Software Construction, Bertrand
Meyer
Fase 1, 2 en 3
 Klassieker, dik boek, vrij moeilijk, vol humor, héél
overtuigend en enthousiasmerend

OO Analyse, I Inleiding & dX
7
Literatuur

1994: Object Oriented Analysis & Design with
Applications, Grady Booch




Fase 1 & 2
Klassieker. dik boek, moeilijk, droog.
Bevat wel nuttige informatie voor wie jaren bezig is.
1994: Design Patterns, Gamma & Helm & Johnson &
Vlissides


Fase 2, ook wel 3
Focust op design. Is gestructureerde no nonsense cataloog
van OO ontwerp-patronen. Moeilijk maar interessant boek.
OO Analyse, I Inleiding & dX
8
Literatuur

1999: Refactoring, Improving the Design of Existing
Code, Martin Fowler




Fase 3, ook wel 2
Behandelt nauwgezet hoe je slechte code omzet tot goede.
Bevat veel herkenbaars voor wie ooit bestaande code heeft
moeten aanpassen.
Benadrukt belang van automatisch testen.
Andere auteurs: Kent Beck, Ivar Jacobson, Barbara
Liskov, James Rumbaugh, Bjarne Straustrup (C++), …
OO Analyse, I Inleiding & dX
9
Wat maakt het verschil…
…tussen een geslaagd project en een fiasco. De Critical
Succes Factors voor software engeneering:

Respect voor


de klant
de technologie. Welke technologie is minder belangrijk





procedureel programmeren versus OO programmeren
relationele databases versus OO databases
Java versus VB versus C++ enz
blote hand versus GUI-tools
jezelf en de andere team-leden.

Als je niet meer gemotiveerd bent, moet je snel iets anders doen.
OO Analyse, I Inleiding & dX
10
Wat maakt het verschil (vervolg)

Achtergrondkennis over de Business &
Communicatie met de klant
o.a. kennis van de Requirements
 Er zijn prachtige systemen zijn ontwikkeld, waar
niemand naar gevraagd heeft (zie volgende slide)

OO Analyse, I Inleiding & dX
11
Wat maakt het verschil (vervolg)
OO Analyse, I Inleiding & dX
12
Wat maakt het verschil (vervolg)

Geautomatiseerde Tests
Maken continue verbetering van de architectuur van
de code mogelijk.
 Geven aan in welke mate aan de specificaties voldaan
is.

OO Analyse, I Inleiding & dX
13
Wat maakt het verschil (vervolg)

Omkadering



Charismatische projectleider die echt meewerkt en
waar iedereen naar opkijkt.
Project-planning: Duidelijke en eenvoudig te
verifiëren mijlpalen.
Methodologie-proces: Sluit aan bij bovenste. Er
moet een algemeen aanvaarde praktische werkwijze
zijn.
OO Analyse, I Inleiding & dX
14
Wat maakt het verschil (vervolg)

Vermijden van Copy-Paste code
Lijkt een detail, maar is het niet.
 Copy-Paste programmering is DE oorzaak van falen
in fase 3 bij grote projecten. Geeft aanleiding tot
exponentieel groeiende code: x2, x4, x8, x16, x32
…→ ∞, dit is niet meer te managen.
 Neem zoveel mogelijk gemeenschappelijke code
samen en roep deze op of gebruik de componenten.

OO Analyse, I Inleiding & dX
15
Enkele anti-patterns en code smells.
I Anti-patterns
Anti-pattern: vaak voorkomende foute oplossing
Code smell: verdachte code (Fowler, Beck)
OO Analyse, I Inleiding & dX
16
Anti-patterns (vervolg)

Anti-patterns
Bloemlezing uit het boek Anti Patterns van
Brown, Malveau,…:
The Blob: monolitisch onverdeelde gigantische
procedure of klasse
 Lava Flow
 Golden Hammer: alles willen doen met 1 heilige
tool. Vb alles met Excel macro’s, alles met HTML

OO Analyse, I Inleiding & dX
17
Anti-patterns (vervolg)
Spaghetti-code
 Cut & paste programming (eerder vernoemd)
 Vendor Lock-In
 Design by committee
 Reinvent the Wheel
 Analysis Paralysis

OO Analyse, I Inleiding & dX
18
Code smells
Term gebruikt door Kent Beck & Martin Fowler
Duplicate code (copy paste, zie boven)
 Te veel parameters
 Te veel properties (data-fields)
 Te veel code in 1 klasse
 Te veel gelijkende klassen (zie copy paste enz)

OO Analyse, I Inleiding & dX
19
Code smells, (vervolg)
Data-klassen: zonder methoden
 Method-klassen: zonder data-fields. Pot met functies.
 Cryptische naamgeving
 Nodeloze documentatie


Oorzaak: Unconscious Incompetence
http://c2.com/cgi/wiki?UnconsciousIncompetence
OO Analyse, I Inleiding & dX
20
Het proces: Extreme Programming
(Kent Beck) en dX
We beschrijven hier de versie dX van
Robert C. Martin © Copyright 2003.
OO Analyse, I Inleiding & dX
21
Extreme Programming (Kent Beck)
en dX
Structuur
 Iteratieve ontwikkeling, algemeen

Initiële exploratie (1e iteratie)



Schattng van de features
Callibreren van de schattingen
Planning (vanaf 2e iteratie)




Planning Releases
Planning Iteraties
Middelpunt (aanpassing van de ambities)
Dag 10 Feedback over de snelheid:
OO Analyse, I Inleiding & dX
22
Extreme Programming (Kent Beck)
en dX
Structuur (vervolg):
 Wat gebeurt er in 1 iteratie
Algemeen
 Praktijken of gewoontes

Pair Programming
 Acceptatiestests
 Unit Tests
 Refactoring
 Open Office
 Continue Integratie

OO Analyse, I Inleiding & dX
23
Iteratieve ontwikkeling

Iteratieve ontwikkeling, algemeen
ALLES in 2 weken doen: requirements, analyse, ontwerp,
implementatie, testen, documentatie.
Elke 2 weken eindigen in uitvoerbare code
1 uitzondering: de eerste iteratie is korter (3 dagen) en hoeft
geen code te bevatten.
 Initiële exploratie (3 dagen)
Requirements en prioriteiten bepalen met de klant
User stories bepalen (=1 manier om het systeem te gebruiken)
Deze activiteiten zullen in alle iteraties herhaald worden
OO Analyse, I Inleiding & dX
24
Iteratieve ontwikkeling (vervolg)

Initiële exploratie (vervolg)

Schatting van de features




Elke story krijgt een schatting in ‘punten’ van het werk nodig om
deze story te implementeren
Dimensieloos getal: eventueel ‘perfecte programmeerdagen’
1 à 2 teamdagen per story
Callibreren van de schattingen


Initiële exploratie eindigt eventueel met werkende code
Doel: Bepalen hoeveel mandagen 1 punt is
OO Analyse, I Inleiding & dX
25
Wat gebeurt er in 1 iteratie
1 iteratie = 2 weken
 Algemeen
Alle fases doorlopen: analyse resuirements, design &
implementation
 ALLEEN voor de door de klant gekozen user
stories
 Belangrijkste stories worden op die manier eerst
behandeld

OO Analyse, I Inleiding & dX
26
Wat gebeurt er in 1 iteratie (vervolg)

Praktijken of gewoontes:

Pair-programming
2 programmeurs per werkstation
 1 programmeur blijft bij zijn task
 Elke dag een andere partner
 Voordelen: automatische code reviews, ene
programmeert, andere beoordeelt, bevordert
communicatie, vermijdt domme fouten

OO Analyse, I Inleiding & dX
27
Wat gebeurt er in 1 iteratie (vervolg)
Praktijken of gewoontes (vervolg):
 Acceptatietests:
 Tests
die nagaan of de code voldoet aan de eisen
die vooropgesteld zijn. Acceptatietests omvatten
grotere gehelen (stories)
 Halverwege 1 iteratie (na 1 week) moeten ze
beschikbaar zijn
OO Analyse, I Inleiding & dX
28
Wat gebeurt er in 1 iteratie (vervolg)
Praktijken of gewoontes (vervolg):
 Unit tests:
Tests die om de pakweg 5 minuten lopen, terwijl je
programmeert
 Ze zijn geautomatiseerd. Je hoeft geen schermen tekst te
controleren. compare & report gebeuren automatich.
 Je schrijft deze tests VOOR je de code intikt die getest
wordt
 Ze zijn een vorm van documentatie van de specificaties en
een aanwijzing dat er aan voldaan is. De tests moeten
daarom ook betekenisvolle identifiers bevatten.

OO Analyse, I Inleiding & dX
29
Wat gebeurt er in 1 iteratie (vervolg)
Praktijken of gewoontes (vervolg):
 Refactoring
=
Verbetering van bestaande code zonder het
gedrag naar buiten toe te wijzigen. (Zie supra
Martin Fowler )
 Geautomatiseerde tests maken refactoring
mogelijk.
OO Analyse, I Inleiding & dX
30
Wat gebeurt er in 1 iteratie (vervolg)
Praktijken of gewoontes (vervolg):
 Open Office

Iedereen zit in dezelfde zaal. Ook de klant ! Dit voor een
goede communicatie.
 Continue
integratie
Niemand kan source-files blokkeren. (Version Control) ->
Veel merges nodig. N.B.Dit punt is controversieel maar
nodig voor het 2e punt.
 Alvorens in te checken, draait elke programmeur ALLE
unit & acceptance tests.

OO Analyse, I Inleiding & dX
31