R15 PaSOOS (22/ )

Størrelse: px
Starte visningen fra side:

Download "R15 PaSOOS (22/04-2008)"

Transkript

1 HotTargui projektet - Kasper Bo Larsen & Martin Skov Test case Status Rækkefølge Spillet er slut efter 25 runder færdig (MSN) Rød spiller starter færdig (MSN) Grøn kommer efter rød, blå efter grøn, gul efter blå færdig (MSN) Flyt før køb (Der skal flyttes før der købes kameler) færdig (KLA) Spiller kan flytte ikke implementeret Spiller kan kun flytte egne brikker færdig (KLA) Træk er gyldigt undervejs (KLA) Brikker kan kun sættes på home base færdig (KLA) Kameller dræber en-til-en færdig (MSN) Revenue udbetales korrekt færdig (KLA) Spiller flytter brik til ikke tidligere ejet tile, denne tilhører nu spilleren færdig (KLA) spiller flytter brik til en anden spillers felt (ingen kameler), feltet skifter ejer færdig (MSN) Tjek at Tiles er anbrangt korrekt færdig (KLA) Startkondition: 10 coins i kassen færdig (KLA) Startkondition: 10 kameler på basen færdig (KLA) Ej muligt at bevæge sig ind i saltsø færdig (KLA) Prøver at flytte flere kameler end der er til rådighed færdig (KLA) Ejeren af saltminen er vinderen færdig (MSN) Der kan ikke købes flere kameler end der er penge i kassen færdig (KLA) Prøver at flytte -1 kameler færdig (KLA) Prøver at flytte 0 kameler færdig (KLA) Test cases i kursiv er kandidater til Triangulering Da antallet af kandidater til testlisten (AlphaTargui) i første iteration nåede over 20, måtte vi tage stilling til spørgsmålet om samtlige test cases reelt var nødvendige. På den lange bane er det næppe nogen tvivl om, at den tidsmæssige gevinst ved at kode- og logikfejl bliver fanget så tidligt i forløbet som mulig er betragtelig. Modsætningsvis skal vi sandsynligvis bruge en del tid til at tilpasse test case'ene, efterhånden som spillet bliver mere og mere avanceret. Konkret eksempel : Lad os for diskutionens skyld formode, at det kunne tænkes at vi lavede fejl, og således anbragte et par af brikkerne forkert på pladen. Det vil næppe kræve megen fantasi at forestille sig de tilsyneladende umulige fejlsituationer, som dette vil kunne give anledning til senere i projektet. Dette taler helt klar til fordel for at bruge ressourcer på at skrive en test case, som validerer placeringen af brikkerne. Alternativ kunne selve spillet indeholde et selvdiagnosticeringsmodul. Modsætningsvis har vi en formodning om at placeringen af brikkerne næppe vil forblive statisk. I så fald vil valideringsmetoden kun være af begrænset værdi, idet den så kun kan benyttes i Alphavarianten. Test af og validering af data i kernesystemet HBC argumenterende ved seminaret i starten af april 2008 for at klasserne i kernesystemet principielt ikke skal validere sine data, idet dette bør foretages i interfacet. Pricipielt er dette synspunkt korrekt, men det er vores erfaringer fra tidligere projekter, at man ofte ser at andre projekter kobler sig direkte på kernesystemet frem for at benytte de eksisterende snitflader. Årsagen er som regel at de eksisterende snitflader, ikke opfylder de ønsker, som de nye projekter har. Den korrekte løsning er naturligvis at tilpasse snitfladerne, men grundet tidspres vælger man ofte at omgå snitfladerne. Da et at formålene med dette kursus er at lave fleksibel software, har vi valgt at sikre, at en omgåelse af snitfladerne skal være mulig uden at kompromitere datavalideringen. Dette øger naturligvis risikoen for at man fristes til R15 Martin Skov Nielsen & Kasper Bo Larsen 1

2 at vælge den "nemme" løsning frem for den korrekte løsning, men det er sjældent udviklerne, der træffer de strategiske beslutninger, men det er altid udviklerne, der skal leve med koncekvenserne. Men i den perfekte verden, hvor man har masser af tid, ingen deadlines og masser af ressourcer, så ja - så bør valideringen af data foregå før data rammer domænet. Tool support Jeg savner meget muligheden for at kunne debugge en enkelt test case. Jeg havde meget svært ved at gennemskue en fejl i "FlytTilSaltsoe" metoden. Med det begrænsede kendskab jeg har til test cases i et java miljø, valgte jeg at tilføje en del asserts i test casen, hvilket gjorde det vanskeligt at gennemskue formålet med test casen. Pricipet er at en test case skal være så simpel som muligt. En af de features i TestDriven.Net (et Unit Test add-on til Visual Studio) som jeg savner er Code Coverage. Hermed menes en oversigt over hvor mange % af koden der bliver benyttet i test case'ne. Det er muligt at se (farvekodet) de dele af kode som ikke beføres af mine test cases. Det giver ro i sjælen når den eneste kode der ikke testes er exceptions handlerkoden. Begge værktøjer findes utvivlsomt til java IDE'erne men specielt Code Coverage bør omtales og evt. demonstreres i dette kursus. Faren ved fejlagtige slutninger Implementationen af test casen "FlytTilSaltsoe" er relativ simpel: I runde 1 flytter Rød spille fra (0,0) til (1,0), turen går videre til Grøn spiller som intet fortager, det samme er tilfældet med Blå og Gul spiller. Runden er nu færdig og skatterne inddrives. Nu er det så Røds tur igen og Rød kan nu flytte fra (1,0) til (2,2) som er en saltsø. Dette træk burde blive afvist, da reglerne forbyder spillere at rykke ind i saltsøen. Test case var en success for game.move returnerede false ganske som forventet, og så er alle jo glade. Problemet er bare at grunden til at metoden returnede false, ikke var relateret til saltsøen, men derimod at spillet ikke var i Move state, det var i endrount state. Ergo havde vi her en ægte falsk positiv. Som en erfaring til næste gang må vi konstatere at valideringen skal være langt mere præsis. Den værdi der valideres skal være unik, forstået på den måde at værdien ikke må kunne fremprovokeres af andre input. R15 Martin Skov Nielsen & Kasper Bo Larsen 2

3 Problemer med at udnytte trianguleringsteknikken Vi havde udtaget Revenue udbetales korrekt test case'n som primærkandidat til demostration af trianguleringsteknikken, men vi havde ret vanskeligt ved at komme på en model hvor triangulering fungerende. Vi endte med følgende test cases public void TestAfCollectTaxesNoMoves() // formål: at gennemløbe en runde uden at flytte overhovedet. Hver spiller bør blive tilskrevet 4 coin for at "passere" start System.out.println("\r\n TestAfCollectTaxesNoMoves"); game.rolldie(); Player redplayer = game.getplayerinturn(); asserttrue(redplayer.getcolor() == PlayerColor.Red); assertequals(redplayer.getcoins(), 14); og den udvideden udgave public void TestAfCollectTaxes() System.out.println("\r\n TestAfCollectTaxes"); game.rolldie(); game.move(new Position(0,0),new Position(1,1),2); Player p = game.getplayerinturn(); asserttrue(p.getcolor() == PlayerColor.Green); game.move(new Position(0,6),new Position(1,6),2); boolean res = game.move(new Position(6,0),new Position(5,0),2); asserttrue(res == true); game.move(new Position(6,6),new Position(6,5),2); asserttrue(game.getplayerinturn().getcoins() == 17); Player greenplayer = game.getplayerinturn(); asserttrue(greenplayer.getcolor() == PlayerColor.Green); asserttrue(game.getplayerinturn().getcoins() == 16); Player blueplayer = game.getplayerinturn(); asserttrue(blueplayer.getcolor() == PlayerColor.Blue); asserttrue(game.getplayerinturn().getcoins() == 17); Player yellowplayer = game.getplayerinturn(); asserttrue(yellowplayer.getcolor() == PlayerColor.Yellow); asserttrue(game.getplayerinturn().getcoins() == 15); Ideen er at test casen TestAfCollectTaxesNoMoves giver os et referancepunkt, idet hver spiller bliver i sin egen settlement, hvilket burde give 4 coins i skatteindtægter. R15 Martin Skov Nielsen & Kasper Bo Larsen 3

