Software Engineering- Crisis and Process Models

45
Software Engineering & Process Models Presentation By Nishu Rastogi Assistant Professor Invertis University, Bareilly 1

Transcript of Software Engineering- Crisis and Process Models

Software Engineering

&

Process Models

Presentation By Nishu Rastogi

Assistant Professor

Invertis University, Bareilly

1

Content

What is Software Engineering?

Principles of S.E.

Scope and Necessity of S.E.

Software Process Models

Software Development Life Cycle

Various Process Model

Model Comparison

2

Technology Development

• ART- esoteric use of past experience

• CRAFT- Unorganized use of past experience

• ENGINEERING- systematic use of past

experience and formation of scientific basis

3

What is Software Engineering?

Software + Engineering

Software : Collection of modules

Engineering : Branch of science and technology

concerned with the design, building, and use of engines,

machines, and structures.

4

Software Engineering is an engineering approach for

software development.

OR

Software Engineering provides tools and techniques

which can be used to design and develop a software in a

systematic and cost effective manner.

5

What is Software Engineering? [Contd..]

Software Crisis

• A time came few years back, that the cost of software becameso high in comparison to hardware products.

• Organizations had to invest large potion of their budget topurchase the required software to automate the work.

• To tackle such a scenario, Software Engineering was theoption.

• Then a scenario came that with hardware product startedproviding software by default without any cost.

6

Program vs. Software Product

• Programs are developed by individuals for personal use.

• Limited functionality and size

• Lack of good UI and proper documentation

• Software products have multiple user, have good UI, properuser manuals and documentation.

• Systematically designed, implemented and well tested.

• Developed by a group of Engineers.

7

Why Software Engineering

• To reduce development time

• To reduce development cost

• To reduce development complexity-

By decomposing the problem, and being well

planned.

8

Software Engineering Principles

Principle of Abstraction

Considers only those aspects of the problem that are

relevant for certain purpose and suppress other aspects that

are not relevant.

Principle of Decomposition

A complex problem is divided into several smaller

problems and then the smaller problems are solved one by

one.

9

Scope and Necessity of Software Eng..

Without using software engineering principles it would be

difficult to develop large programs.

Ex. A program of size 1,000 lines of code has some

complexity. But a program with 10,000 LOC is not just 10

times more difficult to develop, but may as well turn out to

be 100 times more difficult unless software engineering

principles are used.

Software Engineering helps to reduce the programming

complexity.10

Software Life Cycle and Model

• A series of identifiable stages that a software product undergoes during

its lifetime is known as software life cycle.

• A descriptive and diagrammatic representation of software life cycle is

known as software life cycle model.

• Model represents all activities required to make a software product.

• Software life cycle is often referred to as Software process model

• Life cycle is used to develop a software in systematic and disciplined

manner11

Software Process Models

A Software Process Model is a standardised format for

Planning

Organising, and

Running

the development of a software project.

“A set of activities that leads to the production of a software

product is known as Software Process.”

12

Software Development Life Cycle (SDLC)

Problem Identification

1. Feasibility Study

To determine whether it would be financially and technically

feasible to develop the product.

2. Requirement Analysis and Specification

To understand the exact requirements of the customer and to

document them properly.

Requirements gathering and analysis

ƒRequirements specification

(“Software Requirement Specification is developed”)

13

SDLC [Contd..]

3. Design

To transform the requirements specified in the SRS

document into a structure that is suitable for

implementation in some programming language.

4. Coding

To transform the logics developed into code by using

syntax of particular programming language.

14

5. Testing

To verify and validate the software that it works as

expected.

6. Maintenance

To modify a software product after delivery to correct faults

and to improve performance.

15

SDLC [Contd..]

Classical Waterfall Model

Iterative Waterfall Model

Prototyping Model

Evolutionary Model

Rapid Application Development

Spiral Model 16

Various Software Process Models

1- Classical Waterfall Model

The waterfall model is the classic process model

– it is widely known, understood and used.

In some respect, waterfall is the ”common sense”

approach.

17

Classical Waterfall Model [Contd..]

18

Limitation of Classical Model

The classical waterfall model is an idealistic.

It assumes that no development error is ever committed

by the engineers during any of the life cycle phases.

In practical environment engineers do commit mistakes.

19

2- Iterative Waterfall Model

Defects usually get detected much later in the

life cycle:

For example, a design defect might go unnoticed till the

coding or testing phase.

20

Iterative Waterfall Model [Contd..]

Once a defect is detected:

We need to go back to the phase where it was

introduced.

Redo some of the work done during that and all

subsequent phases.

Therefore, we need feedback paths in the classical

waterfall model.

21

Iterative Waterfall Model [Contd..]

22

3- Prototyping Model

