Lärandemål TDP027

advertisement
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
Download