Chapter 2 Iterative , Evolutionary, and Agile. 2.1 What is the UP? Are Other Methods Complementary? 2.2 What is Iterative and Evolutionary Development?

Slides:



Advertisements
Similar presentations
Basic SDLC Models.
Advertisements

Chapter 7: Software production process Refers to the activities that are used for building, delivering, deploying, and evolving a software product, from.
Unified process(UP) UP is an OO system development methodology offered by Rational(Rational Rose) s/w, now a part of IBM Developed by Booach,Rambaugh,Jacobson--
Iterative, Evolutionary, and Agile You should use iterative developmen only on projects that you want to succeed. - Martin Fowler.
Ninth Lecture Hour 8:30 – 9:20 pm, Thursday, September 13
1 Requirements and the Software Lifecycle The traditional software process models Waterfall model Spiral model The iterative approach Chapter 3.
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
Chapter 05: Evolutionary Requirements Definition : Requirements  “Requirements are capabilities and conditions to which the system, and more broadly.
CS487 Software Engineering Omar Aldawud
Objectives Explain the purpose and various phases of the traditional systems development life cycle (SDLC) Explain when to use an adaptive approach to.
Chapter 2. Iteration The most import aspect of OOA/D An agile practice vs waterfall – early and repeated programming, feedback, adaptation waterfall is.
MapleLeaf, LLC SDLC Methodology. MapleLeaf, LLC, has established standard phases and processes in regards to project management methodologies for planning.
Sharif University of Technology Session # 3.  Contents  Systems Analysis and Design Sharif University of Technology MIS (Management Information System),
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Object-Oriented Analysis and Design
NJIT From Inception to Elaboration Chapter 8 Applying UML and Patterns Craig Larman.
OO Development Process. UML and Process UML standardizes notation, not process –Increase likelihood of widespread acceptance There is significant variability.
Object-oriented Analysis and Design
1 CS 691z/791z Topics on Software Engineering CS 691z/791z Topics on Software Engineering Software Processes Based on Chapter 4 of the book [SE-8] Ian.
Iterative development and The Unified process
From Inception to Elaboration Chapter 8 Applying UML and Patterns -Craig Larman.
COMP 350: Object Oriented Analysis and Design Lecture 2
Objectives Explain the purpose and various phases of the traditional systems development life cycle (SDLC) Explain when to use an adaptive approach to.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Chapter 6 View Alignment Techniques and Method Customization (Part I) Object-Oriented Technology From Diagram to Code with Visual Paradigm for UML Curtis.
© 2005 Prentice Hall14-1 Stumpf and Teague Object-Oriented Systems Analysis and Design with UML.
UML - Development Process 1 Software Development Process Using UML (2)
Object-Oriented Analysis and Design Iterative Development and the Unified Process.
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
Chapter 2 The process Process, Methods, and Tools
Software Engineering 1 Object-oriented Analysis and Design Applying UML and Patterns An Introduction to Object-oriented Analysis and Design and Iterative.
-Nikhil Bhatia 28 th October What is RUP? Central Elements of RUP Project Lifecycle Phases Six Engineering Disciplines Three Supporting Disciplines.
Current Trends in Systems Develpment
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Chapter 1 Object-Oriented Analysis and Design. Disclaimer Slides come from a variety of sources: –Craig Larman-developed slides; author of this classic.
 CS 5380 Software Engineering Chapter 2 – Software Processes Chapter 2 Software Processes1.
Iterative development and The Unified process Chapter 2 Applying UML and Patterns -Craig Larman.
Object-oriented Analysis and Design Stages in a Software Project Requirements Writing Analysis Design Implementation System Integration and Testing Maintenance.
Jan 7, A UP project organizes the work and iterations across four major phases: – Inception -- approximate vision, business case, scope, vague estimates.
 Development is organized in a series of short, fixed-length mini-projects called iterations  Iterations are also incremental  Successive enlargement.