4 Via Fake It og derefter Obvious Implementation var det ret simpelt at få den test case på plads. Den udvidede udgave TestAfCollectTaxes var en større mundfuld. Selve conceptet er ret simpelt: Gennemspil en runde, hvor hver spiller overtager yderligere en brik. Selve beregningen af den forventerede skatteinddrivning var triviel. Implementering af CollectTaxes metoden krævede - trods forventning om det modsatte - en del anstrengelser, primært i forbindelse med at holde fokus på den konkrete opgave. Undervejs var der flere gange tilløb til at optimere koden og fjerne identisk kode, hvilket indikerer at vi burde have nedbrugt opgaven i mindre elementer. Først da vi var blevet færdig med CollectTaxes test casen begyndte vi at overveje om metoden retteligt hørte hjemme, som en metode på AlphaTargui, idet opgaven med at beregne skatter kunne skilles ud i sin egen klasse. Et argument imod en udskillelse i sin egen klasse, er at denne klasse ene og alene arbejder med data som hører hjemme i getboarditerator, hvilket indikerer en kraftig binding. Kodekvalitet inden refaktoring Som det tydeligt fremgår er koden yderst primitiv. En af de erfaringer vi har fået af at arbejde med TDD er, at både testog produktionkoden ofte er meget simpel, "grim" og fyldt med gentagelser. Vi har en formodning om, at det er en generel tendens og ikke blot et tegn på forfatternes manglede evner. Grunden til koden virker ustruktureret og uelegant skal sandsynligvis findes i, at TDD ligger op til at fokusere på at få test casen til at virke. Denne fokusering har den bivirkning, at man ikke undervejs i rytmen stopper op for at restrukture koden, idet dette vil bryde rytmen, som er grundstenen i TDD. Dette faktum demonstrerer at refactoring elementet i TDD bestemt ikke er en optionel del af TDD, men en absolut nødvendighed. Fordelen er at refactoringen sker under sikre betingelser, idet den eksisterende test case sikrer at omstruktureringen af koden, som minimum leverer samme funktionalitet. Vi har, for at pointere vores erfaring, valgt at undlade at refaktorere både test og produktionskoden, som ellers er foreskrevet, som sidste aktivitet i implementationen af en test case. Test cases kompleksitet En anden erfaring vi har gjort os, som formentlig kun kan løses med mere erfaring, er at test cases har det med at blive mere komplekse end de var tiltænkt. Et eksempel er testen, som skal finde vinderen. Den skal løbe et helt spil igennem før, man kan udpege en vinder, hvilket gør test casen ganske uoverskuelig, og absolut kun brugbar, da vi ved at de andre cases giver grønt lys for at køre. Selv om den spiller spillet igennem ved hjælp af en løkke, så er casen meget stor. Det giver naturligvis anledning til at overveje om man skulle uddelegere noget af den til andre. Men omvendt så ved vi at de andre cases vil virke, hvis vi blot sørger for at lave nogle gyldige træk undervejs. Det viste sig også at det ikke krævede meget arbejde, at få casen til at give grønt lys. Men vedligeholdelse af den pågældende case kan blive temmelig krævende. Men for at igen at understrege vores pointe ovenfor omkring refaktorering, så er den ikke blevet ændret. Husk refaktorering i det store perspektiv En af de vigtigste øvelser test driven development, er at holde fokus på målet og holde rytmen. Men hvis man begynder at tænke roller ind som interfaces og udelegering af ansvar, så kommer man hurtigt til at rutsje ud til siden, og mister fokus på målet selvom man måske egentlig syntes at man har en fin rytme. R15 Martin Skov Nielsen & Kasper Bo Larsen 4

5 Erfaringen fra dette kursus siger os, at man hellere skal ramme målet først. Selvom det måske så ikke lige håndterer ansvarsfordeling, som det for eksempel ses af den kode der følger med rapporten her. Her er målet nået ved hjælp af TDD med fuldt fokus på målstregen og udsving til overvejelser om roller og ansvar. Først da vi havde opnået den ønskede funktionalitet, begyndte vi at overveje hvilke dele der skulle skilles ud. F.eks. kunne vi uden at vi jo ved noget om det forestille os at man ville ændring beregningen af skatter eller angrebsstrategi. Derfor vil vores fokus nu ligge i at refaktorere i det store perspektiv og ikke kun rydde op og fjerne kodeduplikering, men refaktorerer hele systemdele ud som delegates. Design patterns En anden ting som også skal overvejes i refaktoreringen er hvilke design mønstre, som bedst muligt understøtter vores slutprodukts fleksibilitet. Men det er endnu et element, som for udviklere med vores erfaring i TDD vil sætte en bremseklods på rytmen. Med noget mere erfaring i både mønstre og TDD, så vil vi mene at vi per refleks begynder at indarbejde nogen flere tanker om design mønstre i vores rytme, men indtil da bliver det en del af refaktoreringen. Vi vil jo bruge mønstrene sammen med processen til at se på hvad og hvor, vi vil uddelegere. Således at vi opnår en fleksibel og pålidelig software. Systematisk test Hottargui Æklivalensklasser Dimension Invalid Partition Valid partition Strategical Value of Tile <0 [1], >5 [2] 0-5 [3] Dice value <1 [4],>6 [5] 1-6 [6] Number of defenders <1 [7] F(x) > antal kameler [8], F(x) = ((int)(strategic Value + Antal øjne)/2)) F(x) <= antal kameler[9] Inputparameterne er de to uafhængige størrelser Strategic Value og antallet af øjne på terningen. Af hensyn til validering af returværdien (hvor mange kameler der skal fjernes) blive vi nødt til af kigge på antallet af kameler på det angrebne felt. Grunden er at summen af Strategic Value + antal øjne delt med to faktisk kan være større end det antal kameler som forsvarer feltet, og funktionen derfor bliver nødt til at tage højde for denne betingelse. Eksempel: 2 kameler forsvarer feltet men Strategic Value + antal øjne angiver at der skal fjernes 4 kameler. Dette er ikke muligt og funktionen bliver derfor nødt til at ændre returnværdien til 2. Konceptet er at vi indtil alle valide partitioner er i brug skal findes den test case, som bruger så mange af de valide partitioner som muligt. Derefter skal de invalide partitioner testes én af gangen. Equivalence class Test case Expected output R15 Martin Skov Nielsen & Kasper Bo Larsen 5

