0% found this document useful (0 votes)
45 views

SE Unit-2 SDLC & Software Process Models

The document discusses the software development life cycle (SDLC) and different software process models used in software engineering. It describes the SDLC as a process used to design, develop, and test high-quality software. Four common software process models are then outlined - waterfall, prototype, incremental, and spiral. The waterfall model is discussed in detail as a sequential linear process moving between planning, requirements, design, implementation, testing, and deployment phases.

Uploaded by

121 Kanani Ajay
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
45 views

SE Unit-2 SDLC & Software Process Models

The document discusses the software development life cycle (SDLC) and different software process models used in software engineering. It describes the SDLC as a process used to design, develop, and test high-quality software. Four common software process models are then outlined - waterfall, prototype, incremental, and spiral. The waterfall model is discussed in detail as a sequential linear process moving between planning, requirements, design, implementation, testing, and deployment phases.

Uploaded by

121 Kanani Ajay
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

Software Engineering

Unit 3: Software Process Model


Software Development Life Cycle (SDLC):
Software Development Life Cycle (SDLC) is a process used
by the software industry to design, develop and test high quality
software. The SDLC aims to produce high-quality software that
meets or exceeds customer expectations, reaches completion
within times and cost estimates.

SDLC is a process followed for a software project, within a


software organization. It consists of a detailed plan describing
how to develop, maintain, replace and alter or enhance specific
software. The life cycle defines a methodology for improving the
quality of software and the overall development process.

By: Heta S. Desai Page 1


Software Engineering

1. Planning:
Requirement analysis is the most important and
fundamental stage in SDLC. It is performed by the senior
members of the team. This information is then used to plan
the basic project approach.
2. Defining Requirement:
Once the requirement analysis is done the next step is to
clearly define and document the product requirements and
get them approved from the customer or the market
analysts.

3. Designing the architecture:


A design approach clearly defines all the architectural
modules of the product along with its communication and
data flow representation with the external and third party
modules.

4. Building or developing software:


Developers must follow the coding guidelines defined by
their organization and programming tools like compilers,
interpreters, debuggers, etc. are used to generate the code.
Different high level programming languages such as C,
C++, Pascal, Java and PHP are used for coding. The
programming language is chosen with respect to the type of
software being developed.

5. Testing the product:


This stage refers to the testing only stage of the product
where product defects are reported, tracked, fixed and
retested, until the product reaches the quality standards
defined.
6. Deployment and maintenance:
Once the product is tested and ready to be deployed it is
released formally in the appropriate market. Sometimes
By: Heta S. Desai Page 2
Software Engineering

product deployment happens in stages as per the business


strategy of that organization.

Software process Models:


A software engineering must follow some strategies
that include the process, methods, tools and generic
phases. This strategy is referred as a process model or
software engineering paradigm.
A process model for any software is chosen based on
the nature of project and application, the methods and tools
to be used, and control that are required.
Software models are:
1. Waterfall model
2. Prototype model
3. Incremental model
4. Spiral model

Waterfall model:

The Waterfall Model was first Process Model to be


introduced. It is also referred to as a linear-sequential
life cycle model. It is very simple to understand and use.
In a waterfall model, each phase must be completed fully
before the next phase can begin.
A waterfall model suggests a systematic, sequential
approach to software development that begins at the
system level and progress through analysis, design, coding,
testing and support.

By: Heta S. Desai Page 3


Software Engineering

This type of software development model is basically used


for the for the project which is small and there are no uncertain
requirements. At the end of each phase, a review takes place to
determine if the project is on the right path and whether or not
to continue or discard the project. In this model software
testing starts only after the development is complete.
In waterfall model phases do not overlap.
The central idea behind the waterfall model is that time
spent early on in a project making sure that the requirements
and design phases are absolutely correct will save more time and

By: Heta S. Desai Page 4


Software Engineering

effort later. Requirements should therefore be set in stone before


design is started, and the program's design should be perfect
before work begins on the implementation phase.

Advantages:

1. Waterfall model is simple to implement and also the


amount of resources required for it are minimal.

2. The waterfall model provides clear vision and objectives


and stable project requirements which are essential for
quality software development.

3. In the waterfall model progress of system is measurable.

Disadvantages:

1. The waterfall model requires all requirements explicitly,


but it is often difficult for the customer to state all
requirements explicitly.

2. The waterfall model is time consuming. Back-tacking is


not possible in this approach.

3. The customer must have patient. A working model of the


program will not be available until late in the project
time.

Prototype model:

The prototyping model is applied when


detailed information related to input and output requirements of the
system is not available. In this model, it is assumed that all the
requirements may not be known at the start of the development of the
system.
By: Heta S. Desai Page 5
Software Engineering

It is usually used when a system does not exist or in case of a


