Inleiding Software Engineering Universiteit AntwerpenPlanning 4.1 Hoe snel loopt iemand de 100 meter ?

Slides:



Advertisements
Verwante presentaties
De gemiddelde leerling
Advertisements

SINT LUKAS HOGESCHOOL BRUSSEL
Project Software Engineering Universiteit AntwerpenPlanning 4.1 Hoe snel loopt iemand de 100 meter ?
Personalisatie van de Archis website Naam: Sing Hsu Student nr: Datum: 24 Juni 2004.
Global e-Society Complex België - Regio Vlaanderen e-Regio Provincie Limburg Stad Hasselt Percelen.
ADOBE PRESENTER Willem vanden Berg Dienst Onderwijsondersteuning en –ontwikkeling KaHo Sint-Lieven 1.
Project Software Engineering Universiteit AntwerpenAanpasbaarheid 3.1 Complexe Interacties.
Ronde (Sport & Spel) Quiz Night !
Case5: No-Audio Game: from design document to first prototype Tom Ramakers Cmd gad 30/05/2012.
Inleiding Software Engineering Universiteit AntwerpenBetrouwbaarheid 2.1 Ontdek de 7 verschillen.
Programmeren in Java met BlueJ
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Gelinkte lijsten Finite State.
prNBN D addendum 1 Deel 2: PLT
“Gelijk een hert schreeuwt naar de waterstromen, alzo schreeuwt mijn ziel tot U, o God! Mijn ziel dorst naar God, naar den levenden God.” (Psalm 42:1-2)
Diagnosticeer uw schouder Dit is een interactieve gids om u te helpen vinden relevante patiënten informatie over uw schouderprobleem. Het is bedoeld als.
Project Software Engineering Universiteit AntwerpenBetrouwbaarheid 2.1 Ontdek de 7 verschillen.
Datastructuren Analyse van Algoritmen en O
F. Rubben NI Lookout 1 06/RIS/05 - NI Lookout VTI Brugge F. Rubben, ing.
De PROFIBUS, PROFINET & IO-Link dag 2011 Share our Vision for Automation.
© GfK 2012 | Title of presentation | DD. Month
WISKUNDIGE FORMULES.

Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.1 Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen.
Complexe Interacties Universiteit Antwerpen Aanpasbaarheid.
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
1 FLOWer Referenties Functionaliteit: Componenten Role model Data handling model Demonstratie Studio en Beheeromgeving Architectuur en integratie UWV architectuur.
1/1/ / faculty of Computer Science eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 7(2): Vertalen.
Neurale Netwerken Kunstmatige Intelligentie Rijksuniversiteit Groningen April 2005.
1Ben Bruidegom A Harvard Machine Recapitulatie Calculator Calculator  Calculator met “loopjes” Calculator met “loopjes”  Processor.
TUDelft Knowledge Based Systems Group Zuidplantsoen BZ Delft, The Netherlands Caspar Treijtel Multi-agent Stratego.
1 Voorwaarden hergebruik Modulair ontwerp Low coupling High cohesion.
Hoorcollege 7 Collections, arrays. Programma ‘Snowflakes’ Sneeuwvlok object.
Werken aan Intergenerationele Samenwerking en Expertise.
Breuken-Vereenvoudigen
Inkomen les 7 27 t/m 37.
2009 Tevredenheidsenquête Resultaten Opleidingsinstellingen.
1 Van Harvard naar MIPS. 2 3 Van Harvard naar MIPS Microprocessor without Interlocked Pipeline Stages Verschillen met de Harvard machine: - 32 Registers.
PLAYBOY Kalender 2006 Dit is wat mannen boeit!.
ribwis1 Toegepaste wiskunde Lesweek 01 – Deel B
ribWBK11t Toegepaste wiskunde Lesweek 02
DB&SQL8- 1 VBA Visual Basics for Applications: eigen Office versie vanaf Office2000 gelijk voor alle applicaties Programmeren onder meer nodig voor Het.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  D3EEMS1  programmed I/O: de.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 3 - onderwerpen Het.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 3 - onderwerpen Instruction timing Shadow.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 6 - onderwerpen seriele interface (UART -
Reducing memory penalty by a programmable prefetch engine for on-chip caches Presentatie voor het vak computerarchitectuur door Armin van der Togt.
1 Controleplan 2005 Raadgevend comité Hotel President – donderdag 21 april 2005.
 Doel  Doelgroep  Aanloop  Userstudy  Resultaten  Ervaringen van de gebruiker  Besluit 1.
ZijActief Koningslust 10 jaar Truusje Trap
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.

OHT 9.1 De Pelsmacker,Geuens & Van den Bergh, Marketingcommunicatie, vierde editie © Pearson Education 2011 Reclameonderzoek In dit hoofdstuk zul je het.
ECHT ONGELOOFLIJK. Lees alle getallen. langzaam en rij voor rij
2 januari 2009Nieuwjaarsreceptie "Meule wal straete" 1 Nieuwjaarsreceptie 2 januari 2009 Eerste bijeenkomst van de bewoners van de “Meule wal straete”
Shortest path with negative arc-costs allowed. Dijkstra?
TOPIC O: Pointers | pag. 1 Pointer = adres in het geheugen, is zelf geen geheugen! Expliciet geheugen aanvragen vóór gebruik.
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 3.
Fractale en Wavelet Beeldcompressie
Plan Coordination by Revision in Collective Agent Based Systems Adriaan ter Mors en Gijsbert Deelder Plan Coordination by Revision in Collective.
De financiële functie: Integrale bedrijfsanalyse©
aangename ont - moeting
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 2 definitie.
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
ZijActief Koningslust
Hoofdstuk 3 - Conditionele logica
1 XSLT processing & control Datamodellering 2006.
Cegeka & TenForce Ronde tafel 17/06/2014 Doelstellingenmanagement VO.
Transcript van de presentatie:

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.1 Hoe snel loopt iemand de 100 meter ?

Inleiding Software Engineering Universiteit AntwerpenPlanning Planning Tijdsschatting –Analogie & Decompostie –Empirische schatting Plan 2.0 & Plan 2.1 Conclusie TicTacToe –Code Hergebruik => TestCase –HTML Uitvoer => polymorfisme –“Undo” => Lijsten & polymorfisme

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.3 "Ontwikkel" vereisten Vereisten Betrouwbaarheid Aanpasbaarheid Planning Technieken Testen + Contracten Objectgericht ontwerp Tijdsschatting

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.4 Schatting door analogie Analogie Schatting = tijd gelijkaardig project Wanneer gelijkaardig ? –Zelfde probleemdomein –Zelfde mensen –Zelfde technologie Empirisch gespendeerde tijd voorbije projecten dient als basis voor schatting volgende

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.5 Empirische schatting (project) Grootte project Ontwikkeltijd = Voorbij = Prognose Legende y = a x b (b ±= 1) Schat totale duur van project op basis van vorige projecten X Y

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.6 Schatting door decompositie Decompositie Schatting = tijd componenten + integratiekost Tijd componenten ? –cfr. opgeleverde componenten Integratiekost ? –constant (mits testen en OO) Empirisch gespendeerde tijd eerste componenten dient als basis voor schatting volgende

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.7 Empirische schatting (component) Grootte component Ontwikkeltijd component = Opgeleverd = Prognose Legende y = m x Schat duur van één component op basis van opgeleverde componenten X Y

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.8 Grootte en Tijd x = Grootte Component ? # stappen + #uitzonderingen in use case y = Ontwikkellingstijd ? Zie tijdsbladen Na oplevering n componenten: (x n, y n )=> m = ∑ y n / ∑ x n Schatting y n+1 voor grootte x n+1 => y n+1 = m.x n+1 vergelijking benaderende rechte y = mx

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.9 Vuistregel Empirische schatten is de basis voor een realistische planning. Waarom ? Betere controle over aanpassingen aan de planning Hoe ? Hou tijdsbladen nauwkeurig bij Maak prognose op basis van gespendeerde werk in het verleden

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.10 Use Case Grootte play player Use Case 1: play … Steps 1. Two players start up a game (First is "O"; other is "X") 2. WHILE game not done 2.1 Current player makes move 2.2 Switch current player 3. Anounce winner Exceptions 2.1. [Illegal Move] System issues a warning => continue from step 2.1 #stappen = 5 #uitzond. = 1 grootte = 6

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.11 Voorbeelden Zie voorbeelden in PlanTmpl20 & PlanTmpl21

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.12 Conclusie Betrouwbare prognoses zijn belangrijk –Hou tijdsbladen nauwkeurig bij ! Schatten impliceert fouten –Voorzie een redelijke marge –Vertrouw niet blindelings op de cijfertjes

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.13 Code Hergebruik TicTacToeTest is groot code leesbaarheid hergebruik ? copy + delete + insert Aanpasbaarheid :( TicTacToeTest setUp() tearDown() init() fail(msg: ARRAY OF CHAR) should(b: BOOLEAN, msg: ARRAY OF CHAR): BOOLEAN shouldNot(b: BOOLEAN, msg: ARRAY OF CHAR): BOOLEAN compareFiles(fileName1, fileName2: ARRAY OF CHAR): BOOLEAN testBasicPlayer(verbose: BOOLEAN): BOOLEAN testLegalMoves(verbose: BOOLEAN): BOOLEAN testRealGame(verbose: BOOLEAN): BOOLEAN testOutputGame(verbose: BOOLEAN): BOOLEAN

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.14 UnitTest setUp() tearDown() init() fail(msg: ARRAY OF CHAR) should(b: BOOLEAN, msg: ARRAY OF CHAR): BOOLEAN shouldNot(b: BOOLEAN, msg: ARRAY OF CHAR): BOOLEAN compareFiles(fileName1, fileName2: ARRAY OF CHAR): BOOLEAN TicTacToeTest setUp() tearDown() init() testBasicPlayer(verbose: BOOLEAN): BOOLEAN testLegalMoves(verbose: BOOLEAN): BOOLEAN testRealGame(verbose: BOOLEAN): BOOLEAN testOutputGame(verbose: BOOLEAN): BOOLEAN UnitTest is superklasse bevat algemene code hergebruik ? subklasse per te testen component/klasse Code Hergebruik TicTacToeTest is subklasse erft algemene code overschrijft setup, init & teardown bevat alleen relevante code

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.15 Vuistregel “Hollywood Principle” wij roepen jouw op als we je nodig hebben Waarom ? Uitbreiding van bibliotheken via subklasses Hoe ? Superklasse in bibliotheek legt protocol van oproepen vast Subklassen kunnen gedrag uitbreiden

Inleiding Software Engineering Universiteit AntwerpenBetrouwbaarheid 2.16 Generisch Unittest Protocol UnitTest setUp(testCase: ARRAY OF CHAR) run() tearDown() should (…): BOOLEAN shouldNot (…): BOOLEAN object under test : UnitTest testXXXX() xxx1stStimulus setUp("testXXX") run() shouldNot(xxx1stObservation) tearDown() NEW(); init(); should(xxx2ndObservation) xxx2ndStimulus Evaluatie Criteria Obj. Collaboratie

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.17 Vuistregel Klassen die vaak herbruikt worden hebben preciese contracten Waarom ? Betere betrouwbaarheid door precieze beschrijving interface Hoe ? Leg de “normale” volgorde van oproepen vast Specifieer volgorde via de respectievelijke pre- en postcondities

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.18 Oproepvolgorde voor “UnitTest” Init() Setup Initialized SetUp() Running Run() TornDown TearDown()

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.19 Contracten voor “UnitTest” PROCEDURE (aTest : UnitTest) Init; (* postcondition (120): aTest^.IsInitialized() *)(* postcondition (120): ~ aTest^.IsSetup() *) (* postcondition (120): ~ aTest^.IsRunning() *)(* postcondition (120): aTest^.IsTornDown() *) PROCEDURE (aTest : UnitTest) SetUp (testCase: ARRAY OF CHAR); (* precondition (100): aTest^.IsInitialized() *)(* precondition (100): aTest^.IsTornDown() *) (* precondition (100): LEN(testCase) < MaxTestCaseLength *) (* postcondition (120): aTest^.IsSetup() *)(* postcondition (120): ~ aTest^.IsTornDown() *) PROCEDURE (aTest : UnitTest) Run; (* precondition (100): aTest^.IsInitialized() *)(* precondition (100): aTest^.IsSetup() *) (* postcondition (120): ~ aTest^.IsSetup() *)(* postcondition (120): aTest^.IsRunning() *) PROCEDURE (aTest : UnitTest) TearDown; (* precondition (100): aTest^.IsInitialized() *)(* precondition (100): aTest^.IsRunning() *) (* postcondition (120): ~ aTest^.IsRunning() *)(* postcondition (120): aTest^.IsTornDown() *)

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.20 Vuistregel Schrijf testcode als subklasse(n) van “UnitTest” Waarom ? Betere onderhoudbaarheid van de testcode Hoe ? Maak een subklasse van “UnitTest” per te testen component Overschrijf Init(), SetUp(), TearDown(), Run ()

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.21 HTML Uitvoer (TTT16b) play player Use Case 3: play HTML output Extension of use case 1 Steps use case 1 + additional steps afer write game on HTML (table) during 3 3 write winner on HTML text play HTML output > (Erg gelijkaardig aan use case 2) => inheritance & polymorfisme ?

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.22 PROCEDURE (aTicTacToe: TicTacToe) writeHTMLOn* (VAR w: Texts.Writer); … BEGIN Texts.WriteString(w, " "); Texts.WriteString(w, "TicTacToe game after move "); Texts.WriteInt(w, aTicTacToe.nrOfMoves, 0); Texts.WriteString(w, " ");Texts.WriteLn(w); FOR i := 0 TO 2 DO Texts.WriteString(w, " ");Texts.WriteLn(w); FOR j := 0 TO 2 DO Texts.WriteString(w, " "); … END; … "Ongeveer" gelijk aan writeOn => duplicatie

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.23 PROCEDURE (aTest: TicTacToeTest) testOutputGame* (… writeHTML: BOOLEAN): BOOLEAN; … IF writeHTML THEN Texts.WriteString(w, " ");Texts.WriteLn(w); … END; WHILE aTest.aGame.notDone() DO aTest.aGame.doMove(); IF writeHTML THEN aTest.aGame.writeHTMLOn(w); ELSE aTest.aGame.writeOn(w); END; END; IF writeHTML THEN Texts.WriteString(w, " ");Texts.WriteLn(w); END; … => complexe conditionele logica

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.24 Vuistregel Vermijd code duplicatie & complexe logica Refactor: code duplicatie: gelijkaardige code in de superklasse; verschillen in subklassen complexe logica: normaal geval in de superklasse; speciale gevallen in de subklassen

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.25 Splits Klassen (TTT16) TicTacToeOutput startPage() endPage() startBoard() endBoard() startRow(row: CHAR) endRow() boardLocation(row, column, marker: CHAR) TicTacToeOutput TicTacToe writeOn() writeHTMLOn() TicTacToe TicTacToeHTMLOutput TicTacToeTest testOutputGame() TicTacToeTest Evaluatie Criteria printobjecten/iterators

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.26 PROCEDURE (aTest: TicTacToeTest) testOutputGame* (… writeHTML: BOOLEAN): BOOLEAN; … Texts.OpenWriter(w); output.init (); output.startPage(w); WHILE aTest.aGame.notDone() DO aTest.aGame.doMove(); aTest.aGame.writeOn(w, output) END; output.endPage(w); complexe condities => polymorfisme

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.27 PROCEDURE (aTicTacToe: TicTacToe) writeOn* (VAR w: Texts.Writer; output: TicTacToeOutput.TicTacToeOutput); BEGIN output.startSentences(w); Texts.WriteString(w, "TicTacToe game after move "); Texts.WriteInt(w, aTicTacToe.nrOfMoves, 0); output.endSentences(w); output.startBoard(w); FOR i := 0 TO 2 DO output.startRow(w, CHR(ORD("1") + i)); FOR j := 0 TO 2 DO output.boardLocation(…); END; output.endRow(w); END; output.endBoard(w); extra parameter controleert verschil verschillen in gedupliceerde code => polymorfisme

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.28 “Undo” play player Use Case 4: play with undo option Extension of use case 1 Steps use case 1 + additional steps afer current player “undo” move goto 2 (restart while loop) play with undo option >

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.29 “Undo” Algoritme ? Hou een lijst bij met verloop spelstatus TicTacToeData* = RECORD (OOLists.NodeDesc) nrOfMoves: INTEGER; board: ARRAY 3, 3 OF CHAR; players: ARRAY 2 OF Player; lastCol, lastRow, lastMark : CHAR; theWinner: Player; END; Herbruik bestaande code Maar … “Klassen die vaak herbruikt worden hebben preciese contracten”

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.30 Contracten voor “OOLists” ? PROCEDURE (l : List) Init (); PROCEDURE (l : List) LocateFirst (); PROCEDURE (l : List) LocateLast (); PROCEDURE (l : List) LocateNode (n: Node); PROCEDURE (l : List) LocatePrev (); PROCEDURE (l : List) LocateNext (); PROCEDURE (l : List) InsertBefore (new: Node); PROCEDURE (l : List) InsertAfter (new: Node); PROCEDURE (l : List) Delete (); PROCEDURE (l : List) GetNode (): Node; PROCEDURE (l : List) Enumerate (P: NodeProc); PROCEDURE (n : Node) NodeInfo (); Contracten ? Moeilijk want interface zonder predicaten

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.31 “Lijst” met predicaten PROCEDURE (l : List) Init (); (* postcondition (120): l^.IsInitialized() *) PROCEDURE (l : List) Includes (n: Node): BOOLEAN; (* precondition (100): l^.IsInitialized() *) PROCEDURE (l : List) Insert (new: Node); (* precondition (100): l^.IsInitialized() *) (* postcondition (120): l^.Includes(new) *) PROCEDURE (l : List) Delete (old: Node); (* precondition (100): l^.IsInitialized() *) (* postcondition (120): ~ l^.Includes(new) *) Contracten ? Makkelijker want interface met veel predicaten Evaluatie Criteria Reuse (lijsten)

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.32 Vuistregel Prefereer een interface met predicaten Waarom ? Betere betrouwbaarheid door eenvoudige contracten Hoe ? Specifieer predicaten voor hoofdfunctionaliteit component Roep predicaten op in pre- en post-condities

Inleiding Software Engineering Universiteit AntwerpenPlanning 4.33 Vuistregels Testen Schrijf testcode als subklasse(n) van “UnitTest” Ontwerpen Vermijd code duplicatie & complexe logica “Hollywood Principle” – wij roepen jouw op als we je nodig hebben Klassen die vaak herbruikt worden hebben preciese contracten Prefereer een interface met predicaten Plannen Empirische schatten is de basis voor een realistische planning