A prototype is a toy implementation of the system.

A prototype usually exhibits limited functional

capabilities, low reliability, and inefficient performance

compared to the actual software.

A prototype is usually built using several shortcuts.

23

Prototyping Model [Contd..]

24

Requirement Gathering

Quick Design

Refine Requirements Build Prototype

Customer Evaluation of Prototype

Design

Implement

Test

Maintain

Reasons for Developing A Prototype

To illustrate the input data formats, messages, reports,

and the interactive dialogues to the customer.

Examine technical issues associated with product

development.

It is impossible to ``get it right'' the first time, we must

plan to throw away the first product, if we want to

develop a good product.

25

Advantages of Prototyping

Provides better understanding of the customer’s needs

how the screens might look like

how the user interface would behave

how the system would produce outputs

Prototype building needs Additional Cost.

26

4- Evolutionary Model

Also called as Successive Version or Incremental Model.

System is broken down into several modules which can

be incrementally implemented and delivered.

First develop the core modules of the system.

Initial product skeleton is refined into increasing levels

of capability, by adding new functionalities in successive

versions.

27

Evolutionary Model [Contd..]

28

A

B

C

A AB

29

Advantages of Evolutionary Model

Users get a chance to experiment with a partially

developed system much before the full working version is

released.

Helps finding exact user requirements, much before

fully working system is developed.

Core modules get tested thoroughly reduces chances of

errors in final product.

30

Difficult to subdivide problems into functional units

which can be incrementally implemented and delivered.

Only useful for very large problems, where it is easier to

find modules for incremental implementation.

31

Disadvantages of Evolutionary Model

Lack of extensive pre-planning.

Allows software to be written much faster, and makes it

easier to change requirements.

Used when time to develop software is very less and

product is required to be developed at earliest.

32

5- Rapid Application Development

Rapid Application Development [Contd..]

33

Requirements

Planning

User Design Construction

Cutover

1. Requirement Planning

Combines elements of the system planning and systems

analysis phases.

It ends when the team agrees on the key issues and

obtains management authorization to continue.

2. User Design

Users interact with systems analysts and develop models

and prototypes.

User Design is a continuous interactive process that

allows users to understand and modify the system.34

Rapid Application Development [Contd..]

3. Construction

Tasks are programming and application development like

coding, unit-integration and system testing.

4. Cutover

Tasks include testing, changeover to the new system, and

user training.

New system is built, delivered, and placed in operation

much sooner.35

Rapid Application Development [Contd..]

Proposed by Boehm in 1988.

Each loop of the spiral represents a phase of the softwareprocess:

the innermost loop might be concerned with systemfeasibility,

the next loop with system requirements definition,

the next one with system design, and so on.

Each loop in the spiral is split into four sectors(quadrants 36

6- Spiral Model

Spiral Model [Contd..]

37

1. Identify objectives of the phase, examine the risks

associated with these objective.

Risk is any adverse circumstance that might hamper

successful completion of a software project.

2. Find alternate solutions possible

38

Spiral Model [I- Quadrant]

For each identified project risk, a detailed analysis is

carried out.

Steps are taken to reduce the risk.

For example, if there is a risk that the requirements are

inappropriate, a prototype system may be developed.

39

Spiral Model [II- Quadrant]

Develop and validate the next level of the product.

Review the results achieved so far with the customer

and plan the next iteration around the spiral.

With each iteration around the spiral progressively more

complete version of the software gets built.40

Spiral Model [III &IV - Quadrant]

Model Comparison

Iterative waterfall model

most widely used model.

suitable only for well-understood problems.

Prototype model is suitable for projects which are not

well understood in terms of

user requirements

technical aspects

41

Evolutionary model is suitable for large problems

can be decomposed into a set of modules that can be

incrementally implemented,

incremental delivery of the system is acceptable to

the customer.

Spiral model

suitable for development of technically challenging

software products that are subject to several kinds of

risks.42

Model Comparison [Contd..]

Software Characteristics

1- External Characteristics- User Interest

• Correctness- degree to which system is free from faults insystem design, specification and implementation.

• Usability- Ease with which users can learn and use the system

• Reliability- ability of system to perform when requiredwithout failure.

• Integrity- prevention of unauthorized/improper use.

• Adaptability- usability in other application.

• Accuracy- degree of quantitative correctness.

• Robustness- functioning of system in presence of invalidinputs.

43

S/w Characteristics

2- Internal Characteristics- Manager Interest

• Maintainability- ease of modifying software for changing oradding capabilities or improving performance.

• Flexibility- extent of modifying system for other user orenvironment.

• Portability- ease of modifying system for operating in differentenvironment.

• Reusability- re-use of existing code

• Readability

44

Thank You !!!

45