De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

OO Analyse in de praktijk OO Analyse in de praktijk I Inleiding & dX.

Verwante presentaties


Presentatie over: "OO Analyse in de praktijk OO Analyse in de praktijk I Inleiding & dX."— Transcript van de presentatie:

1 OO Analyse in de praktijk OO Analyse in de praktijk I Inleiding & dX

2 2OO Analyse, I Inleiding & dX Inhoudstafel Inleiding Inleiding 3 klassieke stadia 3 klassieke stadia Literatuurgeschiedenis Literatuurgeschiedenis Wat maakt het verschil (Critical Succes Factors) Wat maakt het verschil (Critical Succes Factors) Enkele anti-patterns en code smells vooraf Enkele anti-patterns en code smells vooraf Het proces: Extreme programming en dX Het proces: Extreme programming en dX Iteratieve ontwikkeling Iteratieve ontwikkeling Planning Planning Wat gebeurt er in 1 iteratie Wat gebeurt er in 1 iteratie

3 3OO Analyse, I Inleiding & dX 3 klassieke stadia in software- ontwikkeling 0 Achtergrond (hier wordt zelden over gesproken) 0 Achtergrond (hier wordt zelden over gesproken) =kennis van het onderwerp =kennis van het onderwerp =belangrijkste fase =belangrijkste fase Wordt vaak vergeten ! Wordt vaak vergeten ! 1 Conceptie 1 Conceptie =klassieke analyse in enge zin =klassieke analyse in enge zin Heeft geen zin zonder vorige fase Heeft geen zin zonder vorige fase 2 Design/Specificatie 2 Design/Specificatie Bevat al sommige implementatiebeslissingen Bevat al sommige implementatiebeslissingen 3 Implementatie 3 Implementatie Belangrijker dan veel managers denken

4 4OO Analyse, I Inleiding & dX Opmerkingen Stadia hoeven niet in volgorde doorlopen te worden Stadia hoeven niet in volgorde doorlopen te worden WEL weten op welk niveau je bezig bent WEL weten op welk niveau je bezig bent Analyse ≠ exacte wetenschap. Informatica is te jong. Enig criterium: BRUIKBAARHEID Analyse ≠ exacte wetenschap. Informatica is te jong. Enig criterium: BRUIKBAARHEID Implementatiefase is WEL belangrijk. Hier kan het nog altijd fout gaan. Implementatiefase is WEL belangrijk. Hier kan het nog altijd fout gaan.

5 5OO Analyse, I Inleiding & dX 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 UML distilled, Martin Fowler Notatie bruikbaar voor fases 1 & 2 Notatie bruikbaar voor fases 1 & 2 UML for Java programmers, Robert C. Martin UML for Java programmers, Robert C. Martin Fases 2 & 3 Fases 2 & 3

6 6OO Analyse, I Inleiding & dX Literatuur ’50ies en ’60ies: Vroege werken ivm Simula, Nygaard & Dahl ’50ies en ’60ies: Vroege werken ivm Simula, Nygaard & Dahl Fase 3, programmeren van simulaties Fase 3, programmeren van simulaties 1e echte OO taal, werd inspiratie voor OO Analyse 1e echte OO taal, werd inspiratie voor OO Analyse 1991: Object-Oriented Analysis, Coad & Yourdon 1991: Object-Oriented Analysis, Coad & Yourdon Fase 1 Fase 1 Kort & eenvoudig maar theoretisch Kort & eenvoudig maar theoretisch

7 7OO Analyse, I Inleiding & dX Literatuur 1985: Eiffel, A Language for Software Engeneering, Bertrand Meyer 1985: Eiffel, A Language for Software Engeneering, Bertrand Meyer Fase 3, maar ook 1 en 2 (dat is juist de clou) Fase 3, maar ook 1 en 2 (dat is juist de clou) 1988: OO Software Construction, Bertrand Meyer 1988: OO Software Construction, Bertrand Meyer Fase 1, 2 en 3 Fase 1, 2 en 3 Klassieker, dik boek, vrij moeilijk, vol humor, héél overtuigend en enthousiasmerend Klassieker, dik boek, vrij moeilijk, vol humor, héél overtuigend en enthousiasmerend

