Ch17 Rapid SW Dev

download Ch17 Rapid SW Dev

of 46

Transcript of Ch17 Rapid SW Dev

  • 8/10/2019 Ch17 Rapid SW Dev

    1/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 1

    Rapid software development

  • 8/10/2019 Ch17 Rapid SW Dev

    2/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 2

    Objectives

    To explain how an iterative, incrementaldevelopment process leads to faster deliveryof more useful software

    To discuss the essence of agile developmentmethodsTo explain the principles and practices ofextreme programming

    To explain the roles of prototyping in thesoftware process

  • 8/10/2019 Ch17 Rapid SW Dev

    3/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 3

    Topics covered

    Agile methodsExtreme programmingRapid application developmentSoftware prototyping

  • 8/10/2019 Ch17 Rapid SW Dev

    4/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 4

    Rapid software development

    Because of rapidly changing businessenvironments, businesses have to respondto new opportunities and competition.

    This requires software and rapiddevelopment and delivery often to be themost critical requirement for softwaresystems.

    Businesses may be willing to accept lowerquality software if rapid delivery of essentialfunctionality is possible.

  • 8/10/2019 Ch17 Rapid SW Dev

    5/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 5

    Requirements

    Because of the changing environment, it isoften impossible to arrive at a stable,consistent set of system requirements.

    Therefore a waterfall model of developmentis impractical and an approach todevelopment based on iterative specificationand delivery is the only way to deliversoftware quickly.

  • 8/10/2019 Ch17 Rapid SW Dev

    6/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 6

    Characteristics of RAD processes

    The processes of specification, design andimplementation are concurrent. There is no detailedspecification and design documentation isminimised.The system is developed in a series of increments.End users evaluate each increment and makeproposals for later increments.System user interfaces are usually developed usingan interactive development system.

  • 8/10/2019 Ch17 Rapid SW Dev

    7/46Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 7

    An iterative development process

  • 8/10/2019 Ch17 Rapid SW Dev

    8/46Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 8

    Advantages of incremental development

    Accelerated delivery of customer services .Each increment delivers the highest priorityfunctionality to the customer.

    User engagement with the system . Usershave to be involved in the developmentwhich means the system is more likely tomeet their requirements and the users aremore committed to the system.

  • 8/10/2019 Ch17 Rapid SW Dev

    9/46

  • 8/10/2019 Ch17 Rapid SW Dev

    10/46Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 10

    Problems with incrementaldevelopment (cont.)

    Validation problems Without a specification, what is the system

    being tested against?

    Maintenance problems Continual change tends to corrupt software

    structure making it more expensive to changeand evolve to meet new requirements.

  • 8/10/2019 Ch17 Rapid SW Dev

    11/46Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 11

    Prototyping

    For some large systems, incrementaliterative development and delivery may beimpractical; this is especially true when

    multiple teams are working on different sites.Prototyping, where an experimental systemis developed as a basis for formulating therequirements may be used. This system isthrown away when the system specificationhas been agreed.

  • 8/10/2019 Ch17 Rapid SW Dev

    12/46Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 12

    Incremental development andprototyping

  • 8/10/2019 Ch17 Rapid SW Dev

    13/46Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 13

    Conflicting objectives

    The objective of incremental development isto deliver a working system to end-users.The development starts with those

    requirements which are best understood.The objective of throw-away prototyping is tovalidate or derive the system requirements.The prototyping process starts with thoserequirements which are poorly understood.

  • 8/10/2019 Ch17 Rapid SW Dev

    14/46Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 14

    Agile methods

    Dissatisfaction with the overheads involved in designmethods has led to the creation of agile methods.These methods:

    Focus on the code rather than the design; Are based on an iterative approach to software

    development; Are intended to deliver working software quickly and

    evolve this quickly to meet changing requirements.

    Agile methods are probably best suited tosmall/medium-sized business systems or PCproducts.

  • 8/10/2019 Ch17 Rapid SW Dev

    15/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 15

    Principles of agile methods

  • 8/10/2019 Ch17 Rapid SW Dev

    16/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 16

    Problems with agile methods

    It can be difficult to keep the interest of customerswho are involved in the process. Pressures from job;represent all stateholders.

    Team members may be unsuited to the intenseinvolvement that characterises agile methods.Prioritising changes can be difficult where there aremultiple stakeholders.

    Maintaining simplicity requires extra work.Contracts may be a problem as with otherapproaches to iterative development.

  • 8/10/2019 Ch17 Rapid SW Dev

    17/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 17

    Extreme programming

    Perhaps the best-known and most widelyused agile method.Extreme Programming (XP) takes an

    extreme approach to iterative development. New versions may be built several times perday;

    Increments are delivered to customers every 2weeks;

    All tests must be run for every build and thebuild is only accepted if tests run successfully.

  • 8/10/2019 Ch17 Rapid SW Dev

    18/46

  • 8/10/2019 Ch17 Rapid SW Dev

    19/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 19

    Extreme programming practices 1

  • 8/10/2019 Ch17 Rapid SW Dev

    20/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 20

    Extreme programming practices 2

  • 8/10/2019 Ch17 Rapid SW Dev

    21/46

  • 8/10/2019 Ch17 Rapid SW Dev

    22/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 22

    Requirements scenarios

    In XP, user requirements are expressed asscenarios or user stories.These are written on cards and thedevelopment team break them down intoimplementation tasks. These tasks are thebasis of schedule and cost estimates.

    The customer chooses the stories forinclusion in the next release based on theirpriorities and the schedule estimates.

  • 8/10/2019 Ch17 Rapid SW Dev

    23/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 23

    Story card for document downloading

  • 8/10/2019 Ch17 Rapid SW Dev

    24/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 24

    XP and change

    Conventional wisdom in softwareengineering is to design for change. It isworth spending time and effort anticipatingchanges as this reduces costs later in the lifecycle.XP, however, maintains that this is notworthwhile as changes cannot be reliably

    anticipated.Rather, it proposes constant codeimprovement (refactoring) to make changeseasier when they have to be implemented.

  • 8/10/2019 Ch17 Rapid SW Dev

    25/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 25

    Testing in XP

    Test-first development.Incremental test development fromscenarios.User involvement in test development andvalidation.

    Automated test harnesses are used to run all

    component tests each time that a newrelease is built.

  • 8/10/2019 Ch17 Rapid SW Dev

    26/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 26

    Task cards for document downloading

    Task 1: Implement principal workf low

    Task 2: Implement article catalog and selection

    Task 3: Implement payment collection

    Payment may be made in 3 different ways. The user selects which way they wish to pay. If the user has a library subscription, then they can input thesubscriber key which should be checked by thesystem. Alternatively, they can input an organisationalaccount number . If this is valid, a debit of the costof the article is posted to this account. Finally, theymay input a 16 digit credit card number and expirydate. This should be checked for validity and, if valid a debit i s posted to that credit card account.

  • 8/10/2019 Ch17 Rapid SW Dev

    27/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 27

    Test case description

  • 8/10/2019 Ch17 Rapid SW Dev

    28/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 28

    Test-first development

    Writing tests before code clarifies therequirements to be implemented.Tests are written as programs rather than

    data so that they can be executedautomatically. The test includes a check thatit has executed correctly.

    All previous and new tests are automatically

    run when new functionality is added. Thuschecking that the new functionality has notintroduced errors.

  • 8/10/2019 Ch17 Rapid SW Dev

    29/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 29

    Pair programming

    In XP, programmers work in pairs, sitting together todevelop code.This helps develop common ownership of code andspreads knowledge across the team.It serves as an informal review process as each lineof code is looked at by more than 1 person.It encourages refactoring as the whole team canbenefit from this.

    Measurements suggest that developmentproductivity with pair programming is similar to thatof two people working independently.

  • 8/10/2019 Ch17 Rapid SW Dev

    30/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 30

    Rapid application development

    Agile methods have received a lot ofattention but other approaches to rapidapplication development have been used for

    many years.These are designed to develop data-intensive business applications and rely onprogramming and presenting informationfrom a database.

  • 8/10/2019 Ch17 Rapid SW Dev

    31/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 31

    RAD environment tools

    Database programming languageInterface generatorLinks to office applicationsReport generators

  • 8/10/2019 Ch17 Rapid SW Dev

    32/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 32

    A RAD environment

  • 8/10/2019 Ch17 Rapid SW Dev

    33/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 33

    Interface generation

    Many applications are based around complex formsand developing these forms manually is a time-consuming activity.RAD environments include support for screengeneration including:

    Interactive form definition using drag and droptechniques;

    Form linking where the sequence of forms to be

    presented is specified; Form verification where allowed ranges in form fields is

    defined.

  • 8/10/2019 Ch17 Rapid SW Dev

    34/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 34

    Visual programming

    Scripting languages such as Visual Basicsupport visual programming where theprototype is developed by creating a user

    interface from standard items andassociating components with these items

    A large library of components exists tosupport this type of developmentThese may be tailored to suit the specificapplication requirements

  • 8/10/2019 Ch17 Rapid SW Dev

    35/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 35

    Visual programming with reuse

  • 8/10/2019 Ch17 Rapid SW Dev

    36/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 36

    Problems with visual development

    Difficult to coordinate team-baseddevelopment.No explicit system architecture.Complex dependencies between parts of theprogram can cause maintainability problems.

  • 8/10/2019 Ch17 Rapid SW Dev

    37/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 37

    COTS reuse

    An effective approach to rapid developmentis to configure and link existing off the shelfsystems.

    For example, a requirements managementsystem could be built by using: A database to store requirements; A word processor to capture requirements and

    format reports; A spreadsheet for traceability management;

  • 8/10/2019 Ch17 Rapid SW Dev

    38/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 38

    Compound documents

    For some applications, a prototype can be createdby developing a compound document.This is a document with active elements (such as aspreadsheet) that allow user computations.Each active element has an associated applicationwhich is invoked when that element is selected.The document itself is the integrator for the differentapplications.

  • 8/10/2019 Ch17 Rapid SW Dev

    39/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 39

    Application linking

  • 8/10/2019 Ch17 Rapid SW Dev

    40/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 40

    Software prototyping

    A prototype is an initial version of a systemused to demonstrate concepts and try outdesign options.

    A prototype can be used in: The requirements engineering process to help

    with requirements elicitation and validation; In design processes to explore options and

    develop a UI design; In the testing process to run back-to-back tests.

  • 8/10/2019 Ch17 Rapid SW Dev

    41/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 41

    Benefits of prototyping

    Improved system usability. A closer match to users real needs. Improved design quality.Improved maintainability.Reduced development effort.

  • 8/10/2019 Ch17 Rapid SW Dev

    42/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 42

    Back to back testing

  • 8/10/2019 Ch17 Rapid SW Dev

    43/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 43

    The prototyping process

  • 8/10/2019 Ch17 Rapid SW Dev

    44/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 44

    Throw-away prototypes

    Prototypes should be discarded afterdevelopment as they are not a good basisfor a production system: It may be impossible to tune the system to meet

    non-functional requirements; Prototypes are normally undocumented; The prototype structure is usually degraded

    through rapid change; The prototype probably will not meet normal

    organisational quality standards.

  • 8/10/2019 Ch17 Rapid SW Dev

    45/46

    Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 45

    Key points

    An iterative approach to software development leadsto faster delivery of software.

    Agile methods are iterative development methodsthat aim to reduce development overhead and so

    produce software faster.Extreme programming includes practices such assystematic testing, continuous improvement andcustomer involvement.The approach to testing in XP is a particular strengthwhere executable tests are developed before thecode is written.

  • 8/10/2019 Ch17 Rapid SW Dev

    46/46

    Key points

    Rapid application development environmentsinclude database programming languages,form generation tools and links to officeapplications.

    A throw-away prototype is used to explorerequirements and design options.When implementing a throw-away prototype,

    start with the requirements you leastunderstand; in incremental development,start with the best-understood requirements.