se lect1 btech

114
An Introduction Software Engineering 1

Upload: iiita

Post on 10-May-2015

520 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Se lect1 btech

An Introduction Software Engineering

1

Page 2: Se lect1 btech

Software Engineering

• Total lectures: 40

• Credit hours: 3 hrs

• Mentors:– Pre Mid Sem: Dr. Sonali Agarwal– Post Mid Sem: Prof. O.P. Vyas

2

Page 3: Se lect1 btech

Course Objective

• This course gives a comprehensive analysis of software engineering techniques and the applications. Topic includes Software Development Life Cycle, Software processes management, requirement engineering, analysis and design, developing and testing of software integration, verification, validation, pattern based reuse, reliability and project management principles, techniques.

3

Page 4: Se lect1 btech

What is Software Crisis….

4

Page 5: Se lect1 btech

Software Crisis

It was in late 1960’s. Many software projects failed. Many software projects late, over budget, providing unreliable

software that is expensive to maintain. Many software projects produced software which did not satisfy

the requirements of the customer. Complexities of software projects increased as hardware capability

increased.

5

Page 6: Se lect1 btech

Software Crisis

• Larger software system is more difficult and expensive to maintain.

• Demand of new software increased faster than ability to generate new software.

• All the above attributes of what was called a ‘Software Crisis’.

• So the term ‘Software Engineering’ first introduced at a conference in late 1960’s to discuss the software crisis.

6

Page 7: Se lect1 btech

Why software engineering?

7

Page 8: Se lect1 btech

Why software engineering?

Once the need for software engineering was identified and software engineering recognized as a discipline--

• The late 1970’s saw the widespread evolution of software engineering principles.

• The 1980’s saw the automation of software engineering and growth of CASE (Computer Aided Software Engineering).

8

Page 9: Se lect1 btech

Why software engineering

• The 1990’s have seen increased emphasis on the ‘management’ aspects of projects and the use of standard quality and ‘process’ models like ISO 9001 and the Software Engineering Institute’s Software Capability Maturity Model (CMM).

• These models help organizations put their software development and management processes in place

9

Page 10: Se lect1 btech

What is software Engineering?

10

Page 11: Se lect1 btech

What is software Engineering?

• In1969 Fritz Bauer defined software eng. as, ‘the establishment and use of sound engineering principles in order to obtain, economically, software that is reliable and works efficiently on real machines’.

• According to Boehm, software engineering involves, ‘the practical application of scientific knowledge to the design and construction of computer programs and the associated documentation required developing, operating and maintaining them’

11

Page 12: Se lect1 btech

What is software Engineering?

• IEEE, in its standard 610.12-1990, defines software engineering as:

(i) The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software.

(ii) The study of approaches as in (i).

• By combining all the above definition we can define software engineering as, ‘Software engineering is the technological and managerial discipline concerned with systematic production and maintenance of software products that are developed and modified on time and within cost estimates.’

12

Page 13: Se lect1 btech

What are the Goals of software engineering….

13

Page 14: Se lect1 btech

Goal of software engineering

The primary goals of software engineering are:• To improve the quality of the software products.• To increase the productivity &• To give job satisfaction to the software engineers.

14

Page 15: Se lect1 btech

Foundation of Software engineering

Software engineering is a technological discipline distinct from, but based on the foundation of the following disciplines:

• Computer Science• Management Science• Economics• System Engineering &• Communication Skills

15

Page 16: Se lect1 btech

The relationship of software engineering with other disciplines

16

Page 17: Se lect1 btech

The relationship of software engineering with other disciplines

• Computer Science gives the scientific foundation to the software as electrical engineering relies on physics.

• Management Science provides the foundation for software project management. Since software engineering is labor intensive activity, it requires both technical and managerial control.

• Economics provides the foundation for resource estimation and cost control. Since, computing system must be developed and maintained on time and within cost estimates; thus economics plays an important role.

17

Page 18: Se lect1 btech

The relationship of software engineering with other disciplines

• System Engineering is the field concerned with studying complex systems. Software is often a component of a much larger system. For example, the software in a factory monitoring system or the flight software on an airplane; is just the component of more complex system. System engineering techniques can be applied to study of such systems

18

Page 19: Se lect1 btech

The relationship of software engineering with other disciplines

• Good oral, written and interpersonal communication skills are crucial for the software engineers, because software engineering activities occur within an organizational context, and a high degree of communication is required among customers, managers, software engineers, hardware engineers and other technical workers.

