Software Engineering Lecture2

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

Software Process Models

Software Process Models


• Waterfall model
• Iterative Waterfall model
• V Model (V & V model)
• Prototype Model
• Incremental Model
• Spiral Model
• Agile methodology
Waterfall model

Observation:
• Introduced by Winston W. Royce in 1970
• Linear Sequential Approach
• Next phase can be started only after
completing the current phase.
• No path to go back
1. Requirements Gathering and Analysis: Gathering
requirements from stakeholders and analyzing to understand the
scope and objectives of the project.
2. Feasibility Study: Evaluate the feasibility of a proposed project
or an existing software used by the business. Business case is
generated as an output.
3. Design Phase: Creating a detailed design document that
Phases of outlines the software architecture, user interface, and system
components.
Waterfall 4. Implementation and Unit Testing: Coding the software and
Model unit testing to ensure that each component of the software is
working as expected.
5. Integration and System Testing: Tested to ensure that it meets
the requirements and is free from defects.
6. Deployment: Deployed to the production environment.
7. Maintenance: Fixing any issues that arise after the software has
been deployed and ensuring that it continues to meet the
requirements over time.
Requirement Analysis

• Gather requirements data from the


customers and analyze the collected data
to understand the customers need.
• Remove problems related to the
requirements:
• Inconsistencies
• Anomalies
• Incompleteness
• All the ambiguity must be removed by
discussing with the customers
• Output: Design one SRS document
Types of Feasibility Study
Design
• Using the SRS documents, designer produce a document that can be
easily implemented in some programming language
• Two commonly used design approaches:
• Traditional:
• High level design – Decompose the system into modules and
represent invocation relationships among modules
• Detailed design – Modules are designed in greater details
where data structure and algorithm of each module is
designed
• Object Oriented:
• Identify various objects i.e., real world entities
• Relationship among the entities
• Provides lower development time, effort and better
maintainability
Implementation and
unit testing

• Each module of design is implemented.


• Functionality of the module is unit
tested.
• Finally, each module is documented.
Integration and system
testing
Integration testing:
• Different modules are integrated through N
number of steps
• During each step partially integrated system is
tested

System testing:
• After integration of all the modules, system
testing is carried out
• Ensure the developed system works according to
the SRS documentation
Maintenance

• Requires much more effort than the effort


to develop the product itself
• It is 40:60 ratio
• Maintenance types:
• Corrective maintenance
• Perfective maintenance: improve or
enhance functionalities
• Adaptive maintenance: Port software
to a new environment
http://acl.digimat.in/nptel/courses/video/106105182/lec8.pdf
Features
1. Sequential Approach: Each phase of the project is completed before moving on to the
next one.

2. Document-Driven: Relies heavily on documentation to ensure that the project is well-


defined, and the project team is working towards a clear set of goals.

3. Quality Control: High emphasis on quality control and testing at each phase to ensure
that the final product meets the requirements and expectations of the stakeholders.

4. Rigorous Planning: The project scope, timelines, and deliverables are carefully defined
and monitored throughout the project lifecycle.
Pros and Cons : Waterfall model

Advantages Disadvantages
Easy to Understand No Feedback Path
Individual Processing: Processed one at a time. Difficult to accommodate Change Requests
Properly Defined No Overlapping of Phases
Clear Milestones: Clear and well-understood Limited Flexibility: Rigid and linear approach, not for
milestones. uncertain requirements.

Properly Documented: Processes, actions, and results Limited Stakeholder Involvement


are very well documented. Late Defect Detection
Reinforces Good Habits: Like define-before- Not Suitable for Complex Projects: Difficult to manage
design and design-before-code. multiple dependencies and interrelated components.
Working: For smaller projects and projects where Lengthy Development Cycle: Result in delays and
requirements are well understood. increased costs if any changes or new issues arise.
When to use Waterfall model
Requirements are very well documented, clear and fixed.

Product definition is stable.

Technology is understood and is not dynamic. There are no ambiguous


requirements.
Ample resources with required expertise are available to support the product.

The project is short.


Application areas

• Large-scale Software Development Projects: A structured and sequential approach is


necessary to ensure that the project is completed on time and within budget.
• Safety-Critical Systems: Used in the development of safety-critical systems, such as
aerospace or medical systems.
• Government and Defense Projects: A rigorous and structured approach is required to
ensure on time delivery of the project.
• Projects with well-defined Requirements
• Projects with Stable Requirements: Linear nature of the model does not allow for
changes to be made once a phase has been completed.
Problems with classical waterfall model
Assumes that no defect is introduced during any
Classical waterfall model is more idealistic development activity

