CS 5380 Software Engineering Chapter 2 – Software Processes Chapter 2 Software Processes1

Preview:

Citation preview

S

CS 5380Software

Engineering

Chapter 2 – Software Processes

Chapter 2 Software Processes1

Processes and Process Models

Software processes Activities involved in producing a software

system.

Software process models abstract representations of these processes.

Chapter 2 Software Processes2

Software processes

Processes Specification Design Implementation Validation Evolution

Occur in all process models

Chapter 2 Software Processes3

Process Models

Describe the organization of software processes.

Key Examples Waterfall model Incremental development Reuse-oriented development.

Chapter 2 Software Processes4

Software Process Pescriptions

Activities of the process Specifying a data model Designing a user interface

Also Outcomes of a process Roles of people involved in the process Pre- and post-conditions

Chapter 2 Software Processes5

Software process models

Waterfall model Plan-driven model. Separate and distinct processes

specification development.

Incremental development Interleaved processes

Specification, development and validation

Reuse-oriented software engineering The system is assembled from existing components.

Chapter 2 Software Processes6

Development in Civil Engineering

Build a bridge Requirements Site Analysis Design Review/Approval Schedule Construction Testing Maintenance

Discussion Requirements Overlap of phases Dependency of Phases

Chapter 2 Software Processes7

The Waterfall Model(1970)

Chapter 2 Software Processes8

Waterfall Model Phases

There are separate identified phases in the waterfall model: Requirements analysis and definition System and software design Implementation and unit testing Integration and system testing Operation and maintenance

Chapter 2 Software Processes9

Waterfall Model Problems

Responding to changing customer requirements. Appropriate

requirements are well-understood Changes will be fairly limited

Few business systems have stable requirements.

Chapter 2 Software Processes10

Waterfall Applications

Large systems, developed at several sites. Space Shuttle control system

Integration with many physical components

Chapter 2 Software Processes11

Incremental Development

Initial Requirements, Design, Development…

Learn from usage

Modify requirements, design, redevelop

Chapter 2 Software Processes12

Incremental development

Chapter 2 Software Processes13

Incremental development benefits

Lower cost of accommodating changing customer requirements

Better customer feedback Customers understand working system better than

design

More rapid delivery Partial delivery at beginning is useful

Chapter 2 Software Processes14

Generic Products

Inherently incremental

Initial phase to Get customers Get feedback Drive direction

Subsequent phases Stay competitive Meet changing needs

Chapter 2 Software Processes15

Incremental development problems

The process is not visible. Design documents not at extensive Design documents not final

System structure tends to degrade as new increments are added. New features may not fit initial structure

Chapter 2 Software Processes16

Reuse-Oriented Software Engineering

Systematic reuse COTS (Commercial-off-the-shelf) systems.

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

Standard approach for building many systems SAS

Chapter 2 Software Processes17

Reuse-oriented software engineering

Chapter 2 Software Processes18

Types of software components

Web services Standard specification Remote invocation Calendar, weather, scheduling, RSS,…

Collections of objects - framework .NET User interface

Configurable software systems COTS – Commercial Off The Shelf software SAS

Chapter 2 Software Processes19

Discussion

Identify 2 highly likely projects for each of the following Waterfall Incremental Component

Chapter 2 Software Processes20

Software Specification

Process of establishing Services required Constraints on the system

Requirements engineering process Feasibility study Requirements elicitation and analysis Requirements specification Requirements validation

Chapter 2 Software Processes21

The requirements engineering process

Chapter 2 Software Processes22

Software design and implementation

Design Creation of design documents From requirements

Implementation Creation of running program From design documents

Design and implementation Closely related May be inter-leaved.

Chapter 2 Software Processes23

A general model of the design process

Chapter 2 Software Processes24

Design activities

Architectural design, overall structure principal components (sub-systems or modules) component relationships

Interface design interfaces between system components Interface with user

Component design Individual component

Database design, Tables, queries, interaction

Chapter 2 Software Processes25

Software verificationand validation