19

Page 20: Se lect1 btech

Difference of s/w eng. with

traditional engineering….

20

Page 21: Se lect1 btech

Difference of s/w eng. with traditional

engineering

• Software is intangible. It has no mass, no volume, no color, no odor--- no physical properties. Source code is merely a static image of computer program, and while the effects produced by a program are often observable, the program itself not.

• Software doesn’t degrade with time as hardware does. Software failures are caused by design and implementation error, not by degradation over time

• There is always an obscurity in the interface between software modules. It is difficult to design a software system so that all the control and interfaces among modules are explicit, and so that the modules do not interact to produce unexpected side effects when they invoked one another.

21

Page 22: Se lect1 btech

…. difference

• In classical engineering disciplines, the engineer is equipped with tools and the mathematical maturity to specify the properties of the product separately from those of design. The typical software engineering relies much more on experience and judgment rather than mathematical formula. While experience and judgment are necessary, formal analysis are also essential in the practice of engineering.

22

Page 23: Se lect1 btech

What is the role of software engineer ….

23

Page 24: Se lect1 btech

The role of software engineer

The evolution of software engineering field has defined the role the software engineer. A software engineer should have the following qualities:

• Should be a good programmer, be well-versed in data structures and algorithms, and be fluent in one or more programming languages.

Should be familiar with several design approaches, be able to translate vague requirements and desires into precise specifications and be able to converse with the use of a system in terms of applications.

Needs the ability to move among several levels of abstraction at different stages of the project, from specific application procedures and requirements, to abstraction for software systems, to a specific design for system and finally to the detailed coding level. 24

Page 25: Se lect1 btech

What are the characteristics of software engineer

25

Page 26: Se lect1 btech

The characteristics of software engineer

Should be able to build and use a model of the application to guide choices of the many trade-offs that he or she will face. The model is used to answer questions about both the behavior of the system and its performance.

Needs communication skills and interpersonal skills. He also needs the ability to schedule work both of his own and that of others.

26

Page 27: Se lect1 btech

What is well engineered software?

27

Page 28: Se lect1 btech

What is well engineered software?

If the software system does what the user wants, and can be made to continue to do what the user wants, it is well engineered .

• Any well engineered software system should have the following attributes:

• Be easy to maintain• Be reliable• Be efficient• Provides an appropriate user interface

The development of software must make trade-offs between these attributes.

28

Page 29: Se lect1 btech

Distribution of software effort ?

29

Page 30: Se lect1 btech

Distribution of software effortThe typical life-span for a typical software product is 1 to 3 years in

development and 5 to 15 years in use. The distribution of effort between development and maintenance has been variously reported depending on the type of software as 40/60, 30/70 and 10/90.

Maintenance:• Corrective: Even with the best quality of software, it is likely that customer

will uncover defect in software. Corrective maintenance changes the software to correct the defects.

• Adaptive: Over time, the original environment (CPU, OS, business rules, external product character etc.) for which the software was developed may change. Adaptive maintenance results in modification to the software to accommodate the change to its environment.

• Perfective: As the software is used, the customer / user will recognize additional function that will provide benefit. Perfective maintenance extends the software beyond its original functional requirements.

30

Page 31: Se lect1 btech

Types of software product

31

Page 32: Se lect1 btech

The software product

The objective of software engineering is to produce software products. Computer software is the product that software engineers design and built. software products are software systems delivered to a customer with the documentation which describes how to install and use the system.

Software products fall into two broad classes:• Generic products: These are stand alone systems which are

produced by a software development organizations/firms and sold on the open market to any customer who is able to buy them.

• Customized products: These are systems which are commissioned by a particular customer. The software is developed specially for that customer by some developer.

32

Page 33: Se lect1 btech

…. Software products

• Until the 1980’s, the vast majority of software systems which were sold that were customized and specially designed systems which run on large computers. They are expensive because all the development cost had to be met by a single client.

• After the development of PCs, this situation has completely changed. The PC market is totally dominated by software products produces by companies such as Microsoft. These account for the vast majority of software sales. These are usually relatively cheap because their development cost is spread across hundred or thousands of different customers.

33

Page 34: Se lect1 btech

Difference between generic and customized software

34

Page 35: Se lect1 btech

Difference between generic and customized software

• The generic software product specifications are produced internally by the marketing department of the product company. They reflect what they think will sell. They are usually flexible and non-prescriptive.

• For customized systems are often the basis for the contract between customer and developer. They are usually defined in detail and changes have to be negotiated and carefully costed.

