F28SD2 Software Design Overview of Software Processes Monica Farrow EM G30 Material available on...

42
F28SD2 Software Design Overview of Software Processes Monica Farrow EM G30 [email protected] Material available on Vision

description

01/13/09F28SD Software Design3 The software process The software process is : A structured set of the activities required to develop a software system Specification; Design; Validation; Evolution.Sommerville A framework for the tasks that are required to build high-quality software Pressman A process defines who is doing what, when and how to reach a certain goal Jacobson, Booch, Rumbaugh

Transcript of F28SD2 Software Design Overview of Software Processes Monica Farrow EM G30 Material available on...

F28SD2 Software Design

Overview of Software Processes

Monica Farrow

EM G30 [email protected] available on Vision

01/13/09 F28SD Software Design 2

Introduction to the module In this module we start to look at the

development of software engineering projects, initially focussing on design Software processes – an overview - today Architectural, functional and object-oriented

design Unified Modelling Language

Industry standard for object-oriented modelling Verification and validation Testing (CS students) Feasibility studies (IS students) Looking ahead

01/13/09 F28SD Software Design 3

The software process The software process is :

A structured set of the activities required to develop a software system

Specification; Design; Validation; Evolution. Sommerville

A framework for the tasks that are required to build high-quality software Pressman

A process defines who is doing what, when and how to reach a certain goal Jacobson, Booch, Rumbaugh

01/13/09 F28SD Software Design 4

Software engineering Software engineering encompasses

software processes as well as the associated technologies – technical methods and automated tools.

The software engineering module in 3rd year continues the study of the processes and technologies

01/13/09 F28SD Software Design 5

Essential difficulties of software engineering

In 1987 Fred Brooks published a paper “No Silver Bullet”, in which he stated that building software will always be hard because of Complexity.

Each project is different to the last, with large numbers of statements. It’s not like designing one car and building lots of them.

Simplified models lose some essential properties of the project.

Leads to problems in communication and management

And....

01/13/09 F28SD Software Design 6

Essential difficulties of software engineering

Conformity Software must conform to existing systems and

legislation. Changeability

External causes dictate the need for change, or people discover new uses for the product

Invisibility Software cannot be visualised. Although diagrams can

be drawn, it is not possible to show all aspects simultaneously.

This paper has been much discussed, but these essential difficulties remain.

01/13/09 F28SD Software Design 7

Problems with software systems Dec 2008 Department for Transport

“the computer system was inadequately procured and tested, and that staff do not trust it”

Connecting for Health Electronic records for every patient. 2yrs behind

schedule, costs twice as much as originally planned.

Student Loans 2004 New system could not cope with volume of

enquiries Ministry of Defence 1990s

£34 billion spent on a system which was never used (too incompatible)

01/13/09 F28SD Software Design 8

Process improvement The desire for improvement of process has

led to a number of models of the software construction process.

Most divide it into stages or phases, with a notion of progress towards a satisfactory

product and feedback and iteration to improve or correct at

each stage. The most famous of these is the waterfall

lifecycle model originally proposed by Royce.

01/13/09 F28SD Software Design 9

Waterfall process modelRequirements capture

System and software design

Implementation and unit testing Integration

and system testing

Operation and maintenance

You’ll find slightly differentversions elsewhere.

01/13/09 F28SD Software Design 10

Waterfall comments Had its roots in 1970s when we felt an engineering

discipline was vital to developing software. When Royce proposed it he didn’t call it waterfall and it had

feedback loops in it to encourage his visionary notion of “do it twice”, later echoed by Brooks.

Accountants love waterfall without loops as it provides clear contractual milestones and deliverables to hold people accountable against.

Projects are seldom so clear-cut and linear. Most require some iteration. W/Fall is often modified

with arrows back to any stage to show this.

01/13/09 F28SD Software Design 11

Waterfall criticisms It’s usually late in the project before a working

version is available for user to test and criticise. Misunderstandings are not discovered until nearly

complete and the problems are expensive to fix. The earlier an issue is identified, the smaller the

cost. Errors detected in testing phase may be 50 times

more costly to fix than if they were detected during requirements or design phases.

However, the modified version is useful when the requirements are well-understood and are unlikely to change radically during development

01/13/09 F28SD Software Design 12

