K T 2 4 6 0 2 Software Engineering: W3 Development Methodologies

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

KT24602

SOFTWARE
ENGINEERING

W3; DEVELOPMENT
METHODOLOGIES
• Why a methodology?

• Agile methodologies

• Waterfall model

• Rational Unified Process

• Spiral model

TOPICS • Incremental iteration model

• eXtreme programming

• Scrum

• Process standards and software


engineering methodologies
• Software process activities
SOF TWARE ENGINEERING METHODOLOGIES

Methods of using SE to build a software product can differ from one software project to another.
Depends on factors like difficulty in getting user software requirements, marketing strategy for the software
product, size of the software product, and speed at which the software product needs to be built.
Popular software engineering methodologies:
Waterfall, Scrum, eXtreme Programming, Boehm’s Spiral model, Rational Unified Process etc.
Depending on the needs, a software project team can choose the right methodology to develop the software
product.
Waterfall model is also known as plan driven methodology.
Scrum and eXtreme Programming are examples of Agile methodologies. These methodologies are also known
as incremental iteration models.
SOFTWARE ENGINEERING METHODOLOGIES

Any SE methodology will always include software engineering core


processes:
Requirement management,
Software design,
Software construction,
Software testing,
Software maintenance and software release.
The peripheral software engineering processes include project
management, feasibility study, configuration management etc. The
difference in all of these software engineering methodologies lie in the
way these software engineering processes are executed.
SOFTWARE ENGINEERING METHODOLOGIES

Waterfall
model
with
quality
gates
SOFTWARE ENGINEERING METHODOLOGIES

Waterfall model evolved when the USA military in 1970s


found that the software being developed for their needs
often used to exceed the budget. Often these software
projects also used to take more time than expectations of
the USA military.
In Waterfall model, each software engineering process
follows after the previous process ends. As the name
suggests, in Waterfall model, the upstream processes feed
the downstream processes much like in a waterfall; a
downstream body of water is fed from a upstream body of
water.
SOFTWARE
ENGINEERING
METHODOLOGIES

Rational Unified Process Model


(RUP)
SOFTWARE ENGINEERING METHODOLOGIES
In waterfall model it is assumed that all software requirements are available
and are fixed before software design can be made. In reality it is not
always the case.
Rational Unified Process (RUP) model overcomes this limitation by allowing
iterations over any of the phase in the Waterfall model.
If software requirements are not clear or complete in the first pass then
using one more iteration, software requirements can be elaborated one
more time to make them clear and complete. If they are still not clear then
one more iteration can be taken.
The RUP model has phases on X axis and workflows on Y axis. Based on the
amount of work required in a phase, a heap is shown in a RUP diagram.
SOFTWARE
ENGINEERING
METHODOLOGIES

Boehm’s Spiral Model


SOFTWARE ENGINEERING METHODOLOGIES
Barry Boehm had postulated that software development work is
inherently risky. Risk mitigation strategies must be built inside the
software development project along side software engineering
processes. This thinking resulted in evolution of Spiral model.
There are 4 quadrants in this model. In each quadrant a prototype is
designed, developed and tested based on user software
requirements. Once the prototype is ready then next prototype is
built. You keep moving from one quadrant to another using an
iteration to keep building prototypes. Once complete prototype is
ready then the software product can be built based on the fully
deigned, developed and tested prototype.
SOFTWARE
ENGINEERING
METHODOLOGIES

Incremental building of a software


product using iterations
SOFTWARE ENGINEERING METHODOLOGIES

Agile methodologies (eXtreme Programming, Scrum etc.)


are named so because they help in achieving agility in the
software development process.
In Waterfall model it takes a long time to develop a software
product. During development time it is very difficult to
incorporate any changes in the software product. This
makes it difficult to align the software product as per
changing user needs.
In Agile methodologies software products are built in
increments using iterations.
SOFTWARE ENGINEERING METHODOLOGIES

eXtreme Programming (XP) is one of the most commonly used Agile


methodology for building software products. Some of the peculiar
terminology used in XP include pair programming, test driven
development, user stories etc.
The name eXtreme suggests that in this methodology software
programming is taken seriously and in fact it is taken to the extreme.
For example test cases are created even before implementing a
business logic to ensure that the business logic can be implemented
correctly and there should be no software defects in the business
logic implementation.
SOFTWARE ENGINEERING METHODOLOGIES

Scrum is another popular Agile methodology for software


product development. Some of the peculiar words used
with Scrum include product backlog, sprint, sprint
backlog, sprint master, etc.
Scrum uses lots of verbal communication among project
team members. There are daily meetings where team
members discuss about issues and how to tackle them.
Project planning includes daily plans, sprint (iteration)
plans and major release plans.
SOFTWARE ENGINEERING METHODOLOGIES

Project plan for implementing COTS/SaaS product


SOFTWARE ENGINEERING METHODOLOGIES
Commercial Off The Shelf (COTS) and Software as a Service (SaaS) products are
already developed software products. The standard versions of these products
are available in the market. However some product features required by
customers may not be available in these standard versions. Custom software
product features need to be developed to meet these customer specific needs.
Apart from custom software product features, the project team also needs to create
/ migrate data in the software product.
There are many alternate options available in these software products to perform
any transaction. The option which suits the needs of the customer needs to be set
up in the software product. This activity is known as configuration of the software
product.
The project planning for the COTS/SaaS products implementation include initiation,
blueprinting, realization and go live. Software engineering processes inside these
project processes include requirement management, fit gap analysis, solution
design, customization, configuration etc.
SOFTWARE ENGINEERING METHODOLOGIES
Benefits & drawbacks of various software methodologies
Some of the factors which determine which software engineering
methodology to be used for building a software product:
speed, incremental versus complete, software product size etc.
If the customer wants to launch a software product quickly in the
market with a bare minimum product features then any agile
methodology will be used for developing the software product.
If the customer wants to build a large software product in a short span
of time then any Waterfall based software engineering methodology
will be a better choice.
SOFTWARE ENGINEERING METHODOLOGIES
Software engineering standards
Software engineering methodologies themselves need to mature over
time. Otherwise they will get obsolete over time. When a new
methodology is introduced, it is not mature and may have many
flaws. These flaws are removed when they are discovered.
Software engineering standards have been defined which help in
improving software engineering methodologies and their processes.
Some popular software engineering standards include Capability
Maturity Model (CMM) by Software Engineering Institute at Carnegie
Mellon University, ISO 2000 by International Standards Organization
etc.
SOFTWARE ENGINEERING METHODOLOGIES
Software engineering artifacts
Software engineering process activities are performed to produce
software project artifacts.
When software requirement management activities are performed
then a software requirement specification document is generated. A
software design document is the result of performing software
design activities. A software product build is the result of software
construction activities. A tested and defect free software product is
the result of software testing activities. A complete implementable
version of a software product is the result of software release
activities.

You might also like