In practice Defects occur in every phases of SDLC model

Becomes more expensive as some of the phase activity


Defects usually get detected much later needs to be repeated

Need a feedback in Classical waterfall model


Iterative Waterfall
model
• It contains feedback paths
• After noticing defects in any phase, one can go
back to previous phases and can fix the defects.
• The defects must be detected and fixed in the
same phase to lower the correction cost.
• The more delay occurs in detecting the defect,
the more expensive it will be.
• It is also known as Phase containment of
errors (The principle of detecting errors as
close to its point of the introduction).
• Heavily used and considered as fundamental
model.
Iterative Waterfall model

Advantage: Disadvantages: When to Use:

• Easy to understand, easy to use. • All requirements must be known • Requirements are well known
• Provides a reference for upfront. and stable.
inexperienced staff. • Deliverables created for each • Technology is understood.
• Milestones are well understood phase are considered frozen. • Experienced development team.
by the team. • It can give a false impression of
• It provides requirements progress as there is no output
stability. until the project’s completion.
• Facilitates strong management • Integration is one big bang at
controls. the end.
• Little opportunity for the
customer to preview the system.
V Model (Verification
& Validation model)
• An extension of the waterfall model.
• Association of a testing phase for each
corresponding development stage.
• Corresponding testing phase of the development
phase is planned in parallel.
• There are Verification phases on one side of the ‘V’
and Validation phases on the other side.
• The Coding Phase joins the two sides of the V-
Model.
Sommerville, I. (2004). Software engineering. Pearson Education India
Verification phase

Phase, in which the work produced in the design phase is checked to


ensure that it meets the specified requirements.

This is done through activities such as inspections, reviews, and testing.

The goal of the verification phase is to find and fix defects as early as
possible in the development process, in order to reduce the overall cost
of fixing those defects
Sommerville, I. (2004). Software engineering. Pearson Education India
Verification Phases
Business Requirement Specification

• Product requirements are understood from the customer’s perspective.


• Involves detailed communication with the customer to understand his expectations and
exact requirement.
• Needs to be managed well, as most of the customers are not sure about what exactly
they need.
• The acceptance test design planning is done by feeding business requirements as an input
for acceptance testing.

System Design

• The system will have the understanding and detailing the complete hardware and
communication setup for the product under development.
• The system test plan is developed based on the system design. Doing this at an earlier
stage leaves more time for the actual test execution later
Sommerville, I. (2004). Software engineering. Pearson Education India
Verification phases
Architectural Design

• The system design is broken down according to different functionality and referred as High-Level Design
(HLD)
• The data transfer and communication between the internal modules and with the outside world (other
systems) is understood and integration tests can be designed and documented during this stage.

Detailed Design

• Low-Level Design (LLD).


• Unit tests are performed based on the internal module designs. The unit tests help to eliminate the
maximum faults and errors at a very early stage

Implementation

• Detailed design is transformed into the code.


• The coding is done based on the coding principles and standards in a particular selected programming
language
Validation Phases
Unit Testing: Integration Testing:
• Executed to remove bugs at code level. • The integration test cases are executed
• Unit Test Plans are created during the which were developed in the High-level
Detailed design phase. 1 design phase.
• Unit tested modules are integrated and
evaluated that whether modules work
together as expected or not .

System Testing: Acceptance Testing:


• It corresponds with the system design • This testing is done to check that the
phase. delivered system meets user’s
• It tests the functional and non-functional 3 requirement or not.
requirements and evaluate the whole • Nonfunctional testing such as Load,
system functionality and the Stress etc. are also done in this phase
communication of the system with
external systems.
Why preferred? When to use?
It is easy to manage due to the rigidity of the Where requirements are clearly defined and
model. Each phase of V-Model has specific fixed.
deliverables and a review process. When ample technical resources are available
Proactive defect tracking – Defects are found at with technical expertise.
early stage. Small to medium-sized projects with set and
clearly specified needs.
Advantages of V Model Disadvantages of V Model

Good for small project Can not be use for large project.
Very simple, easy and useful. Not good if customer’s requirements are
Can track the process of project not clear.
management. Not easy for complex projects .
Saves a lot of time and efforts. Client have no prototype and involvement
Testing at the initial phase reduces the during the software development.
possibilities of bugs Contains less flexibility.
It is hard to go back and alter the working
of the system if new requirements are met
Prototyping Model

