<<

prototyping

z A is an initial version of a system used to demonstrate concepts and try out Rapid design options.

z A prototype can be used in: • The 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.

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

Benefits of prototyping The prototyping process

z Improved system usability.

z A closer match to users’ real needs.

z Improved design quality.

z Improved maintainability.

z Reduced development effort.

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

Characteristics of RAD processes Incremental development and prototyping

z The processes of specification, design and implementation are concurrent. There is no detailed specification and design documentation is minimised.

z The system is developed in a series of increments. End users evaluate each increment and make proposals for later increments.

z System user interfaces are usually developed using an interactive development system.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 5 ©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 6 Conflicting objectives Agile methods

z The objective of incremental development is z Dissatisfaction with the overheads involved in design to deliver a working system to end-users. methods led to the creation of agile methods. These The development starts with those methods: • Focus on the code rather than the design; requirements which are best understood. • Are based on an iterative approach to software z The objective of throw-away prototyping is to development; validate or derive the system requirements. • Are intended to deliver working software quickly and evolve this quickly to meet changing requirements. The prototyping process starts with those z Agile methods are probably best suited to requirements which are poorly understood. small/medium-sized business systems or PC products.

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

Principles of agile methods Problems with agile methods

z It can be difficult to keep the interest of customers Principle Description who are involved in the process. Customer involvement The customer should be closely involved throughout the development process. Their role is provide and prioritise new z Team members may be unsuited to the intense system requirements and to evaluate the iterations of the system. involvement that characterises agile methods. Incremental delivery The software is developed in increments with the customer specifying the requirements to be included in each increment. z Prioritising changes can be difficult where there are People not process The skills of the development team should be recognised and multiple stakeholders. exploited. The team should be left to develop their own ways of working without prescriptive processes. z Maintaining simplicity requires extra work.

Embrace change Expect the system requirements to change and design the system z Contracts may be a problem as with other so that it can accommodate these changes. approaches to iterative development. 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 2004 Software Engineering, 7th edition. Chapter 17 Slide 9 ©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 10

Extreme programming The XP release cycle

z Perhaps the best-known and most widely used agile method.

z (XP) takes an ‘extreme’ approach to iterative development. • New versions may be built several times per day; • Increments are delivered to customers every 2 weeks; • All tests must be run for every build and the build is only accepted if tests run successfully.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 11 ©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 12 Extreme programming practices 1 Extreme programming practices 2

Incremental planning Requirements are recorded on Story Cards and the Stories to be Pair Programming Developers work in pairs, checking each otherÕs work and included in a release are determined by the time available and providing the support to always do a good job. their relative priority. The developers break these Stories into Collective Ownership The pairs of developers work on all areas of the system, so that development ŌTasksÕ. no islands of expertise develop and all the developers own all the Small Releases The minimal useful set of functionality that provides business code. Anyon e can change anything. value is developed first. Releases of the system are frequent and As soon as work on a task is complete it is integrated into the incrementally add functionality to the first release. whole system. After any such integration, all the unit tests in the system must pass. Simple Design Enough design is carried out to meet the current requirements and no more. Sustainable pace Large amounts of over-time are not considered acceptable as the net effect is often to reduce code qua lity and medium term Test first development An automated unit test framework is used to write tests for a new productivity piece of functionality before that functionality itself is implemented. On-site Customer A representative of the end-user of the system (the Customer) should be available full time for the use of the XP team. In an Refactoring All developers are expected to refactor the code con tinuously as extreme programming process, the customer is a member of the soon as possible code improvements are found. This keeps the development team and is responsible for bringing system code simple and maintainable. requirements to the team for implementation.

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

XP and agile principles Requirements scenarios

z Incremental development is supported through z In XP, user requirements are expressed as small, frequent system releases. scenarios or user stories. z Customer involvement means full-time customer z These are written on cards and the engagement with the team. development team break them down into z People not process through pair programming, collective ownership and a process that avoids long implementation tasks. These tasks are the working hours. basis of schedule and cost estimates.

z Change supported through regular system releases. z The customer chooses the stories for

z Maintaining simplicity through constant refactoring of inclusion in the next release based on their code. priorities and the schedule estimates.

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

Story card for document downloading XP and change

z Conventional wisdom in software engineering is to design for change. It is worth spending time and effort anticipating changes as this reduces costs later in the life cycle.

z XP, however, maintains that this is not worthwhile as changes cannot be reliably anticipated.

z Rather, it proposes constant code improvement (refactoring) to make changes easier when they have to be implemented.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 17 ©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 18 Testing in XP Task cards for document downloading

z Test-first development.

z Incremental test development from scenarios.

z User involvement in test development and validation.

z Automated test harnesses are used to run all component tests each time that a new release is built.

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

Test case description Test-first development

z Writing tests before code clarifies the requirements to be implemented.

z Tests are written as programs rather than data so that they can be executed automatically. The test includes a check that it has executed correctly.

z All previous and new tests are automatically run when new functionality is added. Thus checking that the new functionality has not introduced errors.

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

Pair programming COTS reuse

z In XP, programmers work in pairs, sitting together to z An effective approach to rapid development develop code. is to configure and link existing off the shelf z This helps develop common ownership of code and spreads knowledge across the team. systems.

z It serves as an informal review process as each line z For example, a requirements management of code is looked at by more than 1 person. system could be built by using: z It encourages refactoring as the whole team can • A database to store requirements; benefit from this. • A word processor to capture requirements and z Measurements suggest that development productivity with pair programming is similar to that format reports; of two people working independently. • A spreadsheet for traceability management;

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