6 [3]x[6]x[8] 10-((4+3)/2) 7 [3]x[6]x[9] 1- ((2+4)/2) 0 Spørgmålet om hvorvidt vi bør have test cases, som håndterer de usandsynlige tilfælde, så som at Strategic Value of Tile er et negativt tal, er så vidt vi kan se mest af alt et spørgsmål om applikationens formål og udviklernes holdning til emnet. Dersom en fejl i applikationen kan have alvorlige konsekvenser for omgivelserne vil vi anse det naturligt at selv de usandsynlige tilfælde omfattes af en test case 1. I dette tilfælde kan man næppe påstå at menneskeliv er på spil hvis Targui bryder ned, på den anden side er antallet af test cases ret begrænset, så vi har delt samtlige mulige test cases i to grupper, Must-haves og Nice-to-haves. Hvor Must-haves implementeres med det samme, og Nice-to-haves overlades til erhvervspraktikant en. Vi er i tvivl om, hvorvidt vores forudsætning angående antallet af forsvarer i ovenstående partitionstabel er korrekt. Spørgsmålet er om antallet af forsvarer skal være større end nul før end der er tale om at Attackalgoritmen kommer i brug. Vores design startede med at have indlejret brugen af Attack-strategien i Move delegaten, som modtog attack-strategien som parameter. På den med håndterer move delegaten situationen hvor spiller A flytter ind på et af spiller B ejet felt, som dog ikke nødvendigvis er forsvaret af en eneste kamel. Vi valgte dog undervejs at ændre vores design. Baggrunden for ændringen er beskrevet i afsnittet TDD i praksis. Alternativet er at Attack håndterer alle situationer hvor en spiller forsøger at flytter ind på et i forvejen ejeret felt. Da hovedformålet med Attack delegaten er, at opnå en abstration som er specialist i at håndtere angreb og de bagvedliggende rutiner, giver det ingen mening at attack også skal kunne håndtere de situationer hvor felterne blot skifter ejer uden dramatik. Grænsetilfældeanalyse Da hverken terningen eller den strategiske værdi umiddelbart tilbyder interessante grænsetilfælde indenfor de valide partitioner, kiggede vi i stedet på mulighederne for at finde noget interessant i forbindelse med antallet af forsvarer på den Tile der bliver angrebet. 1 Ifølge afsnit Final Notes i RFSE anfører Myers at mange bugs findes i de invalide partitioner, men udviklere ofte ikke fanger disse. R15 Martin Skov Nielsen & Kasper Bo Larsen 6

7 Det ene tilfælde som vi umiddelbart fandt interessant, var når antallet af forsvarer var nul. Da vores implementation er designet således at denne situation ikke håndteres af Attack-algoritmen, men derimod af Move-algoritmen, er dette tilfælde heller ikke relavant. Observationer Vi har diskutteret hvorledes vi skal forholdes os til de metoder på f.eks. AlphaGame og BetaGame som er identiske, f.eks. CollectTaxes: private void CollectTaxes() //summ antal felter ejet af hver spiller int taxforred = 0; int taxforblue = 0; int taxforgreen = 0; int taxforyellow = 0; for(int i = 0; i < thetilelist.size(); ++i ) Tile t = thetilelist.get(i); int value = getvaluefortiletype(t); if( t.getownercolor() == PlayerColor.Red) taxforred += value; debug("red tilskrives " + value); debug("red har nu " + taxforred); else if (t.getownercolor()== PlayerColor.Blue) taxforblue += value; debug("blue tilskrives " + value); debug("blue har nu " + taxforblue); else if( t.getownercolor()== PlayerColor.Green) taxforgreen += value; else if (t.getownercolor() == PlayerColor.Yellow) taxforyellow += value; debug("yellow tilskrives " + value); debug("yellow har nu " + taxforyellow); StandardPlayer theplayer = (StandardPlayer)players[0]; theplayer.add(taxforred); theplayer = (StandardPlayer)players[1]; theplayer.add(taxforgreen); theplayer = (StandardPlayer)players[2]; theplayer.add(taxforblue); theplayer = (StandardPlayer)players[3]; theplayer.add(taxforyellow); R15 Martin Skov Nielsen & Kasper Bo Larsen 7

8 Reelt er der tale om Source Code copy og dermed har vi et potentialt vedligeholdelsesproblem, idet enhver rettelse til metoden skal synkroniseres med de samme metoder i de andre klasser. Med mere erfaring Vi nævnte tidligere, at vi gik let over refaktoreringen for ikke at bryde rytmen i vores TDD, men allerede nu må vi se, at vores teori ikke helt holder vand. Det har nemlig vist sig væsentlig mere tidskrævende at kravle tilbage i metoderne og refaktorisere dem end forventet. Det betyder jo netop at rytmen går helt i stå i den tid, hvor man refaktoriserer. Så vi må erkende at Kent Beck princip om at refactorisere i bund er måden, hvorpå man bedst holder rytmen. Ganske som det også blev diskuteret på seminaret d Valg af mønstre For at sikre fleksibilitet i vores system, har vi valgt at uddelegere en række ansvarsområder fra game. F.eks. er ansvaret for at sætte spillepladen op uddelegeret. Det har vi gjort af to grunde: 1. Vi ønsker ikke at tildele mere ansvar end nødvendigt til AlphaGame 2. Udfra konceptet om at lade specialisterne klare arbejdet, som vi mener er oplagt her Vi har valgt at håndtere uddelegeringen med et strategy pattern, som ser ud som figuren nedefor: Det skal dog lige bemærkes at der på tegningen er en særlig implementation DeltaStrategy, som vi ikke pt. kender nødvendigheden af. Men pointen er at vise, hvor let det nu er at lave flere forskellige "boards" til HotTarqui. R15 Martin Skov Nielsen & Kasper Bo Larsen 8

9 De mange strategies land Efterhånden som vi fik arbejdet os igennem refaktoreringen, opstod der flere og flere forskellige strategier. Det førte os til ideen om at der måske kunne blive brug for forskellige strategier i forskellige sammenhæng - med andre ord: Det her skal nok kunne konfigureres. Så fat i et abstract factory: GameFactory, som kan oprette de forskellige strategier, som vi måtte have brug for i en given opsætning. UML afbildningen af vores abstract factory begynder allerede ved to konkrete factories, at blive uoverskueligt. Så yderligere diagrammer over mønsteret vil formentlig være bedst tjent med at blive opdelt. Diagrammet her kunne blive mere klart og informationgivende ved at blive delt i et alpha og beta diagram, men da vi her ønsker at vise mønsteret, har vi valgt at lade dem forblive samlet. Game <<interface>> GameFactory AlphaBoardSetup <<interface>> BoardSetupStrategy AlphaGameFactory BetaGameFactory BetaAttackStrategy <<interface>> AttackStrategy AlphaAttackStrategy AlphaMoveStrategy <<interface>> MoveValidationStrategy StandardDieRoll <<interface>> DieRoll BetaDeployValidator <<interface>> DeployValidator AlphaDeployValidator R15 Martin Skov Nielsen & Kasper Bo Larsen 9

10 At tænke i fleksibilitet For ikke at låse det framework, som HotTarqui startede som, så har vi valgt kun at tilføje enkelte funktioner i kodebasen, som så er tilgengængelig via interfaces - i de tilfælde hvor det skal kunne konfigureres i de enkelte versioner. Al implementation af forskellige versioner ligger så i individuelle implementations pakker. På den måde holder vi fast i indkapslingen i frameworket, og binder os ikke til en speciel version. Et par enkelte steder fandt vi nogle klasser, som blev standard funktionalitet for vores versioner, og dermed formentlig også vil blive brugt i fremtidige versioner. Men da vi ikke mener de bør være en dedikeret del af frameworket, da der jo er tale om implentation af dele af frameworket. Disse implementationer er tilgengæld blevet placeret i pakken standard, som vil rumme standard implementationer, der kan anvendes, hvis de dækker de behov man måtte have. TDD i praksis Som beskrevet tidligere så valgte vi undervejs at ændre vores design omkring move metoden. Det gjorde vi, fordi vi under udviklingen af BetaAttackStrategy oplevede vi effekten ved TDD. Det lykkedes faktisk at udvikle en fin algoritme, som kunne håndtere angreb med strategisk værdi og terning kast og som gav grønt i den første test case, hvor der bare blev angrebet til en af spillerne ikke havde flere kameler. Grønt test resultat - så skulle den jo være på plads... Men ak og ve. Næste test var så at angriberen skulle angribe to gange og så stoppe. Med det samme opdagede vi et problem, for hvordan stoppede vi lige angriberen? Det var ganske enkelt ikke muligt, da vi med fokus på at lave testen før grøn, ganske enkelt havde fået kodet algortimen uden om tilstandsmaskinen. En uheldig situation, som hurtigt blev opdaget med TDD. Resultatet I første omgang virkede det ikke som noget problem at ændre fejlen med tilstandsmaskinen, men det vidste sig at være noget vanskeligere end forventet at få ændret den, så alle krav kunne opfyldes. Faktisk blev refaktoreringen ganske omfattende og endte med at have betydning for både gameimplementationerne og movestrategy. Vi havde en snak om hvordan vi bedst fik placeret ansvaret for at håndtere tilstandsskift i forbindelse med angreb og flytning. Resultatet blev at vi valgte at lade game-implementationen håndtere disse, da vi lod vores move-delegates move-metode returne den nye state, som spillet skal være i. Herefter kan vi lade den enkelte game version håndtere tilstanden. Så ansvaret for tilstandshåndtering forbliver hos game. Faktisk gav refaktoreringen anledning til ændring i vores tilstandsdiagram, som nu ser således ud: R15 Martin Skov Nielsen & Kasper Bo Larsen 10

