Module-1_Software Process Model.pptx
Module-1_Software Process Model.pptx
(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 Process
✔ Risk Management and the Customer in Agile
• Software Process Models
Methods
✔ Waterfall Model
✔ Agile Engineering Practices
✔ Incremental Process Models
✔ Tailoring and Improving Agile Methods
✔ Evolutionary Process Models
✔ Miscellaneous Agile Methods
✔ Prototyping-Spiral Model
✔ Challenges in Adopting Agile Methods
✔ The RAD Model
Prepared & Compiled by: Prof. Bhupendra Panchal
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.
Once the need for software engineering was identified and software engineering
recognized as a discipline.
it is defined as-
1. Instructions : Programs that when executed provide desired function, features, and
performance
3. Documents: Descriptive information in both hard copy and virtual forms that describes the
operation and use of the programs.
● 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.
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
Prepared & Compiled by: Prof. Bhupendra Panchal
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.
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:
● 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:
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.
● 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
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.
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
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.
● 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.
● It contains five phases of management, where each requires a deliverable from the
previous phase to proceed.
● Waterfall is ideal for projects like software development, where the end result is
clearly established before starting.
● 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.
○ 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.
● 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.
Prepared & Compiled by: Prof. Bhupendra Panchal
Waterfall Model
● Maintenance
○ The maintenance phase extends beyond the five stages of project
management into the project’s lifetime.
○ It’s also a phase to identify any errors you might have missed during the
testing phase.
○ Waterfall model works well for smaller projects where requirements are
very well understood.
○ After every major stage of software coding, testing is done to check the
correct running of the code. help us to control schedules and budgets.
○ 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.
● The incremental model combines the elements of waterfall model and they are
applied in an iterative fashion.
● Each increment builds the product and submits it to the customer for any
suggested modifications.
○ This model can be used when the requirements of the complete system
are clearly defined and understood.
○ Generates working software quickly and early during the software life
cycle.
○ Needs a clear and complete definition of the whole system before it can be
broken down and built incrementally.
● 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.
It is easy to understand and implement, making it a good choice for small projects or
teams that are new to software development.
1- Inflexibility
2- Lack of Customer involvement
3- Risk of Failure
4- Poor Communication
5- High Costs
• The customers get to see the partial product early in the life cycle. This ensures a greater
level of customer satisfaction and comfort.
• New requirements and missing functionalities can be easily accommodated as there is scope
for refinement.
• Errors can be detected much earlier thereby saving a lot of effort and cost, besides
enhancing the quality of the software.
• Prototyping can help bridge the gap between technical and non-technical stakeholders,
improving overall project efficiency and effectiveness.
• The developed prototype can be reused by the developer for more complicated projects in
the future.
• Prototyping can help reduce the risk of project failure by identifying potential issues and
addressing them early in the process.
Prepared & Compiled by: Prof. Bhupendra Panchal
Disadvantages of Prototyping Model
● Spiral model is one of the most important Software Development Life Cycle
models, which provides support for Risk Handling.
● 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.
○ 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).
○ RAD should be used when there is a need to create a system that can be
modularized in 2-3 months of time.
○ RAD SDLC model should be chosen only if resources with high business
knowledge are available and there is a need to produce the system in a
short span of time (2-3 months).
○ Depends on strong team and individual performances for identifying business requirements.
○ Inapplicable to cheaper projects as cost of modeling and automated code generation is very high.
● During the early 1990s James Rumbaugh, Grady Booch, and Ivar Jacobson
developed the Unified Process, a framework for object-oriented software
engineering using UML.
● RUP divides the development process into four distinct phases that each involves
business modeling, analysis and design, implementation, testing, and deployment.
○ Inception - The idea for the project is stated. The development team determines
if the project is worth pursuing and what resources will be needed.
● 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.
3. Construction/ iteration
5. Deployment
6. Feedback
● When a customer is ready to have a meeting with a software team all the time.
● 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.
Prepared & Compiled by: Prof. Bhupendra Panchal
Agile Testing Methods:
● Scrum
● Crystal
● Dynamic Software Development Method(DSDM)
● Feature Driven Development(FDD)
● Lean Software Development
● eXtreme Programming(XP)
● Scrum Master: The scrum can set up the master team, arrange the
meeting and remove obstacles for the process
● Scrum Team: The team manages its work and organizes the work to
complete the sprint or cycle.
Prepared & Compiled by: Prof. Bhupendra Panchal
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.
Prepared & Compiled by: Prof. Bhupendra Panchal