35

Page 36: Se lect1 btech

Software product attributes

36

Page 37: Se lect1 btech

Software product attributes

The attributes of a software product are the characteristics displayed by the product, once it is installed and put in use. They are not the services provided by the product. Rather, they are concerned with the products dynamic behavior and the use made of the product. Examples of these attributes are therefore, efficiency, reliability, maintainability, robustness, portability and so on. The relative importance of these characteristics obviously varies from system to system.

37

Page 38: Se lect1 btech

… product attributesProduct

characteristics Description

Maintainability It should be possible to evolve software to meet the changing needs of the customer.

Dependability Software dependability includes a range of characteristics including reliability, security and safety. Dependable software should not cause physical or economic damage in the event of system failure.

Efficiency Software should not make wasteful use of system resources such as memory and processor cycle

Usability Software should have an appropriate user interface and documentation

38

Page 39: Se lect1 btech

..product attributes

Optimizing the above attribute is difficult as some are exclusive. For example, providing a better user interface may reduce system efficiency. The relationship between cost and improvement in each of the attribute is not linear one. Small improvement in any of these attributes may be devoted to optimizing particular attribute.

39

Page 40: Se lect1 btech

Importance of the course

• For the development of Successful software– Correct identification of Requirement and Estimation is

important.

40

Page 41: Se lect1 btech

Unit 1: Introduction to Software Engineering [ 2 Hours]

• Role of Software Engineering, Software Evolution, Legacy system structures, Legacy system design, Legacy System Assessment, Software Development Life Cycle.

41

Page 42: Se lect1 btech

Unit 2: Software Process Models[6 Hours]

• Software process models, Software Specification, Software design and implementation, Software validation, Automated process support, Prescriptive Models, The Waterfall Model, Incremental Process Models, Evolutionary Process Models, Specialized process models, Extreme Programming, Agile Methodology, Scrum, The Unified Process.

42

Page 43: Se lect1 btech

Unit 3: Project Management and Requirement Engineering [ 5 Hours]

• Project Planning and Scheduling, Risk Management, Functional and Non Functional Requirements, Users Requirement, System Requirements, SRS Document Generation, Feasibility Studies, Types of Feasibilities, Requirement Analysis, Requirement Validation, Requirement Management, Software Measurement and Matrices.

43

Page 44: Se lect1 btech

Unit 4: System Modeling and Prototyping. [5 Hours]

• Context models, Behavioral models, Data models, Object models, CASE Workbenches, Prototyping in the Software Process, Rapid Prototyping Techniques, Interface Specification, Behavioral Specification

44

Page 45: Se lect1 btech

Unit 5: Design Engineering.[ 6 Hours]

• Architectural Design, System Structuring, Control Models, Modular Decomposition, Domain-Specific Architectures, Object Oriented Design Process, Design with Reuse, Component-Based Development, Application Families, Design Patterns, User interface Design Principles, User interaction, Information presentation.

45

Page 46: Se lect1 btech

Unit 6: Verification and validation. [6 Hours]

• Verification and Validation Planning, Software Inspections, Clean room Software Development, Software Testing, Black Box Testing, White Box Testing, Integration Testing, Object-Oriented Testing, Writing test cases, Testing tools, Configuration Management and Version control

46

Page 47: Se lect1 btech

Recommended Books

Text Book• Software Engineering, Ian Sommerville• Software Engineering, A Practitioner’s Approach, Roger

S. Pressman

Reference Books• An Integrated Approach to Software Engineering –

Pankaj Jalota • Journals and Papers

47

Page 48: Se lect1 btech

FAQs about software engineering

• What is software?

• What is software engineering?

• What is the difference between software engineering and computer science?

• What is the difference between software engineering and system engineering?

• What is a software process?

• What is a software process model?

48

Page 49: Se lect1 btech

FAQs about software engineering

• What are the costs of software engineering?

• What are software engineering methods?

• What is CASE (Computer-Aided Software Engineering)

• What are the attributes of good software?

• What are the key challenges facing software engineering?

49

Page 50: Se lect1 btech

What is software?

50

Page 51: Se lect1 btech

What is software?

• Computer programs and associated documentation such as requirements, design models and user manuals.

• Software products may be developed for a particular customer or may be developed for a general market.

• Software products may be– Generic - developed to be sold to a range of different customers e.g. PC

software such as Excel or Word.– Custom - developed for a single customer according to their specification.