11 Generelle observationer At arbejde sammen hver for sig Denne gruppe har grundet bopæl på hver sin side af Storebælt haft rig lejlighed til at afprøve mulighederne for at arbejde sammen hver for sig. Den tekniske side har overhovedet ikke/ kun i ubetydlig grad givet anledning til problemer. Adskellige sites på internettet tilbyder gratis hosting af både kode, dokumenter mm. Vi valgt at benytte Google Code idet Kasper Bo Larsen (herefter KLAR) havde positive erfaring med Subversion samt at flere at java IDE'erne har glimrende integration hertil. KLAR valgte at benytte en Eclipse, hvor Martin Skov Nielsen (herefter MSN) valgte en NetBeans. Disse valg har så vidt vi kan bedømme ikke påvirket projektet på en mærkbar måde, så det tyder på at der er valgfrihed på dette område. R15 Martin Skov Nielsen & Kasper Bo Larsen 11

12 Dog har der i et par enkelte tilfælde været committed tilsyneladende fejlfri kode fra NetBeans, som ikke ville compile i Eclipse. Når der blev fejlsøgt i de klasser, som Eclipse meldtefejl på, så har der rent faktisk ligget en bug i klassen. Hvilket godt kan undre lidt, da alle tests virkede i NetBeans og projektet compilede. Udfordringen har helt klar været at etablere en fornuftig arbejdsgang, således at vi fik optimal udnyttelse af den medgående tid. Dette har ofte vist sig at være vanskeligt, idet vi ofte arbejdede på forskellige tidspunkter. Det har derfor i mange tilfælde været vanskeligt at diskutere en idé eller problem i gruppen. Denne sparring har vi måtte klare via , instant messenging og lejlighedvis telefon. Det er klart vores holdning at denne form for afstadssamarbejde ikke vil kunne holde i en arbejdssituation, idet det bryder rytmen, når man ikke lige kan få afklaret en problemstilling med det samme. Ligeledes er det en showstopper at måtte vente på response omkring en ide, som man måske lige mangler et twist på, for at kunne færdiggøre eller implementere. Test driven development pro et contra Selv om vi efterhånden har arbejdet efter pricipperne i TDD de sidste 3-4 måneder, opdager vi til stadighed, at vi er "faldet i vandet". I 90% af tilfældene begynder vi at lave produktionskode uden at have unit testen på plads først. Fra et pragmatisk synpunkt betyder dette intet, blot man husker at lave test casen, inden man går videre til næste delopgave. Selv om vi ofte selv har måtte bruge denne løsning, tiltaler den os ikke. Den primære grund er at de enkelte metoder og komponenter tilsyneladende bliver mindre "skarpe" i forhold til de elementer, hvor vi har fulgt TDD takten. Det er mere reglen end undtagelsen, at vi må omskrive og refaktorere disse "uskarpe"/"uforkuserede" komponenter op til flere gange, inden de opnår en acceptabel kvalitet. Ud fra disse erfaringer har vi uddraget to hypoteser: 1. TDD fremgangsmåden kræver forholdsvis lang tids træning, inden man kan stå på egne ben. Dette kunne antyde at pair-programming sandsynligvis er en af de bedre måder at få metodikken indarbejdet på. 2. TDD fremgangsmådens krav, om at fokusere på et emne af gangen, giver tilsyneladende et klarere design på metode og klasse-niveau, idet den enkelte metode eller klasse er specialiseret til at opfylde en bestemt rolle. Bagsiden ved denne fremgangsmåde formodes at være, at man pga. det stærke fokus på enkeldelene muligvis ikke ser de store linier og dermed risikere at overse muligheder for at generalisere sin kode. Hvilket yderligere understøtter tesen om at det kræver længere tids træning, før man er rigtig moden i TDD. R15 Martin Skov Nielsen & Kasper Bo Larsen 12

dsoftark E2007 Gruppe 14: Anders, Troels & Søren 15. november 2007 Rapport til a. 1 'TDD rytmen'

dsoftark E2007 Gruppe 14: Anders, Troels & Søren 15. november 2007 Rapport til a. 1 'TDD rytmen' dsoftark E2007 Gruppe 14: Anders, Troels & Søren 15. november 2007 'TDD rytmen' Rapport til a. 1 Vi bruger gennem vores arbejde, rytmen fra Test Driven Development-paradigmet. Quickly add a test Run tests

Læs mere

dsoftark E2007 Gruppe 14: Anders, Troels & Søren 15. november 2007 Rapport til a. 1

dsoftark E2007 Gruppe 14: Anders, Troels & Søren 15. november 2007 Rapport til a. 1 dsoftark E2007 Gruppe 14: Anders, Troels & Søren 15. november 2007 Rapport til a. 1 'TDD rytmen' Vi bruger gennem vores arbejde, rytmen fra Test Driven Development-paradigmet. Quickly add a test Run tests

Læs mere

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java Kursus i OOP og Java Kursus i Objektorienteret programmering i Java Åben Dokumentlicens Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL) Du har derfor lov til frit at kopiere dette værk Bruger

Læs mere

Hvordan gør de professionelle?

Hvordan gør de professionelle? Hvordan gør de professionelle? ( Oversat af Ivan Larsen, Samsø Dart Club, Marts 2010 fra How the Pros do it af: Ken Berman 1999 ) Der er to aspekter i det at blive en god dartspiller, det er præcision

Læs mere

DANMARKS TEKNISKE UNIVERSITET

DANMARKS TEKNISKE UNIVERSITET DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler

Læs mere

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen Programmering C Eksamensprojekt Lavet af Suayb Köse & Nikolaj Egholk Jakobsen Indledning Analyse Læring er en svær størrelse. Der er hele tiden fokus fra politikerne på, hvordan de danske skoleelever kan

Læs mere

Løsning af møntproblemet

Løsning af møntproblemet Løsning af møntproblemet Keld Helsgaun RUC, oktober 1999 Antag at tilstandene i problemet (stillingerne) er repræsenteret ved objekter af klassen State. Vi kan da finde en kortest mulig løsning af problemet

Læs mere

ZBC Vordingborg Marcus Rasmussen, Oliver Meldola, Mikkel Nielsen 17/02 2015. The Board Game

ZBC Vordingborg Marcus Rasmussen, Oliver Meldola, Mikkel Nielsen 17/02 2015. The Board Game The Board Game 1 Målgruppe Før vi kom på vores spil, havde vi lidt en ide om hvad det ville komme til at blive. Vi så på spillet Cards against humanity og vores spil ville blive lidt som det, da der vil

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2