Show that system conforms to its specification meets the real needs of customer

Testing is a key approach

Code reviews

Chapter 2 Software Processes26

Stages of testing

Chapter 2 Software Processes27

Testing stages

Development or component testing

System testing

Acceptance testing

Chapter 2 Software Processes28

Testing phases in a plan-driven software process

Chapter 2 Software Processes29

Software evolution

Software is inherently flexible.

Software changes to meet Changing business model New applications

Chapter 2 Software Processes30

System evolution

Chapter 2 Software Processes31

Nature of Change

Change is inevitable in all large software projects. Business changes New technologies Changing platforms Changing Customer Base Chaging usage

Chapter 2 Software Processes32

Reducing the Costs of Rework

Change avoidance Start with a prototype

Change tolerance Incremental tolerance Architecture

Chapter 2 Software Processes33

Software prototyping

Prototype initial version demonstrate concepts try out design options.

Uses: requirements elicitation and validation; UI design;

Chapter 2 Software Processes34

Benefits of prototyping

Improved system usability.

A closer match to users’ real needs.

Improved design quality.

Improved maintainability.

Reduced development effort.

Chapter 2 Software Processes35

The process of prototype development

Chapter 2 Software Processes36

Prototype development

Tools rapid prototyping languages

Leave out functionality Focus on areas that are not well-understood No error checking and recovery Focus on functional requirements

not reliability and security Different architecture

Chapter 2 Software Processes37

Throw-away prototypes

Discard prototype: Can’t be modified for all requirements; Prototypes are undocumented; Poor internal structure; Poor quality standard

Chapter 2 Software Processes38

Discussion

Describe a prototype for Web application Mobile app Air traffic control system Integrated controller in a printer

Chapter 2 Software Processes39

Incremental delivery

Multiple deliveries

Phased functionality

Requirements prioritization

Requirements frozen at beginning of incremental phase

Chapter 2 Software Processes40

Incremental development and delivery

Incremental development Evaluate each increment before creating next Normal approach used in agile methods; Evaluation done by user/customer proxy. May not require incremental delivery

Incremental delivery Deploy to end-users More realistic evaluation by users;

Chapter 2 Software Processes41

Incremental delivery

Chapter 2 Software Processes42

Incremental delivery advantages

Partially usable system available earlier.

Early versions elicit further requirements

Lower risk of overall project failure.

Most important features get tested more

Chapter 2 Software Processes43

Incremental Delivery Problems

Common facilities. Not fully thought out Poorly architected

Conflicts with procurement processes Companies require full specification

Chapter 2 Software Processes44

Boehm’s spiral model (1988)

Spiral diagram rather than process diagram

Each loop in the spiral represents a phase in the process.

Chapter 2 Software Processes45

Boehm’s spiral model of the software process

Chapter 2 Software Processes46

Spiral model sectors

Objective setting Specific objectives for the phase are identified.

Risk assessment and reduction Risks are assessed and activities put in place to reduce the key risks.

Development and validation A development model for the system is chosen which can be any of

the generic models.

Planning The project is reviewed and the next phase of the spiral is planned.

Chapter 2 Software Processes47

Spiral model usage

Rarely used as published for practical software development.

Chapter 2 Software Processes48

The Rational Unified Process

IBM 2003

Combination of other models Largely iterative Documentation Prototyping

Chapter 2 Software Processes49

Phases in the Rational Unified Process

Chapter 2 Software Processes50

RUP phases

Inception Establish the business case for the system.

Elaboration Develop an understanding of the problem domain and the

system architecture.

Construction System design, programming and testing.

Transition Deploy the system in its operating environment.

Chapter 2 Software Processes51

RUP 6 Best Practices

Iterative development Prioritized phases.

Manage requirements Document requirements.

Use component-based architectures Structure the system to be reusable.

Chapter 2 Software Processes52

RUP 6 Best Practices(continued)

Visually model software UML.

Verify software quality

Control changes to software change management system tools

Chapter 2 Software Processes53

Discussion

Chapter 2 Software Processes54

Recommended