Agile DevelopmentDennis Degryse- DEBOCOM bvba.
16/03/2011Agile Development2
ContentsObject-Oriented Analysis and DesignPlanningWaterfall Development ProcessScrumExtreme ProgrammingConclusion16/03/2011Agile Development3
Object-oriented analysis and designAgile Development
Object-oriented Analysis and DesignConceptual modelsOO SystemsOO AnalysisWhat should it do?OO DesignHow should it do it?Reflects structures in the actual business process16/03/2011Agile Development5
Object-oriented Analysis and DesignRequirements analysisFunctional RequirementsQuality requirementsDomain analysisActivity diagramsSequence diagrams16/03/2011Agile Development6
Requirements Analysis16/03/2011Agile Development7
Requirements AnalysisFunctional RequirementsDefines functions in a software systemWhat should the system be able to DO?HierarchyUse-casesInputProcessingOutput16/03/2011Agile Development8
Requirements AnalysisStakeholder interviews16/03/2011Agile Development9
Requirements AnalysisUse-case diagram16/03/2011Agile Development10
Requirements AnalysisQuality RequirementsWhat is the system supposed to BE?Execution QualitiesSecurity, usabilityEvolution QualitiesTestability, maintainability, scalability, extensibility16/03/2011Agile Development11
Domain AnalysisModel-drivenObject-oriented modelsEntity-relationship diagramsBasis for software architectures16/03/2011Agile Development12
Domain AnalysisObject-oriented modelEntity-relationship diagram16/03/2011Agile Development13
Activity DiagramWorkflow of components in a systemExplains a process in more detail using modelsUses stepwise activities and actionsPetri net-like semantics16/03/2011Agile Development14
Activity DiagramActivity Diagram16/03/2011Agile Development15
Sequence DiagramInteraction between processesSpecification of runtime scenariosDiagramObject life linesMessages(A)synchronous callsReturn messages16/03/2011Agile Development16
Sequence DiagramSequence Diagram16/03/2011Agile Development17
PlanningAgile Development
PlanningProblemsEstimating time costsUnplanned interruptsDifferent team member qualitiesChanging requirements16/03/2011Agile Development19
Estimating Time CostsClearly define all requirementsDefine a fixed scopePlanning PokerEstimating time cost per use caseMinimizes anchoringMore accurate estimates16/03/2011Agile Development20
Planning PokerTraditional PlanningPlanning Poker4442124443235554555416/03/2011Agile Development21
Unplanned interruptsPreventionSystem back-up, source control, …Deep analysisPlanning marginReserve time for unplanned interruptsMax. 80%16/03/2011Agile Development22
Different Team Member QualitiesRight task for the right team memberStimulate team members to…… work closely together… increase communicationShare knowledge16/03/2011Agile Development23
Changing RequirementsAdditional functionalitiesWithin the scope of the project?Changes in existing functionalitiesPreventionStakeholder interviews, analysis, contracts, …Generic code and architecture16/03/2011Agile Development24
Waterfall development processAgile Development
Waterfall Development Process16/03/2011Agile Development26
Waterfall Development ProcessTraditionalProblemsAdaptabilityVisibilityBusiness valueHard to plan16/03/2011Agile Development27
Waterfall Development ProcessVisibiltyAdaptability16/03/2011Agile Development28
Waterfall Development ProcessBusiness valueRisk16/03/2011Agile Development29
Waterfall Development ProcessResultsEstimated time is nearly 50% of actual time costProject cost is much higher than estimatedFunctionality is not what the customer asked for16/03/2011Agile Development30
ScrumAgile Development
ScrumArtifactsRolesProcessPreparationSprintsDeliverable16/03/2011Agile Development32
ArtefactsProduct scopeProduct backlogProduct burndownDelta reportImpediments listSprint scopeSprint backlogSprint burndown16/03/2011Agile Development33
RolesProduct ownerBusiness perspectiveVoice of the costumerManages Product BacklogScrum masterCoach and fixerEvaluating16/03/2011Agile Development34
RolesProduct ownerBusiness perspectiveVoice of the costumerManages Product BacklogScrum masterCoach and fixerEvaluatingTeam members16/03/2011Agile Development35
ProcessPreparationDeliverableSprints16/03/2011Agile Development36
PreparationInitial product backlogOutput from analysisStories (functionality)PrioritiesInitial release planBusiness caseTeam assemblyDaily CycleSprint Planning MeetingPreparationDeliverableSprintsProduct IncrementUpdate Product BacklogSprint ReviewSprint Retro-spective16/03/2011Agile Development37
SprintsA sprint is…… a focused effort for a 2 (up to 4)-week period toward fixed goals… a 6-step cycleSprint Planning MeetingDaily CycleProduct IncrementSprint ReviewSprint RetrospectiveUpdate Product BacklogDaily CycleSprint Planning MeetingPreparationDeliverableSprintsProduct IncrementUpdate Product BacklogSprint ReviewSprint Retro-spective16/03/2011Agile Development38
Sprint Planning MeetingSelect functionalities to implementSnapshot of stories from Product BacklogRe-evaluateTime estimatesPrioritiesScopeOutputSprint BacklogSprint GoalDaily CycleSprint Planning MeetingPreparationDeliverableSprintsProduct IncrementUpdate Product BacklogSprint ReviewSprint Retro-spective16/03/2011Agile Development39
Daily CycleDaily ScrumBrief meeting (max. 15 min)Eliminate speed impedimentsDaily WorkPair ProgrammingContinuous TestingContinuous IntegrationRefactoringMeasuring Project VelocityDaily CycleSprint Planning MeetingPreparationDeliverableSprintsProduct IncrementUpdate Product BacklogSprint ReviewSprint Retro-spective16/03/2011Agile Development40
Daily CycleBurndown ChartVisual representation offinished and remainingstoriesSprint-levelProduct-levelDaily CycleSprint Planning MeetingPreparationDeliverableSprintsProduct IncrementUpdate Product BacklogSprint ReviewSprint Retro-spective16/03/2011Agile Development41
Product IncrementDemonstrationTo users and stakeholdersWorking softwareEvaluationProgress statusFeedbackDaily CycleSprint Planning MeetingPreparationDeliverableSprintsProduct IncrementUpdate Product BacklogSprint ReviewSprint Retro-spective16/03/2011Agile Development42
Sprint ReviewAssessment of project progressOn WHAT the team is buildingRequired adaptationsNext course to takeDaily CycleSprint Planning MeetingPreparationDeliverableSprintsProduct IncrementUpdate Product BacklogSprintReviewSprint Retro-spective16/03/2011Agile Development43
Sprint RetrospectiveMeeting about project progressOn HOW the team is buildingIncrease productivityKeep work enjoyableDaily CycleSprint Planning MeetingPreparationDeliverableSprintsProduct IncrementUpdate Product BacklogSprintReviewSprint Retro-spective16/03/2011Agile Development44
Update Product BacklogMeeting about project progressAdd new requirementsUpdate prioritiesDaily CycleSprint Planning MeetingPreparationDeliverableSprintsProduct IncrementUpdate Product BacklogSprintReviewSprint Retro-spective16/03/2011Agile Development45
DeliverableOffering the product owner visibilityDemonstrationFully functional ProductOffering adaptabilityFeedbackper sprintDaily CycleSprint Planning MeetingPreparationDeliverableSprintsProduct IncrementUpdate Product BacklogSprint ReviewSprint Retro-spective16/03/2011Agile Development46
Extreme programmingAgile Development
Extreme ProgrammingPair ProgrammingKISSContinuous TestingContinuous IntegrationContinuous Refactoring16/03/2011Agile Development48
Pair ProgrammingRules1 Keyboard2 ProgrammersTyping and tactically thinkingStrategically thinkingAdvantagesSame productivityHigher quality16/03/2011Agile Development49
KISSKeep it stupid/simpleOnly implement what’s required nowRefactor in the future16/03/2011Agile Development50
Continuous TestingAdvantagesDeterministically measuring progressPreventing defectsTest FirstWriting tests before actual codeUnit-level and acceptance-level16/03/2011Agile Development51
Continuous IntegrationRulesQuickly release codeHold onto changes for max. 1 dayEveryone works on the latest versionAdvantagesAvoiding and detecting compatibility issues earlyAvoiding diverging and fragmented development16/03/2011Agile Development52
Continuous RefactoringProblemsReadability of codeMaintainability of codeNavigating codeDesign correctness16/03/2011Agile Development53
Continuous RefactoringReadability of codeThe smell of codeDuplicate code smellLong method smellCode comments smell16/03/2011Agile Development54
Continuous RefactoringDuplicate code smellTextual levelConceptual levelLong method smellCode comments smellApologies for code that’s hard to readCode should be self-explanatoryComments should describe why, not what.16/03/2011Agile Development55
Continuous RefactoringMaintainability of codeThe smell of codeFeature envy code smellObject-oriented myopia code smellInappropriate intimacy code smellLazy class code smellContrived complexity code smell16/03/2011Agile Development56
Continuous RefactoringFeature envy code smellHighly coupled classesDelineation of logicObject-oriented myopia code smellFallacy of reuseInappropriate intimacy code smellEncapsulation16/03/2011Agile Development57
Continuous RefactoringLazy class code smellClasses that have little or nothing to doContrived complexity code smellUrge to use design patternsExtra complexity for the sake of complexity16/03/2011Agile Development58
Continuous RefactoringNavigating codeConventionsConsistencyNamingScopingIDEDiagrams16/03/2011Agile Development59
Continuous RefactoringDesign correctnessLiskov substitution principleSibling refactoringRefactor to one classComposition over inheritanceEvents over virtual methodsDelegation over inheritance16/03/2011Agile Development60
Continuous RefactoringSolutionsRemove redundancyRejuvenate obsolete designsExpress everything once and only onceAdvantagesAvoiding messy code and complexityCode is easier to understand and maintainLess time required to produce an improved system16/03/2011Agile Development61
Improving Extreme ProgrammingDisadvantages of XPPair programming in small teamsRefactoring over generic designImprovementsIncrease communication and integration speedLogging of documentation sourcesDeep analysis before coding is still a best practice16/03/2011Agile Development62
TOOLSAgile Development
ToolsAnalysisUML SoftwareIDE Plugin’sRound-trip engineering toolsScrum and Extreme ProgrammingTicketing softwareCode repositories with version controlTime registration software16/03/2011Agile Development64
AnalysisUML SoftwareVisual ParadigmMicrosoft VisioUmbrelloMS Visual Studio 201016/03/2011Agile Development65
Scrum and Extreme ProgrammingWeb-based front-endsAssemblaTracJiraRepositoriesSVNGITMercurialCVS16/03/2011Agile Development66
ConclusionAgile Development
ConclusionIterative processContinuous evolutionPlanningDevelopingRefactoringTestingIntegration16/03/2011Agile Development68
ConclusionVisibiltyAdaptability16/03/2011Agile Development69
ConclusionBusiness valueRisk16/03/2011Agile Development70
Q&AAgile Development
Q&A16/03/2011Agile Development72

Agile Development