agile development and project management - cogs...

53
Agile Development and Project Management CogSci 121 - HCI Programming Studio Adapted from slides by Mountain Got Software, Shahid N. Shah

Upload: hoangthien

Post on 20-Mar-2018

216 views

Category:

Documents


1 download

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.

XPPractices

5[Seeadditionalslidesattheend]

XP:EmbraceChange

• Recognizethat:– Allrequirementswillnotbeknownatthebeginning

– Requirementswillchange• Usetoolstoaccommodatechangeasanaturalprocess• Dothesimplestthingthatcouldpossiblyworkandrefactormercilessly

• Emphasizevaluesandprinciplesratherthanprocess

6

TheScrumprocess

7

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.

Attendance

30

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

34

An example…Writingaresearchpaper

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

THANKS

42

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

FourCoreValuesofXP

• Communication• Simplicity• Feedback• Courage

45

XPvalue

s

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

TheExtremeProgrammingReleaseCycle

50

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