Project costs For conventional projects,

typically 2% of budget is spent on

requirements, 4% on specification, 1% on planning, 6% on design, 20% on implementation, and 67% on maintenance

including correction of defects (11%).

RequirementsSpecificationPlanningDesignImplementationMaintenance

01/13/09 F28SD Software Design 13

Generic software process models The waterfall model

Separate and distinct phases of specification and development.

Evolutionary development Specification, development and validation are

interleaved. Component-based software engineering

The system is assembled from existing components.

There are many variants of these models

01/13/09 F28SD Software Design 14

The Role of Prototyping Engineers frequently build working models,

or prototypes to help them understand clients' requirements and jointly explore possible solutions. Here is a prototype

for a fold-out mobile phone,to enable easy video-watching

8 Jan 2009

01/13/09 F28SD Software Design 15

The Role of Prototyping The problems faced by software engineers are no

less complex than the problems faced by other engineers

So prototypes enable software engineers to understand the problem domain and the user requirements

Prototypes imply user involvement, evaluation, feedback and iteration in the development process

As communication between the engineers and the users improves, a better understanding of user requirements and technological constraints is achieved.

01/13/09 F28SD Software Design 16

Evolutionary development 2 fundamental types

Exploratory development Work with the customer Develop well understood sections Evolve by adding in new features

Throwaway prototyping Experiment with poorly understand customer

requirements Prototypes may not evolve into final system

Difficult to measure progress Systems can be poorly structured More suitable for small projects A mix of approaches works best.

01/13/09 F28SD Software Design 17

Component-based software engineering

Based on systematic reuse where systems are integrated from existing components or COTS (Commercial-off-the-shelf) systems.

Process stages Component analysis; Requirements modification; System design with reuse; Development and integration.

This approach is becoming increasingly used as component standards have emerged.

01/13/09 F28SD Software Design 18

Process iteration System requirements ALWAYS evolve in

the course of a project so process iteration, where earlier stages are reworked, is always part of the process for large systems.

Iteration can be applied to any of the generic process models.

Two (related) approaches Incremental delivery; Spiral development.

01/13/09 F28SD Software Design 19

The “Hanging Rope” Analogy

Iterative Delivery

Waterfall

Quality

Time

01/13/09 F28SD Software Design 20

Incremental delivery Rather than deliver the system as a single

delivery, the development and delivery is broken down into increments with each increment delivering part of the required functionality.

User requirements are prioritised and the highest priority requirements are included in early increments.

Once the development of an increment is started, the requirements are frozen though requirements for later increments can continue to evolve.

01/13/09 F28SD Software Design 21

Incremental development advantages

Customer value can be delivered with each increment so system functionality is available earlier.

Early increments act as a prototype to help elicit requirements for later increments.

Lower risk of overall project failure. The highest priority system services tend

to receive the most testing.

01/13/09 F28SD Software Design 22

Boehm’s spiral model

01/13/09 F28SD Software Design 23

BOEHM'S Spiral Model

Demonstrates incremental development and delivery, iteration, evaluation and feedback

The project moves continually from planning of the next increment, to risk assessment, through implementation and evaluation.

PM can terminate project at any point, while ensuring that the user gains some benefit from each increment.

01/13/09 F28SD Software Design 24

BOEHM'S Spiral Model

Focuses on prototyping and formalises an evolutionary approach to software development

Requires an explicit risk analysis during each cycle.

User involvement throughout the development process.

Validation and prioritisation of requirements. Tends to work best for small projects.

01/13/09 F28SD Software Design 25

Rapid Application Development The Rapid Application Development (RAD)

process was initiated in the 1990s for projects with a rapidly changing business environment, where it is often impossible to arrive at a stable, consistent set of system requirements.

In these cases, a waterfall model of development is impractical. An approach to development based on iterative specification and delivery is the only way to deliver software quickly.

01/13/09 F28SD Software Design 26

Characteristics of RAD processes The processes of specification, design and

implementation are concurrent. There is no detailed specification and design documentation is minimised.

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

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

01/13/09 F28SD Software Design 27

Advantages of incremental development

Accelerated delivery of customer services. Each increment delivers the highest priority

functionality to the customer.

User engagement with the system. Users have to be involved in the

