Slide 1What will we learn?Iterative DevelopmentUnified Process (UP)Iterative MethodologyThe Iterative ProcessEmbrace ChangeIteration ConvergenceThe BenefitsWaterfall LifecycleExampleExampleSlide 13Agile Methods and AttitudesThe Agile PrinciplesThe Agile PrinciplesAgile ModelingA Clarification …UP – The Key PracticesUP PhasesUP PhasesThe UP DisciplinesSlide 23UP Disciplines and PhasesUP Development CaseMore on Agile MethodsWhen Do Agile Methods Work Best?Agile Development: SampleAgile Development: SampleAgile Development: SampleAgile Development: SampleThe Case Studies We Will Work WithThe Case StudiesCase One: The NextGen POS SystemCase Two: The Monopoly GameTakeaways from Chapter 2 - 3Next …Object-Oriented Analysis and DesignCHAPTER 2: ITERATIVE, EVOLUTIONARY, AND AGILECHAPTER 3: CASE STUDIESSLIDES: BY DR. SEMPER1What will we learn?We will learn what iterative development is, and why it worksWe will learn what Agile Modeling is, and how it works We will explore the Unified ProcessWe will contrast iterative (or evolutionary) development methods with sequential (i.e. Waterfall) methods2Iterative Development Suppose you were assigned to write a movie script for a company. They know what they want, in terms of what kind of movie, how long, setting, etc., but they need you to fill in the details. How would you do it? You could spend a lot of time talking to them, getting as much information as possible, and then write the script and send it to them and hope you nailed it …Risky: Chances of getting it all right are slim, and if you missed you need to go back and start making changes and edits, which can be complicated if you want the story line to work You could also start with a draft, and send the incomplete version to them for feedbackThey would understand that this is not finished, but just a draft. They provide feedback, you add more details, and the cycle continuesEventually, you end up with the finished product that is close to what they wanted This is how iterative development works3Unified Process (UP)A widely adopted process for building, deploying, and possibly maintaining software Flexible and open, can adopt practices from other methods such as ScrumWe will concentrate on Agile UPIterative and evolutionary development Development is organized into a series of short, fixed length mini-projects called iterations Note – emphasizes early programming and testing of partial systems, even before all requirements are finalized! Direct contrast to sequential methods (i.e. Waterfall), where coding is not started until the requirements phase is finished.Each iteration enlarges and refines the project, with continual feedback and adaption as the main drivers4Iterative MethodologyDoesn’t this contradict what we learned in Chapter 1 … analysis first, then design? We will see more on this throughout the course, but for now understand that iterative development does not simply mean “start coding”. There is analysis and design work first.Each iteration is fixed length, called timeboxedTypical iteration: Spend the first day analyzing the current state of the project, defining goals for the current iteration, and then working on design in small teamsThen teams work on implementing new code, testing, more design discussions, and conducting daily builds of partial system Usually involves demonstrations and evaluations with stakeholders (customers or customer reps)Also planning for next iteration – each iteration may involve analysis and design work5The Iterative Process6Requirements DesignImplementation &Test & Integration & More DesignFinal Integration & System TestRequirements Design3 weeks (for example)The system grows incrementally.Feedback from iteration N leads to refinement and adaptation of the requirements and design in iteration N+1.Iterations are fixed in length, or timeboxed.TimeImplementation &Test & Integration & More DesignFinal Integration & System TestEmbrace ChangeRather than try to “freeze” the requirements so code can be developed to rigid design, accept the fact that change will occur and use it in the development process Maybe the customer changes mind after seeing early partial system buildsThis has become very popular because it reflects the way the real world works Also, coding technology has enhanced code generation methodsOOA/OOD is critical to this approach, since having well defined objects makes it easier to add to or modify the systemNote that this does not mean there are no requirements, or that changes should be encouraged Beware of “feature creep” – we will see more later This is structured change, not chaos7Iteration Convergence8Early iterations are farther from the "true path" of the system. Via feedback and adaptation, the system converges towards the most appropriate requirements and design. In late iterations, a significant change in requirements is rare, but can occur. Such late changes may give an organization a competitive business advantage. one iteration of design, implement, integrate, and testThe BenefitsEarly feedback – invaluable!Better success rate for projects More likely that the customer will get what they want in the endIf process is properly executed, early mitigation (resolution) of high risks, rather than laterBy breaking the project into clearly defined iterations (cycles), the complexity is much more manageableDon’t need to solve the entire project first – no paralysis by analysisAgain, natural fit with OOA/OODConstant feedback and input from the customer improves the end product9Waterfall LifecycleProbably an attempt to apply standard product development methods to software Fully define requirements (and usually design) before codingWhy is Waterfall so prone to fail?Software development is not mass production – highly unlikely that all requirements are fully understood up frontRequirement are also not as stable as we would like, especially for large complex projectsChange Request process works, but can be cumbersome and slowNote it is possible to change requirements later in the project for Waterfall, but it is hard and slowTry to avoid combining this approach with an iterative approachDon’t try to identify all use cases or do complete OOA before coding can startSoftware design and implementation becomes more complex as understanding of the system increases10ExampleBefore first iteration, work with customer in a Requirements Workshop to identify a few critical Uses CasesHighest risk, most
View Full Document