Læs mere

Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge:

Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge: Side 1 af 5 Ide med Diff. Min ide med differenertierings modulet er at lave et program som kan vise 3d objekter, og få lavede en konverter som kan konventer 3ds filer over til noget som flash kan bruge.

Læs mere

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

//Udskriver System.out.println(Hej  + ditfornavn +   + ditefternavn + .); System.out.println(Du er  + dinalder +  aar gammel! Denne guide er oprindeligt udgivet på Eksperten.dk Brugerinput i Java Denne her artikel gennemgår diverse ting ved brug af brugerinput i Java. Den starter med det simple og fortæller derefter skridt for

Læs mere

Martin Geisler. Uge 49, 2001

Martin Geisler. Uge 49, 2001 Min dintprog-browser Martin Geisler Uge 49, 2001 Resumé Dette dokument beskriver tankerne bag min dintprog-browser, en browser skrevet i Java der skal kunne fortolke en mindre delmængde af HTML 4, kaldet

Læs mere

Svendeprøve Projekt Tyveri alarm

Svendeprøve Projekt Tyveri alarm Svendeprøve Projekt Tyveri alarm Påbegyndt.: 8/2-1999 Afleveret.: 4/3-1999 Projektet er lavet af.: Kasper Kirkeby Brian Andersen Thomas Bojer Nielsen Søren Vang Jørgensen Indholds fortegnelse 1. INDLEDNING...3

Læs mere

Test med JUnit 3. Denne artikel introducerer JUnit 3. Den forklarer ideen med JUnit. Og den viser hvordan man konkret bruger det.

Test med JUnit 3. Denne artikel introducerer JUnit 3. Den forklarer ideen med JUnit. Og den viser hvordan man konkret bruger det. Denne guide er oprindeligt udgivet på Eksperten.dk Test med JUnit 3 Denne artikel introducerer JUnit 3. Den forklarer ideen med JUnit. Og den viser hvordan man konkret bruger det. Den forudsætter kendskab

Læs mere

Exceptions i Delphi. Try except

Exceptions i Delphi. Try except Exceptions i Delphi Exceptions er en teknik til at fange fejl under programafviklingen. Ikke programmeringsfejl, men fejl der opstår i forskellige situationer, f.eks. en fil der mangler en fil der er skrivebeskyttet,

Læs mere

Mircobit Kursus Lektion 3 (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.)

Mircobit Kursus Lektion 3   (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.) Mircobit Kursus Lektion 3 http://microbit.org/ (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.) I sidste lektion var der en opgave man selv skulle prøve at løse. Man skulle lave et tabel

Læs mere

SmartFraming Et vindue til nationale sundhedssystemer. Version 3.0

SmartFraming Et vindue til nationale sundhedssystemer. Version 3.0 SmartFraming Et vindue til nationale sundhedssystemer Version 3.0 Infrastruktur i dagens sundheds IT Det sundhedsfaglige personale benytter sig i dag af en række forskellige systemer i forbindelse med

Læs mere

Hvorfor skal vi bruge objekt orienteret databaser?

Hvorfor skal vi bruge objekt orienteret databaser? OODBMS Vs. RDBMS 1 Indholdsfortegnelse Hvorfor skal vi bruge objekt orienteret databaser?... 3 OODBMS i erhvervslivet... 4 Bagsiden af medaljen... 5 OODBMS i praksis... 6 Konklusion... 8 2 Hvorfor skal

Læs mere

Undo Jo flere jo bedre! 1/9

Undo Jo flere jo bedre! 1/9 Undo Jo flere jo bedre! + 1/9 Indholdsfortegnelse Målgruppen.... Side 3 Redegørelse for spillet...side 4 Produktionen..Side 6 Dokumentation for spiltest....side 7 Spilvejledning......Side 8 Regelhæfte.....Side

Læs mere

At udfolde fortællinger. Gennem interview

At udfolde fortællinger. Gennem interview At udfolde fortællinger Gennem interview Program 14.00 Velkommen og opfølgning på opgave fra sidst 14.20 Oplæg 15.00 Pause 15.20 Øvelse runde 1 15.55 Øvelse runde 2 16.30 Fælles opsamling 16.50 Opgave

Læs mere

Begreber om Godt Software

Begreber om Godt Software Begreber om Godt Software Maintainability (vedligeholdelse): Softwarens evne til at blive ændret (funktionalitet, rettet, forbedrelser, miljø, krav). - Analyserbart: Evnen til at blive fejldiagnosticeret,

Læs mere

Nej. Ikke RUC koden, men nogle koder bliver delt. Kæresten kender koden til Netflix. Nej.

Nej. Ikke RUC koden, men nogle koder bliver delt. Kæresten kender koden til Netflix. Nej. Bilag 3: Interviewguide med svaroverblik Rød tekst: Interviewperson A Grøn tekst: Interviewperson B Blå tekst: Interviewperson C 1. Hvad er en sikker adgangskode? Noget med numre og forskellige tegn. Det

Læs mere

Systematisk testning af program til udregning af mellemskat

Systematisk testning af program til udregning af mellemskat Systematisk testning af program til udregning af mellemskat Indledning I denne opgave vil vi definere passende cases til systematisk black-box test af et program til beregning af mellemskat. Vi har valgt

Læs mere

Stine Dorry Meulengracht Madsen Rapport Multimedie og kommunikation

Stine Dorry Meulengracht Madsen Rapport Multimedie og kommunikation Portfolioudvikling I denne rapport vil du kunne læse om mit porfolios tilblivelse. Det skal give læseren indblik i mine designvalg og hele processen bag projektet. Hjemmesiden er kodet fra bunden i HTML

Læs mere

1-1 Usability evaluering af den simple udgave

1-1 Usability evaluering af den simple udgave BILAG 1 s. 2 af 19 Bilag 1 1-1 Usability evaluering af den simple udgave...5 1-2 Heuristisk inspektion af den simple udgave...6 1-3 Usability evaluering af den avancerede udgave...8 1-4 Heuristisk inspektion

Læs mere

Dokumentation til Computerspil

Dokumentation til Computerspil Dokumentation til Computerspil Medias Lab Systemudviklingsmodel Problemstilling Vores problemstilling er at vi skal producere et simpelt computerspil, vi skal igennem hele processen dokumentere vores arbejde.

Læs mere

Greenfoot En kort introduktion til Programmering og Objekt-Orientering

Greenfoot En kort introduktion til Programmering og Objekt-Orientering Greenfoot En kort introduktion til Programmering og Objekt-Orientering Greenfoot er et computer-program, som kan benyttes til at skrive andre computer-programmer, i et programmeringssprog kaldet Java.

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

120 ords-tæppet. På sporet af ordet

120 ords-tæppet. På sporet af ordet 120 ords-tæppet På sporet af ordet I denne vejledning kan du finde idéer og inspiration til, hvordan du kan bruge 120 ords-tæppet i arbejdet med at få automatiseret de 120 hyppige ord med afsæt i leg og

Læs mere

Analyse af PISA data fra 2006.

Analyse af PISA data fra 2006. Analyse af PISA data fra 2006. Svend Kreiner Indledning PISA undersøgelsernes gennemføres for OECD og de har det primære formål er at undersøge, herunder rangordne, en voksende række af lande med hensyn

Læs mere

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne. Exercise 1: Opgave 9.1 på CodeJudge. a) Lav klasserne Cirkel, Rektangel og Kvadrat, som implementerer vedhæftede interface From.java (se CodeJudge). Lav Rektangel før du laver Kvadrat. Kan du bruge nedarvning

Læs mere

Billedbehandling. Roll-up banner til Kvickly i Ribe

