Unit - 1: Software Product and SDLC
Unit - 1: Software Product and SDLC
THIS IS NOT THE SUBSTITUTE OF TEXT BOOK. PLEASE FOLLOW YOUR TEXT BOOK.
WHAT IS SOFTWARE ENGINEERING?
Software engineering is a detailed study of engineering to the design,
development, and maintenance of software. Software engineering was
introduced to address the issues of low-quality software projects. Problems arise
when software generally exceeds timelines, budgets, and reduced levels of
quality. It ensures that the application is built consistently, correctly, on time and
budget, and within requirements. The demand for software engineering also
emerged to cater to the immense rate of change in user requirements and the
environment in which application is supposed to be working.
DESCRIPTION:
A software product is judged by how easily it can be used by the end-user and
the features it offers to the user. An application must score in the following
areas:
1) Operational: This tells how well the software works on operations like budget,
usability, efficiency, correctness, functionality, dependability, security, and
safety.
Feasibility Study/ Analysis: Feasibility is defined as the practical extent to which a project
can be performed successfully. To evaluate feasibility, a feasibility study is performed, which
determines whether the solution considered to accomplish the requirements is practical and
workable in the software. The objective of the feasibility study is to establish the reasons for
developing the software that is acceptable to users, adaptable to change and conformable to
established standards. Some major feasibility must be discuss that are as follows:
Testing: Software Testing is a method to check whether the actual software product matches
expected requirements and to ensure that software product is Defect free. It involves
execution of software/system components using manual or automated tools to evaluate one
or more properties of interest. The purpose of software testing is to identify errors, gaps or
missing requirements in contrast to actual requirements. There are various kind of testing
methods available. Some of the important testing methods are as follows:
• Unit Testing: This software testing basic approach is followed by the programmer to
test the unit of the program. It helps developers to know whether the individual unit
of the code is working properly or not.
• Integration Testing: It focuses on the construction and design of the software. You
need to see that the integrated units are working without errors or not.
The release part of the deployment process involves transferring all of the processes necessary
for bundling the application to the platform that it will run on. The deployment process can
be handled manually or through an automated system. Nowadays, automated deployment
has taken over manual methods due to its efficiency.
At the moment, there is a huge variety of platforms for software deployment. Amazon Web
Services (AWS) and Google Cloud Platform (GCP) are two of the most popular ones.
• Correct faults.
• Improve the design.
• Implement enhancements.
• Interface with other systems.
• Accommodate programs so that different hardware, software, system features, and
telecommunications facilities can be used.
• Migrate legacy software.
Various SDLC models are available and these are used according to the need and nature of the
projects, the environmental conditions and the available time frame in which it is going to be
finished. Some most important are given below:
Classical Waterfall Model: The waterfall model is a classical model used in system
development life cycle to create a system with a linear and sequential approach. It is termed
as waterfall because the model develops systematically from one phase to another in a
downward fashion. Dr. Winston W. Royce called the “father of Waterfall”, is accredited with
the first formal description of the process in an article he wrote in 1970. This model is divided
into different phases and the output of one phase is used as the input of the next phase. Every
phase has to be completed before the next phase starts and there is no overlapping of the
phases.
Pros of Classical Waterfall: Waterfall model have many benefits and some of them are as
follows:
Cons of Classical Waterfall: Waterfall model have many cons as it was the very first SDLC
model. Some of them are as follows:
Iterative Waterfall Model: The waterfall model is now comes with the flexibility to repeat
any process model if it has any bug or any suggestion. What Dr. Royce was describing was a
flawed model for software development as he argued for a model with multiple iterations or
runs. He argued that without multiple iterations of the project, with the first being a prototype,
the project would be too risky and even invite failure. In his opinion, the prototype iteration
was essential for better understanding the requirements and technologies involved in the
project and to ensure that the final product delivered what the customer required.
Pros of Iterative Waterfall: Iterative Waterfall model have many benefits over it’s competitor
i.e. Classical Waterfall model and some of them are as follows:
• It could get back as needed
• Now it is more flexible
• It is fast and more efficient than it’s predecessor
Iterative Model: In this Model, you can start with some of the software specifications and
develop the first version of the software. After the first version if there is a need to change the
software, then a new version of the software is created with a new iteration. Every release of
the Iterative Model finishes in an exact and fixed period that is called iteration. Instead of
starting with fully known requirements, you implement a set of software requirements, then
test, evaluate and pinpoint further requirements. A new version of the software is produced
with each phase, or iteration. Rinse and repeat until the complete system is ready.
One advantage over other SDLC methodologies: This model gives you a working version early
in the process and makes it less expensive to implement changes.
One disadvantage over other SDLC methodologies: Resources can quickly be eaten up by
repeating the process again and again.
ITERATIVE MODEL
Pros of Iterative Model: The advantages of Iterative model are as follows:
Before you begin prototyping, you need to choose the right prototype for your project. This is
where fidelity becomes important. A prototype’s fidelity depicts the detail and realism of the
intended product. It ranges between two extremes, namely:
• Low-fidelity (lo-fi) prototyping: Sometimes called wire frames, these quick and
inexpensive prototypes are effortless to make, thereby leaving room for flexibility and
creativity. They can be used to gather user feedback during the early stage. The only
downside to lo-fi prototyping is the lack of aesthetical extravaganza.
• High-fidelity (hi-fi) prototyping: Hi-fi prototypes depict the intended solution as
perfectly as possible. They present the final product functionalities along with its
intended aesthetic display. If done right, they are easily accessible, aesthetically
polished, and a ready base for future development.
Pros of Prototype: What benefits Prototype software development has for the projects:
Cons of Prototype: What drawbacks Prototype software development has for the projects:
Spiral Model: The spiral method blends together parts of the WATERFALL MODEL and either
ITERATIVE or PROTOTYPING. This model uses the same phases as waterfall, but it separates
them with additional planning, risk assessment, and prototyping or iterations.
This model was first described by Barry Boehm in his 1986 paper, "A Spiral Model of Software
Development and Enhancement". One of the most flexible SDLC methodologies, the Spiral
SPIRAL MODEL
Pros of Spiral: The Spiral Model has many pros over other SDLC models. Some of them are as
follows:
RAD Model: One of the most common problems for software development teams is
spending a lot of time on planning, iterations stages and not delivering the product in time.
Therefore, according to a survey, over 32% of organizations never or sometimes complete the
project on time. RAD methodology is a powerful alternative for the traditional waterfall model
of development that isn’t always the most effective.
James Martin first developed the development approach in the 1980s when he was working
with IBM. In 1991, he formally introduced it as a concept in his book Rapid Application
Development, which was built on the work of people like Barry Boehm.
From the very beginning, rapid application development came from the spiral model. The RAD
meaning becomes clearer when you see that speed is always of the essence where this model
is concerned.
Any discussion of rapid application development pros and cons should mention that it focuses
on minimizing the planning stage and maximizing prototype development. It reduces planning
time and emphasizes prototype iterations. This way, RAD allows project managers and
stakeholders to arrange all project changes in real-time and implement them immediately.
This allows greater efficiency, faster release and time-to-market, and effective
communication.
In the Rapid Application Development planning stage, developers, stakeholders, and team
members communicate to define the goals for the project. We must choose RAD when the
project time frame must be between 30 days to 90 days. They also review current and
potential issues to be addressed during the build. This stage include:
Pros of RAD: What benefits rapid software development has for the projects:
• Reduced development time and faster delivery. The time between prototypes and
iterations is shortened.
• Encouragement of code reuse. This means less manual coding, less room for errors,
and shorter test times.
• Increases the reusability of components.
• A focus on customer satisfaction. RAD uses client feedback for further iterations and
allows for high-level collaboration and coordination between investors.
• Reduced risks. Stakeholders can discuss and address code vulnerabilities while keeping
development processes going.
• Fewer surprises. Unlike the waterfall method, RAD includes integrations early on in the
software development process.
• Integration is easy since it is involved from the inception of the project.
Cons of RAD: What drawbacks rapid software development has for the projects:
Agile Model: It all started in the spring of 2000, when a group of 17 software developers,
including Scott W. Ambler, Martin Fowler, Jim Highsmith, Jon Kern, Jeff Sutherland, Ken
Schwaber, and Bob Martin met in Oregon to discuss how they could speed up development
times in order bring new software to market faster. It was popularized in the 2001 Manifesto
for Agile Software Development. This model is rooted in process adaptability and user
engagement with rapid delivery of functioning software components. It has both Iterative and
AGILE MODEL
Pros of Agile: The Agile Model has many pros over other SDLC models. Some of them are as
follows:
Cons of Agile: However it is widely used SDLC model and of course highly popular but still it
has some drawbacks that are as follows:
Conclusion of the Unit: We have learned so many models and have seen their pros and
cons as well. Some models are obsolete right now and they are no longer in use. Some models
are still effective and they in the group of choice of the software developers. Of course the
choice is absolutely personal but I am giving my choice according to project complexity, the
time frame in which that has been completed, how long or large the project is and how the
organization will be deal that project.
1. Agile is the best model as it is adopted so many big organizations in India as well as
abroad. Its flexibility, customer interaction, project collaboration etc. all is doing very
well.
2. As all we know that not all projects are as big or complex that it will be done through
Agile framework. And customer continuously want to watch the progress and they
must be interfering in all the development process, specially designing module. So,
Prototype will be best option.
3. But customer interference will be moderate and the project must be complete and
deliver between 30-90 days. Then RAD will be the best choice.
b*a