agile development and project management - cogs...
TRANSCRIPT
AgileDevelopmentandProjectManagement
CogSci121-HCIProgrammingStudio
AdaptedfromslidesbyMountainGotSoftware,ShahidN.Shah
AgileSoftwareDevelopment
2https://www.youtube.com/watch?v=OJflDE6OaSc
Manifestofor AgileSoftwareDevelopment
3
Weareuncoveringbetterwaysofdevelopingsoftwarebydoingitandhelpingothersdoit.Throughthisworkwehavecometovalue:
IndividualsandinteractionsoverprocessesandtoolsWorkingsoftwareovercomprehensivedocumentationCustomercollaborationovercontractnegotiation
Respondingtochangeoverfollowingaplan
Thatis,whilethereisvalueintheitemsontheright,wevaluetheitemsontheleftmore.
Theprinciplesofagilemethods
4
Principle Description
Customer involvement Customers should be closely involved throughout the development process. Their role is provide and prioritize new system requirements and to evaluate the iterations of the system.
Incremental delivery The software is developed in increments with the customer specifying the requirements to be included in each increment.
People not process The skills of the development team should be recognized and exploited. Team members should be left to develop their own ways of working without prescriptive processes.
Embrace change Expect the system requirements to change and so design the system to accommodate these changes.
Maintain simplicity Focus on simplicity in both the software being developed and in the development process. Wherever possible, actively work to eliminate complexity from the system.
XP:EmbraceChange
• Recognizethat:– Allrequirementswillnotbeknownatthebeginning
– Requirementswillchange• Usetoolstoaccommodatechangeasanaturalprocess• Dothesimplestthingthatcouldpossiblyworkandrefactormercilessly
• Emphasizevaluesandprinciplesratherthanprocess
6
8
• Scrum is an agile process that allows us to focus on delivering the highest business value in the shortest time.
• It allows us to rapidly and repeatedly inspect actual working software (every two weeks to one month).
• The business sets the priorities. Teams self-organize to determine the best way to deliver the highest priority features.
• Every two weeks to a month anyone can see real working software and decide to release it as is or continue to enhance it for another sprint.
Scrum in 100 words
Characteristics
• Self-organizingteams• Productprogressesinaseriesofmonth-long“sprints”• Requirementsarecapturedasitemsinalistof“productbacklog”
• Nospecificengineeringpracticesprescribed• Usesgenerativerulestocreateanagileenvironmentfordeliveringprojects
• Oneofthe“agileprocesses”
9
Scrum
10
Cancel
Gift wrap
Return
Sprint2-4 weeks
Sprint goal
Sprint backlog Potentially shippableproduct increment
Productbacklog
24 hours
Sprints
• Scrumprojectsmakeprogressinaseriesof“sprints”– AnalogoustoExtremeProgrammingiterations
• Typicaldurationis2–4weeksoracalendarmonthatmost
• Aconstantdurationleadstoabetterrhythm• Productisdesigned,coded,andtestedduringthesprint
11
Sequentialvs.overlappingdevelopment
12
Source: “The New New Product Development Game” by Takeuchi and Nonaka. Harvard Business Review, January 1986.
Rather than doing all of one thing at a time...
...Scrum teams do a little of everything all the time
Requirements Design Code Test
Scrumframework
13
•Product owner•ScrumMaster•Team
Roles
•Sprint planning•Sprint review•Sprint retrospective•Daily scrum meeting
Ceremonies
•Product backlog•Sprint backlog•Burndown charts
Artifacts
Scrumframework
14
•Sprint planning•Sprint review•Sprint retrospective•Daily scrum meeting
Ceremonies
•Product backlog•Sprint backlog•Burndown charts
Artifacts
•Product owner•ScrumMaster•Team
Roles
Productowner
• Definethefeaturesoftheproduct• Decideonreleasedateandcontent• Beresponsiblefortheprofitabilityoftheproduct(ROI)
• Prioritizefeaturesaccordingtomarketvalue• Adjustfeaturesandpriorityeveryiteration,asneeded
• Acceptorrejectworkresults
15
TheScrumMaster
• Representsmanagementtotheproject• ResponsibleforenactingScrumvaluesandpractices• Removesimpediments• Ensurethattheteamisfullyfunctionalandproductive
• Enableclosecooperationacrossallrolesandfunctions
• Shieldtheteamfromexternalinterferences
16
Theteam
• Typically5-9people• Cross-functional:
– Programmers,testers,userexperiencedesigners,etc.• Membersshouldbefull-time
• Maybeexceptions(e.g.,databaseadministrator)• Teamsareself-organizing
– Ideally,notitlesbutrarelyapossibility• Membershipshouldchangeonlybetweensprints
17
•Product owner•ScrumMaster•Team
Roles
Scrumframework
18
•Product backlog•Sprint backlog•Burndown charts
Artifacts
•Sprint planning•Sprint review•Sprint retrospective•Daily scrum meeting
Ceremonies
19
Sprint planning meeting
Sprint prioritization
• Analyze and evaluate product backlog
• Select sprint goal
Sprint planning
• Decide how to achieve sprint goal (design)
• Create sprint backlog (tasks) from product backlog items (user stories / features)
• Estimate sprint backlog in hours
Sprintgoal
Sprintbacklog
Business conditions
Team capacity
Product backlog
Technology
Current product
Sprintplanning• Teamselectsitemsfromtheproductbacklogtheycancommittocompleting
• Sprintbacklogiscreated– Tasksareidentifiedandeachisestimated(1-16hours)– Collaboratively,notdonealonebytheScrumMaster
• High-leveldesignisconsidered
20
As a vacation planner, I want to see photos of the hotels.
Code the middle tier (8 hours)Code the user interface (4)Write test fixtures (4)Code the foo class (6)Update performance tests (4)
Thedailyscrum
• Parameters– Daily– 15-minutes– Stand-up
• Notforproblemsolving– Wholeworldisinvited– Onlyteammembers,ScrumMaster,productowner,cantalk
• Helpsavoidotherunnecessarymeetings21
Everyoneanswers3questions
• Thesearecommitmentsinfrontofpeers22
What did you do yesterday?1
What will you do today?2
Is anything in your way?3
Thesprintreview
• Teampresentswhatitaccomplishedduringthesprint
• Typicallytakestheformofademoofnewfeaturesorunderlyingarchitecture
• Informal– 2-hourpreptimerule– Noslides
• Wholeteamparticipates• Invitetheworld 23
Sprintretrospective
• Periodicallytakealookatwhatisandisnotworking• Typically15–30minutes• Doneaftereverysprint• Wholeteamparticipates
– ScrumMaster– Productowner– Team– Possiblycustomersandothers
24
Start/Stop/Continue
• Wholeteamgathersanddiscusseswhatthey’dliketo:
25
Start doing
Stop doing
Continue doing
This is just one of many ways to do a sprint retrospective.
•Product owner•ScrumMaster•Team
Roles
Scrumframework
26
•Sprint planning•Sprint review•Sprint retrospective•Daily scrum meeting
Ceremonies
•Product backlog•Sprint backlog•Burndown charts
Artifacts
Productbacklog
• Therequirements• Alistofalldesiredworkontheproject
• Ideallyexpressedsuchthateachitemhasvaluetotheusersorcustomersoftheproduct
• Prioritizedbytheproductowner
• Reprioritizedatthestartofeachsprint
27
This is the product backlog
Asampleproductbacklog
28
Backlog item Priority
Allow a guest to make a reservation 3
As a guest, I want to cancel a reservation. 5
As a guest, I want to change the dates of a reservation.
3
As a hotel employee, I can run RevPAR reports (revenue-per-available-room)
8
Improve exception handling 8
... 30
... 50
Thesprintgoal
• Ashortstatementofwhattheworkwillbefocusedonduringthesprint
Database Application
Financial services
Life Sciences
Support features necessary for population genetics studies.
Support more technical indicators than company ABC with real-time, streaming data.
Make the application run on SQL Server in addition to Oracle.
9
(Agile)ProjectManagementTools
GanttChart:Abarchart.Whilevisuallyappealingonatask/durationbasis,itislimitedbecauseitdoesnotshowtaskorresourcerelationshipswell.Strength:easytomaintainandread.
31
9
(Agile)ProjectManagementToolsNetworkDiagram:Awirediagram,AlsoknownasaPERTnetworkdiagram.Adiagramthatshowstasksandtheirrelationships.Limitedbecauseitshowsonlytaskrelationships.Strength:easytoreadtaskrelationships.
32
ProjectControlWorkwiththeclienttodeterminetheprojectneeds&constraints(ANALYZE)Defineprojectmilestonesanddeliverables(PLAN)
whileprojecthasnotbeencompletedorcancelled(EXECUTE) Drawupprojectschedule Initiateactivitiesaccordingtoschedule Wait(forawhile) Reviewprojectprogress Reviseestimatesofprojectparameters Updatetheprojectschedule Re-negotiateprojectconstraintsanddeliverables if(problemsarise)then Initiatetechnicalreviewandpossiblerevision endifendloop
Closeproject(DELIVER)
33
1:RequirementsDefinition{productgoals}
– 20pages– Doublespaced– Onatopicaddressingaquestionoftheeffectivenessofagileandwaterfallmethods
– Includesaliteraturereview– Includesaproposalforaresearchstudy– Includeshypotheses&expectedresults– IEEEcitationformat– Referenceatleast10peer-reviewedpapers
2:WorkBreakdownStructure{logicalunitsofworktoaccomplishgoals}
1. PlanningA. Picktopic&researchquestionB. BrainstormpotentialresearchstudiesC. MakelistofpaperstoreadD. DocumentA-CinaproposalE. Discussproposalwithprofessor
2. ResearchingF. ReadresearchpapersG. Documentkeyideas
3. WritingH. OutlinepaperI. WritefirstdraftJ. Discussdraftwithprofessor
4. Editing&PolishingK. RevisedraftL. CheckreferencesandcitationformatM. ChecklengthandformattingN. ProofreadO. Submitpaper
milestone
milestone
milestone
deliverable
deliverable
deliverable
ProjectManagementTools
• Trello• Basecamp• Jira• Asana• Github+ZenHub• Tom’sPlanner• Gantter• Github+Zenhub
37
Amy’sPersonalRecommendation
TrelloFor capturing requirements and sorting them into priorities
+
GantterTurning requirements into a WBS and scheduling w/ dependencies
+
Github+ZenhubSource control + feature tracking linked to commits *
Agilereadinglist
• AgileandIterativeDevelopment:AManager’sGuide,byCraigLarman
• AgileEstimatingandPlanning,byMikeCohn• AgileProjectManagementwithScrum,byKenSchwaber• AgileRetrospectives,byEstherDerbyandDianaLarsen• AgileSoftwareDevelopmentEcosystems,byJimHighsmith• AgileSoftwareDevelopmentwithScrum,byKenSchwaberandMikeBeedle
• ScrumandTheEnterprise,byKenSchwaber• SucceedingwithAgile,byMikeCohn• UserStoriesAppliedforAgileSoftwareDevelopment,byMikeCohn
39
AgileDevelopment…foryourfamily
40https://www.ted.com/talks/bruce_feiler_agile_programming_for_your_family?
Next Steps• Today:
• Design Critique, by Amy Fox • Problems to Solve, Jacob Browne
• Thursday: Design Critique, Elevator Pitch
• Friday: Technical Discussions / Studio (required)-Debriefing on Assignment 3 -Quiz on Week 6 Content
• Readings (required)- Meirelles (Design for information: an introduction to the histories, theories, and the best practices behind effective information visualizations) —> Chapter 4 + Chapter 5
• Next Week:-Design Critique: Data Flow and Architecture
Extremeprogramming
• Perhapsthebest-knownandmostwidelyusedagilemethod.
• ExtremeProgramming(XP)takesan‘extreme’approachtoiterativedevelopment.– Newversionsmaybebuiltseveraltimesperday;– Incrementsaredeliveredtocustomersevery2weeks;
– Alltestsmustberunforeverybuildandthebuildisonlyacceptediftestsrunsuccessfully.
4315
ExtremeProgramming(XP)• XPdoesnotinvolvebungeecords!
– Itdoesnotencourageblindhacking.Itisasystematicmethodology.– ItpredatesWindows“XP”(2001)
• DevelopedbyKentBeck:– XPis“alight-weightmethodologyforsmalltomedium-sizedteamsdevelopingsoftwareinthefaceofvagueorrapidlychangingrequirements.”
• Alternativeto“heavy-weight”softwaredevelopmentmodels(whichtendtoavoidchangeandcustomers)
– "ExtremeProgrammingturnstheconventionalsoftwareprocesssideways.Ratherthanplanning,analyzing,anddesigningforthefar-flungfuture,XPprogrammersdoalloftheseactivitiesalittleatatimethroughoutdevelopment.”--IEEEComputer,October1999
44
XPIntrod
uctio
n
Communication
• XPemphasizesvalueofcommunicationinmanyofitspractices:– On-sitecustomer,userstories,pairprogramming,collectiveownership(popularwithopensourcedevelopers),dailystandupmeetings,etc.
• XPemploysacoachwhosejobisnoticingwhenpeoplearen’tcommunicatingandreintroducethem
46
XPvalue
s
Simplicity
• ''Dothesimplestthingthatcouldpossiblywork''(DTSTTCPW)principle– ElsewhereknownasKISS(KeepItSimple,Stupid!)
• AcoachmaysayDTSTTCPWwhenheseesanXPdeveloperdoingsomethingneedlesslycomplicated
• YAGNIprinciple(''Youain’tgonnaneedit'')
47
XPvalue
s
Feedback
• Feedbackatdifferenttimescales• Unitteststellprogrammersstatusofthesystem• Whencustomerswritenewuserstories,programmersestimatetimerequiredtodeliverchanges
• Programmersproducenewreleasesevery 2-3weeksforcustomerstoreview
48
XPvalue
s
Courage
• Thecouragetocommunicateandacceptfeedback• Thecouragetothrowcodeaway(prototypes)• Thecouragetorefactorthearchitectureofasystem
• Doyouhavewhatittakes?
49
ExtremeProgrammingpractices
51
Principle or practice Description
Incremental planning Requirements are recorded on story cards and the stories to be included in a release are determined by the time available and their relative priority. The developers break these stories into development ‘Tasks’
Small releases The minimal useful set of functionality that provides business value is developed first. Releases of the system are frequent and incrementally add functionality to the first release.
Simple design Enough design is carried out to meet the current requirements and no more.
Test-first development An automated unit test framework is used to write tests for a new piece of functionality before that functionality itself is implemented.
Refactoring All developers are expected to refactor the code continuously as soon as possible code improvements are found. This keeps the code simple and maintainable.
ExtremeProgrammingpractices
52
Pair programming Developers work in pairs, checking each other’s work and providing the support to always do a good job.
Collective ownership The pairs of developers work on all areas of the system, so that no islands of expertise develop and all the developers take responsibility for all of the code. Anyone can change anything.
Continuous integration As soon as the work on a task is complete, it is integrated into the whole system. After any such integration, all the unit tests in the system must pass.
Sustainable pace Large amounts of overtime are not considered acceptable as the net effect is often to reduce code quality and medium term productivity
On-site customer A representative of the end-user of the system (the customer) should be available full time for the use of the XP team. In an extreme programming process, the customer is a member of the development team and is responsible for bringing system requirements to the team for implementation.
Advantagesofpairprogramming• Itsupportstheideaofcollectiveownershipandresponsibilityforthesystem.
– Individualsarenotheldresponsibleforproblemswiththecode.Instead,theteamhascollectiveresponsibilityforresolvingtheseproblems.
• Itactsasaninformalreviewprocessbecauseeachlineofcodeislookedatbyatleasttwopeople.
• Ithelpssupportrefactoring,whichisaprocessofsoftwareimprovement.
– Wherepairprogrammingandcollectiveownershipareused,othersbenefitimmediatelyfromtherefactoringsotheyarelikelytosupporttheprocess.
53