Billedbehandling. Roll-up banner til Kvickly i Ribe Billedbehandling Roll-up banner til Kvickly i Ribe Opgave i billedbehandling Jeg fik tilbuddet om at lave et Roll-up banner til Kvickly i Ribe. De har hver torsdag og fredag vinsmagning nede i butikken,

Læs mere

Rekursion C#-version

Rekursion C#-version Note til Programmeringsteknologi Akademiuddannn i Informationsteknologi Rekursion C#-version Finn Nordbjerg 1 Rekursion Rekursionsbegrebet bygger på, at man beskriver noget ved "sig selv". Fx. kan tallet

Læs mere

Partners er et spil med mange klare regler og en masse uskrevne regler, som varierer alt efter, hvem man spiller sammen med.

Partners er et spil med mange klare regler og en masse uskrevne regler, som varierer alt efter, hvem man spiller sammen med. DM-GUIDEN 2. udgave Forord Velkommen til DM i Partners! Partners er et spil med mange klare regler og en masse uskrevne regler, som varierer alt efter, hvem man spiller sammen med. Ideen med spillet har

Læs mere

Børnepanel Styrket Indsats november 2016

Børnepanel Styrket Indsats november 2016 Børnepanel Styrket Indsats november 2016 Indhold Introduktion og læsevejledning... 1 Samarbejde mellem skole og døgntilbud... 2 Inklusion i fællesskaber udenfor systemet... 2 Relationsarbejdet mellem barn

Læs mere

Specialiseringen Rapport Lavede Af Rasmus R. Sørensen Side 1 af 6

Specialiseringen Rapport Lavede Af Rasmus R. Sørensen Side 1 af 6 Side 1 af 6 Indholdsfortegnelse INDHOLDSFORTEGNELSE 1 INTRO 3 STARTEN AF SPECIALISERINGEN 3 ANKOMST TIL SKOTLAND 4 DATABASER 5 NETVÆRK 5 INTERAKTION 5 AFSLUTNING AF SPECIALISERINGEN 5 KONKLUSION 6 Side

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 15. marts, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

IT opgave. Informationsteknologi B. Vejleder: Karl. Navn: Devran Kücükyildiz. Klasse: 2,4

IT opgave. Informationsteknologi B. Vejleder: Karl. Navn: Devran Kücükyildiz. Klasse: 2,4 IT opgave Informationsteknologi B Vejleder: Karl Navn: Devran Kücükyildiz Klasse: 2,4 Dato:03-03-2009 1 Indholdsfortegnelse 1. Indledning... 3 2. Planlægning... 3 Kommunikationsplanlægning... 3 Problemstillingen...

Læs mere

Indhold. 2 Kommunikation/IT afsluttende opgave

Indhold. 2 Kommunikation/IT afsluttende opgave 16/05-2008 Kommunikation/IT afsluttende opgave Roskilde Maraton Louise Regitze Skotte Andersen, klasse 1.4 08 2 Kommunikation/IT afsluttende opgave Indhold Problem og målgruppe... 3 Problemstilling...

Læs mere

Jeg ville udfordre eleverne med en opgave, som ikke umiddelbar var målbar; Hvor høj er skolens flagstang?.

Jeg ville udfordre eleverne med en opgave, som ikke umiddelbar var målbar; Hvor høj er skolens flagstang?. Hvor høj er skolens flagstang? Undersøgelsesbaseret matematik 8.a på Ankermedets Skole i Skagen Marts 2012 Klassen deltog for anden gang i Fibonacci Projektet, og der var afsat ca. 8 lektioner, fordelt

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2013 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 5. marts, 2013 Dette projekt udleveres i to dele. Hver del har sin deadline, således

Læs mere

Det fremgik af sagens akter at en plejefamilie den 8. marts 2005 modtog en dengang 8-årig dreng, A, i familiepleje.

Det fremgik af sagens akter at en plejefamilie den 8. marts 2005 modtog en dengang 8-årig dreng, A, i familiepleje. Det fremgik af sagens akter at en plejefamilie den 8. marts 2005 modtog en dengang 8-årig dreng, A, i familiepleje. 20. maj 2008 Det fremgik endvidere af akterne at der mens plejefamilien havde A boende

Læs mere

Sortering. Eksempel: De n tal i sorteret orden

Sortering. Eksempel: De n tal i sorteret orden Sortering 1 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden

Læs mere

SYSTEMDOKUMENTATION AF POC

SYSTEMDOKUMENTATION AF POC DIGITALISERINGSSTYRELSEN POC PÅ ORKESTRERINGSKOMPONENTEN SYSTEMDOKUMENTATION AF POC Version: 1.1 Status: Endelig Godkender: Forfatter: Copyright 2019 Netcompany. All rights reserved Dokumenthistorik Version

Læs mere

NYHEDSBREV. 80 % fejlrate? Carry on!?

NYHEDSBREV. 80 % fejlrate? Carry on!? NYHEDSBREV I maj måneds nyhedsbrev viste vi en oversigt fra Financial Times, at 8 ud af 10 forvaltere ikke slår deres benchmark over en 10-årig periode. Forestil dig enhver anden branche, hvor de prøver

Læs mere

A Profile for Safety Critical Java

A Profile for Safety Critical Java A Profile for Safety Critical Java Martin Schoeberl Hans Søndergaard Bent Thomsen Anders P. Ravn Præsenteret af: Henrik Kragh-Hansen November 8, 2007 Forfatterne Martin Schoeberl Udvikler af JOP processoren

Læs mere

EA3 eller EA Cube rammeværktøjet fremstilles visuelt som en 3-dimensionel terning:

EA3 eller EA Cube rammeværktøjet fremstilles visuelt som en 3-dimensionel terning: Introduktion til EA3 Mit navn er Marc de Oliveira. Jeg er systemanalytiker og datalog fra Københavns Universitet og denne artikel hører til min artikelserie, Forsimpling (som også er et podcast), hvor

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Java syntax og style guide Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Brug

Læs mere

Det Nye Testamente lyd-app. v. Stefan Lykkehøj Lund

Det Nye Testamente lyd-app. v. Stefan Lykkehøj Lund Det Nye Testamente lyd-app v. Stefan Lykkehøj Lund Indledning For nogle år siden, fik jeg Det Nye Testamente som lydbog på USB. I starten lyttede jeg en del med tiden blev det dog til mindre og mindre.

Læs mere

Sortering af information er en fundamental og central opgave.

Sortering af information er en fundamental og central opgave. Sortering 1 / 36 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 6, 9 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

Læs mere

Abstrakte datatyper C#-version

Abstrakte datatyper C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype

Læs mere

Spil Master Mind. Indledning.

Spil Master Mind. Indledning. side 1 af 16 Indledning. Spillet som denne rapport beskriver, indgår i et større program, der er lavet som projekt i valgfaget programmering C på HTX i perioden 9/11-98 til 12/1-99. Spillet skal give de

Læs mere

Sortering. Eksempel: De n tal i sorteret orden

Sortering. Eksempel: De n tal i sorteret orden Sortering 1 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden

Læs mere

Sortering af information er en fundamental og central opgave.

Sortering af information er en fundamental og central opgave. Sortering Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

ZBC Vordingborg Marcus Rasmussen, Oliver Meldola, Mikkel Nielsen 17/02 2015. The Board Game

ZBC Vordingborg Marcus Rasmussen, Oliver Meldola, Mikkel Nielsen 17/02 2015. The Board Game The Board Game 1 Målgruppe Før vi kom på vores spil, havde vi lidt en ide om hvad det ville komme til at blive. Vi så på spillet Cards against humanity og vores spil ville blive lidt som det, da der vil

Læs mere

IndentifyIT Survey Rapport