8 8OO Analyse, I Inleiding & dX Literatuur 1994: Object Oriented Analysis & Design with Applications, Grady Booch 1994: Object Oriented Analysis & Design with Applications, Grady Booch Fase 1 & 2 Fase 1 & 2 Klassieker. dik boek, moeilijk, droog. Klassieker. dik boek, moeilijk, droog. Bevat wel nuttige informatie voor wie jaren bezig is. Bevat wel nuttige informatie voor wie jaren bezig is. 1994: Design Patterns, Gamma & Helm & Johnson & Vlissides 1994: Design Patterns, Gamma & Helm & Johnson & Vlissides Fase 2, ook wel 3 Fase 2, ook wel 3 Focust op design. Is gestructureerde no nonsense cataloog van OO ontwerp-patronen. Moeilijk maar interessant boek. Focust op design. Is gestructureerde no nonsense cataloog van OO ontwerp-patronen. Moeilijk maar interessant boek.

9 9OO Analyse, I Inleiding & dX Literatuur 1999: Refactoring, Improving the Design of Existing Code, Martin Fowler 1999: Refactoring, Improving the Design of Existing Code, Martin Fowler Fase 3, ook wel 2 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. 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. Benadrukt belang van automatisch testen. Andere auteurs: Kent Beck, Ivar Jacobson, Barbara Liskov, James Rumbaugh, Bjarne Straustrup (C++), … Andere auteurs: Kent Beck, Ivar Jacobson, Barbara Liskov, James Rumbaugh, Bjarne Straustrup (C++), …

10 10OO Analyse, I Inleiding & dX Wat maakt het verschil… …tussen een geslaagd project en een fiasco. De Critical Succes Factors voor software engeneering: Respect voor Respect voor de klant de klant de technologie. Welke technologie is minder belangrijk de technologie. Welke technologie is minder belangrijk procedureel programmeren versus OO programmeren procedureel programmeren versus OO programmeren relationele databases versus OO databases relationele databases versus OO databases Java versus VB versus C++ enz Java versus VB versus C++ enz blote hand versus GUI-tools blote hand versus GUI-tools jezelf en de andere team-leden. jezelf en de andere team-leden. Als je niet meer gemotiveerd bent, moet je snel iets anders doen. Als je niet meer gemotiveerd bent, moet je snel iets anders doen.

11 11OO Analyse, I Inleiding & dX Wat maakt het verschil (vervolg) Achtergrondkennis over de Business & Communicatie met de klant Achtergrondkennis over de Business & Communicatie met de klant o.a. kennis van de Requirements o.a. kennis van de Requirements Er zijn prachtige systemen zijn ontwikkeld, waar niemand naar gevraagd heeft (zie volgende slide) Er zijn prachtige systemen zijn ontwikkeld, waar niemand naar gevraagd heeft (zie volgende slide)

12 12OO Analyse, I Inleiding & dX Wat maakt het verschil (vervolg)

13 13OO Analyse, I Inleiding & dX Wat maakt het verschil (vervolg) Geautomatiseerde Tests Geautomatiseerde Tests Maken continue verbetering van de architectuur van de code mogelijk. Maken continue verbetering van de architectuur van de code mogelijk. Geven aan in welke mate aan de specificaties voldaan is. Geven aan in welke mate aan de specificaties voldaan is.

14 14OO Analyse, I Inleiding & dX Wat maakt het verschil (vervolg) Omkadering Omkadering Charismatische projectleider die echt meewerkt en waar iedereen naar opkijkt. Charismatische projectleider die echt meewerkt en waar iedereen naar opkijkt. Project-planning: Duidelijke en eenvoudig te verifiëren mijlpalen. Project-planning: Duidelijke en eenvoudig te verifiëren mijlpalen. Methodologie-proces: Sluit aan bij bovenste. Er moet een algemeen aanvaarde praktische werkwijze zijn. Methodologie-proces: Sluit aan bij bovenste. Er moet een algemeen aanvaarde praktische werkwijze zijn.