large and complex system where there is no manual process to
determine the requirements. This model allows the users to interact
and experiment with a working model of the system known
as prototype. The prototype gives the user an actual feel of the
system.

The basic idea in Prototype model is that instead of freezing


the requirements before a design or coding can proceed, a throwaway
prototype is built to understand the requirements. This prototype is
developed based on the currently known requirements.

Prototype model is a software development model. By using


this prototype, the client can get an “actual feel” of the system, since
the interactions with prototype can enable the client to better
understand the requirements of the desired system. Prototyping is an
attractive idea for complicated and large systems for which there is no
manual process or existing system to help determining the
requirements.

The prototype is usually not complete systems and many of the


details are not built in the prototype. The goal is to provide a system
with overall functionality.

In many instance the client only has a general view of what is


expected from the system. In such cases where there is an absence of
detailed information regarding the input to the system, the processing
By: Heta S. Desai Page 6
Software Engineering

needs and the output requirements, the prototyping model may be


employed.

At any stage, if the user is not satisfied with the prototype, it can
be discarded and an entirely new system can be developed.

By creating main user interfaces without any substantial coding


so that users can get a feel of how the actual system will appear.

This prototype is developed based on the currently known


requirements. Development of the prototype obviously undergoes
design, coding, and testing, but each of these phases is not done very
formally or thoroughly. By using this prototype, the client can get an
actual feel of the system, because the interactions with the prototype
can enable the client to better understand the requirements of the
desired system.

By: Heta S. Desai Page 7


Software Engineering

1. Requirements gathering and analysis:

A prototyping model begins with requirements


analysis and the requirements of the system are defined in
detail. The user is interviewed in order to know the
requirements of the system.

2. Quick design:

When requirements are known, a preliminary design


or quick design for the system is created. It is not a
detailed design and includes only the important aspects of
the system, which gives an idea of the system to the user.
A quick design helps in developing the prototype.

3. Build prototype:

By: Heta S. Desai Page 8


Software Engineering

Information gathered from quick design is modified to


form the first prototype, which represents the working
model of the required system.

4. User evaluation:

Next, the proposed system is presented to the user for


thorough evaluation of the prototype to recognize its
strengths and weaknesses such as what is to be added or
removed. Comments and suggestions are collected from the
users and provided to the developer.

5. Refining prototype:

Once the user evaluates the prototype and if he is not


satisfied, the current prototype is refined according to the
requirements. That is, a new prototype is developed with
the additional information provided by the user. The new
prototype is evaluated just like the previous prototype. This
process continues until all the requirements specified by the
user are met. Once the user is satisfied with the developed
prototype, a final system is developed on the basis of the
final prototype.

6. Engineer product:

Once the requirements are completely met, the user


accepts the final prototype. The final system is evaluated
thoroughly followed by the routine maintenance on regular
basis for preventing large-scale failures and minimizing
downtime.

Advantage:

1. The prototyping model serves to clarify requirements, which


are not clear, hence reducing ambiguity and improving
communication between the developers and users.

By: Heta S. Desai Page 9


Software Engineering

2. There is a great involvement of users in software


development. Hence, the requirements of the users are met
to the greatest extent.
3. Provides a working model to the user early in the process,
enabling early assessment and increasing user's confidence.

Disadvantage:

1. If the user is not satisfied by the developed prototype, then


a new prototype is developed. This process goes on until a
perfect prototype is developed. Thus, this model is time
consuming and expensive.
2. Prototyping can lead to false expectations. For example, a
situation may be created where the user believes that the
development of the system is finished when it is not.

Incremental model:

Incremental model is an evolution of waterfall model. The


system is designed, implemented, integrated and tested as a series of
incremental model. This model combines elements of linear sequential
model with the iterative method.

Incremental Model is a process of software development


where requirements are broken down into multiple standalone
modules of software development cycle.

Each iteration passes through the requirements, design,


coding and testing phases. And each subsequent release of the
system adds function to the previous release until all designed
functionality has been implemented.

In incremental model the whole requirement is divided into


various builds. Multiple development cycles take place here, making
the life cycle a “multi-waterfall” cycle. Cycles are divided up into
smaller, more easily managed modules.

By: Heta S. Desai Page 10


Software Engineering

In this model, each module passes through the requirements,


design, implementation and testing phases. A working version of
software is produced during the first module, so you have working
software early on during the software life cycle. Each subsequent
release of the module adds function to the previous release. The
process continues till the complete system is achieved.

The system is put into production when the first


increment is delivered. The first increment is often a core product
where the basic requirements are addressed, and supplementary
features are added in the next increments. Once the core product is
analyzed by the client, there is plan development for the next
increment.

When an incremental model is used, the first increment is often a


