Agile principles for Rapid software development

rapid application development software download and rapid application development software tools and rapid development taming wild software schedules
Dr.ShaneMatts Profile Pic
Dr.ShaneMatts,United States,Teacher
Published Date:23-07-2017
Your Website URL(Optional)
Comment
Chapter 17/16.4 Rapid Software Development / Prototyping ©Ian Sommerville 2000 Software Engineering. Chapter 17/16.4 Slide 1Objectives  To explain how an iterative, incremental development process can lead to faster delivery of more useful software  To discuss the essence of agile develop- ment methods  To explain the principles and practices of extreme programming (Cont’d) ©Ian Sommerville 2000 Software Engineering. Chapter 17/16.4 Slide 2Objectives (cont'd)  To explain the roles of prototyping in the software process  To explain the need for user interface prototyping (16.4) ©Ian Sommerville 2000 Software Engineering. Chapter 17/16.4 Slide 3Topics covered  Rapid Software Development  Incremental software development  Agile methods  Extreme programming  Other rapid development approaches: RAD environments, visual programming, software reuse  Software prototyping ©Ian Sommerville 2000 Software Engineering. Chapter 17/16.4 Slide 4Rapid Software Development ©Ian Sommerville 2000 Software Engineering. Chapter 17/16.4 Slide 5Rationale for rapid software development  Quickly changing global markets mean businesses must be responsive to new opportunities and competition.  Thus, rapid development and delivery is often the most critical requirement.  Businesses may even be willing to accept lower quality if rapid delivery of essential functionality is possible. ©Ian Sommerville 2000 Software Engineering. Chapter 17/16.4 Slide 6Requirements instability  Being responsive to changing environments = coping with unstable requirements.  In many such cases:  a waterfall model of development is impractical  evolutionary development based on iterative specification and delivery is the only way to deliver software quickly. ©Ian Sommerville 2000 Software Engineering. Chapter 17/16.4 Slide 7Characteristics of rapid development processes  Processes of specification, design and implementation are concurrent.  No detailed specification and design documentation is minimal.  System may be developed as a series of stand-alone increments. (Users evaluate increments and make proposals for later increments.) – introduced in Chap 4. If this is not practical, a “throw-away prototyping” approach may be employed. ©Ian Sommerville 2000 Software Engineering. Chapter 17/16.4 Slide 8Incremental Software Development ©Ian Sommerville 2000 Software Engineering. Chapter 17/16.4 Slide 9“Incremental Software Development” ©Ian Sommerville 2000 Software Engineering. Chapter 17/16.4 Slide 10Advantages of incremental software development  Accelerated delivery of high-priority customer services.  Each increment incorporates the (next) highest priority functionality.  More user involvement in development.  System is more likely to meet requirements and users are more committed to system success. Note: Sommerville sometimes uses the term exploratory development for incremental software development. ©Ian Sommerville 2000 Software Engineering. Chapter 17/16.4 Slide 11Problems with iterative development and incremental delivery (= “incremental development”)  Management problems  Progress can be hard to assess (lack of poor process visibility regular deliverables).  May require unfamiliar technologies or special skills.  Contractual problems  Normal contractual model requires a requirements specification. (Cont’d) ©Ian Sommerville 2000 Software Engineering. Chapter 17/16.4 Slide 12Problems with iterative development and incremental delivery (cont'd)  V&V problems  Without a specification, what is the system being tested against?  Maintenance problems  Continual change tends to corrupt software structure.  Documentation is lacking.  And recall: it may be difficult to partition requirements into stand-alone increments. (Cont’d) ©Ian Sommerville 2000 Software Engineering. Chapter 17/16.4 Slide 13Problems with iterative development and incremental delivery (cont'd)  For some large systems, evolutionary / incremental development may be impractical…  when multiple teams are working at different sites  when high reliability or safety is required  when maintainability is paramount (Cont’d) ©Ian Sommerville 2000 Software Engineering. Chapter 17/16.4 Slide 14Problems with iterative development and incremental delivery (cont'd)  In such cases, throw-away prototyping, where an experimental system is developed as a basis for formulating the requirements may be used.  This system is “thrown away” when the requirements have been validated.  We consider throw-away and other types of prototyping in detail later… ©Ian Sommerville 2000 Software Engineering. Chapter 17/16.4 Slide 15Sommerville’s sometimes confusing RSD-related terminology  Two types of Evolutionary Development: (from Chap 4) 1. Throw-Away Prototyping 2. Exploratory Development , aka: (from Chap 17) a. iterative software development b. iterative development and incremental delivery,  Recall that in Chap 4, the term incremental delivery (used alone) was described as an “in-between approach that combines the advantages” of the waterfall model and evolutionary development. ©Ian Sommerville 2000 Software Engineering. Chapter 17/16.4 Slide 16Agile Methods ©Ian Sommerville 2000 Software Engineering. Chapter 17/16.4 Slide 17Agile methods for evolutionary / incremental development  Dissatisfaction with overhead of waterfall method led to creation of agile methods. They:  Focus on code rather than the design;  Are based on iterative development;  Are intended to deliver working software quickly which can evolve quickly to meet changing requirements. See: www.agilealliance.org ©Ian Sommerville 2000 Software Engineering. Chapter 17/16.4 Slide 18Principles of agile methods Principle Description Customer involvement The customer should be closely involved throughout the development process. Their role is provide and prioritise 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 recognised and exploited. The team should be left to develop their own ways of working without prescriptive processes. Embrace change Expect the system requirements to change and design the system so that it can accommodate these changes. Maintain simplicity Focus on simplicity in both the software being developed and in the development process used. Wherever possible, actively work to eliminate complexity from the system. ©Ian Sommerville 2000 Software Engineering. Chapter 17/16.4 Slide 19Problems with agile methods  Can be difficult to keep the interest of customers who are involved in the process.  Team members may be unsuited to the intense involvement that characterizes agile methods.  Prioritizing changes can be difficult where there are multiple stakeholders. (Cont’d) ©Ian Sommerville 2000 Software Engineering. Chapter 17/16.4 Slide 20