15 15OO Analyse, I Inleiding & dX Wat maakt het verschil (vervolg) Vermijden van Copy-Paste code Vermijden van Copy-Paste code Lijkt een detail, maar is het niet. 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. 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. Neem zoveel mogelijk gemeenschappelijke code samen en roep deze op of gebruik de componenten.

16 16OO Analyse, I Inleiding & dX Enkele anti-patterns en code smells. I Anti-patterns Anti-pattern: vaak voorkomende foute oplossing Code smell: verdachte code (Fowler, Beck)

17 17OO Analyse, I Inleiding & dX Anti-patterns (vervolg) Anti-patterns Anti-patterns Bloemlezing uit het boek Anti Patterns van Brown, Malveau,…: Bloemlezing uit het boek Anti Patterns van Brown, Malveau,…: The Blob: monolitisch onverdeelde gigantische procedure of klasse The Blob: monolitisch onverdeelde gigantische procedure of klasse Lava Flow Lava Flow Golden Hammer: alles willen doen met 1 heilige tool. Vb alles met Excel macro’s, alles met HTML Golden Hammer: alles willen doen met 1 heilige tool. Vb alles met Excel macro’s, alles met HTML

18 18OO Analyse, I Inleiding & dX Anti-patterns (vervolg) Spaghetti-code Spaghetti-code Cut & paste programming (eerder vernoemd) Cut & paste programming (eerder vernoemd) Vendor Lock-In Vendor Lock-In Design by committee Design by committee Reinvent the Wheel Reinvent the Wheel Analysis Paralysis Analysis Paralysis

19 19OO Analyse, I Inleiding & dX Code smells Term gebruikt door Kent Beck & Martin Fowler Duplicate code (copy paste, zie boven) Duplicate code (copy paste, zie boven) Te veel parameters Te veel parameters Te veel properties (data-fields) Te veel properties (data-fields) Te veel code in 1 klasse Te veel code in 1 klasse Te veel gelijkende klassen (zie copy paste enz) Te veel gelijkende klassen (zie copy paste enz)

20 20OO Analyse, I Inleiding & dX Code smells, (vervolg) Data-klassen: zonder methoden Data-klassen: zonder methoden Method-klassen: zonder data-fields. Pot met functies. Method-klassen: zonder data-fields. Pot met functies. Cryptische naamgeving Cryptische naamgeving Nodeloze documentatie Nodeloze documentatie Oorzaak: Unconscious Incompetence Oorzaak: Unconscious Incompetencehttp://c2.com/cgi/wiki?UnconsciousIncompetence

21 21OO Analyse, I Inleiding & dX Het proces: Extreme Programming (Kent Beck) en dX We beschrijven hier de versie dX van Robert C. Martin © Copyright 2003.

22 22OO Analyse, I Inleiding & dX Extreme Programming (Kent Beck) en dX Structuur Iteratieve ontwikkeling, algemeen Iteratieve ontwikkeling, algemeen Initiële exploratie (1e iteratie) Initiële exploratie (1e iteratie) Schattng van de features Schattng van de features Callibreren van de schattingen Callibreren van de schattingen Planning (vanaf 2e iteratie) Planning (vanaf 2e iteratie) Planning Releases Planning Releases Planning Iteraties Planning Iteraties Middelpunt (aanpassing van de ambities) Middelpunt (aanpassing van de ambities) Dag 10 Feedback over de snelheid: Dag 10 Feedback over de snelheid:

23 23OO Analyse, I Inleiding & dX Extreme Programming (Kent Beck) en dX Structuur (vervolg): Wat gebeurt er in 1 iteratie Wat gebeurt er in 1 iteratie Algemeen Algemeen Praktijken of gewoontes Praktijken of gewoontes Pair Programming Pair Programming Acceptatiestests Acceptatiestests Unit Tests Unit Tests Refactoring Refactoring Open Office Open Office Continue Integratie Continue Integratie

24 24OO Analyse, I Inleiding & dX Iteratieve ontwikkeling Iteratieve ontwikkeling, algemeen 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) 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