Chapter 2 Iterative, Evolutionary, and Agile You should use iterative development only on projects that you want to succeed. - Martin Fowler 1CS
Review of Software Process Models Review Class 1 Software Process Models CEN 4021 Class 2 – 01/12.
University of Toronto at Scarborough © Kersti Wain-Bantin CSCC40 other methodologies 1 Method/Process = step-by-step description of the steps involved.
Inception Chapter 4 Applying UML and Patterns -Craig Larman.
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
CSPC 464 Fall 2014 Son Nguyen. 1. The Process of Software Architecting, Peter Eeles, Peter Cripss 2. Software Architecture for Developers, Simon Brown.
Overview of RUP Lunch and Learn. Overview of RUP © 2008 Cardinal Solutions Group 2 Welcome  Introductions  What is your experience with RUP  What is.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Chapter 8: Iteration 1 - Basics.  We review here the requirements for first iteration of our case studies. They are a subset of the requirements as described.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Introduction Requirements and the Software Lifecycle (3)
Chapter 8. Iteration 1, Elaboration: book view differs from reality for pedagogical reasons not doing “risk-driven” up front uses many OOA/D skills should.
RUP RATIONAL UNIFIED PROCESS Behnam Akbari 06 Oct
Review of Definitions Software life cycle: –Set of activities and their relationships to each other to support the development of a software system Software.
Iterative development and The Unified process
TK2023 Object-Oriented Software Engineering
Object-oriented Analysis and Design
Process 4 Hours.
Software Engineering Process
Iterative and Agile Development
Chapter 1 OBJECT-ORIENTED ANALYSIS AND DESIGN
Unified Process Source & Courtesy: Jing Zou.
Unified Process (UP).
Introduction to Software Engineering
COMP 350: Object Oriented Analysis and Design Lecture 2
Other System Requirements
CSCI 360: Software Architecture & Design
Presentation transcript:

Chapter 2 Iterative , Evolutionary, and Agile

2.1 What is the UP? Are Other Methods Complementary? 2.2 What is Iterative and Evolutionary Development? 2.3 What About the Waterfall Lifecycle? 2.4 How to do Iterative and Evolutionary Analysis and Design? 2.5 What is Risk-Driven and Client-Driven Iterative Planning? 2.6 What are Agile Methods and Attitudes? 2.7 What is Agile Modeling?

2.8 What is an Agile UP? 2.9 Are There Other Critical UP Practices? 2.10 What are the UP Phases? 2.11 What are the UP Disciplines? 2.12 How to Customize the Process? The UP Development Case 2.13 You Know You Didn’t Understand Iterative Development or the UP When… 2.14 History 2.15 Recommended Resources

Introduction Iterative development lies at the heart of how OOA/D is best practiced and is presented in this book. Agile practices such as Agile Modeling are key to applying the UML in an effective way. This chapter introduces these subjects, and the Unified Process as a relatively popular sample iterative method.

Iterative and evolutionary development— contrasted with a sequential or “waterfall” lifecycle—involves early programming and testing of a partial system, in repeating cycles. It also normally assumes development starts before all the requirements are defined in detail; feedback is used to clarify and improve the evolving specifications.

We rely on short quick development steps, feedback, and adaptation to clarify the requirements and design. To contrast, waterfall values promoted big upfront speculative requirements and design steps before programming. Consistently, success/failure studies show that the waterfall is strongly associated with the highest failure rates for software projects, and the iterative methods are associated with higher success and productivity rates, and lower defect levels.

2.2 What is Iterative and Evolutionary Development? In this lifecycle approach, development is organized into a series of short, fixed- length(for example, three week) mini-projects called iterations; the outcome of each is a tested, integrated, and executable partial system. Each iteration includes its own requirements analysis, design, implementation, and testing activities.

The iterative lifecycle is based on the successive enlargement and refinement of a system through multiple iterations, with cyclic feedback and adaptation as core drivers to converge upon a suitable system. The system grows incrementally over time, iteration by iteration, and thus this approach is also known as iterative and incremental development. Because feedback and adaptation evolve the specifications and design, it is also known as iterative and evolutionary development.

Requirements Design Implementation & Test & Integration & More Design Final Integration & System Test Time Requirements Design Implementation & Test & Integration & More Design Final Integration & System Test 3 weeks (for example) Iterations are fixed in length, or timeboxed. Feedback from iteration N leads to refinement and adaptation of the requirements and design in iteration N+1. The system grows incrementally. Figure 2.1 Iterative and incremental development

The result of each iteration is an executable but incomplete system; it is not ready to deliver into production. The system may not be eligible for production deployment until after many iterations; for example, 10 or 15 iterations. The output of an iteration is not an experimental or throw-away prototype, and iterative development is not prototyping. Rather, the output is a production-grade subset of the final system.

How to Handle Change on an Iterative Project? Rather than fighting the inevitable change that occurs in software development by trying (usually unsuccessfully) to fully and correctly specify, freeze, and “sign off” on a frozen requirement set and design before implementation, iterative development is based on an attitude of embracing change and adaptation as unavoidable and indeed essential drivers.