• Prototyping
• Creating a working miniature model of
Actual Product to be developed.
• Useful to capture customer feedback.
• Useful if customer is not sure about
requirements in initial stage.
• Enhancement Types
• Vertical (DFS)
• Horizontal (BFS)
Prototyping
model

https://www.geeksforgeeks.org/software-engineering-prototyping-model/
Types of Prototyping Model
Uses a very little requirement analysis for the first prototype
Rapid-Throwaway Throwaway first prototype after the actual requirement identified
Work starts on the actual Software

Evolutionary Building actual functional prototypes with minimal functionality in the beginning
Well-understood requirements are included in the prototype and the requirements are added in the software as
Prototyping and when they are understood

Incremental Build multiple functional prototypes of the various sub-systems


Prototyping Integrate all the available prototypes to form a complete system

Mostly used for Web Apps. Consists three sequential phases


First, Create all the required Web pages (UI)
Extreme Secondly, data processing with help of dummy service layer (Business logic, Authentication and authorization, Other
Prototyping back-end services (Build – Transform - Code))
Implement the actual service and integrate with the UI
Disadvantages Advantages
Costly w.r.t time as well as money Greater level of customer satisfaction and comfort
There may be too much variation in requirements New requirements can be easily accommodated as
each time the prototype is evaluated by the customer. there is scope for refinement
Poor Documentation due to continuously changing Missing functionalities can be easily figured out
customer requirements Errors can be detected much earlier thereby saving
It is very difficult for developers to accommodate all a lot of effort and cost, besides enhancing the
the changes demanded by the customer quality of the software.
Developers in a hurry to build prototypes may end The developed prototype can be reused by the
up with sub-optimal solutions. developer for more complicated projects in the
The customer might lose interest in the product if future
he/she is not satisfied with the initial prototype Flexibility in design
Why to use Prototype
model
• Learning by doing
• Improved user involvement
• Reduced need of documentation
• Reduced maintenance cost
• Anyone can get a good quality software
• It is impossible to “get it right” for the first time
• Successive version model
Incremental • simple working system implementing only a few basic features is built

Model and delivered to the customer.


• Successive iterations/ versions are implemented and delivered to the
customer.
Online Shopping
Incremental Model Contd.
Which increment should come first?

Based on dependency Value to cost ratio will be used


When to use: Advantage Disadvantages:
Requirements are finalized upfront You can develop prioritized A good team and proper planned
Lengthy Schedule requirements first. execution are required.

Require new technological updates Initial product delivery is faster. Because of its continuous iterations
Customers gets important the cost increases.
Customer ready for continues
communication functionality early.
Lowers initial delivery cost.
Customer will have a working
product at hand all the time.
Spiral Model

• Planning: The scope of the project is determined,


and a plan is created for the next iteration of the
spiral
• Risk Analysis: The risks associated with the
project are identified and evaluated.
• Engineering: The software is developed based on
the requirements gathered in the previous iteration.
• Evaluation: The software is evaluated to determine
if it meets the customer’s requirements and is of
high quality.
Risk Handling in Spiral Model
1. Build a prototype at every phase of software development.
2. The Prototyping Model also supports risk handling, but the risks must be
identified completely before the start of the development work of the
project.
3. But in real life, project risk may occur after the development work starts,
in that case, we cannot use the Prototyping Model.
4. In each phase of the Spiral Model, the features of the product dated and
analyzed, and the risks at that point in time are identified and are resolved
through prototyping.
5. Thus, this model is much more flexible compared to other SDLC models.
Why is
Spiral Model
called Meta
Model?
When to use Spiral Model ?

When deliverance is When requirements


When the project is
required to be are unclear and
large
frequent. complex

When changes may Large and high Project with


require at any time budget projects moderate to high risk
Advantages
• Risk Handling at every phases
• Good for large projects
• Flexibility in Requirements
• Customer Satisfaction
• Iterative and Incremental Approach, allowing for flexibility and adaptability in response
to changing requirements or unexpected events.
• Improved Communication
• Improved Quality
Disadvantages
• Complex
• Expensive and is not suitable for small projects.
• Too much dependability on Risk Analysis and without very highly experienced experts, it
is going to be a failure to develop a project using this model.
• Difficulty in time management: As the number of phases is unknown at the start of the
project, time estimation is very difficult.
• Time-Consuming: It requires multiple evaluations and reviews.
• Resource Intensive: Requires a significant investment in planning, risk analysis, and
evaluations.
Agile Model
• Agile means swift or
versatile.

