Lärandemål TDP027 Projekt: Agil systemutveckling Efter genomgången kurs ska studenten kunna: • utveckla en grafisk interaktiv tillämpning ihop med en beställare (kunder) • utveckla programvara baserat på agila metodikens grundvärderingar • förstå agil utvecklingsmetodik i förhållande till andra metodiker Annika Silvervarg CiltLab/HCS/IDA Hantverk • Kunnande i att arbeta med hjälp av agil metodik både individuellt, i par och i grupp. • Förmåga att kommunicera och fungera socialt på ett bra sätt i ett projekt och team. • Kunna ta fram programvara på enklast möjliga vis för att lösa givna krav. • Kunna ta och ge återkoppling på ett konstruktivt och givande sätt. • Arbeta i hög fart med god kvalitet och leverera innovativa tillfredställande resultat. • Arbeta direkt med källkod snarare än dokumentation och att vara öppen för kontinuerliga förändringar. Projekt med extern kund • 4 projekt att välja mellan – Intresseanmälan görs i webformulär efter denna föreläsning • Projekt kan kräva underskrift av sekretessvillkor – Liknande villkor som för uppsatsarbeten med företagskunder och kursen Företagsprojekt Kursupplägg • Projekt – 8 hp • Individuell rapport – 2 hp – Kopplat till projektarbetet och teorier om utvecklingsmetoden Learning by doing and reflecting Roller 4 utvecklingsteam • Ca 5-6 studenter per team • Extern kund (1 per team) • Intern scrum master för varje team • Kunden äger det utvecklade systemet 1 Roll – Kund • Extern person som beställer arbetet I denna kurs agerar kunden i princip som en product owner (i mån av tid) Roll – Scrum master • Är också utvecklare Denna roll kan roteras inom gruppen – Ansvarar för kontakten med kund – Ser till att burn-down-chart upprättas – Ansvarar för scrum-möten och att de blir till, samt uppdatering av burn-down-chart och tabellen med tasks och stories – Håller i sprint start – Håller i sprint end (demo + retrospective) – Fyller i sprintformuläret efter varje sprint – Ser till att user stories finns i backlog (framförallt inför sprint start) – Prioriterar user stories inför sprint start – Deltar i demo vid sprint end och avgör vilka stories som får godkänt och gör ev ändringar ac user stories, prioriteringar etc Roll – Utvecklare – – – – Deltar aktivt i sprint start & sprint end Deltar aktivt i scrum-möten Utvecklar och testar valda tasks Kommer i tid till planerade möten och utvecklingstider Tidsplan • • • • • • • • v3-4: Introduktion + Sprint 0 v5-6: Sprint 1 v7-8: Sprint 2 v9-10: Sprint 3 v14-15: Sprint 4 v16-17: Sprint 5 v18-20: Sprint 6 v21: Reflektion och individuell rapport Litteratur • Kursbok – Pieter Jongerius et al. Get Agile! Scrum for UX, design & development. BIS Publishers, 2013. – Henrik Kniberg. Scrum and XP from the trenches. • Forskningsartiklar – – – – – Williams, L., Kessler, R.R., Cunningham, W., Jeffries, R. Strengthening the case for pair programming, IEEE Software, 17(4), pp. 19-25, 2000. Jones, D.L., and Fleming, S.D. What use is a backseat driver? A qualitative investigation of pair programming. In Proceedings pf the IEEE Symposium on Visual Languages and Human-Centric Computing, pp. 103-110, 15-19 September, 2013. Kai Stapel, Eric Knauss, Kurt Schneider, and Matthias Becker. Towards Understanding Communication Structure in Pair Programming. In Agile Processes in Software Engineering and Extreme Programming, Lecture Notes in Business Information Processing Volume 48, pp. 117-131, 2010. Kjetil Molokken-Ostvold, Nils Christian Haugen, Hans Christian Benestad. Using planning poker for combining expert estimates in software projects, The Journal of Systems and Software 81, pp. 2106-2117, 2008. Siva Dorairaj, James Noble, and Petra Malik. Understanding Team Dynamics in Distributed Agile Software Development. In Agile Processes in Software Engineering and Extreme Programming Lecture Notes in Business Information Processing Volume 111, pp. 47-61, 2012. Examination • Aktivt deltagande i projektarbetet (8hp) • Individuell reflektionsrapport (2hp) – Deadline 4/6, kl 25.59 – Del 1 • Läs och sammanfatta/analysera tre forskningsartiklar – Del 2 • Skriv en vetenskaplig diskussion som kopplar observationer från projektarbetet till de lästa artiklarna – OBS: För dagbok under projektets gång för att ha bra underlag för skrivandet 2 Ändringar • Ändrat schemat för mer sammanhållen tid • Lite större grupper • 2 tillfällen för coachning/handledning (efter sprint 2 + 4) SYSTEM DEVELOPMENT System • In wide sense: Technology, information, services, products, people, organisations and/or cultures working together to form a unit • In this course: software systems, i.e. computer system used by one or many human users System development model • An abstract representation of the work done during system development, often a very simplified and schematic view • Describe how we work Process • Something that you do • Something that happens over time where purpose of the participants is to create or change something • Prescribe how we should work Tools and techniques • • • • • Designed for a specific task or function Independent of the overall method Is used to create or change something Techniques are different ways of using tools Examples – – – – Interviews, observations User stories, personas Scenarios, use cases Prototypes 3 Development method • Systematic, structured way of developing systems – Software engineering – System engineering • Method = model/process + tools and techniques System development models • Describe the order of different phases and the result/outcome of them • Criteria for moving from one phase to another • Common phases: – Analysis – Design – Implementation Common phases • Analysis – what is the problem? – – – – – Task – what are the work task and how are the performed? User needs – what is the problem, what do you need? Information – what information is handled? Usability – what is important to the user? Vision and goal – what do you want to achieve? • Design – how should we solve the problems? • Implementation - realization of solution Historical overview of system development models • • • • “Forgotten” phases • • • • • • • • Selling, background Analysis Design Implementation Test Delivery Education Support Code and Fix Code and fix Waterfall model Incremental development Iterative development Code Fix 4 Code and Fix Code and fix • Code and fix development is not so much a deliberate strategy • Without much in the way of a design, programmers immediately begin producing code • At some point, testing begins (often late in the development cycle), and the inevitable bugs must then be fixed before the product can be shipped Waterfall Waterfall model • The waterfall model is a sequential software development model in which development is seen as flowing steadily downwards through the phases: – Requirements analysis – Design – Implementation – Testing (validation) – Integration and Maintenance • The origin of the term "waterfall" is often cited to (Royce 1970) although Royce did not use the term "waterfall" in this article. Ironically, Royce was presenting this model as an example of a flawed, non-working model Incremental Incremental development • Incremental development is a strategy in which the various parts of the system are developed at different times or rates, and integrated as they are completed • Overall architecture → Increments → Integration • The alternative to incremental development is to develop the entire system with a "big bang" integration • It does not imply, require nor preclude iterative development or waterfall development - both of those are rework strategies that can be used within an increment 5 Iterative Iterative development • Iterative development is a rework scheduling strategy in which time is set aside to revise and improve parts of the system • The output from an iteration is examined for modification, and especially for revising the targets of the successive iterations • It does not presuppose incremental development, but works very well with it • Most people saying "iterative" development mean that they do both incremental and iterative development What is Agile? AGILE • 70’s ”Adaptive Software Development” • 90’s ”Lightweight methods” • 2001 Agile manifesto SYSTEM DEVELOPMENT Manifesto for Agile Software Development Key features of Agile • • • • • • • User stories Product backlog Sprints (Iterations) Daily standup meeting Burndown chart Testdriven development Retrospective 6 User stories Product backlog Sprints Standup meeting (SCRUM) Yesterday I … Today I will … I have some problems with …. Burn down chart Retrospective 7