IndentifyIT Survey Rapport IndentifyIT Survey Rapport af Andreas Stjerneklar Kristensen Login: Knankr23 Email: Andreas.kristensen@gmail.com SurveyID: ASKsurvey3 Løsning findes på http://andreasstjerneklar.dk/#nav=spørg eskema Portfolio

Læs mere

Portfolio. Udvikling af min portfolio Link til portfolio: Michell Aagaard Dranig

Portfolio. Udvikling af min portfolio Link til portfolio:   Michell Aagaard Dranig Portfolio Udvikling af min portfolio Link til portfolio: http://dranigdesign.com/ CPH-MD267@CPHBUSINESS.DK ind på en af undersiderne, kom home finde ud af, hvad mit eksamensprojekt Udvikling af min portfolio

Læs mere

Projekt 2, Banner. Project 02 - Banners. Gruppenummer: 8

Projekt 2, Banner. Project 02 - Banners. Gruppenummer: 8 Projekt 2, Banner Project 02 - Banners Gruppenummer: 8 Navne/mail: Kasper Nick Thomasen(k.n.thomasen@gmail.com), Christian Lund (christianlund_667@hotmail.com), Alexander Kofoed (laemse@hotmail.dk) Hold:

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2 DM502 Forelæsning 2 Repetition Kompilere og køre Java program javac HelloWorld.java java HeloWorld.java Debugge Java program javac -g HelloWorld.java jswat Det basale Java program public class HelloWorld

Læs mere

Rygestop muligheder - og alt det der holder os tilbage

Rygestop muligheder - og alt det der holder os tilbage Rygestop muligheder - og alt det der holder os tilbage Rygestop har været og er til stadighed en stor udfordring for rigtigt mange danskere. Mænd og kvinder kæmper med at få bugt med vanen. Alle prøver

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

LEVERANCE 1.3. Model for kvalitetssikring

LEVERANCE 1.3. Model for kvalitetssikring LEVERANCE 1.3 Model for kvalitetssikring Udarbejdelse af kvalitetssikringsmodel, krav til open source kode og dokumentation og godkendelsesprocedurer m.v. Samt fokus på understøttelse af CE-mærkning. 1

Læs mere

Mandags Chancen. En optimal spilstrategi. Erik Vestergaard

Mandags Chancen. En optimal spilstrategi. Erik Vestergaard Mandags Chancen En optimal spilstrategi Erik Vestergaard Spilleregler denne note skal vi studere en optimal spilstrategi i det spil, som i fjernsynet går under navnet Mandags Chancen. Spillets regler er

Læs mere

Elasund Rules Forberedelse Marker byggeområdet

Elasund Rules Forberedelse Marker byggeområdet Elasund Rules År efter frygtløse søfarere opdagede og etablerede øen Catan voksede befolkningstallet konstant. Kolonister dukkede op på øen og langs kysten og der opstod en uundværlig handel mellem dem.

Læs mere

3. Om skalamønstrene og den indfoldede orden

3. Om skalamønstrene og den indfoldede orden Dette er den tredje af fem artikler under den fælles overskrift Studier på grundlag af programmet SKALAGENERATOREN (forfatter: Jørgen Erichsen) 3. Om skalamønstrene og den indfoldede orden Lad os begynde

Læs mere

Accelerace og Green Tech Center kommer nu med et unikt tilbud om udvikling af din virksomhed Green Scale Up

Accelerace og Green Tech Center kommer nu med et unikt tilbud om udvikling af din virksomhed Green Scale Up Accelerace og Green Tech Center kommer nu med et unikt tilbud om udvikling af din virksomhed Green Scale Up Accelerace har gennem de seneste 7 år arbejdet tæt sammen med mere end 250 af de mest lovende

Læs mere

Brøk Laboratorium. Varenummer 72 2459

Brøk Laboratorium. Varenummer 72 2459 Brøk Laboratorium Varenummer 72 2459 Leg og Lær om brøker Brøkbrikkerne i holderen giver brugeren mulighed for at sammenligne forskellige brøker. Brøkerne er illustreret af cirkelstykker som sammenlagt

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 27. februar, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Vurder samtalens kvalitet på følgende punkter på en skala fra 1-5, hvor 1 betyder i lav grad og 5 betyder i høj grad.

