software engineering. topics ● computer science vs. software engineering ● definition of...

76
Software Engineering

Upload: patrick-greene

Post on 12-Jan-2016

260 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Software Engineering

Page 2: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Topics● Computer science vs. software engineering● Definition of software engineering● Types of software● The nature of software● Software history and the “software crisis”● Software quality● Elements of a software engineering discipline● Software development personnel● Software development process models

Page 3: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Science vs. Engineering

The difference between science and engineering:– Science seeks to explain phenomena through theory,

hypothesis, and experiment, in an effort to ascertain natural laws

● For example, chemistry investigates the structure of chemicals and their interactions

– Engineering seeks to apply natural laws to the solution of practical problems

● For example, chemical engineering might use the results of chemistry to come up with a better way of refining gasoline

Page 4: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Computer Science as a Science

● Theory:– Computability, automata, discrete computational

structures– Algorithm analysis

● Hypothesis:– That a certain algorithm will solve a problem

● Experiment:– Run a program implementing the algorithm

Page 5: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Computer Science as a Science (cont'd)

Computer Science

Theory ofComputation

Algorithms &Data Structures

Programming Languages

. . .

Theory Hypothesis Experiment

Page 6: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Adding a Customer

Computer Science

Theory ofComputation

Algorithms &Data Structures

Programming Languages

. . .

Customer

Problem

Requirements

Page 7: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

The Difference Between Computer Science and Software Engineering

Computer Science

Theory ofComputation

Algorithms &Data Structures

Programming Languages

. . .

Customer

SoftwareEngineering

Problem

Tools and Techniques to Solve Problem

Page 8: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Definition of Software Engineering

The process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time and other constraints.

Page 9: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Solving Customers’ Problems

● This is the goal of software engineering● Sometimes the solution is to buy, not build● Adding unnecessary features does not help solve

the problem● Software engineers must communicate effectively

to identify and understand the problem

Page 10: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Definition of Software Engineering (again)

The process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time and other constraints.

Page 11: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Systematic Development and Evolution

● An engineering process involves applying well understood techniques in an organized and disciplined way

● Many well-accepted practices have been formally standardized

– e.g. by the IEEE or ISO ● Most development work is evolution

Page 12: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Definition of Software Engineering (again)

The process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time and other constraints.

Page 13: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Large, High-Quality Software Systems

● Software engineering techniques are needed because large systems cannot be completely understood by one person

● Teamwork and co-ordination are required● Key challenge: Dividing up the work and ensuring that the parts of the system work properly together

● The end-product that is produced must be of sufficient quality

Page 14: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Definition of Software Engineering (again)

The process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time and other constraints.

Page 15: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Cost, Time and Other Constraints

● Finite resources● The benefit must outweigh the cost● Others are competing to do the job cheaper and faster

● Inaccurate estimates of cost and time have caused many project failures

Page 16: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Types of Software

● Custom– For a specific customer

● Generic– Sold on open market– Often called “COTS” (commercial off-the-shelf) or

“shrink-wrapped”

● Embedded– Built into hardware– Hard to change

Page 17: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Differences among Custom, Generic, and Embedded software

Custom Generic EmbeddedNumber of copies in use low medium high

Total processing powerdevoted to running this typeof software

low high medium

Worldwide annual development effort

high medium low

Page 18: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

More Types of Software

● Real time– E.g., control and monitoring systems– Must react immediately– Safety often a concern

● Data-processing– Used to run businesses– Accuracy and security of data are key

Page 19: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

The Nature of Software

● Software is intangible– Hard to understand development effort

● Software is easy to reproduce– Cost is in its development– in other engineering products, manufacturing is the

costly stage

● The industry is labor-intensive– Hard to automate

Page 20: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

The Nature of Software (cont'd)

● Untrained people can hack something together

– Quality problems are hard to notice

● Software is easy to modify

– People make changes without fully understanding it

● Software does not ‘wear out’– Deterioriates through design change that increases its

complexity and decreases its maintainability

Page 21: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

The Nature of Software (cont'd)

● Conclusions– Much software has poor design and is getting worse– Demand for software is high and rising– We are in a perpetual ‘software crisis’– We have to learn to ‘engineer’ software

Page 22: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

History of the Role of Software● In the 1950's software development was de-

emphasized, because it only contributed to about 20% of overall system cost

Page 23: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

History of the Role of Software● In the 1950's software development was de-

emphasized, because it only contributed to about 20% of overall system cost

● Programmers moved from machine language, to assembly language, to high-level language

Page 24: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

History of the Role of Software● In the 1950's software development was de-

emphasized, because it only contributed to about 20% of overall system cost

● Programmers moved from machine language, to assembly language, to high-level language

● In 1968, a NATO report coined the term "software engineering"

Page 25: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

History of the Role of Software● In the 1950's software development was de-

emphasized, because it only contributed to about 20% of overall system cost

● Programmers moved from machine language, to assembly language, to high-level language

● In 1968, a NATO report coined the term "software engineering"

● Hardware became faster and cheaper, outpacing the ability of software to keep up

Page 26: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

History of the Role of Software● In the 1950's software development was de-

emphasized, because it only contributed to about 20% of overall system cost

● Programmers moved from machine language, to assembly language, to high-level language

● In 1968, a NATO report coined the term "software engineering"

● Hardware became faster and cheaper, outpacing the ability of software to keep up

● By the 1980's the software cost of a system had risen to 80%, and many experts pronounced the field "in crisis"

Page 27: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Elements of the Continuing Software Crisis

● Software is not delivered on time

Page 28: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Elements of the Continuing Software Crisis

● Software is not delivered on time● Software is over budget (usually by a factor of 2 or

more)

Dramatic example: in the early 1980's the IRS hired Sperry to automate tax form processing for $103 million. By 1985 the cost had tripled, the system could not handle the workload, and it had to be replaced.

Page 29: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Elements of the Continuing Software Crisis

● Software is not delivered on time● Software is over budget (usually by a factor of 2 or

more)

Dramatic example: in the early 1980's the IRS hired Sperry to automate tax form processing for $103 million. By 1985 the cost had tripled, the system could not handle the workload, and it had to be replaced.

● Software is too complex. Complexity does not scale linearly: a 1000 line program is more than 10 times as complex as a 100 line program

Page 30: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Elements of the Software Crisis (cont'd)

● Software is unmaintainable due to:– poor design– poor documentation (most software can be understood

only by its author, and then only within a few months of writing it)

Page 31: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Elements of the Software Crisis (cont'd)

● Software is unmaintainable due to:– poor design– poor documentation (most software can be understood

only by its author, and then only within a few months of writing it)

● Software is inefficient (new versions of complex software require machine upgrades)

Page 32: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Elements of the Software Crisis (cont'd)

● Software is unmaintainable due to:– poor design– poor documentation (most software can be understood

only by its author, and then only within a few months of writing it)

● Software is inefficient (new versions of complex software require machine upgrades)

● Software is unreliable due to:– poor design (Therac-25 disaster)– inadequate testing (market pressures, beta releases)– impossible testing (SDI)

Page 33: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Elements of a Software Engineering Discipline

1 Abstraction: Identifying hierarchical classes of objects to reason about, ignoring detail

Page 34: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Elements of a Software Engineering Discipline

1 Abstraction: Identifying hierarchical classes of objects to reason about, ignoring detail

2 Analysis and Design Methods and Notations: For example, use of design patterns and UML

Page 35: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Elements of a Software Engineering Discipline

1 Abstraction: Identifying hierarchical classes of objects to reason about, ignoring detail

2 Analysis and Design Methods and Notations: For example, use of design patterns and UML

3 User Interface Prototyping: To help user and developer agree on requirements and software functions

Page 36: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Elements of a Software Engineering Discipline

1 Abstraction: Identifying hierarchical classes of objects to reason about, ignoring detail

2 Analysis and Design Methods and Notations: For example, use of design patterns and UML

3 User Interface Prototyping: To help user and developer agree on requirements and software functions

4 Software Architecture: striving for independence of parts through modularity

Page 37: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Elements of a Software Engineering Discipline (cont'd)

5 Software Process (see later)

Page 38: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Elements of a Software Engineering Discipline (cont'd)

5 Software Process (see later)

6 Reuse: Not just of software, but also sets of requirements, parts of designs, or groups of test scripts

Page 39: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Elements of a Software Engineering Discipline (cont'd)

5 Software Process (see later)

6 Reuse: Not just of software, but also sets of requirements, parts of designs, or groups of test scripts

7 Measurement: Trying to quantify project goals to evaluate progress (for example, number of bugs per 100 lines of code)

Page 40: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Elements of a Software Engineering Discipline (cont'd)

5 Software Process (see later)

6 Reuse: Not just of software, but also sets of requirements, parts of designs, or groups of test scripts

7 Measurement: Trying to quantify project goals to evaluate progress (for example, number of bugs per 100 lines of code)

8 Tools and Integrated Environments: For example, CASE (computer-aided software engineering) tools

Page 41: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Key Factors Altering Software Engineering Practice Since 1970s

1 Time-to-market criticality: competition for market share

Page 42: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Key Factors Altering Software Engineering Practice Since 1970s

1 Time-to-market criticality: competition for market share

2 Shifts in economics: cheaper to add disk or memory than spend time optimizing code

Page 43: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Key Factors Altering Software Engineering Practice Since 1970s

1 Time-to-market criticality: competition for market share

2 Shifts in economics: cheaper to add disk or memory than spend time optimizing code

3 Desktop computing: puts power in hands of users who demand more sophisticated tools

Page 44: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Key Factors Altering Software Engineering Practice Since 1970s

1 Time-to-market criticality: competition for market share

2 Shifts in economics: cheaper to add disk or memory than spend time optimizing code

3 Desktop computing: puts power in hands of users who demand more sophisticated tools

4 GUIs: make complex programs easier to use

Page 45: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Key Factors Altering Software Engineering Practice Since 1970s

1 Time-to-market criticality: competition for market share

2 Shifts in economics: cheaper to add disk or memory than spend time optimizing code

3 Desktop computing: puts power in hands of users who demand more sophisticated tools

4 GUIs: make complex programs easier to use

5 Local and wide-area networks

Page 46: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Key Factors Altering Software Engineering Practice Since 1970s

1 Time-to-market criticality: competition for market share

2 Shifts in economics: cheaper to add disk or memory than spend time optimizing code

3 Desktop computing: puts power in hands of users who demand more sophisticated tools

4 GUIs: make complex programs easier to use

5 Local and wide-area networks

6 OOD and OOP: enhance module reusability

Page 47: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Key Factors Altering Software Engineering Practice Since 1970s

1 Time-to-market criticality: competition for market share

2 Shifts in economics: cheaper to add disk or memory than spend time optimizing code

3 Desktop computing: puts power in hands of users who demand more sophisticated tools

4 GUIs: make complex programs easier to use

5 Local and wide-area networks

6 OOD and OOP: enhance module reusability

7 Demise of the waterfall process model (see later)

Page 48: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Software Engineering Stakeholders

● Users– Those who use the software

● Customers– Those who pay for the software

● Software developers● Development managers

Software quality means different things to differentstakeholders.

Page 49: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

The Goal of Software Engineering: Software Quality

Three perspectives on software quality:

1)Manager view: does product conform to a good process, and does it meet specs? (externally measured)

Page 50: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

The Goal of Software Engineering: Software Quality

Three perspectives on software quality:

1)Manager view: does product conform to a good process, and does it meet specs? (externally measured)

2)User/customer view: product characteristics measured by fitness for purpose, e.g., correctness, reliability, maintainability (externally measured)

Page 51: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

The Goal of Software Engineering: Software Quality

Three perspectives on software quality:

1)Manager view: does product conform to a good process, and does it meet specs? (externally measured)

2)User/customer view: product characteristics measured by fitness for purpose, e.g., correctness, reliability, maintainability (externally measured)

3)Developer view: quality measured by internal characteristics (software "metrics") thought to be indicators of good external characteristics

Page 52: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

User/Customer Views of Quality

Correctness

Reliability

Efficiency

Integrity

Usability

Maintainability

Testability

Flexibility

Portability

Reusability

Interoperability

Page 53: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Developer Views of QualityCompletenessConsistency

AccuracyError tolerance

Execution efficiencyStorage efficiency

Access controlOperability

TrainingCommunicativeness

SimplicityConciseness

InstrumentationSelf-descriptiveness

ExpandabilityGeneralityModularity

Software system independenceMachine independence

Communications commonalityData commonality

Page 54: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Relating the Views

Correctness

Reliability

Efficiency

Integrity

Usability

Maintainability

Testability

Flexibility

Portability

Reusability

Interoperability

CompletenessConsistency

AccuracyError tolerance

Execution efficiencyStorage efficiency

Access controlOperability

TrainingCommunicativeness

SimplicityConciseness

InstrumentationSelf-descriptiveness

ExpandabilityGeneralityModularity

Software system independenceMachine independence

Communications commonalityData commonality

Page 55: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Software Development Steps Requirements Analy- sis and Definition

System Design

Program Design

ProgramImplementation

Unit Testing

Integration Testing

System Testing

System Delivery

Maintenance

Page 56: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Software Developer RolesRequirements Analy- sis and Definition

System Design

Program Design

ProgramImplementation

Unit Testing

Integration Testing

System Testing

System Delivery

Maintenance

Analyst

Designer

Programmer

Tester

Trainer

Page 57: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Programming Team Organization

Chief Programmer

Assist. Chief Programmer

Administra-tion

LibrarianSenior Programmers

Test Team

Junior Programmers

Page 58: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Other Software Personnel● Librarians: Prepare and store documents used

during the life of the system:– Requirements specifications– Design descriptions– Program documentation– Training manuals– Test data and schedules, etc.

● Configuration Managers:– Maintain cross references among requirements,

design, implementation, and tests– Coordinate different versions of software across

platforms, and from one release to another

Page 59: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Software Process Models A process is a series of steps involving activities,

constraints, and resources that produce an intended output of some kind.

Two approaches to software process models:

1 Prescribe the way that software development should progress

2 Describe the way that software development is done in actuality

In theory, these two kinds of models should be similar or the same. In practice, they are not.

Every software development model has requirements as input and a delivered product as output.

Page 60: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

The Opportunistic Model

● Why this model is inadequate:– Ignores requirements and design– No plan– No systematic testing– Resulting maintenance costs will be high

Page 61: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

The Waterfall Model

RequirementsAnalysis

System Design

Program Design

Coding

Unit & IntegrationTesting

System Testing

AcceptanceTesting

Operation &Maintenance

Page 62: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Elements of the Waterfall Model

• Proposed around 1970

• Assumes that one development stage completes before the next begins

• Has been used to prescribe software development activity• For example, Department of Defense Standard 2167-A

• Useful for explaining steps to customers who are not familiar with software development

Page 63: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Drawbacks of the Waterfall Model

• Incorrectly treats software as a manufacturing process

• Manufacturing produces a particular item and reproduces it many times

• Software is not like this, incorporating both problem solving and creativity

• Creativity involves trying alternative solutions, contrasting designs, and learning from failure

• Except for well understood problems, the software process is characterized by iteration

Page 64: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

The Uncontrolled Software Process

RequirementsAnalysis

SystemDesignSystemDesign

ProgramDesign

Coding

Unit & Integra-tion Testing

System Testing

AcceptanceTesting

Mainenance

Page 65: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Prototyping● In practice, neither users nor developers know in

advance all the factors that affect desired outcome● Thus considerable "thrashing" between one

activity and back may take place in order to gain knowledge about the problem

● One way to control such thrashing: develop a partial product and allow customers and developers to examine it for feasibility

● Advantage: revisions made at requirements stage rather than the more costly testing stage

● The partially developed product is a prototype

Page 66: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Waterfall Model With PrototypingRequirementsAnalysis

System Design

Program Design

Coding

Unit & IntegrationTesting

System Testing

AcceptanceTesting

Operation &Maintenance

Prototyping

Page 67: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Validation and Verification

● Prototyping attempts to minimize surprises encountered during system testing

● Goals of system testing:

1 Validation: ensuring that the system has implemented all of the requirements (coverage)

2 Verification: ensuring that each function works correctly (quality)

Page 68: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Validation and Verification (cont'd)RequirementsAnalysis

System Design

Program Design

Coding

Unit & IntegrationTesting

System Testing

AcceptanceTesting

Operation &Maintenance

Prototyping

Validate

Verify

Page 69: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Software Development Focus

Two Views:– The Waterfall Model is a product-oriented focus,

regarding software as a product on its own, consisting of a set of programs and defining texts

– This approach "does not permit us to treat systematically questions pertaining to the relationship between software and the living human world" (C. Floyd)

– The process-oriented approach "views software in connection with human learning, work, and communication" (C. Floyd)

– The V Model is an example of a process-oriented model

Page 70: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

The V Model

RequirementsAnalysis

Unit & IntegrationTesting

System Testing

AcceptanceTesting

Operation &Maintenance

System Design

Program Design

Coding

Analysisand Design

Testing

Validate Requirements

Verify Design

Verify Design

Page 71: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

The Prototype as a Central Element

List ofRevisions

PrototypeRequirements

PrototypeDesign

PrototypeSystem

Test

List ofRevisions

List ofRevisions

User/Customerreview

reviseprototype

System Requirements(sometimes informal

or incomplete)

DeliveredSystem

If a prototype is used in the Waterfall Model, it is usually thrownaway. In the Prototyping Model, the prototype becomes theproduct:

Page 72: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

The Spiral Model

Explicitly embraces prototyping and iterative develop-ment

Page 73: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Reducing "Cycle" Time:Phased Development

BuildRelease 1

BuildRelease 2

BuildRelease 3

UseRelease 1

UseRelease 2

UseRelease 3

Time

DE

VE

LO

PE

RS

US

ER

S

Page 74: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Evolution of Phased Development

Page 75: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

Two Approaches to Phased Development

Incremental Development

Iterative Development

Page 76: Software Engineering. Topics ● Computer science vs. software engineering ● Definition of software engineering ● Types of software ● The nature of software

"Automatic" Programming:AI Meets Compiler Theory

FormalSpecification

Program Code Test

Compare withrequirements;update as needed

System Requirements(sometimes informal

or incomplete)

DeliveredSystemThis transformation

has automated support