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

Slides:



Advertisements
Verwante presentaties
Gerund = WW. gebruikt als zelfstandig Nw.
Advertisements

Help, ik moet naar Office 2007!?. Wat horen wij bij klanten Training “New UI will cause too big of a loss in productivity” Training “New UI will cause.

Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Een programma opbouwen.
HM-ES-th1 Les 9 Hardware/Software Codesign with SystemC.
Requirements -People are able to make their own memorial page, called a memori -The website will be build first in Dutch for extension.nl, then copied.
SAP ABAP A short introduction. SAP ABAP • Selectie: – IF …… ENDIF. – IF …. ELSE … ENDIF. – IF …. ELSEIF …. ELSEIF …. ELSE …. ENDIF. – IF condition_1.
Project Software Engineering Universiteit AntwerpenAanpasbaarheid 3.1 Complexe Interacties.
Sex, drugs and rock n' roll 2.0: Wat kunnen we leren van evenementen? Dr. Walther Ploos van Amstel Vrije Universiteit/TNO Mobility.
Ronde (Sport & Spel) Quiz Night !
Finance & Business Control
Inleiding Software Engineering Universiteit AntwerpenBetrouwbaarheid 2.1 Ontdek de 7 verschillen.
Programmeren in Java met BlueJ
Cloud Computing woensdag 20 november Wat is Cloud Computing ? Cloud Computing.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Gelinkte lijsten Finite State.
Virgielcollege Mede mogelijk gemaakt door uw Eerstejaarsch Commissie.
Nieuwe wegen in ontwerpen met CAD
Project Software Engineering Universiteit AntwerpenBetrouwbaarheid 2.1 Ontdek de 7 verschillen.
Introduction multimedia. convergence standards retrieval applications & technology.
The English Tenses Alles op een rijtje.
OOS Object geOrienteerd Software-ontwerp - 4 Codeerperikelen Singleton Specificeren Scheiding GUI en Domein Facade.
Beyond Big Grid – Amsterdam 26 september 2012 Enquette 77 ingevulde enquettes, waarvan 60 met gebruikservaring = Mainly Computer Science.
Faculteit Ingenieurswetenschappen & Wetenschappen Software Engineering Publicatie Management Systeem Groep se1 Software Engineering Thierry Coppens.
Omgevingen zijn dan geïmplementeerd als Symbol Tables. Symbol Table mapt een symbool met een Binding Meerdere noties van binding –Meerdere manieren te.
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.1 Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen.
Werktuigkunde, Gebouw Z Tel : Vrije Universiteit Brussel - Mechanical Engineering - Acoustics & Vibration.
Inleiding Software Engineering Universiteit AntwerpenPlanning 4.1 Hoe snel loopt iemand de 100 meter ?
Complexe Interacties Universiteit Antwerpen Aanpasbaarheid.
1 Toegepaste Informatica Keuzevak C++ 3°jaar. 2 Studiefiche  Software  Boek (hfst 3-5)  Presentatie (website)
Beeldverwerking Prof. dr. ir. W. Philips Didactisch materiaal bij de cursus Academiejaar
1 FLOWer Referenties Functionaliteit: Componenten Role model Data handling model Demonstratie Studio en Beheeromgeving Architectuur en integratie UWV architectuur.
LokWeb and LWB 7 maart 2006 by Maarten and Hilverd.
Algoritmiek Arrays: wat zijn dat en wat kun je ermee? Loops: hoe hou je ze in bedwang? Hoorcollege 6 - Ma. 9 okt L.M. Bosveld-de Smet.
1 Ben Bruidegom AMSTEL-instituut Universiteit van Amsterdam Reehorstconferentie 2007 NLT-module Digitale Techniek Ontwerpen van digitale schakelingen met.
TUDelft Knowledge Based Systems Group Zuidplantsoen BZ Delft, The Netherlands Caspar Treijtel Multi-agent Stratego.
Databases I EER and Object Modeling Martin Caminada / Wiebren de Jonge Vrije Universiteit, Amsterdam definitieve versie 2002.
Algoritmen en Datastructuren (ALDAT) EVMINX4 Dagdeel 2.
GESPRG Les 12 Gestructureerd programmeren in C. 152 Huiswerk Uitwerking void reverse(int a[], int n) { int first = 0, last = n - 1; while (first < last)
Modelling spatial dependencies for mining geospatial data Marlies Mooijekind.
Hoorcollege 8 Game object structuren. Arrays in games Grid-gebaseerd speelveld (zoals Tetris) Lijst van spelers Lijst van inventory items Lijst van alle.
Hoorcollege 7 Collections, arrays. Programma ‘Snowflakes’ Sneeuwvlok object.
C++ handboek : C++ Leen Ameraal 6e druk academic service.
CONTROLESTRUCTUREN (DEEL 2)
#3Objecten. Schrijf in LOGO de pseudocode voor een figuur naar keuze (met iig een lus of conditie). Maak tevens een screenshot van het resultaat.
Hibernate Object relational mapping
Instructions and warnings. Instructions Om in het Engels een instructie te maken gebruikt men, net als in het Nederlands de Gebiedende Wijs.
1Ben Bruidegom 1 Micro controllers introduction. 2Ben Bruidegom 2 Areas of use & Numbers of machines You might have 1 or 2 Pentium class chips at home.
Automation SolutionsMFG/Pro Dutch usergroup 8 februari 2007 ISA S88 & S95 Het gebruik van deze normen in de productie.
JAVA1 H 22. COLLECTIONS FRAMEWORK. 1. INLEIDING. Collections framework Is een verzameling van data structuren, interfaces en algoritmen Meest voorkomende.
1 HOOFDSTUK 5 CONTROLESTRUCTUREN (DEEL 2) 5.1. INTRODUCTIE  Vervolg discussie omtrent gestructureerd programmeren  Introductie van de overblijvende controlestructuren.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 3 - onderwerpen Het.
KPRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology Les 2 sheet 1 Wat gaan we doen:  Een (vaste) melodie.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 3 - onderwerpen Instruction timing Shadow.
DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Beginselen van C opgaves… volgende week: ARM.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag GUI  command line redirection.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 6 - onderwerpen seriele interface (UART -
Geheugen, distributie en netwerken Netwerken: de basis voor distributie van gegevens en taken (processen) –bestaan zo’n 40 jaar, zeer snelle ontwikkeling.
Reducing memory penalty by a programmable prefetch engine for on-chip caches Presentatie voor het vak computerarchitectuur door Armin van der Togt.
Hoofdstuk 9 Objecten en klassen.
Future (toekomst) Je krijgt 2 verschillende vormen van Future.
Woorden als or, and, but, when, because, so en since gebruiken we om twee zinsdelen te koppelen. Voorbeeld in het Nederlands: De dvd was erg duur maar.
Definities: Present Simple en Past Simple
Rational Unified Process RUP Jef Bergsma. Iterations –Inception –Elaboration –Construction –Transition De kernbegrippen (Phases)
Plan Coordination by Revision in Collective Agent Based Systems Adriaan ter Mors en Gijsbert Deelder Plan Coordination by Revision in Collective.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 7 onze.
C++ C++ als een verbetering van C Abstracte datatypen met classes Constructoren en destructoren Subklassen binding van functies 1.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 2 definitie.
EQUA Moeten we requirements serieus nemen?. Traditioneel Iteratief Agile Open Source Frank Peeters Petra Heck
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
Transcript van de presentatie:

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

Project Software Engineering Universiteit AntwerpenPlanning Planning •Tijdsschatting –Analogie & Decompostie –Empirische schatting •Plan 2.0 & Plan 2.1 •Conclusie •versie 1.7 en 1.8 (Player. winner()) •Enkele vuistregels –Hollywood principe –3-lagen architectuur • ⇒ invoer tests + uitvoer tests + domein test –Contracten & Interface •Makefiles

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

Project 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

Project 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

Project 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

Project 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

Project 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

Project 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

Project 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

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

Project 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

Project Software Engineering Universiteit AntwerpenPlanning 3.13 class TicTacToe {... private: … char _winner; }; TicTacToe::TicTacToe() { … _winner = ' '; ENSURE(properlyInitialized(), "constructor …"); } void TicTacToe::writeOn(std::ostream& onStream) { … onStream nrOfMoves() getWinner() << "'" <<std::endl; … } winnaar toevoegen impliceert - aanpassingen aan de constructor - aanpassingen aan “writeOn” ⇒ Testen en HappyDayOutput + nieuwe testen voor getWinner TicTacToe17

Project Software Engineering TicTacToe18 Universiteit AntwerpenPlanning 4.14 TicTacToe TicTacToe(); setMoves (oMoves, xMoves: STRING) getMark (col, row: CHAR): CHAR setMark (col, row, marker: CHAR): CHAR notDone (): BOOLEAN nrOfMoves(): INTEGER doMove () writeOn (o: ostream) getWinner (): CHAR reset() Eenvoudig testen van getWinner ⇒ reset functionaliteit Testscenarios + klasse onder test gaan hand in hand

Project Software Engineering Universiteit AntwerpenPlanning 4.15 Vuistregel “Hollywood Principe” don't call us, we'll call you ! Waarom ? •Uitbreiding van bibliotheken via subklasses Hoe ? •Superklasse in bibliotheek legt protocol van oproepen vast •Subklassen kunnen gedrag uitbreiden •Voorbeeld: UnitTest (mindere mate TinyXML)

Project Software Engineering Universiteit AntwerpenPlanning 2.16 Generisch Unittest Protocol XxxTest setUp() tearDown() TEST_F(…) bool EXPECT_EQ(…) bool EXPECT_TRUE(…) … object under test : XxxTest testXXXX() xxx1stStimulus SetUp() run() EXPECT_EQ(xxx1stObservation) TearDown() …constructor + initialisatie … EXPECT_TRUE(xxx2ndObservation) xxx2ndStimulus Er zijn veel test-methoden (testcode ≥ basiscode) Hoe organiseren ?

Project Software Engineering Universiteit AntwerpenPlanning 4.17 Vuistregel “3 lagen architectuur” aparte componenten (en tests !) voor (a) presentatie, (b) domein logica, (c) data-opslag Waarom ? •lokaal effect van veranderingen Hoe ? •Domeinmodel hangt niet af van databank, noch user-interface • ⇒ Aparte tests voor invoer / uitvoer / domein

Project Software Engineering 3-lagen architectuur Universiteit AntwerpenPlanning 4.18 opslag domein logica presentatie uitvoertests invoertests domeintests

Project Software Engineering Universiteit AntwerpenPlanning 3.19 Invoer Tests 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 tijdens 2.1 kan "Illegal Move" voorkomen

Project Software Engineering Universiteit AntwerpenPlanning 3.20 Vuistregel Minstens één test per soort "foute" invoer Waarom ? •Alle scenarios in de specificaties moeten getest worden Hoe ? •Controleer resultaat uitzondering via "EXPECT_EQ" … => denk eraan: " Een test produceert zo weinig mogelijk uitvoer"

Project Software Engineering invoertests Universiteit AntwerpenPlanning 4.21 XML met syntax fouten (haakjes, tags, …) foutboodschap, zonder domeinmodel XML met semantische fouten (…) partieel domeinmodel + foutboodschappen XML zonder fouten (klasse n) domeinmodel klasse n XML zonder fouten (klasse 1) domeinmodel klasse 1 XML bestanden domein model waardes “aan de rand” van wat toegelaten is meerdere foutboodschappen

Project Software Engineering Universiteit AntwerpenPlanning 4.22 Vuistregel Klassen die vaak gebruikt worden hebben preciese contracten (en veel tests) Waarom ? •Betere betrouwbaarheid door precieze beschrijving interface Hoe ? •Leg de “normale” volgorde van oproepen vast •Specifieer volgorde via de respectievelijke pre- en postcondities •Schrijf tests die de volgorde (pre- en post-condities) verifiëren

Project Software Engineering Universiteit AntwerpenPlanning 4.23 Contracten & Tests “List” ( Double Linked ) ? class node { public: int value; node *next; node *prev; }; class list { public: node *front; node *back; list() void insertFront(int value); void insertBack(int value); void removeFront(); void removeBack(); void insertBefore(int value, node *nodeB); void insertAfter(int value, node *nodeA); void removeBefore(node *nodeB); void removeAfter(node *nodeA); void removeNode(node *newNode); void printDListFront(); void printDListBack(); }; Contracten ? Tests ? Moeilijk want interface zonder predicaten

Project Software Engineering Universiteit AntwerpenPlanning 4.24 “Lijst” met predicaten list() //ENSURE(properlyInitialized(), "constructor must end in properlyInitialized state"); includes (int value): BOOLEAN; //REQUIRE(this->properlyInitialized(), "list wasn't initialized when calling includes"); insert (int value); //REQUIRE(this->properlyInitialized(), "list wasn't initialized when calling insert"); //REQUIRE(~includes(int), "before insert the list should NOT include the inserted value"); //ENSURE(includes(int), "after insert the list should include the inserted value"); delete (int value); //REQUIRE(this->properlyInitialized(), "list wasn't initialized when calling delete"); //REQUIRE(includes(int), "before delete the list should include the inserted value"); //ENSURE(~includes(int), "after insert the list should NOT include the inserted value"); Contracten ? Tests ? Makkelijker want interface met veel predicaten

Project Software Engineering Universiteit AntwerpenPlanning 4.25 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

Project Software Engineering Vuistregels Universiteit AntwerpenPlanning 4.26 Betrouwbaarheid •Invoertests: Minstens één test per soort "foute" invoer •Klassen die vaak gebruikt worden: preciese contracten + veel tests –Prefereer een interface met predicaten Ontwerpen •“Hollywood Principle” – wij roepen jouw op als we je nodig hebben •“3 lagen architectuur” –aparte componenten voor (a) presentatie, (b) domein logica, (c) data-opslag Plannen •Empirische schatten is de basis voor een realistische planning

Project Software Engineering Universiteit AntwerpenPlanning 3.27 Empirische schatten is de basis voor een realistische planning Invoertests: Minstens één test per soort "foute" invoer Klassen die vaak herbruikt worden (o.a. lijsten): contracten & tests Evaluatie Criteria Organisatie van componenten & tests “Hollywood Principle” “3 lagen architectuur” Prefereer een interface met predicaten

Project Software Engineering Make Universiteit AntwerpenPlanning 4.28

Project Software Engineering Build Rules target : depends upon build rule(s) %.o : %.cpp %.h g++ -I../gtest/include -c -o $< TicTacToeMain : TicTacToe.o TicTacToeMain.o g++ -o TicTacToe.o TicTacToeMain.o Universiteit AntwerpenPlanning 4.29 een.o file is afhankelijk van.h en.cpp file compileren met de juiste parameters De main file is afhankelijk van alle.o files linken met de juiste parameters

Project Software Engineering Build Rules (2).PHONY: non file targets build rule(s).PHONY : clean clean : rm -f *.o TicTacToeMainTicTacToeTests rm -f testOutput/file*.txt Universiteit AntwerpenPlanning 4.30.PHONY is een conventie om build targets te markeren die *geen* bestanden zijn De rule zal *altijd* afvuren Vaak gebruikte.PHONY targets all clean install

Project Software Engineering Build Rules (3) varname = variable contents call $(varname) CXXFLAGS =-O2 -g -Wall -fmessage-length=0 -I$(INCL) OBJS =TicTacToe.o SRCS =TicTacToe.cpp \ TicTacToeMain.cpp \ TicTacToeTests.cpp TicTacToeMain : $(OBJS) TicTacToeMain.o $(CXX) $(CXXFLAGS) -o $(OBJS) TicTacToeMain.o Universiteit AntwerpenPlanning 4.31 \ om te splitsen over meerdere lijnen