Each iteration involves choosing a small subset of the requirements, and quickly designing, implementing, and testing. In early iterations the choice of requirements and design may not be exactly what is ultimately desired. But the act of swiftly taking a small step, before all requirements are finalized, or the entire design is speculatively defined, leads to rapid feedback—feedback from the users, developers, and tests.

Early 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, an 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 test Figure 2.2 Iterative feedback and adaptation leads towards the desired system. The requirements and design instability lowers over time.

Benefits of Iterative Development Less project failure, better productivity, and lower defect rates; shown by research into iterative methods early rather than late mitigation of high risks early visible progress early feedback, user engagement, and adaptation, leading to a refined system that more closely meets the real needs of the stakeholders managed complexity; the team is not overwhelmed by “analysis paralysis” or very long and complex steps the learning within an iteration can be methodically used to improve the development process itself, iteration by iteration

How Long Should an Iteration Be? What is Iteration Timeboxing? Most iterative methods recommends an iteration length between two and six weeks. Small steps, rapid feedback, and adaptation are central ideas in iterative development; long iterations subvert the core motivation for iterative development and increase project risk.Much less than two weeks, and it is difficult to complete sufficient work to get meaningful throughput and feedback; much more than six or eight weeks, and the complexity becomes rather overwhelming, and feedback is delayed.A very long iteration misses the point of iterative development. Short is good.

A key idea is that iterations are timeboxed, or fixed in length. For example, if the next iteration is chosen to be three weeks long, then the partial system must be integrated, tested, and stabilized by the scheduled date— date slippage is illegal. If it seems that it will be difficult to meet the deadline, the recommended response is to remove tasks or requirements from the iteration, and include them in a future iteration, rather than slip the completion date.

2.3 What About the Waterfall Lifecycle? In a waterfall lifecycle process there is an attempt to define all or most of the requirements before programming. And often, to create a thorough design before programming. Likewise, and attempt to define a “reliable” plan or schedule near the start—not that it will be.

Guideline: Don’t Let Waterfall Thinking Invade an Iterative or UP Project “Waterfall thinking” often incorrectly still invades a so-called iterative or UP project. Ideas such as “let’s write all the use cases before starting to program” or “let’s do many detailed OO models in UML before starting to program” are examples of unhealthy waterfall thinking incorrectly superimposed on the UP.

Fig.2.3 Percentage of change on software projects of varying sizes.

2.4 How to do Iterative and Evolutionary Analysis and Design? This introduction may have given the impression that there is no value in analysis and design before programming, but that is a misunderstanding as extreme as thinking that “complete” upfront analysis is skillful. There is a middle way. Here’s a short example of how it can work on a well-run Up project. This assumes there will ultimately be 20 iterations on the project before delivery.

2.5 What is Risk-Driven and Client- Driven Iterative Planning? The UP encourage a combination of risk- driven and client-driven iterative planning. This mean that the goals of the early iterations are chosen to 1)identify and drive down the highest risks, and 2)build visible features that the client cares most about.

2.6 What are Agile Methods and Attitudes? Agile development methods usually apply timeboxed iterative and evolutionary development, employ adaptive planning, promote incremental delivery, and include other values and practices that encourage agility—rapid and flexible response to change.

It is not possible to exactly define agile methods, as specific practices vary widely. However, short timeboxed iterations with evolutionary refinement of plans, requirements, and design is a basic practice the methods share. In additions, they promote practices and principles that reflect an agile sensibility of simplicity, lightness, communication, self-organizing teams, and more.

2.7 What is Agile Modeling? Agile modeling implies a number of practices and values, such as: ◎ The purpose of modeling and models is primarily to support understanding and communication, not documentation. ◎ Don’t model or apply the UML to all or most of the software design. Model and apply the UML for the smaller percentage of unusual, difficult, tricky parts of the design space.

2.9 Are There Other Critical UP Practices? Tackle high-risk and high-value issues in early iterations Continuously engage users for evaluation, feedback, and requirements Build a cohesive, core architecture in early iterations Continuously verify quality; test early, often, and realistically Apply use cases Model software visually(with the UML) Carefully manage requirements Practice change request and configuration management

2.10 What are the UP Phases ? A UP project organizes the work and iterations across four major phases: 1. Inception—approximate vision, business case, scope, vague estimates. 2. Elaboration—refined vision, iterative implementation of the core architecture, resolution of high risks, identification of most requirements and scope, more realistic estimates.

3. Construction—iterative implementation of the remaining lower risk and easier elements, and preparation for deployment. 4. Transition—beta tests, deployment.

