Unit 1 Process Models

Download as pdf or txt
Download as pdf or txt
You are on page 1of 13

Process Models

Prescriptive process models define a prescribed set of process elements


and a predictable process workflow.

Prescriptive process models are sometimes referred to as “traditional”


process models.

1. Waterfall Model (or Classical/Linear Model)

The waterfall model sometimes called as classical life cycle, suggests a


systematic sequential approach that begins with customer specifications of
requirements and progresses through planning, modeling, construction,
and deployment phases.

The waterfall model is the oldest paradigm for software engineering. When
requirements are well defined and reasonably stable it leads to a linear
fashion. The waterfall model considers that one phase starts after the
completion of the previous phase. That is the output of one phase will act
as input for the next phase. The phases do not overlap with each other in
the waterfall model.

The phases of the waterfall model can be seen in the below diagram:
Let’s see each of them clearly:

1. Communication
Before any technical work can commence, it is critically important to
communicate and collaborate with customers and other stakeholders.
The intent is to understand the stakeholders’ objectives for the project
and gather the requirements that help define software features and
functions.

2. Planning
Any complicated journey can be simplified by using maps. A software
project is a complicated journey and the planning activity creates a
map that guides the team as well as simplifies the software project
journey.

A map also called a software project plan defines the software


engineering work by describing the:
a. Technical tasks to be conducted
b. The risks that are likely
c. The resources that will be required
d. The work products to be produced
e. The work schedule

3. Modeling
Modeling in simple terms means creating a design before
approaching the bigger task. In terms of software engineering, a
software engineer does the same thing by creating models to better
understand requirements and the design that will achieve those
requirements.
4. Construction
After the design is ready we need to build the project based on the
design. The construction activity combines code generation(manual
or automated) using any desired programming language and testing
that is required to uncover all errors present in the code or the
system.

5. Deployment
In the deployment phase, the complete software or partially
completed software needs to be delivered to the customer who
evaluates the delivered product and gives their feedback.

Advantages:

1. The model is simple and easy to understand.


2. Phases in this model are processed one at a time.
3. Each stage of the model is clearly defined.
4. Process, action, and results are well documented.
5. One of the most systemic methods for software development.
6. Being the oldest, this is one of the time-tested models.

Disadvantages:

1. Difficult to define all the requirements at the beginning of the project.


2. The model is not suitable for accommodating any change.
3. It doesn’t have any proper mechanism for error correction.
4. A working version of the system is not seen until late in the project’s
life.
5. It does not scale up well to large projects.
6. Real projects are rarely sequential.
Examples (or Application Areas):

1. Human Resource Management System (HRMS)


2. Inventory System
3. Customer Relationship System (CRM)
4. Supply Chain Management System
5. Point of Sales (PoS)

2. V Model

A variation of the waterfall model depicts the relationship of quality


assurance actions to the actions associated with communication,
modeling, and early code construction activities.

The team first moves down the left side of the V to refine the problem
requirements.

Once code is generated, the team moves up the right side of the V,
performing a series of tests that validate each of the models created as the
team moved down the left side.
3. Incremental Model

The incremental model delivers a series of releases, called increments,


that provide progressively more functionality for the customer as each
increment is delivered.
Delivers software in small but usable pieces, each piece builds on pieces
already delivered

First Increment is often core product


● Includes basic requirement
● Many supplementary features (known & unknown) remain
undelivered

A plan of the next increment is prepared


● Modifications of the first increment
● Additional features of the first increment

The incremental model applies linear sequences in a staggered fashion as


calendar time progresses. Each linear sequence produces deliverable
“increments” of the software.

Example:

For example, word-processing software developed using the incremental


paradigm might deliver basic file management, editing, and document
production functions in the first increment; more sophisticated editing and
document production capabilities in the second increment; spelling and
grammar checking in the third increment; and advanced page layout
capability in the fourth increment. It should be noted that the process flow
for any increment can incorporate the prototyping paradigm discussed in
the next subsection.

The incremental model focuses more on the delivery of operation products


with each increment.

Advantages:

1. Rigid nature of the sequential approach.