core product. The core product is used by the customer. As a result of
use and evolution, a plan is developed for the next increment. The
plan addresses the modification to the core product to better meet its
need of the customer and delivery of additional features and
functionality. This process is repeated following the delivery of each
increment, until the complete product is produced. Software is
constructed in a step-by-step manner.

It involves both development and maintenance. The product is


defined as finished when it satisfies all of its requirements. The

By: Heta S. Desai Page 11


Software Engineering

product is decomposed into number of components, each of which are


designed and built separately. Each component is delivered to the
client when it is complete. This allows partial utilization of product and
avoids a long development time.

Incremental software development model may be applicable to


projects where:

 Software requirements are well defined, but realization may


be delayed.
 The basic software functionality is required early.
 This model can be used when the requirements of the
complete system are clearly defined and understood.

Advantages:

1. System is developed and delivered in increments after


establishing an overall architecture.
2. Users may experiment with the delivered increments while
others are being developed.
3. Early increments can be implemented with fewer people.
4. Generates working software quickly and early during the
software life cycle.
5. Easier to manage risk because risky piece are identified and
handled during its iteration.
6. It is easy to test and debug than other methods of software
development because relatively smaller changes are made
during each iteration.

Disadvantages:

1. Problems may arise pertaining to system architecture


because not all requirements are gathered up front for
entire software life cycle.
2. Resulting cost may exceed the cost of the organization.
3. Needs a clear and complete definition of the whole system
before it can be broken down and built incrementally.
By: Heta S. Desai Page 12
Software Engineering

Difference between waterfall and Incremental model:

1. Waterfall development completes the project work of each


order in one step before moving on to the next order in the
next step.
2. Business value is delivered all at once, and only at the very
end of the project in waterfall model.
3. Backtracking is possible in an Iterative approach.

Spiral model:

This Spiral model is a combination of iterative development


process model and sequential linear development model i.e. the
waterfall model with a very high emphasis on risk analysis. It allows
incremental releases of the product or incremental refinement through
each iteration around the spiral. Generally Spiral Model strategy is
followed for the large and complicated projects where risks are high
and development and testing goes on incremental basis. Spiral Model
is also known as Spiral Lifecycle Model.

The spiral model comprises activities organized in a spiral, and has


many cycles. This model combines the features of the prototyping
model and waterfall model and is advantageous for large, complex,
and expensive projects. It determines requirements problems in
developing the prototypes. In addition, it guides and measures the
need of risk management in each cycle of the spiral model.

The spiral model as 'a model of the software development process in


which the constituent activities, typical requirements analysis,
preliminary and detailed· design, coding, integration, and testing, are
performed iteratively until the software is complete.

One of the key features of the spiral model is that each cycle is
completed by a review conducted by the individuals or users. This
includes the review of all the intermediate products, which are
developed during the cycles. In addition, it includes the plan for the
next cycle and the resources required for that cycle.

By: Heta S. Desai Page 13


Software Engineering

The spiral model is similar to the waterfall model as software


requirements are understood at the early stages in both the models.
However, the major risks involved with developing the final software
are resolved in the spiral model. When these issues are resolved, a
detailed design of the software is developed.

A spiral model has 4 phases described below:

1. Planning phase:
It includes estimating the cost, schedule and resources for
the iteration. It also involves understanding the system
requirements for continuous communication between the system
analyst and the customer.

2. Risk analysis phase:


Identification of potential risk is done while risk mitigation
strategy is planned and finalized.

3. Engineering phase:
It includes testing, coding and deploying software at the
customer site

4. Evaluation phase:
Evaluation of software by the customer. Also, includes
identifying and monitoring risks such as schedule slippage and
cost overrun

By: Heta S. Desai Page 14


Software Engineering

A software project repeatedly passes through these phases in cyles


(called spirals in this model). In Spiral Model, before each cycle to
involve stake holders to decide on scope of cycle to arrive at plan.
Following this, risk analysis is carried out to arrive at list of risks Stake
holders perform concurrent engineering to address these risks through
protyping and before the completion of current cycle. Software is
produced in the engineering phase and tested at the end of the phase.
The evaluation phase allows the customer to evaluate the output of
the project before the project continues to the next spiral.

When to use spiral model?

 When the project is large


 Software requires significant changes.
 Where the software needs continuous risk evaluation.

Advantage:

 Changing requirements can be accommodated.


 Users see the system early.

By: Heta S. Desai Page 15


Software Engineering

 Development can be divided into smaller parts and the risky


parts can be developed earlier which helps in better risk
management.

Disadvantage:

 End of the project may not be known early.


 Spiral may go on indefinitely.
 Not suitable for small or low risk projects and could be
expensive for small projects.
 Process is complex

By: Heta S. Desai Page 16

You might also like