development which means the system is more likely to meet their requirements and the users are more committed to the system.

01/13/09 F28SD Software Design 28

Problems with incremental development

Management problems Progress can be hard to judge and problems hard to find

because there is no documentation to demonstrate what has been done.

Contractual problems The normal contract may include a specification; without

a specification, different forms of contract have to be used.

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 change and evolve to meet new requirements.

01/13/09 F28SD Software Design 29

Agile methods Dissatisfaction with the overheads

involved in design methods led to the creation of ‘agile’ methods. These methods : Focus on the code rather than the design;

feedback from people rather than planning Are based on an iterative approach to software

development; Are intended to deliver working software

quickly and evolve this quickly to meet changing requirements.

01/13/09 F28SD Software Design 30

Agile methods Agile methods are probably best suited to

small/medium-sized business systems or PC products.

There are several different agile methods, of which Extreme Programming (XP) is one of the best known.

01/13/09 F28SD Software Design 31

Extreme programming Takes iterative development to extreme

lengths Fast production of code in an efficient and

intense manner that also allows changes in requirements to be quickly reflected in the system.

Emphasis on speed and simplicity Uses Test Driven Development

Writes tests first then code Uses pair programming Involves constant refactoring of the code Customer is deeply involved

01/13/09 F28SD Software Design 32

Key points so far Software processes are the activities

involved in producing and evolving a software system.

General activities are specification, design and implementation, validation and evolution.

Generic process models describe the organisation of software processes. Examples include the waterfall model, evolutionary development and component-based software engineering.

01/13/09 F28SD Software Design 33

Key points so far Iterative process models describe the

software process as a cycle of activities. Rapid Application Development, including

Agile processes, have concurrent specification, design and implementation.

There is no ideal process model. Choice varies according to the type of application and the people involved.

These notes mostly from Sommerville SE8 ch 4 & ch 17

01/13/09 F28SD Software Design 34

Information Systems lifecycle We have seen various types of software lifecycle

Waterfall, spiral, agile... These

concentrate on design and implementation of a software system

models lack an overall picture of the organisation and its business processes

A traditional structured design method extended in this manner is shown next

(Based on Avison and Shah) The similarities are clear So are the new features

01/13/09 F28SD Software Design 35

Information Systems lifecycle

After Avison and Shah p71

ISplanning

Feasibility study

Systemsinvestigation

Systemsanalysis

Systemsdesign

Implementation

Reviewand

maintenance

Managerialdirective

New businessopportunities

Problems withexisting system

Feasibilitystudy report

Projectplans

Userrequirements

Staffassignment

Resourcerequirements

Methodsand tools

Currentsystem

data flow

New systemdata flow

Programs

Evaluationreport

Systemrequirements

Systemspecification

Training andtest plans

Procedures Documentation

New problemstatement?

New systemin operation

01/13/09 F28SD Software Design 36

What’s similar? Stages rather like waterfall

Repeats with review like spiral

Progress in terms of artefacts

01/13/09 F28SD Software Design 37

What’s added? Feasibility study

Review during maintenance

System is an open one

Operation feeds back to design

01/13/09 F28SD Software Design 38

Feasibility study

Propose and evaluate alternatives Establish priorities Gather information Perform cost-benefit analysis Form options for computerisation Present conclusions

The negative option is a valid option!

01/13/09 F28SD Software Design 39

Review during maintenance Learning from experience Effectiveness of the solution

Correctness of function Efficiency Suitability for the business process

Effectiveness of the process Kept to time? Kept to budget? Lessons learned for future developments

01/13/09 F28SD Software Design 40

System is an open one Take account of influences from the

organisation which change over time Managerial directives

often arbitrary but often dominate decision making

New opportunities business process change requires system change

Longer term information systems planning system change to maintain business process

01/13/09 F28SD Software Design 41

Operation feeds back to design Operation reveals errors - “maintenance” in

SE Operation reveals bottlenecks for the business Operation reveals new opportunities for

business Operation reveals difficulties for users

Summary : from the original ‘build a system then hand it over’ approach, we must be now more aware of the user and their environment.

01/13/09 F28SD Software Design 42

Next

Andrew on Wednesdays NO tutorial session this Thursday 3 Tue lectures on UML

Diagrammatic language to model requirements, actions, states, classes....