chapter 2 october 14, 1997 1 software as a process zsoftware engineering -- a definition: y[software...

17
October 14, 1997 1 Chapter 2 Software as a Process Software Engineering -- a definition: [Software engineering is] the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. Software Engineering is a layered technology.

Post on 21-Dec-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

October 14, 1997 1Chapter 2

Software as a Process

Software Engineering -- a definition: [Software engineering is] the establishment and use of sound

engineering principles in order to obtain economically software that is reliable and works efficiently on real machines.

Software Engineering is a layered technology.

October 14, 1997 2Chapter 2

A Layered Technology

Tools Editors Design aids Compilers Computer Aided Software Engineering (CASE)

Methods Includes standards (formal or informal) May include conventions, e.g., low level such as naming,

variable use, language construct use, etc. May involve design methodologies.

October 14, 1997 3Chapter 2

Some Generic Engineering Phases

Definition System or information engineering (leading to requirements)

Software project planning Requirements analysis

Development Software design Coding Testing

October 14, 1997 4Chapter 2

Some Generic Engineering Phases

Maintenance Correction -- bugs will appear Adaptation -- to changing operating systems, CPU’s, etc.

Enhancement -- changing customer needs Prevention -- software reengineering

October 14, 1997 5Chapter 2

Some Generic Engineering Phases

Typical activities in these phases Project tracking and control Formal reviews Software quality assurance Configuration management Documentation Reusability management Measurement Risk management

October 14, 1997 6Chapter 2

SEI Software Maturity Model

Level 1: Initial -- The software process is characterized as ad hoc, and occasionally even chaotic. Few processes defined.

Level 2: Repeatable -- Basic project management processes established to track cost, schedule and functionality.

Level 3: Defined -- Process for both management and engineering is documented, standardized and integrated.

Level 4: Managed -- Detailed measures of the process and product quality collected. Both are quantitatively understood and controlled.

Level 5: Optimizing -- Continuous process improvement enabled by quantitative feedback and testing innovative ideas.

October 14, 1997 7Chapter 2

Key Process Areas

Maturity Level 2 Software Configuration Management Software Quality Assurance Subcontract management Project tracking and oversight Software project planning Requirements management

October 14, 1997 8Chapter 2

Key Process Areas

Maturity Level 3 Peer Reviews Intergroup coordination Integrated software management Training program Organization process definition Organization process focus

October 14, 1997 9Chapter 2

Key Process Areas

Maturity Level 4 Software quality management Quantitative process management

Maturity Level 5 Process change management Technology change management Defect prevention

October 14, 1997 10Chapter 2

Software Process Models

October 14, 1997 11Chapter 2

Waterfall Model

RequirementsRequirements AnalysisAnalysis DesignDesign CodeCode

TestTest

System/Information Engineering

MaintainMaintain

October 14, 1997 12Chapter 2

The Rapid Prototyping Model

October 14, 1997 13Chapter 2

Evolutionary Process Models

The Incremental Model

October 14, 1997 14Chapter 2

Evolutionary Process Models

The Spiral Model

October 14, 1997 15Chapter 2

Evolutionary Process Models

The Component Assembly Model

October 14, 1997 16Chapter 2

Evolutionary Process Models

The Concurrent Development Model

October 14, 1997 17Chapter 2

Other Models

Formal Methods Rigorous mathematical representation of requirements

Provides basis for automatic verification test generation

Fourth Generation Techniques Use code generators to produce specific parts of product

Process Technology Provides a variety of tools to aid software developers, e.g., workload flow, configuration

management, quality assurance management, etc.