2. This method is great to help when an organization is low on staffing.
3. Generate working software quickly and early during the software life
cycle.
4. More flexible – less costly to change scope and requirements.
5. Easier to test and debug during a small iteration.
6. Easier to manage risk because risky pieces are identified and
handled during their iteration.
7. Each increment is an easily managed milestone.

Disadvantages:

1. This model could be time-consuming.


2. Each phase of an increment is rigid and does not overlap each other.
3. Problems may arise in system architecture; all the requirements are
not gathered up during the entire software life cycle.
3. Evolutionary Process Model

Evolutionary process models produce an increasingly more complete


version of the software with each iteration. A limited version must be
introduced to meet competitive or business pressure.

“Evolutionary models are iterative.”

Evolutionary models are:


1. Prototyping
2. Spiral Model
3. Concurrent Development Model

Prototyping:

Usually, objectives defined by the customer are general but do not have
details like input, processing, or output requirement. The developer may be
unsure of the efficiency of an algorithm, adaptability of the operating system
or the form of human-machine interaction should take. In such scenarios, a
prototyping paradigm may offer the best approach.

It can be used as a standalone process model. The Prototyping model


assists software engineers and customers in better understanding what is
to be built when the requirement is fuzzy.
Prototyping starts with communication, between a customer and software
engineer to define the overall objective, identify requirements and make a
boundary.

Going ahead, planning quickly and modeling (software layout visible to the
customers/end-user) occurs.

Quick design leads to prototype construction.

The prototype is deployed and evaluated by the customer/user.


Feedback from customer/end-user will refine requirements and that is how
iteration occurs during the prototype to satisfy the needs of the customer.

Prototyping Advantages:

1. Customer/End-user gets a feel for the actual system


2. The developer gets to build something immediately.
3. New requirements can be easily accommodated as there is scope for
refinement.
4. Missing functionalities can be easily figured out.
5. The developed prototype can be reused by the developer for more
complicated projects in the future.

Prototyping Disadvantages:

1. The customer cries foul and demands that “a few fixes” be applied to
make the prototype a working product, due to that software quality
suffers as a result.

2. To make the prototype work we compromise with the programming


language, operating system and sometimes even use inefficient
algorithms. After a time, we may become comfortable with these
choices and forget all the reasons why they were inappropriate. The
less-than-ideal choice has now become an integral part of the
system.

3. Customer and developer both must agree that the prototype is built to
serve as a mechanism for defining requirements.
Spiral Model

The spiral model is an evolutionary software process model that couples


the iterative nature of prototyping with the controlled and systematic
aspects of the waterfall model. It provides the potential for rapid
development of increasingly more complete versions of the software.

The spiral model can be adapted to apply throughout the entire life cycle of
an application, from concept development to maintenance.

It has two main distinguishing features.

One is a cyclic approach for incrementally growing a system’s degree of


definition and implementation while decreasing its degree of risk.

The other is a set of anchor point milestones for ensuring stakeholder


commitment to feasible and mutually satisfactory system solutions.

During early iterations, the release might be a model or prototype. During


later iterations, increasingly more complete versions of the engineered
system are produced.

Risk is considered as each revolution is made.


Anchor point milestones—a combination of work products and conditions
that are attained along the path of the spiral— are noted for each
evolutionary pass.
Cost and schedule are adjusted based on feedback derived from the
customer after delivery. The spiral model is a realistic approach to the
development of large-scale systems and software.

The evolutionary process begins in a clockwise direction, beginning at the


center of risk. The first circuit around the spiral might result in the
development of a product specification. Subsequently, develop a prototype
and then a progressively more sophisticated version of the software. Unlike
other process models that end when software is delivered, the spiral model
can be adapted to apply throughout the life of the computer software.
Advantages:

1. It is a realistic approach for developing a large-scale system.


2. The high amount of risk analysis.
3. Good for large and mission-critical projects.
4. Software is produced early in the software life cycle.

Disadvantages:
1. It is not widely used and can be a bit costly to use.
2. Risk analysis requires highly specific expertise.
3. The project’s success is highly dependent on the risk analysis phase.
4. Doesn’t work well for smaller projects.
5. It demands considerable risk assessment expertise and relies on this
expertise for success.
6. It may be difficult to convince customers that the evolutionary
approach is controllable.

You might also like