Software Engineering - Lecture 02

43
Software Engineering Course Code: 331 Lecture 02

description

Software Engineering. Lecture No. 01. For computer Science & Engineering Syllabus. Its very useful for class study.

Transcript of Software Engineering - Lecture 02

Page 1: Software Engineering - Lecture 02

Software Engineering

Course Code: 331Lecture 02

Page 2: Software Engineering - Lecture 02

“What happens in the ‘life’ of software”

Software Life Cycle

Page 3: Software Engineering - Lecture 02

A structured set of activities required to develop a

software system. Many different software processes but all involve:

Specification – defining what the system should do; Design and implementation – defining the organization of

the system and implementing the system; Validation – checking that it does what the customer wants; Evolution – changing the system in response to changing

customer needs. A software process model is an abstract representation of

a process. It presents a description of a process from some particular perspective.

The software process

Page 4: Software Engineering - Lecture 02

The waterfall model

Plan-driven model. Separate and distinct phases of specification and development.

Incremental development Specification, development and validation are interleaved.

May be plan-driven or agile. Reuse-oriented software engineering

The system is assembled from existing components. May be plan-driven or agile.

In practice, most large systems are developed using a process that incorporates elements from all of these models.

There are no right or wrong software processes.

Software process models

Page 5: Software Engineering - Lecture 02

Code and Fix (1950–)

Page 6: Software Engineering - Lecture 02

No process steps – no specs, docs, tests… No separation of concerns – no teamwork No way to deal with complexity

Code and Fix: Issues

Page 7: Software Engineering - Lecture 02

Waterfall Model (1968)

Page 8: Software Engineering - Lecture 02

Communication

Page 9: Software Engineering - Lecture 02
Page 10: Software Engineering - Lecture 02
Page 11: Software Engineering - Lecture 02
Page 12: Software Engineering - Lecture 02
Page 13: Software Engineering - Lecture 02

The classic life cycle - oldest and most

widely used paradigm Known as “Linear sequential model” Activities ‘flow’ from one phase to

another If there are corrections, return to a

previous phase and ‘flow’ from there again

Major advantages: Good for planning and well-defined/repeated projects

Characteristics

Page 14: Software Engineering - Lecture 02

Real projects rarely follow a sequential

flow Hard to state all requirements explicitly No maintenance or evolution involved Customer must have patience Any blunder can be disastrous Leads to “blocking states”

Drawbacks

Page 15: Software Engineering - Lecture 02

Boehm’s first law

Page 16: Software Engineering - Lecture 02

Problem Cost

Page 17: Software Engineering - Lecture 02

Incremental Model

Page 18: Software Engineering - Lecture 02

Each linear sequence produces a particular

“increment” to the software First increment typically core product; more

features added by later increments Allows flexible allocation of resources

Incremental Model

Page 19: Software Engineering - Lecture 02

Software separated into different “increments”

- complete working portions Focus on delivery of operational product with

each increment - can be evaluated Useful when insufficient staff and can be

planned to manage technical risks, e.g. waiting for new hardware

Characteristics

Page 20: Software Engineering - Lecture 02

The cost of accommodating changing

customer requirements is reduced. It is easier to get customer feedback on the

development work that has been done. More rapid delivery and deployment of useful

software to the customer is possible.

Benefits

Page 21: Software Engineering - Lecture 02

The process is not visible.

Managers need regular deliverables to measure progress. If systems are developed quickly, it is not cost-effective to produce documents that reflect every version of the system.

System structure tends to degrade as new increments are added. Unless time and money is spent on refactoring to

improve the software, regular change tends to corrupt its structure. Incorporating further software changes becomes increasingly difficult and costly.

Drawbacks

Page 22: Software Engineering - Lecture 02

Prototyping

Page 23: Software Engineering - Lecture 02

Prototypes

Page 24: Software Engineering - Lecture 02

Horizontal Prototype

Page 25: Software Engineering - Lecture 02

Vertical Prototype

Page 26: Software Engineering - Lecture 02

A horizontal prototype tests a particular

layer (typically the GUI) of the system A vertical prototype tests a particular

functionality across all layers

Prototypes

Page 27: Software Engineering - Lecture 02

Developer and customer determine objectives

and draft requirements Prototype quickly produced and evaluated by

customer Prototype then refined, and re-evaluated Process iterated, before final product

development Advantages: Customer participation and

better requirements

Characteristics

Page 28: Software Engineering - Lecture 02

Customer may see prototype as working

model and expects fast results Developer compromised when producing

prototype quickly, e.g. different operating system or programming language

Drawbacks

Page 29: Software Engineering - Lecture 02

Spiral Model (1988)

Page 30: Software Engineering - Lecture 02

System is developed in series of evolutionary

releases Milestones for each iteration of the spiral Process does not end with delivery Reflects iterative nature of development

Spiral Model

Page 31: Software Engineering - Lecture 02

Originally proposed by Boehm, couples

iterative nature of prototyping and the systematic aspects of waterfall model

Software is developed in series of incremental releases

Each iteration produces a more complete product

Better management through risk analysis(Modeling)

Characteristics

Page 32: Software Engineering - Lecture 02

May be difficult to convince customers that

evolution is controllable Demands risk assessment expertise - major

risk will cause problems if not identified Relatively new and not widely used - cannot

determine performance

Drawbacks

Page 33: Software Engineering - Lecture 02

Unified Process (1999)

Page 34: Software Engineering - Lecture 02
Page 35: Software Engineering - Lecture 02
Page 36: Software Engineering - Lecture 02
Page 37: Software Engineering - Lecture 02
Page 38: Software Engineering - Lecture 02
Page 39: Software Engineering - Lecture 02
Page 40: Software Engineering - Lecture 02

Draws on best features of conventional

process models Emphasizes software architecture and design Integrates with UML modeling techniques

(more on this later)

Unified Process

Page 41: Software Engineering - Lecture 02

Fourth Generation Techniques (4GT)

"Design" Strategy

Testing

Requirements gathering

Implementation using 4GL

Page 42: Software Engineering - Lecture 02

4GT Characteristics

Use of software tools that allow software engineer to specify s/w characteristics at higher level

The tools generate codes based on specification

More time in design and testing - increase productivity

Tools may not be easy to use, codes generated may not be efficient

Page 43: Software Engineering - Lecture 02

Software processes are the activities involved in producing a software system.

Software process models are abstract representations of these processes.

General process models describe the organization of software processes. Examples of these general models include the ‘waterfall’ model, incremental development, and reuse-oriented development.

Requirements engineering is the process of developing a software specification.

Design and implementation processes are concerned with transforming a requirements specification into an executable software system.

Software validation is the process of checking that the system conforms to its specification and that it meets the real needs of the users of the system.

Software evolution takes place when you change existing software systems to meet new requirements. The software must evolve to remain useful.

End

Key points