Software Engineering Process Models Overview
Software Engineering Process Models Overview
(CSE3005)
✔ Concurrent Model
✔ The Concurrent Development Model
Module-1 ✔ Specialized Process Models
✔ The Unified Process
Module 1: Software Process Models
• The Nature of Software
✔ A generic view of process • Introduction to Agile Process
✔ A layered Technology
✔ Agile Management Practices
✔ A Process Framework– Product and
✔ Risk Management and the Customer in Agile
Process
Methods
• Software Process Models
✔ Agile Engineering Practices
✔ Waterfall Model
✔ Tailoring and Improving Agile Methods
✔ Incremental Process Models
✔ Miscellaneous Agile Methods
✔ Evolutionary Process Models
✔ Challenges in Adopting Agile Methods
✔ Prototyping-Spiral Model
✔ The RAD Model
Software Crisis
It was in late 1960's many software projects failed.
● Many software projects late, over budget, providing unreliable software that is
expensive to maintain.
● Many software projects produced software which did not satisfy the requirements of the
customer.
● Complexities of software projects increased as hardware capability increased. Larger
software system is more difficult and expensive to maintain.
● Demand of new software increased faster than ability to generate new software.
All the above attributes of what was called a 'Software Crisis'. So the term 'Software
Engineering' first introduced at a conference in late 1960's to discuss the software
crisis.
Why software engineering?
Once the need for software engineering was identified and software engineering recognized as
a discipline.
● The late 1970's saw the widespread evolution of software engineering principles.
● The 1980's saw the automation of software engineering and growth of CASE
(Computer Aided Software Engineering).
● The 1990's have seen increased emphasis on the 'management' aspects of projects
and the use of standard quality and 'process' models like ISO 9001 and the Software
Engineering Institute's Software Capability Maturity Model (CMM).
● These models help organizations put their software development and
management processes in place.
Software and Software Engineering
The term software engineering is composed of two words, software and engineering.
Software: is more than just a program code. Software is considered to be a collection of executable
programming code, associated libraries and documentations, which serves some computational purpose.
it is defined as-
1. Instructions : Programs that when executed provide desired function, features, and performance
[Link]: Descriptive information in both hard copy and virtual forms that describes the
operation and use of the programs.
Software and Software Engineering
Engineering: It is all about developing products, using well-defined, scientific principles and methods.
● Engineering is the process of designing and building something that serves a particular purpose
and finds a cost-effective solution to problems.
● Engineering is the application of scientific and practical knowledge to invent, design, build,
maintain, and improve frameworks, processes, etc.
● Application of science tools and methods to find cost effective solution to the problem.
Software Engineering
● Software Engineering is an engineering branch related to the evolution of software product
using well-defined scientific principles, techniques, and procedures. The result of software
engineering is an effective and reliable software product.
● It is a systematic and disciplined approach to software development that aims to
create high-quality, reliable, and maintainable software.
● It is defined as a systematic disciplined and quantifiable approach to the development,
operations and maintenance of software.
The need of software engineering arises because of higher rate of change in user requirements
and environment on which the software is working.
Software Paradigms
Need of Software Engineering required
● Large software - It is easier to build a wall than to a house or building, likewise, as the size of software
become large engineering has to step to give it a scientific process.
● Scalability- If the software process were not based on scientific and engineering concepts, it would be
easier to re-create new software than to scale an existing one.
● Cost- As hardware industry has lower down the price of computer and electronic hardware. But the
cost of software remains high if proper process is not adapted.
● Dynamic Nature- The always growing and adapting nature of software hugely depends upon the
environment in which the user works. Thus, new enhancements need to be done in the existing one. This is
where software engineering plays a good role.
● Quality Management- Better process of software development provides better and quality software product.
Characteristics of Software
A software product can be judged by what it offers and how well it can be used. This software
must satisfy on the following grounds:
● Operational: This tells us how well software works in operations. It can be measured on
● Transitional: This aspect is important when the software is moved from one platform to another
● Maintenance: This aspect briefs about how well a software has the capabilities to maintain itself
in the ever changing environment:
Characteristics of Software
In order to build software that is ready to meet the challenges of the twenty-first century, you
must recognize a few simple realities:
These simple realities lead to one conclusion. Software in all of its forms and across all of its
application domains should be engineered.
Software Engineering - A Layered Technology
● Referring to the Figure, any engineering approach must rest on an organizational commitment to
quality. The bedrock that supports software engineering is a quality focus.
● The foundation for software engineering is the process layer. Process defines a framework
that must be established for effective delivery of software engineering technology.
● Software engineering methods provide the technical how-to’s for building software.
Methods encompass a broad array of tasks that include communication, requirements
analysis, design modelling, program construction, testing, and support.
● Software engineering tools provide automated or semi automated support for the process
and the methods.
Generic Process Framework
● The process framework encompasses a set of umbrella activities that are applicable across the
entire software process.
○ A generic process framework for software engineering encompasses five activities:
■ Communication
■ Planning
■ Modelling
■ Construction
■ Deployment
Generic Process Framework
1. Communication
• In this step, we communicate with the clients and end-users.
• We discuss the requirements of the project with the users.
• The users give suggestions on the project. If any changes are difficult to implement, we work on alternative ideas.
2. Planning
• In this step, we plan the steps for project development. After completing the final discussion, we report on the project.
• Planning plays a key role in the software development process.
• We discuss the risks involved in the project.
3. Modelling
• In this step, we create a model to understand the project in the real world. We showcase the model to all the developers. If changes
are required, we implement them in this step.
• We develop a practical model to get a better understanding of the project.
Generic Process Framework
4. Construction
• If any code is required for the project development, we implement it in this phase.
5. Deployment
• In this phase, we submit the project to the clients for their feedback and add any missing requirements.
Umbrella Activities are applied throughout a software project and help a software team to manage and
control progress, quality, change, and risk. Typical umbrella activities include:
○ Software project tracking and control
○ Risk management
○ Software quality assurance
○ Technical reviews
○ Measurement
○ Software configuration management
○ Reusability management
○ Work product preparation and production
The Software Engineering Practice
David Hooker has Proposed seven principles that focus on software Engineering practice.
● Software process can be defined as the structured set of activities that are required to
develop the software system.
● A process model for software engineering is chosen based on the nature of the
project and application, the methods and tools to be used, and the controls and
deliverables that are required.
Goal of Software Process Models
The goal of a software process model is to provide guidance for systematically coordinating and
controlling the tasks that must be performed in order to achieve the end product and their project
objectives.
● A software product, user interface must be carefully designed and implemented because
developers of that product and users of that product are totally different.
● In case of a program, very little documentation is expected, but a software product must be
well documented.
● Various Operational Characteristics of software are:
○ Correctness
○ Usability/Learnability
○ Integrity
○ Reliability
○ Efficiency
○ Security
Difference between software process and software
product
● Software Development Life Cycle (SDLC) is a process used by 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.
● Each phase has various activities to develop the software product. It also specifies the order in
which each phase must be executed.
● A software life cycle model is either a descriptive or prescriptive characterization of how
software is or should be developed. A descriptive model describes the history of how a particular
software system was developed.
Waterfall model or linear sequential model or
classic life cycle model
● Design
○ The design phase designs and documents all your decisions. In this case, you
develop solutions that can solve the project’s requirements.
○ The best way to do so is to note all the actions you’ll take to deliver the project
scope to execute them.
○ Design covers the project’s schedule, budget, and objectives, and you can think of
design as a blueprint or road map to the complete project.
Waterfall Model
● Implementation
○ The implementation phase executes your project plan and design to produce
the desired product.
○ If your company develops software, you will spend this phase coding
the software functionalities. Or, if you’re managing a project at a construction
company, you will construct a house in this phase.
○ Implementation takes up a significant portion of waterfall project
management. Everything that happens during this phase should be carefully
documented.
● Verification/Testing
○ Testing verifies that the product developed in the implementation phase fulfils the entire
project’s requirements.
○ If this is not the case, the project team must review the project from phase one to
identify what went wrong.
○ The testing phase uses various quality metrics and customer satisfaction to measure the
project’s success.
Waterfall Model
● Maintenance
○ The maintenance phase extends beyond the five stages of project management into
the project’s lifetime.
○ This phase involves making minor modifications to improve the product developed
during implementation and performing other routine maintenance tasks.
○ It’s also a phase to identify any errors you might have missed during the testing
phase.
Waterfall Model
Advantages of waterfall model:
○ Not a good model for complex, object-oriented projects and long projects.
○ Not suitable for the projects where requirements are at a moderate to high risk of
changing.
○ Customer can see working model of the project only at the end. after reviewing of the
working model if the customer gets dissatisfied then it causes serious problem.
○ You cannot go back a step if the design phase has gone wrong, things can get very
complicated in the implementation phase.
INCREMENTAL MODEL
INCREMENTAL MODEL
● The incremental model combines the elements of waterfall model and they are applied
in an iterative fashion.
● The first increment in this model is generally a core product.
● Each increment builds the product and submits it to the customer for any
suggested
modifications.
● The next increment implements on the customer's suggestions and add additional
requirements in the previous increment.
● This process is repeated until the product is finished.
INCREMENTAL MODEL
● When to use the Incremental model:
○ This model can be used when the requirements of the complete system are clearly
defined and understood.
○ Major requirements must be defined; however, some details can evolve with time.
○ There is a need to get a product to the market early.
○ There are some high-risk features and goals.
INCREMENTAL MODEL
INCREMENTAL MODEL
INCREMENTAL MODEL
● Advantages of Incremental model: -
○ Generates working software quickly and early during the software life cycle.
○ This model is more flexible – less costly to change scope and requirements.
○ It is easier to test and debug during a smaller iteration.
○ In this model customer can respond to each built.
○ There is low risk for overall project failure.
INCREMENTAL MODEL
● It is almost the same as the classical waterfall model except some changes are made to
increase the efficiency of the software development.
● The iterative waterfall model provides feedback paths from every phase to its
preceding phases, which is the main difference from the classical waterfall model.
● Feedback paths introduced by the iterative waterfall model are shown in the figure.
ITERATIVE WATERFALL MODEL
Advantages of Iterative Waterfall Model
It is easy to understand and implement, making it a good choice for small projects or teams that
are new to software development.
Disadvantages of Iterative Waterfall Model
1 Inflexibility
2 Lack of Customer involvement
3 Risk of Failure
4 Poor Communication
5 High Costs
Prototyping MODEL
Prototyping Model
• Prototyping is defined as the process of developing a working replication of a product or
feedback.
• This model is used when the customers do not know the exact project requirements
beforehand.
• A prototype of the end product is first developed, tested and refined as per customer
feedback repeatedly till a final acceptable prototype is achieved which forms the basis for
developing the final product.
Prototyping Model
Need of Prototyping Model
• The Prototyping Model should be used when the requirements of the product are
needs:
▪ How the screens might look like
• A prototyping model can be used when technical solutions are unclear to the
development team.
Need of Prototyping Model
• A developed prototype can help engineers to critically examine the technical
technical issues.
• A prototype of the actual product is preferred in situations such as:
▪ User requirements are not complete.
▪ Technical issues are not clear.
Advantages of Prototyping Model
• The customers get to see the partial product early in the life cycle. This ensures a greater level of
refinement.
• Errors can be detected much earlier thereby saving a lot of effort and cost, besides enhancing the
Hence, It is very difficult for developers to accommodate all the changes demanded by the customer.
• Poor Documentation due to continuously changing customer requirements.
• The prototype may not reflect the actual business requirements of the customer, leading to
● The exact number of loops of the spiral is unknown and can vary from project to project.
● Each loop of the spiral is called a Phase of the software development process.
● The Spiral Model is a risk-driven model, meaning that the focus is on managing risk
through multiple iterations of the software development process.
SPIRAL MODEL
○ Planning—tasks required to define resources, time lines, and other project related information.
○ Construction and release—tasks required to construct, test, install, and provide user
support(e.g., documentation and training).
rapid prototyping.
• The functional modules are developed in parallel as prototypes and are integrated to
○ RAD should be used when there is a need to create a system that can be
modularized in 2-3 months of time.
○ Depends on strong team and individual performances for identifying business requirements.
○ Requires highly skilled developers/designers.
○ High dependency on modeling skills
○ Inapplicable to cheaper projects as cost of modeling and automated code generation is very high.
RATIONAL UNIFIED PROCESS (RUP)
RATIONAL UNIFIED PROCESS (RUP)
● The Unified Process is an attempt to draw on the best features and characteristics of
traditional software process models.
● It suggests a process flow that is iterative and incremental, providing the evolutionary
feel that is essential in modern software development.
● During the early 1990s James Rumbaugh, Grady Booch, and Ivar Jacobson
developed the Unified Process, a framework for object-oriented software engineering
using UML.
○ Inception - The idea for the project is stated. The development team determines if the
project is worth pursuing and what resources will be needed.
○ Elaboration - The project's architecture and required resources are further evaluated.
Developers consider possible applications of the software and costs associated with the
development.
○ Transition - The software is released to the public. Final adjustments or updates are
made based on feedback from end users.
RATIONAL UNIFIED PROCESS (RUP)
RATIONAL UNIFIED PROCESS (RUP)
● The division of the entire project into small parts helps minimize the project
risk and the overall project delivery time.
○ Individuals and interactions are given priority over processes and tools.
○ Focuses on working software rather than comprehensive documentation.
○ Agile Model in software engineering aims to deliver complete
customer satisfaction by rapidly delivering valuable software.
○ Daily cooperation between business people and developers.
○ It allows early and frequent delivery.
○ A strong emphasis is placed on face-to-face communication.
○ An improvement review is conducted regularly by the team.
Phases of Agile Model:
3. Construction/ iteration
5. Deployment
6. Feedback
AGILE DEVELOPMENT MODEL
AGILE DEVELOPMENT MODEL
● When a customer is ready to have a meeting with a software team all the
time.
● When project size is small.
AGILE DEVELOPMENT MODEL
● Ensemble Programming: Ensemble or mob programming takes pairing and turns the dial all the way up to 11. We
are working on the problem together as a team. Instead of just sharing knowledge between 2 team members like in
pairing, we are spreading that knowledge across the team.
● Collective Code Ownership: Collective Code Ownership means everybody on the team owns the code. We are no
longer dependent on 1 person. We don’t have to locally optimize our work based on who is available and what skills
do they have. The entire team owns the code.
● Continuous Integration and Deployment: CI/CD is a practice that allows us to have the latest working version of
our product up and running. It reinforces the approach of building applications iteratively and incrementally.
Whenever someone makes a change, that change is integrated with what was already there and gets deployed.
Agile Testing Methods:
● Scrum
● Crystal
● Dynamic Software Development Method(DSDM)
● Feature Driven Development(FDD)
● Lean Software Development
● eXtreme Programming(XP)
Agile Testing Methods:
Scrum: is an agile development process focused primarily on ways to manage
tasks in team-based development conditions.
● 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.
Agile Testing Methods:
Crystal:
There are three concepts of this method-
● eXtreme Programming(XP)
This type of methodology is used when customers are constantly changing
demands or requirements, or when they are not sure about the system's
performance.