Vurder samtalens kvalitet på følgende punkter på en skala fra 1-5, hvor 1 betyder i lav grad og 5 betyder i høj grad. Vurder samtalens kvalitet på følgende punkter på en skala fra 1-5, hvor 1 betyder i lav grad og 5 betyder i høj grad. Samtalens rammer og indhold I hvor stor grad fik du afklaret samtalens rammer (formål,

Læs mere

Rapport: Kredshjemmesider i Danske Baptisters Spejderkorps. Jan 2012

Rapport: Kredshjemmesider i Danske Baptisters Spejderkorps. Jan 2012 Rapport: Kredshjemmesider i Danske Baptisters Spejderkorps Jan 2012 Af Henrik Andersen og Kenneth Yrke Jørgensen Danske Baptisters Spejderkorps IT-udvalg Kredshjemmesider i Danske Baptisters Spejderkorps

Læs mere

Udfordringer og problemstillinger. En liste over de udfordringer og problemstillinger, der er ved Java og JEE udvikling

Udfordringer og problemstillinger. En liste over de udfordringer og problemstillinger, der er ved Java og JEE udvikling Java og JEE 1 2 Udfordringer og problemstillinger En liste over de udfordringer og problemstillinger, der er ved Java og JEE udvikling 3 Generelt om Java og JEE 4 Generelt, I Man undervurderer hvor mange

Læs mere

Grafisk workflow. bl.udbudsnet.dk

Grafisk workflow. bl.udbudsnet.dk Grafisk workflow. bl.udbudsnet.dk Hvad går opgaven ud på? Opgaven gik ud på at lavet et præsentations website for Udbudsnet. Hjemmesiden skulle bruges til at sælge Udbudsnet, på en messe som hedder BL.

Læs mere

Matematik, maskiner og metadata

Matematik, maskiner og metadata MATEMATIK, MASKINER OG METADATA VEJE TIL VIDEN Matematik, maskiner og metadata af CHRISTIAN BOESGAARD DATALOG IT Development / DBC 1 Konkrete projekter med machine learning, hvor computersystemer lærer

Læs mere

HHBR. Design. Kvalitets vurdering. Opgaven. Målgruppe og Budskab. De Grafiske valg

HHBR. Design. Kvalitets vurdering. Opgaven. Målgruppe og Budskab. De Grafiske valg Opgaven Der skal designes en hjemmeside til en pensioneret revisor, som ønsker at starte en fritids beskæftigelse op, som privat revisor. Han Ønsker en hjemmeside der skal kort fortælle om hans forretning.

Læs mere

Software Dokumentation

Software Dokumentation Software Dokumentation Jan Boddum Larsen Teknologi B og A på HTX Dokumentation af software i Teknologi I samfundet sker der en bevægelse mod mere digitale løsninger i teknologi. Det betyder at software

Læs mere

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (i mandags) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?

Læs mere

DM536. Rapport og debug

DM536. Rapport og debug DM536 Rapport og debug Kilder Vigtig.it (Felix Palludan Hargreaves) http://vigtig.it/dm502/howto_report.pdf http://vigtig.it/blog/teaching/#toc-relevant-tips Peter Schneider-Kamp http://imada.sdu.dk/~petersk/dm536/project2.pdf

Læs mere

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag Forelæsning Uge 4 Mandag Algoritmeskabeloner Kan (ved simple tilretningerne) bruges til at implementere metoder, der gennemsøger en arrayliste (eller anden objektsamling) og finder objekter, der opfylder

Læs mere

Arbejdsblad. Indhold. 27. maj 2010 A312. 1 Projektplanlægning 1. 2 Samarbejdet i gruppen 3. 3 Samarbejdet med vejlederne 5

Arbejdsblad. Indhold. 27. maj 2010 A312. 1 Projektplanlægning 1. 2 Samarbejdet i gruppen 3. 3 Samarbejdet med vejlederne 5 Arbejdsblad 27. maj 2010 A312 Indhold 1 Projektplanlægning 1 2 Samarbejdet i gruppen 3 3 Samarbejdet med vejlederne 5 1 Procesanalyse 1 Projektplanlægning I projektarbejdet har vi benyttet Google kalender

Læs mere

DM517:Supplerende noter om uafgørlighedsbeviser:

DM517:Supplerende noter om uafgørlighedsbeviser: DM517:Supplerende noter om uafgørlighedsbeviser: Jørgen Bang-Jensen October 9, 2013 Abstract Formålet med denne note er at give en form for kogebogsopskrift på, hvorledes man bygger et uafgørlighedsbevis

Læs mere

Softwaretest. - også af "ikke testbar" software. DAPUG erfamøde 7. marts 2012 Thomas Vedel, Thomas Vedel Consult email: thomas@veco.

Softwaretest. - også af ikke testbar software. DAPUG erfamøde 7. marts 2012 Thomas Vedel, Thomas Vedel Consult email: thomas@veco. Softwaretest - også af "ikke testbar" software DAPUG erfamøde 7. marts 2012 Thomas Vedel, Thomas Vedel Consult email: thomas@veco.dk Hvorfor softwaretest? Software er sjældent fejlfri Test sikrer at softwaren

Læs mere

Rapport om brugerevaluering af pilotprojektet Bedre Breve i Stevns Kommune

Rapport om brugerevaluering af pilotprojektet Bedre Breve i Stevns Kommune Rapport om brugerevaluering af pilotprojektet Bedre Breve i Stevns Kommune Lektor Karsten Pedersen, Center for Magt, Medier og Kommunikion, kape@ruc.dk RUC, oktober 2014 2 Resume De nye breve er lettere

Læs mere

Guide 7 tips til organisatorisk implementering.

Guide 7 tips til organisatorisk implementering. Guide 7 tips til organisatorisk implementering www.infosuite.dk 1 Den organisatoriske forankring er vigtig hvis du skal opnå succes med dit BI-projekt. Organisatorisk forankring af Business Intelligence

Læs mere

Undervisningsbeskrivelse

Undervisningsbeskrivelse Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin Institution Uddannelse Fag og niveau Lærer(e) Hold Termin hvori undervisningen afsluttes: maj-juni 2013 HTX

Læs mere

Læringsprogram. Christian Hjortshøj, Bjarke Sørensen og Asger Hansen Vejleder: Karl G Bjarnason Fag: Programmering Klasse 3.4

Læringsprogram. Christian Hjortshøj, Bjarke Sørensen og Asger Hansen Vejleder: Karl G Bjarnason Fag: Programmering Klasse 3.4 Læringsprogram Christian Hjortshøj, Bjarke Sørensen og Asger Hansen Vejleder: Karl G Bjarnason Fag: Programmering Klasse 3.4 R o s k i l d e T e k n i s k e G y m n a s i u m Indholdsfortegnelse FORMÅL...

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3 DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget

Læs mere

Sta Stem! ga! - hvordan far vi et bedre la eringmiljo? O M

Sta Stem! ga! - hvordan far vi et bedre la eringmiljo? O M o Sta Stem! ga! o - hvordan far vi et bedre la eringmiljo? / o T D A O M K E R I Indhold En bevægelsesøvelse hvor eleverne får mulighed for aktivt og på gulvet at udtrykke holdninger, fremsætte forslag

Læs mere

Vurder samtalens kvalitet på følgende punkter på en skala fra 1-5, hvor 1 betyder i lav grad og 5 betyder i høj grad.

Vurder samtalens kvalitet på følgende punkter på en skala fra 1-5, hvor 1 betyder i lav grad og 5 betyder i høj grad. Vurder samtalens kvalitet på følgende punkter på en skala fra 1-5, hvor 1 betyder i lav grad og 5 betyder i høj grad. Samtalens rammer og indhold I hvor stor grad fik du afklaret samtalens rammer (formål,

Læs mere

Gennemsnit og normalfordeling illustreret med terningkast, simulering og SLUMP()

Gennemsnit og normalfordeling illustreret med terningkast, simulering og SLUMP() Gennemsnit og normalfordeling illustreret med terningkast, simulering og SLUMP() John Andersen, Læreruddannelsen i Aarhus, VIA Et kast med 10 terninger gav følgende udfald Fig. 1 Result of rolling 10 dices

Læs mere

Hvad er Objekter - Programmering

Hvad er Objekter - Programmering Denne guide er oprindeligt udgivet på Eksperten.dk Hvad er Objekter - Programmering En rigtig god gennemgang af hvad objekter er! Hvordan de oprettes og anvendes! Det er helt klart til nybegyndere, som

Læs mere

Lærervejledning. Beskriv ideen med spillet i plenum, herunder dets funktion og de tre vigtigste pointer med spillet:

Lærervejledning. Beskriv ideen med spillet i plenum, herunder dets funktion og de tre vigtigste pointer med spillet: Lærervejledning Få ord på trafikken! Har jeres skole en trafikpolitik? Hvis ikke, kan et spil TrafikPanik være det første skridt. Her kan du læse om spillet, og hvordan du bruger det i trafikundervisningen.

Læs mere

Online billede filtrering

Online billede filtrering Online billede filtrering Eksamensprojekt 2014 Andreas Lorentzen, klasse 3.4 Roskilde Tekniske Gymnasium Programmering C 09-05-2014 I dette projekt vil jeg demonstrerer en af de mange ting moderne browsere

Læs mere

Portfolio. Fremstilling af den bedste hjemmelavede tykmælk. 1 Hypotesedannelse. Lav jeres hypotese Præsentation af hypotese

Portfolio. Fremstilling af den bedste hjemmelavede tykmælk. 1 Hypotesedannelse. Lav jeres hypotese Præsentation af hypotese Portfolio Fremstilling af den bedste hjemmelavede tykmælk Klik på teksterne herunder, for automatisk at springe til den aktuelle opgave: 1 Hypotesedannelse Lav jeres hypotese Præsentation af hypotese 2

Læs mere

Indhold: Spillebræt 5 hære med 40 infanteri-, 12 kavaleri- og 8 artillerienheder i hver 43 kort 2 referencekort 5 terninger

Indhold: Spillebræt 5 hære med 40 infanteri-, 12 kavaleri- og 8 artillerienheder i hver 43 kort 2 referencekort 5 terninger REGLER FOR 2 TIL 5 SPILLERE, FRA 10 ÅR S P I L L E T O M V E R D E N S H E R R E D Ø M M E T 2010 Hasbro. Alle rettigheder forbeholdt. Produceret af: Hasbro SA, Route de Courroux 6, 2800 Delemont CH Repræsenteret

Læs mere

Arbejde med Regioner Lister, Playlists, og Cutlists i Sound Forge Pro

Arbejde med Regioner Lister, Playlists, og Cutlists i Sound Forge Pro Arbejde med Regioner Lister, Playlists, og Cutlists i Sound Forge Pro Gary Rebholz Du har sikkert allerede ved, at Sound Forge Pro software kan bruges til en imponerende række af audio opgaver. Alt fra

Læs mere

[AFSLUTTENDE OPGAVE I KOM/IT]

[AFSLUTTENDE OPGAVE I KOM/IT] 2010 Pernille Ketscher & Kasper Lassen [AFSLUTTENDE OPGAVE I KOM/IT] Indhold Skema over fordeling af opgaver.... 3 Kommunikationsplan.... 4 Overvejelser for kommunikationsplanen.... 5 Overvejelserne for

Læs mere