• Based on iterative
development.
Development phases
• Requirements gathering
• Design the requirements: user flow diagram or the high-level UML
diagram
• Construction/ iteration: Designers and developers start working on their
project
• Testing: Quality Assurance team examines the product's performance and
looks for the bug.
• Deployment: A product is issued for the user's work environment.
• Feedback: The team receives feedback about the product and works on it.
How is agility achieved?

• Fitting the process to project


• Avoidance of things that waste time.
• Does not focus much on development
document preparation
• Break tasks into smaller iterations, do not directly
involve long term planning.
• Plans regarding the number of iterations, the
duration and the scope of each iteration are
clearly defined in advance.
• Each iteration is considered as a short time
"frame", which typically lasts from one to four
weeks.
Agile Manifesto: Ideology

• Focus on individuals and interactions rather than


process and tools
• Working on software development rather than
comprehensive documentation
• Customer collaboration over contract negotiation
• Responding to change over following a plan
Agile Testing
Methods
• Scrum
• Crystal
• Dynamic Software Development
Method(DSDM)
• Feature Driven
Development(FDD)
• Lean Software Development
• eXtreme Programming(XP)
Scrum

• SCRUM is an agile development process focused primarily on


ways to manage tasks in team-based development conditions.

• There are three roles in it, and their responsibilities are:


• Scrum Master: The scrum can set up the master team,
arrange the meeting and remove obstacles for the process.
• Product owner: The product owner makes the product
backlog, prioritizes the delay and is responsible for the
distribution of functionality on each repetition.
• Scrum Team: The team manages its work and organizes
the work to complete the sprint or cycle.
Crystal
There are three concepts of this method-
• Chartering: Multi activities are involved in this phase such as making a development
team, performing feasibility analysis, developing plans, etc.
• Cyclic delivery:
• Team updates the release plan.
• Integrated product delivers to the users.
• Wrap up: According to the user environment, this phase performs deployment, post-
deployment.
Dynamic Software Development Method(DSDM)

• DSDM is a rapid application development and gives an agile project distribution


structure.

• Users must be actively connected, and teams have been given the right to make decisions.

• The techniques used in DSDM are:


1. Time Boxing
2. MoSCoW Rules
3. Prototyping
• This method focuses on "Designing and Building"
Feature Driven features.
Development(FDD) • FDD describes the small steps of the work that
should be obtained separately per function.
Lean Software
Development
• Follows the principle "just in time production."
• It provides speedy delivery of software in minimal
cost by summarized the tasks in seven phases.
1. Eliminating Waste
2. Amplifying learning
3. Defer commitment
4. Early delivery
5. Empowering the team
6. Building Integrity
7. Optimize the whole
eXtreme
Programming(XP)
• This type of methodology is used
• when customers are constantly
changing demands or requirements,
• when they are not sure about the
system's performance.
Principal Techniques
User stories: an informal, general explanation of a software feature written from
customer or user perspective

Metaphor: Based on user stories, developer propose a common vision of the


requirement

Spike: Program to provide potential solutions

Refactor: Restructure code without affecting behavior, efficiency, structure, etc.


Agile working
methodology
• Face to face communication
over written documents
• Team share a single
office space
• Team size : 5-9
• Most suited for small
projects
Agile
model:
Principles

Incremental release of
working software
Agile documentation
• Very less documented
• Documents:
• Concise
• Add info that is very less likely to change
• Add “good things to know”
• Sufficiently accurate, consistent, and detailed
• Needs valid reason to document:
• Request from stakeholder
• For a communication with external group
• For thorough understanding
Disadvantages
1. Due to the shortage of formal documents, it creates confusion and crucial decisions taken
throughout various phases can be misinterpreted at any time by different team members.

2. Due to the lack of proper documentation, once the project completes and the developers
allotted to another project, maintenance of the finished project can become a difficulty.

3. Sketchy definitions , make it possible to have inconsistent and diverse definitions

4. Difficult to quantify cost, time and quality.


Comparison
among the
models
Classical vs.
Agile model
References
• https://www.geeksforgeeks.org/waterfall-model/
• https://notepub.io/notes/software-engineering/software-development-life-cycle/sdlc-
iterative-waterfall-model/
• “Software Engineering: A Practitioner’s Approach” by Roger S. Pressman, published by
McGraw-Hill Education, 2017.
• Fundamentals of Software Engineering, 5th Edition, Rajib Mall, PHI.
• Vohra, Pankaj and Ashima Singh. “A Contrast and Comparison of Modern Software
Process Models.” (2013).
• Dwivedi, Shubha. “Software Development Life Cycle Models - A Comparative analysis.”
(2016).

You might also like