25 25OO Analyse, I Inleiding & dX Iteratieve ontwikkeling (vervolg) Initiële exploratie (vervolg) Initiële exploratie (vervolg) Schatting van de features Schatting van de features Elke story krijgt een schatting in ‘punten’ van het werk nodig om deze story te implementeren Elke story krijgt een schatting in ‘punten’ van het werk nodig om deze story te implementeren Dimensieloos getal: eventueel ‘perfecte programmeerdagen’ Dimensieloos getal: eventueel ‘perfecte programmeerdagen’ 1 à 2 teamdagen per story 1 à 2 teamdagen per story Callibreren van de schattingen Callibreren van de schattingen Initiële exploratie eindigt eventueel met werkende code Initiële exploratie eindigt eventueel met werkende code Doel: Bepalen hoeveel mandagen 1 punt is Doel: Bepalen hoeveel mandagen 1 punt is

26 26OO Analyse, I Inleiding & dX Wat gebeurt er in 1 iteratie 1 iteratie = 2 weken Algemeen Algemeen Alle fases doorlopen: analyse resuirements, design & implementation Alle fases doorlopen: analyse resuirements, design & implementation ALLEEN voor de door de klant gekozen user stories ALLEEN voor de door de klant gekozen user stories Belangrijkste stories worden op die manier eerst behandeld Belangrijkste stories worden op die manier eerst behandeld

27 27OO Analyse, I Inleiding & dX Wat gebeurt er in 1 iteratie (vervolg) Praktijken of gewoontes: Praktijken of gewoontes: Pair-programming Pair-programming 2 programmeurs per werkstation 2 programmeurs per werkstation 1 programmeur blijft bij zijn task 1 programmeur blijft bij zijn task Elke dag een andere partner Elke dag een andere partner Voordelen: automatische code reviews, ene programmeert, andere beoordeelt, bevordert communicatie, vermijdt domme fouten Voordelen: automatische code reviews, ene programmeert, andere beoordeelt, bevordert communicatie, vermijdt domme fouten

28 28OO Analyse, I Inleiding & dX Wat gebeurt er in 1 iteratie (vervolg) Praktijken of gewoontes (vervolg): Acceptatietests: Acceptatietests: Tests die nagaan of de code voldoet aan de eisen die vooropgesteld zijn. Acceptatietests omvatten grotere gehelen (stories) 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 Halverwege 1 iteratie (na 1 week) moeten ze beschikbaar zijn

29 29OO Analyse, I Inleiding & dX Wat gebeurt er in 1 iteratie (vervolg) Praktijken of gewoontes (vervolg): Unit tests: Unit tests: Tests die om de pakweg 5 minuten lopen, terwijl je programmeert 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. 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 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. 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.

30 30OO Analyse, I Inleiding & dX Wat gebeurt er in 1 iteratie (vervolg) Praktijken of gewoontes (vervolg): Refactoring Refactoring = Verbetering van bestaande code zonder het gedrag naar buiten toe te wijzigen. (Zie supra Martin Fowler ) = Verbetering van bestaande code zonder het gedrag naar buiten toe te wijzigen. (Zie supra Martin Fowler ) Geautomatiseerde tests maken refactoring mogelijk. Geautomatiseerde tests maken refactoring mogelijk.

31 31OO Analyse, I Inleiding & dX Wat gebeurt er in 1 iteratie (vervolg) Praktijken of gewoontes (vervolg): Open Office Open Office Iedereen zit in dezelfde zaal. Ook de klant ! Dit voor een goede communicatie. Iedereen zit in dezelfde zaal. Ook de klant ! Dit voor een goede communicatie. Continue integratie Continue integratie Niemand kan source-files blokkeren. (Version Control) -> Veel merges nodig. N.B.Dit punt is controversieel maar nodig voor het 2e punt. 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. Alvorens in te checken, draait elke programmeur ALLE unit & acceptance tests.


Download ppt "OO Analyse in de praktijk OO Analyse in de praktijk I Inleiding & dX."

Verwante presentaties


Ads door Google