• New software can be created by developing new programs, configuring generic software systems or reusing existing software.

51

Page 52: Se lect1 btech

What is software engineering?

52

Page 53: Se lect1 btech

What is software engineering?

• Software engineering is an engineering discipline that is concerned with all aspects of software production.

• Software engineers should adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on the problem to be solved, the development constraints and the resources available.

53

Page 54: Se lect1 btech

Software engineering

• The economies of ALL developed nations are dependent on software.

• More and more systems are software controlled• Software engineering is concerned with theories,

methods and tools for professional software development.

54

Page 55: Se lect1 btech

What are the main ingredients of Software Engineering.

55

Page 56: Se lect1 btech

What are the main ingredients of Software Engineering

• Principle

• Methods and Techniques

• Methodology

• Tools

• How above are correlated…

56

Page 57: Se lect1 btech

• Relationship Between Principal, Methods and Techniques, Methodology and Tools

57

Page 58: Se lect1 btech

What is the difference between software engineering and computer science?

58

Page 59: Se lect1 btech

What is the difference between software engineering and computer science?

• Computer science is concerned with theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software.

59

Page 60: Se lect1 btech

What is the difference between software engineering and system engineering?

60

Page 61: Se lect1 btech

What is the difference between software engineering and system engineering?

System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this process concerned with developing the software infrastructure, control, applications and databases in the system.

System engineers are involved in system specification, architectural design, integration and deployment.

61

Page 62: Se lect1 btech

What is a software process?

62

Page 63: Se lect1 btech

What is a software process?

A set of activities whose goal is the development or evolution of software.

Generic activities in all software processes are:◦ Specification - what the system should do and its

development constraints◦ Development - production of the software system◦ Validation - checking that the software is what the customer

wants◦ Evolution - changing the software in response to changing

demands.

63

Page 64: Se lect1 btech

What is a software process model?

64

Page 65: Se lect1 btech

What is a software process model?

• A simplified representation of a software process, presented from a specific perspective.

• Examples of process perspectives are– Workflow perspective - sequence of activities;– Data-flow perspective - information flow;– Role/action perspective - who does what.

• Generic process models– Waterfall;– Iterative development;– Component-based software engineering.

65

Page 66: Se lect1 btech

How we Determine Software costs

66

Page 67: Se lect1 btech

Software costs

• Software costs often dominate computer system costs. The costs of software on a PC are often greater than the hardware cost.

• Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs.

• Software engineering is concerned with cost-effective software development.

67

Page 68: Se lect1 btech

What are the costs of software engineering?

Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs.

Costs vary depending on the type of system being developed and the requirements of system attributes such as performance and system reliability.

Distribution of costs depends on the development model that is used.

68

Page 69: Se lect1 btech

What are software engineering methods?

• Structured approaches to software development which include system models, notations, rules, design advice and process guidance.

• Model descriptions– Descriptions of graphical models which should be produced;

• Rules– Constraints applied to system models;

• Recommendations– Advice on good design practice;

• Process guidance– What activities to follow.

69

Page 70: Se lect1 btech

What is CASE (Computer-Aided Software Engineering)

70

Page 71: Se lect1 btech

What is CASE (Computer-Aided Software Engineering)

• Software systems that are intended to provide automated support for software process activities.

• Upper-CASE– Tools to support the early process activities of requirements and design;

• Lower-CASE– Tools to support later activities such as programming, debugging and

testing.

71

Page 72: Se lect1 btech

What are the attributes of good software?

72

Page 73: Se lect1 btech

What are the attributes of good software?

• The software should deliver the required functionality and performance to the user and should be maintainable, dependable and acceptable.

• Maintainability– Software must evolve to meet changing needs;

• Dependability– Software must be trustworthy;

• Efficiency– Software should not make wasteful use of system resources;

• Acceptability– Software must accepted by the users for which it was designed. This means

it must be understandable, usable and compatible with other systems.

73

Page 74: Se lect1 btech

What are the key challenges facing software engineering?

74

Page 75: Se lect1 btech

What are the key challenges facing software engineering?

• Heterogeneity, delivery and trust.• Heterogeneity

– Developing techniques for building software that can cope with heterogeneous platforms and execution environments;

• Delivery– Developing techniques that lead to faster delivery of software;

• Trust– Developing techniques that demonstrate that software can be trusted by its

users.

75

Page 76: Se lect1 btech

Phases of Software Engineering

76

Page 77: Se lect1 btech

Phases of Software Engineering

