cc20o7n software engineering 1 cc2007n software engineering 1 part 1 introduction to software...

26
CC20O7N Software Engineering 1 CC2007N CC2007N Software Engineering Software Engineering 1 1 Part 1 Part 1 Introduction to Introduction to Software Engineering Software Engineering

Upload: roberta-long

Post on 17-Jan-2018

264 views

Category:

Documents


0 download

DESCRIPTION

CC20O7N Software Engineering 1 Software Application Areas System software Application/Business software Engineering and scientific software Embedded software Product-line software (PC software) Web-applications Artificial intelligence software

TRANSCRIPT

Page 1: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

CC2007NCC2007NSoftware Engineering 1Software Engineering 1

Part 1Part 1Introduction to Software Introduction to Software

EngineeringEngineering

Page 2: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

ContentsContents

• Software Application Areas• Problems of Large Software Systems• The Software Crisis• What Is Software Engineering?• Software Life Cycle - Generic Phases/Stages

Page 3: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

Software Application AreasSoftware Application Areas• System software• Application/Business software• Engineering and scientific software• Embedded software• Product-line software (PC software)• Web-applications• Artificial intelligence software

Page 4: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

Problems with Large Problems with Large Software SystemsSoftware Systems

• Delivery• Costs• Correctness• Efficiency

Page 5: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

Software Costs Software Costs (world-wide)(world-wide)

0

100

200

300

400

1985 1990 1995

$ bi

llion

s

Page 6: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

Relative Cost of Hardware Relative Cost of Hardware and Softwareand Software

0

50

100

1955 1960 1965 1970 1975 1980 1985 1990

% C

ost a

nd E

ffort Hardware

Software

0

50

100

1955 1960 1965 1970 1975 1980 1985 1990

% C

ost a

nd E

ffort

0

50

100

1955 1960 1965 1970 1975 1980 1985 1990

% C

ost a

nd E

ffort Hardware

Software

Page 7: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

Software EngineeringSoftware Engineering

• Concerned with:– building large programs – maintenance– efficiency of development and maintenance– quality– management

Page 8: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

Three Major Phases in the Three Major Phases in the Software Life CycleSoftware Life Cycle

• Definition phase• Development phase• Maintenance phase

Page 9: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

Generic Stages in the Generic Stages in the Software Life CycleSoftware Life Cycle

}

• Strategy planning• Feasibility study• Requirements analysis

Definition phase}Development

phase

Design (system design, detailed design)

Implementation Testing

}Maintenance Maintenance phase

Page 10: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

Costs of Software Life Cycle StagesCosts of Software Life Cycle Stages

%

0

50

100

Analysis andDesign

Coding Testing Maintenance

Page 11: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

SummarySummary• Discussed

– the importance of software and the wide range of software applications

– problems with software - the software crisis• Presented

– several definitions and the main goals of software engineering

• Identified– generic phases and stages in the software life cycle

Page 12: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

CC2007NCC2007NSoftware Engineering 1Software Engineering 1

Part 2Part 2

The Software Life Cycle ModelsThe Software Life Cycle Models

Page 13: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

ContentsContents

• Waterfall Model• Evolutionary Models• Incremental Development

Page 14: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

Waterfall Model - BasicWaterfall Model - Basic

Feasi-bilityStudy Req.

AnalysisDesign

TestingMainte-nance

Implemen-tation

Feasi-bilityStudy Req.

AnalysisDesign

TestingMainte-nance

Implemen-tation

Page 15: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

Waterfall ModelWaterfall ModelAdvantages & DisadvantagesAdvantages & Disadvantages

• It is easy to identify milestones (+)• It is easy to separate one stage from another

(+)• Documentation is produced(+)• It is totally unrealistic! (---)

Page 16: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

Waterfall Model - EnhancedWaterfall Model - Enhanced

Feasi-bilityStudy Req.

AnalysisDesign

TestingMainte-nance

Implemen-tation

Feasi-bilityStudy Req.

AnalysisDesign

TestingMainte-nance

Implemen-tation

Page 17: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

Waterfall – EnhancedWaterfall – EnhancedAdvantages & DisadvantagesAdvantages & Disadvantages

• It is easy to identify milestones (+)• It is easy to separate one stage from another (+)• Software is properly documented (+)• Premature requirements, design, etc. (-)• It assumes that requirements can be precisely specified

(-)• It requires the customer to be patient (-)• It is still unrealistic!

Page 18: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

Prototyping ProcessPrototyping Process

Establish prototype objectives

Define prototype

functionality

Develop prototype

Evaluate prototype

Prototyping plan

Outline definition

Executable prototype

Evaluationreport

Page 19: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

Prototype (as a tool for Prototype (as a tool for requirements analysis) - Benefitsrequirements analysis) - Benefits

• Misunderstandings between software developers and users identified as the system functions are demonstrated

• Missing user services may be detected• Difficult-to-use or confusing user services may be

identified and refined• Incomplete/inconsistent requirements found as the

prototype is developed• A working, albeit limited, system is available quickly for

demonstration to management

Page 20: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

Throw-Away PrototypingThrow-Away Prototyping

* At this point the prototype is thrown away!** Development phase of the actual system

Establish outline spec.

Design & implement

system

Develop prototype

Evaluate prototype

Specify system

**

*

Validate system

Page 21: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

Throw-Away Prototype - ProblemsThrow-Away Prototype - Problems

• Sometimes the cost of prototype development represents an unacceptably large fraction of the total cost

• Customers are likely to force the developer to convert the prototype to the working system using a few fixes

• The developer may become familiar with the prototype and reluctant to discard it

Page 22: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

Evolutionary PrototypingEvolutionary Prototyping

Develop abstract

specification

system

Deliver system

System adequate?

NO

YES

Develop abstract

specification

Develop abstract

specificationBuild prototype Use prototype

system

Deliver system

System adequate?

NO

YES

Page 23: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

Evolutionary PrototypingEvolutionary PrototypingAdvantages & DisadvantagesAdvantages & Disadvantages

• Systems are developed and delivered rapidly (+)• Costs are reduced (+)• User involvement! (+)• The development process is ‘invisible’ to managers (+)• Systems are usually poorly structured! (-)

Page 24: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

Incremental DevelopmentIncremental Development

Integrate incrementIntegrate increment

System complete?

Designsystem

architecture

Specifysystem

increment

Buildsystem

incrementValidate

increment

Definesystem

deliverables

Validatesystem

Deliver finalsystem

YES

NO

Reproduced from: Sommerville

System complete?

Designsystem

architecture

Specifysystem

increment

Specifysystem

increment

Buildsystem

increment

Buildsystem

incrementValidate

increment

Definesystem

deliverables

Validatesystem

Deliver finalsystem

YES

NO

Reproduced from: Sommerville

Page 25: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

Incremental DevelopmentIncremental DevelopmentAdvantages & DisadvantagesAdvantages & Disadvantages

• No ‘big bang’ effect (+)• Attention on the essential features (+)• Customers can use the ‘partial’ software as soon as it is available (+)• Early increments can provide a useful feedback (+)• The requirements tend to constrained by the architecture (-)• Problems with contracts (-)• Difficult to map the customer’s requirements onto increments (-)• Problems with basic facilities (-)

Page 26: CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering

CC20O7N Software Engineering 1

SummarySummary• Software life cycle models

– all of them include the main generic stages– logic of the software process is different in each

• The spiral model, which subsumes the other models, should be investigated by students.

• Object orientation – emphasis on reusability– software development process will become one of

assembly rather than one of creation