Software Development Life Cycle 05.04.23
Software Development Life Cycle 05.04.23
Cycle
Prof. Arvinder Kaur
Introduction
“The life cycle of a software is the
period of time that starts when a
software product is conceived and ends
when the product is no longer available
for use. “
• The development process is divided into distinct phases, and each phase must be completed
before moving on to the next one.
• Analysis: Once the requirements have been gathered, the next phase involves analyzing and documenting the requirements in detail.
This involves creating functional specifications, system specifications, and design documents.
• Design: The design phase involves creating a detailed plan for the software project, including the software architecture, user interface
design, database design, and other technical specifications.
• Implementation: The implementation phase involves writing the code and creating the software application based on the design
specifications.
• Testing: Once the implementation is complete, the software is tested for functionality, performance, and other quality attributes to
ensure that it meets the specified requirements.
• Deployment: Once the testing is complete, the software is deployed to the production environment, and it becomes available for use
by end-users.
• Maintenance: The final phase of the waterfall model involves maintaining and supporting the software application over its lifetime,
including bug fixes, updates, and enhancements.
Advantages & Disadvantages of Classical
Waterfall Model
Advantages
• This is the first model which gave the basic steps of SDLC and which has been used by many other models for the
development of the project.
• The requirements need to be completed in one go and emphasis on completion of one phase before moving to the next one.
Disadvantages
• No feedback paths- The sequential nature of model does not allow us go back and undo or redo our actions. Clients valuable
feedback cannot be included with ongoing development phase
• Difficult to accommodate change requests- This model is best suited when developers already have designed and developed
similar software in the past and are aware of all its domains. It assumes that all customer requirements can be completely
and correctly defined at the beginning of the project.
• It is not desirable for complex project where requirement changes frequently
• Testing period comes quite late in the developmental process.
• The working product is available at the later stage after the competition of all the stages.
Waterfall Model with Feedback
• In Waterfall model , as there is no path to go back in earlier phases for
the changes or correction, therefore waterfall model with feedback
was proposed .
• In this model, if a bug is found or correction is required at any phase,
then we can move to earlier phases for the corrections/changes.
Type of Software projects that may be
developed using waterfall model:
• Small to medium-sized projects with clearly defined requirements and a fixed scope.
• Projects that involve developing software applications that have already been built or have a well-
established design.
• Projects where the development team has experience with the technologies and tools needed to
complete the project.
• Projects where there is little or no need for ongoing customer feedback or changes in
requirements.
Software projects that were developed using
Waterfall model
1.Microsoft Office: The original version of Microsoft Office was developed using
the Waterfall model.
2.SAP: The original version of SAP, an enterprise resource planning (ERP) software
suite, was developed using the Waterfall model.
3.NASA Space Shuttle software: The software used to control the Space Shuttle was
developed using a variation of the Waterfall model, with an emphasis on rigorous
testing and quality control.
4.Medical devices: Many medical devices, such as pacemakers and insulin pumps,
are developed using the Waterfall model due to the need for strict quality control
and regulatory compliance
5.Google Map, Google Search and Google drive were initially developed using
waterfall model but later they adopted agile approach for development.
Increment process Models
• Iterative Model
• RAD Model
Iterative Enhancement Model
• The iterative enhancement model of software development is a cyclical approach that
involves repeating a series of steps, known as iterations or cycles, until the software is
complete.
• The development process is divided into smaller cycles, with each cycle adding new features
and functionality to the application.
• The process involves developing the software incrementally, with each iteration adding new
functionality or refining existing features
Release I
Implementation Integration Operation
Design and unit Testing testing (install)
Release II
Release III
Characteristics of Iterative Enhancement
Model
• The iterative model of software development allows for flexibility and adaptability, as the software can be developed and
refined over time based on feedback from the customer or stakeholders.
• It is particularly useful when the customer's requirements are not fully known at the outset of the project, or when there is a
high level of complexity or uncertainty in the development process.
• By breaking the development process into smaller iterations, the iterative model reduces the risk of project failure and allows
the development team to deliver working software more quickly.
• Iterative Enhancement model is used where it is difficult to understand the detailed requirements of whole software in one go
instead the major functionalities of the software are identified and customer is asked to prioritize the requirements.
• As per the prioritization of the requirements by the customer, the detailed requirements of one part are understood, analysed,
developed and deliver to the customer and then the next set of requirements as per the priority are understood , specified ,
analysed, developed, tested and deliver to customer.
• This way the whole software is developed iteratively in various cycles till all requirements are met.
• The prerequisite to use this model is that we should have senior analyst which can understand the relation between different
functionalities properly so that integration of all cycles doesn’t cause any problem.
Advantages of Iterative Enhancement Model
• The user gets functional software after end of each cycle and feedback of the
customer helps to improve the next cycle of the development.
• Parallel development can be planned.
• Progress can be measured.
• Less costly to change the scope/requirements.
• Testing and debugging during smaller iteration is easy.
• Google Chrome web browser: Chrome is developed using an iterative model, with regular releases that add new features,
improve performance and security, and fix bugs.
• Agile project management tools: Many agile project management tools, such as Jira and Trello, are developed using
iterative development to continuously improve their functionality and user experience.
• Mobile applications: Mobile applications, such as Instagram and Snapchat, are often developed using iterative
development to quickly respond to changing user needs and improve user engagement.
• Enterprise-level software: Large enterprise software applications, such as SAP and Salesforce, are typically developed
using iterative development to accommodate the changing needs of their users and to adapt to new technologies and
business trends.
Spotify : developed using Iterative
Enhancement model:
Spotify: Spotify was developed using an iterative model to ensure that it provided a personalized and engaging music
streaming experience for its users.
Spotify has undergone several iterations in its development process. Here are some notable ones:
1. Spotify Desktop (2006): The first iteration of Spotify was a desktop application that allowed users to stream music and
create playlists.
2. Spotify Mobile (2009): In 2009, Spotify launched its first mobile app for the iPhone. This allowed users to access their
music on the go and was the first step in the company's move towards a mobile-first approach.
3. Spotify Discover (2012): The Discover feature was introduced in 2012, which used an algorithm to recommend new
music to users based on their listening history.
4. Spotify Running (2015): In 2015, Spotify introduced a new feature called Running, which used sensors in users'
smartphones to detect their pace and play music that matched their workout tempo.
5. Spotify for Artists (2018): Spotify for Artists was launched in 2018, which allowed musicians to manage their profiles on
the platform, track their streams and demographics, and promote their music.
6. Spotify Podcasts (2019): Spotify made a big push into the podcasting market in 2019, by acquiring several podcast
production companies and launching exclusive podcasts on the platform.
Throughout its development, Spotify has continued to use an iterative approach, constantly testing and iterating on new
features based on user feedback and data analysis.
EVOLUTIONARY PROCESS MODEL
PROTOTYPE MODEL
RAD MODEL
SPIRAL MODEL
Which type of software are developed using
spiral model
• The spiral model of software development is suitable for projects that involve a high level of
risk or uncertainty and require a systematic approach to risk management.
• It is particularly well-suited for large and complex software projects that have changing
requirements, and where there is a need to continually evaluate and mitigate risks.
• Medical devices: Medical devices, such as implantable devices or diagnostic systems, require a high
level of safety and reliability. The spiral model is well-suited for such projects as it allows for
continuous risk assessment and testing throughout the development process.
• Large-scale enterprise systems: Large-scale enterprise systems, such as ERP systems, involve multiple
stakeholders and complex requirements. The spiral model is suitable for such projects as it allows for
flexibility and adaptation to changing requirements, as well as systematic risk management.
• Complex software products: Complex software products, such as CAD or simulation software, involve
multiple features and functionalities. The spiral model is well-suited for such projects as it allows for
iterative development and testing of new features.
• Several software products have been developed using the spiral model of software development. Here are a few
examples:
• Microsoft Office Suite: Microsoft Office Suite is a widely used productivity software that includes Word, Excel,
PowerPoint, and other applications. The software was developed using the spiral model, which allowed for
continuous evaluation and testing of new features.
• NASA Mission Control Software: NASA Mission Control software was developed using the spiral model to ensure
reliability and safety in the control of space missions. The software went through several iterations and evaluations
to ensure that it met the required safety standards.
• Internet Explorer: Internet Explorer was developed using the spiral model, which allowed for iterative development
and testing of new features. The model also allowed for flexibility in adapting to changing market conditions and
user requirements.
• HP LaserJet Printers: HP LaserJet Printers were developed using the spiral model to ensure reliability and quality in
their printing capabilities. The model allowed for continuous testing and evaluation of the printers' hardware and
software components.
• The Agile model involves continuous collaboration and feedback between the development
team and the customer or end-users throughout the development process.
• Requirements gathering: In the Agile model, requirements are gathered in the form of user stories, which are short descriptions of a feature or
functionality from the perspective of the end-user. These user stories are captured in a product backlog, which is a prioritized list of all the features or
functionalities that need to be developed.
• Planning: In the planning phase, the development team and the customer prioritize the user stories based on business value, complexity, and other
factors. The team estimates the time and effort required to complete each user story, and they plan the development iterations or sprints accordingly.
• Design: In the design phase, the development team creates a high-level design for the software application based on the requirements and user stories.
The design may evolve over time as the team receives feedback and new requirements from the customer.
• Implementation: In the implementation phase, the development team works on completing the user stories that are planned for the current iteration or
sprint. The team holds daily stand-up meetings to review progress, identify any issues or obstacles, and plan the work for the next day.
• Testing: In the Agile model, testing is integrated throughout the development process, rather than being a separate phase. The development team
writes automated tests for each user story, and they conduct manual testing to ensure that the software meets the specified requirements.
• Review and feedback: At the end of each iteration or sprint, the development team holds a review meeting with the customer to demonstrate the
working software and receive feedback. The customer provides feedback on the features and functionalities that have been completed, and they may
request changes or additional features.
• Deployment: Once the software has been developed and tested, it is deployed to the production environment for end-users to use. The development
team continues to provide maintenance and support for the software over its lifetime.
• E-commerce platforms: E-commerce platforms require frequent updates to accommodate changes in customer behavior
and new technologies. The Agile model is ideal for e-commerce platform development as it allows for flexibility in
accommodating changing customer needs.
• Web-based software applications: Web-based software applications are typically developed in a fast-paced environment
with rapidly evolving user requirements. The Agile model is well-suited for web-based application development as it
allows for continuous feedback and regular updates to the application.
• Gaming software: Gaming software requires frequent updates to accommodate changing user preferences and
advancements in technology. The Agile model is ideal for gaming software development as it allows for flexibility in
accommodating changing user needs.
• Cloud-based software: Cloud-based software requires frequent updates to accommodate changing user needs and new
technologies. The Agile model is well-suited for cloud-based software development as it allows for continuous feedback
and regular updates to the software.
• Spotify: The popular music streaming platform, Spotify, is known for using Agile methodologies in their software
development process. They use the Agile model to develop their mobile and web applications, as well as their
backend systems.
• Microsoft Office: Microsoft uses the Agile model in their software development process for many of their products,
including Microsoft Office. They use the Agile model to quickly deliver new features and improvements to their
users.
• Salesforce: Salesforce, the popular customer relationship management (CRM) software, uses Agile methodologies
to develop their software products. They use the Agile model to deliver new features and enhancements to their
users on a regular basis.
• Airbnb: Airbnb, the online marketplace for short-term accommodations, uses Agile methodologies to develop
their software products. They use the Agile model to quickly deliver new features and improvements to their users.
• Amazon Web Services (AWS): Amazon uses Agile methodologies to develop their cloud-based software products,
including Amazon Web Services (AWS). They use the Agile model to deliver new features and enhancements to
their users on a regular basis.
• The Scrum model is based on the idea of breaking development work into small iterations
called sprints, which typically last 2-4 weeks.
• During each sprint, the development team works to deliver a small, working piece of software
that can be tested and evaluated by the customer.
• The scrum team tracks the progress of the project in 15-minute time-boxed meetings called
daily Scrum.
• After sprint completion, the team holds a review meeting to demonstrate the work done and
a retrospective to continually improve.
• Daily stand-up meetings: Throughout the sprint, the development team holds daily stand-up meetings to check in on their progress and identify
any issues or roadblocks that need to be addressed. The meetings are typically brief and focused, and each team member answers three
questions: What did I accomplish yesterday? What will I work on today? Do I have any blockers or issues that need to be addressed?
• Sprint review: At the end of each sprint, the development team presents their work to the product owner and any other stakeholders who are
interested. The team demonstrates the working software that they completed during the sprint, and the product owner provides feedback on the
features or user stories that were completed.
• Sprint retrospective: After the sprint review, the development team holds a retrospective meeting to reflect on the sprint and identify areas for
improvement. They discuss what went well during the sprint, what didn't go well, and any ideas for how to improve their processes or
communication.
• Repeat: The development team then starts the next sprint, using the feedback and insights gained from the retrospective meeting to improve
their work.
• By using the Scrum model, the development team can quickly deliver working software that meets the customer's needs. The model emphasizes
collaboration, flexibility, and continuous improvement, which can lead to faster and more effective software development.