Development cycle inc. elaboration construction transition iteration phase milestonerelease increment final production release An iteration endpoint when some significant decision or evaluation occurs. A stable executable subset of the final product. The end of each iteration is a minor release. Figure 2.6 Schedule-oriented terms in the UP The difference (delta) between the releases of 2 subsequent iterations. At this point, the system is released for production use.

2.11 What are the UP Disciplines? The UP describes work activities, such as writing a use case, within disciplines—a set of activities (and related artifacts) in one subject area, such as the activities within requirements analysis. In the UP, an artifact is the general term for any work product: code, Web graphics, database schema, text documents, diagrams, models, and so on.

There are several disciplines in the UP; this book focuses on some artifacts in the following three: Business Modeling—The Domain Model artifact, to visualize noteworthy concepts in the application domain.

Requirements—The Use-Case Model and Supplementary Specification artifacts to capture functional and non-functional requirements. Design—The Design Model artifact, to design the software objects.

In the UP, Implementation means programming and building the system, not deploying it. The Environment discipline refers to establishing the tools and customizing the process for the project—that is, setting up the tool and process environment.

Figure 2.7 UP disciplines Sample UP Disciplines Business Modeling Note that although an iteration includes work in most disciplines, the relative effort and emphasis change over time. This example is suggestive, not literal. Requirements Design Implementation Test Deployment Configuration&Cha nge Management Project Management Environment iterations A four-week iteration(for example)

Disciplines and Phases Relating disciplines to the UP phases, Figure 2.8 illustrates the changing relative effort with respect to the phases; please note these are suggestive, not literal. In elaboration, for example, the iterations tend to have a relatively high level of requirements and design work. During construction, the emphasis is heavier on implementation and lighter on requirements analysis.

Sample UP Disciplines Business Modeling Requirements Design Implementation elaboration construction transi- tion Incep- tion … … Figure 2.8 Disciplines and phases The relative effort in disciplines shifts across the phases. This example is suggestive, not literal.

Book Structure and UP Phases and Disciplines With respect to the phases and disciplines, what is the focus of the case study? The case study emphasizes the inception and elaboration phase. It focuses on some artifacts in the Business Modeling, Requirements, and Design disciplines, as this is where requirements analysis, OOA/D, patterns, and the UML are primarily applied.

The inception phase chapters introduce the basics of requirements analysis. Iteration 1 introduces fundamental OOA/D and how to assign responsibilities to objects. Iteration 2 focuses on object design, especially on introducing some high-use “design patterns”. Iteration 3 introduces a variety of subjects, such as architectural analysis and framework design.

Overview Inception Elaboration iteration1 Elaboration iteration1 Elaboration iteration2 Elaboration iteration2 Elaboration iteration3 Elaboration iteration3 Special Topics Special Topics The Book Object-Oriented Analysis Object-Oriented Analysis Object-Oriented Design Object-Oriented Design Translating Designs to Code Translating Designs to Code Topics such as OO analysis and OO design are incrementally introduced in iteration 1,2, and 3. Figure 2.6 Book organization is related to the UP phases and iterations

2.12 How to Customize the Process? The UP Development Case All activities and artifacts of UP are optional. The set of possible artifacts described in the UP should be viewed like a set of medicines in a pharmacy. Just as one does not indiscriminately take many medicines, but matches the choice to the ailment, likewise on a UP project, a team should select a small subset of artifacts that address its particular problems and needs.

Definition: What is the Development Case? The choice of practices and UP artifacts for a project may be written up in a short document called the Development Case( an artifact in the Environment discipline). For example, Table 2.1 could be the Development Case for the “NextGen Project” case study explored in this book.

2.13 You Know You Didn’t Understand the UP When… You think that inception = requirements, elaboration = design, and construction = implementation. You think that the purpose of elaboration is to fully and carefully define models, which are translated into code during construction. You try to define most of the requirements before starting design or implementation.

You try to define most of the design before starting implementation; you try to fully define and commit to an architecture before iterative programming and testing. A “long time” is spent doing requirements or design work before programming starts. You believe that a suitable iteration length is three months long, rather than three weeks long. You want believable plans and estimates for projects before the elaboration phase is finished.

You think UML diagramming and design activities are a time to fully and accurately define designs and models in great detail, and of programming as a simple mechanical translation of these into code. You think that adopting the UP means to do many of the possible activities and create many documents, and thinks of or experiences the UP as a formal, fussy process with many steps to be followed. You try to plan a project in detail from start to finish; you try to speculatively predict all the iterations, and what should happen in each one.