1. System identification

2. System modelling

3. System integration

4. System installation

5. System growth

6. System decommissioning

77

Page 78: Se lect1 btech

What is a system?

• A purposeful collection of inter-related components working together to achieve some common objective.

• A system may include software, mechanical, electrical and electronic hardware and be operated by people.

• System components are dependent on other system components

• The properties and behaviour of system components are inextricably inter-mingled

78

Page 79: Se lect1 btech

System categories

• Technical computer-based systems– Systems that include hardware and software but where the

operators and operational processes are not normally considered to be part of the system. The system is not self-aware.

• Socio-technical systems– Systems that include technical systems but also operational

processes and people who use and interact with the technical system. Socio-technical systems are governed by organisational policies and rules.

79

Page 80: Se lect1 btech

Systems engineering

• Specifying, designing, implementing, validating, deploying and maintaining socio-technical systems.

• Concerned with the services provided by the system, constraints on its construction and operation and the ways in which it is used.

80

Page 81: Se lect1 btech

System modelling

• An architectural model presents an abstract view of the sub-systems making up a system

• May include major information flows between sub-systems

• Usually presented as a block diagram

• May identify different types of functional component in the model

81

Page 82: Se lect1 btech

System integration

The process of putting hardware, software and people together to make a system.

Should be tackled incrementally so that sub-systems are integrated one at a time.

Interface problems between sub-systems are usually found at this stage.

May be problems with uncoordinated deliveries of system components.

82

Page 83: Se lect1 btech

System installation

• After completion, the system has to be installed in the customer’s environment– Environmental assumptions may be incorrect;– May be human resistance to the introduction of

a new system;– System may have to coexist with alternative

systems for some time;– May be physical installation problems (e.g.

cabling problems);– Operator training has to be identified.

83

Page 84: Se lect1 btech

System growth

• Large systems have a long lifetime. They must evolve to meet changing requirements.

• Evolution is inherently costly– Changes must be analysed from a technical and business perspective;– Sub-systems interact so unanticipated problems can arise;– There is rarely a rationale for original design decisions;– System structure is corrupted as changes are made to it.

84

Page 85: Se lect1 btech

System decommissioning

• Taking the system out of service after its useful lifetime.

• May require removal of materials (e.g. dangerous chemicals) which pollute the environment– Should be planned for in the system design by

encapsulation.

• May require data to be restructured and converted to be used in some other system.

85

Page 86: Se lect1 btech

A Software Process is

A structured set of activities required to develop a software system

86

Page 87: Se lect1 btech

Ad hoc Software Development

• Developing software without planning for each phase, and without specifying tasks, deliverables, or time constraints.

• Relies entirely on the skills and experience of the individual staff for performing the work.

• The software process is constantly changed or modified as the work progresses.

87

Page 88: Se lect1 btech

Software Process Model

A Software process Model which is

“an abstract representation of a process. It presents a description of a process from some particular perspective.”

It provides guidelines to organize how software process activities should be performed and in what order.

88

Page 89: Se lect1 btech

SW Process Models

• Waterfall model• Evolutionary models• Component-based development model• Iterative Model

89

Page 90: Se lect1 btech

The Waterfall Model

• Oldest model, it’s been around since 1970.

• Called “Linear Sequential Model”.

• Most widely used model for SW engineering

• Documentation is produced at each stage.

90

Page 91: Se lect1 btech

Phases

1. Requirements analysis and definition

2. System and software design

3. Implementation and unit testing

4. Integration and system testing

5. Operation and maintenance

91

Page 92: Se lect1 btech

Waterfall model diagram

Requirements

Operation & Maintenance

Test & Integration

Code & Unit Test

Design

92

Page 93: Se lect1 btech

Disadvantages

• Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements.

• Only appropriate when the requirements are well-understood and changes will be fairly limited during the design process.

• The waterfall model is mostly used for large systems engineering projects.

93

Page 94: Se lect1 btech

Evolutionary Models

94

Page 95: Se lect1 btech

The Exploratory Model

Objective is to work with customers and evolve a final system from an initial outline specification.

Should start with well-understood requirements and add new features as proposed by the customer.

95

Page 96: Se lect1 btech

The Exploratory Model

Concurrentactivities

ValidationFinal

version

DevelopmentIntermediate

versions

SpecificationInitial

version

Outlinedescription

96

Page 97: Se lect1 btech

The Exploratory Model

• Problems– Lack of process visibility;– Systems are often poorly structured;

• Applicability– For small or medium-size interactive systems;– For parts of large systems (e.g. the user interface);– For short-lifetime systems.

97

Page 98: Se lect1 btech

The Prototyping Model

When a customer defines a set of general objectives for a software but does not identify detailed input, processing, or output requirement.

It consists of the iterating phases:1. Requirements gathering2. Design and build SW prototype3. Evaluate prototype with customer4. Refine requirements

98

Page 99: Se lect1 btech

The Prototyping Model

99

Page 100: Se lect1 btech

The Prototyping Model

• Advantages– Users get a feel for the actual system– Developers get to build something immediately– Specifications can be developed incrementally

• Disadvantages– The developer may make implementation compromises in

order to get a prototype working quickly.– The process in not visible (few documents that reflect every

version of the system)– Systems poorly structured

100

Page 101: Se lect1 btech

Component Based Software Engineering (CBSE)

• Based on systematic reuse where systems are integrated from existing components.

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

• This approach is becoming increasingly used as component standards have emerged.

101

Page 102: Se lect1 btech

Component Based Software Engineering (CBSE)

Requirementsspecification

Componentanalysis

Developmentand integration

System designwith reuse

Requirementsmodification

Systemvalidation

102

Page 103: Se lect1 btech

Component Based Software Engineering (CBSE)

• Advantages:– Reduce amount of software to be developed– Reduce costs and risks– Faster delivery

• Disadvantages:– Requirements compromises, system does not meet real

needs of users– Limited features

103

Page 104: Se lect1 btech

Iterative Models

104

Page 105: Se lect1 btech

The Incremental Model

Rather than deliver the system as a single delivery, the development and delivery is broken down into increments with each increment delivering part of the required functionality.

User requirements are prioritised and the highest priority requirements are included in early increments.

Once the development of an increment is started, the requirements are frozen though requirements for later increments can continue to evolve.

105

Page 106: Se lect1 btech

The Incremental Model

Validateincrement

Develop systemincrement

Design systemarchitecture

Integrateincrement

Validatesystem

Define outline requirements

Assign requirements to increments

System incomplete

Finalsystem

106

Page 107: Se lect1 btech

The Incremental Model

Advantages:• Customer value can be delivered with each increment so

system functionality is available earlier.• Early increments act as a prototype to help elicit

requirements for later increments.• Lower risk of overall project failure.• The highest priority system services tend to receive the

most testing.

107

Page 108: Se lect1 btech

The Incremental Model

Disadvantages:

• Increments should be relatively small (20,000 lines of code)

• Can be difficult to map the customer’s requirements onto increments of the right size

• Hard to identify common functions

108

Page 109: Se lect1 btech

The Spiral Model

• Defined by Barry Boehm in his 1988 article A Spiral Model of Software Development and Enhancement.

• Process is represented as a spiral rather than as a sequence of activities with backtracking.

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

• Suitable for large, expensive and complicated projects

109

Page 110: Se lect1 btech

The Spiral Model

Riskanalysis

Riskanalysis

Riskanalysis

Riskanalysis Proto-

type 1

Prototype 2

Prototype 3Opera-tionalprotoype

Concept ofOperation

Simulations, models, benchmarks

S/Wrequirements

Requirementvalidation

DesignV&V

Productdesign Detailed

design

Code

Unit test

IntegrationtestAcceptance

testService Develop, verifynext-level product

Evaluate alternatives,identify, resolve risks

Determine objectives,alternatives and

constraints

Plan next phase

Integrationand test plan

Developmentplan

Requirements planLife-cycle plan

REVIEW

110

Page 111: Se lect1 btech

The Spiral Model

• 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.

111

Page 112: Se lect1 btech

The Spiral Model

• Risk driven process model– Different risk patterns can lead to choosing different process

models

• What is a risk?– Situations or possible events that may cause a project to fail to

meet its goal. – Example risks:

• Experienced staff leave the project

• Hardware which is essential for the system will not be delivered on schedule

– (more about risks in Chapter 3)112

Page 113: Se lect1 btech

The Spiral Model

Advantages:

• Risks are explicitly assessed and resolved throughout the process.

• Software engineers can start working on the project earlier rather than wading through a lengthy early design process.

113

Page 114: Se lect1 btech

The Spiral Model

Disadvantages:

• Requires highly skilled people in risk analysis and planning

• Requires more time, and is more expensive

• Estimates of budget and time are harder to judge at the beginning of the project since the requirements evolve through the process

114