0% found this document useful (0 votes)
111 views15 pages

Unit - 1: Software Product and SDLC

The document provides an overview of software engineering and the software development lifecycle (SDLC). It discusses that software engineering aims to address issues like low quality, missed timelines and budgets. The SDLC involves feasibility analysis, design, implementation/coding, testing, deployment, and maintenance. Common SDLC models include the waterfall model which follows a linear sequence of phases and the iterative models which allow for more feedback between phases.

Uploaded by

sirqaim
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
111 views15 pages

Unit - 1: Software Product and SDLC

The document provides an overview of software engineering and the software development lifecycle (SDLC). It discusses that software engineering aims to address issues like low quality, missed timelines and budgets. The SDLC involves feasibility analysis, design, implementation/coding, testing, deployment, and maintenance. Common SDLC models include the waterfall model which follows a linear sequence of phases and the iterative models which allow for more feedback between phases.

Uploaded by

sirqaim
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 15

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.

2) Transitional: Transitional is important when an application is shifted from one


platform to another. So, portability, reusability, and adaptability come in this
area.

3) Maintenance: This specifies how good a software works in the changing


environment. Modularity, maintainability, flexibility, and scalability come in
maintenance part.

Software engineering generally begins with the first step as a user-request


initiation for a specific task or an output. He submits his requirement to a service
provider organization. The software development team segregates user
requirement, system requirement and functional requirements. The requirement
is collected by conducting interviews of a user, referring to a database, studying
the existing system etc. After requirement gathering, the team analyses if the
software can be made to fulfil all the requirements of the user. The developer
then decides a roadmap of his plan. System analysis also includes an
understanding of software product limitations. As per the requirement and
analysis, a software design is made. The implementation of software design
starts in terms of writing program code in a suitable programming language.
Software testing is done while coding by the developers and thorough testing is
conducted by testing experts at various levels of code such as module testing,

Dr. Qaim Mehdi Rizvi


IMRT, Lucknow
program testing, product testing, in-house testing and testing the product at
user’s engagement and feedback.

SOFTWARE DEVELOPMENT LIFECYCLE:


The software development lifecycle (SDLC) is a framework that development
teams use to produce high-quality software in a systematic and cost-effective
way. Both large and small software organizations use the SDLC methodology.
SDLC began as the “Systems Development Lifecycle” in the 1960s. As Geoffrey
Elliott explains in his book, Global Business Information Technology, large
corporations developed the model to help manage complex business systems
that required a lot of data processing and analysis. Software Development
Lifecycle or SDLC is a series of stages in software engineering to develop
proposed software application, such as:

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:

• To analyse whether the software will meet organizational requirements.


• To determine whether the software can be implemented using the current
technology and within the specified budget and schedule.
• To determine whether the software can be integrated with other existing software.

Dr. Qaim Mehdi Rizvi


IMRT, Lucknow
Design: The design phase of software development deals with transforming the customer
requirements as described in the SRS documents into a form implementable using a
programming language. It is the specification of the interaction between a system and its
environment. this phase proceeds at a high level of abstraction with respect to the inner
workings of the system i.e., during interface design, the internal of the systems are completely
ignored and the system is treated as a black box. Attention is focused on the dialogue between
the target system and the users, devices, and other systems with which it interacts. The design
problem statement produced during the problem analysis step should identify the people,
other systems, and devices which are collectively called agents. Interface design should
include the following details:

• Precise description of events in the environment, or messages from agents to which


the system must respond.
• Precise description of the events or messages that the system must produce.
• Specification on the data, and the formats of the data coming into and going out of
the system.
• Specification of the ordering and timing relationships between incoming events or
messages, and outgoing events or outputs.

Implementation/ Coding: Coding is the process of transforming the design of a system


into a computer language format. This coding phase of software development is concerned
with software translating design specification into the source code.
Coding is done by the coder or programmers who are independent people than the designer.
The goal is not to reduce the effort and cost of the coding phase, but to cut to the cost of a
later stage. The cost of testing and maintenance can be significantly reduced with efficient
coding. In the coding part, the main responsibilities are as follows:

• To translate the design of system into a computer language format


• To reduce the cost of later phases
• Making the program more readable

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.

Dr. Qaim Mehdi Rizvi


IMRT, Lucknow
• System Testing: In this method, your software is compiled as a whole and then tested
as a whole. This testing strategy checks the functionality, security, portability, amongst
others.

Deployment: Deployment is the mechanism through which applications, modules, updates,


and patches are delivered from developers to users. The methods used by developers to build,
test and deploy new code will impact how fast a product can respond to changes in customer
preferences or requirements and the quality of each change. The generalized process of
deployment can be defined in a sequence of three steps:

• Assess (new) feature request


• Select, develop, and release
• Deploy the application

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.

Maintenance: Software Maintenance is the process of modifying a software product after


it has been delivered to the customer. The main purpose of software maintenance is to modify
and update software applications after delivery to correct faults and to improve performance.
A maintenance part of software must be fulfil one or more part of the following:

• 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.

Dr. Qaim Mehdi Rizvi


IMRT, Lucknow
The Waterfall Model is used by businesses whose end product’s requirements are fixed yet
time and money are variable. The Waterfall Model allows project managers to start the same
project multiple times until the desired outcome is reached. Not many businesses would find
the built-in mechanism of the Waterfall methodology to adjust and re-think their approach
until they reach the optimum outcome desirable.

CLASSICAL WATERFALL MODEL

Pros of Classical Waterfall: Waterfall model have many benefits and some of them are as
follows:

• Everyone gets up to speed quickly


• No financial surprises
• The outcome is crystal clear

Cons of Classical Waterfall: Waterfall model have many cons as it was the very first SDLC
model. Some of them are as follows:

• Needs can be difficult to define


• Potential lack of flexibility
• Longer delivery time

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.

Dr. Qaim Mehdi Rizvi


IMRT, Lucknow
Despite its various drawbacks, the Iterative Waterfall Model is amongst the most common
software development life cycle (SDLC) models. The Iterative version of the Waterfall Model
contains feedback loops throughout the project lifecycle including post-delivery maintenance.
In this model, Testing is not a separate phase but rather is performed continually throughout
the software process. This is given special importance during the maintenance phase to ensure
that not only does the software works as required but that any additional requirements are
also incorporated into the design.
The Iterative Waterfall Model removes many of the issues with the traditional Waterfall
Model, however, it does come with issues of its own. For example, the completion of each
phase includes complete and quality documentation of that phases and approval by Software
Quality Assurance (SQA) group and this must also be done in case of any modifications.

ITERATIVE WATERFALL MODEL

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

Dr. Qaim Mehdi Rizvi


IMRT, Lucknow
Cons of Iterative Waterfall: Still Iterative Waterfall model have many cons and some of them
are as follows:
• More time taken to project completion
• Unnecessary steps will be added
• It is not suitable for Big Projects

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:

• Potential defects are spotted and dealt with early


• Functional prototypes are developed early in the project life cycle
• Less time is spent on documenting and more on designing
• Changes to project scope are less costly and easier to implement

Dr. Qaim Mehdi Rizvi


IMRT, Lucknow
• Most risks can be identified during iteration and higher risks can be dealt with as an
early priority
• Operating time is reduced
• Customer feedback is based on working products rather than technical specifications

Cons of Iterative Model: The disadvantages of Iterative model are as follows:

• More resources may be required


• Each successive phase is rigid with no overlaps
• Issues about system architecture may turn out to be a constraining factor because of
the lack of a full requirements specification for the entire system
• It may be difficult to pin down an end date for the project conclusion
• Highly skilled talent is required for risk analysis

Prototype Model: A prototype is a model version of a product. It is used as an early and


less expensive sample of a product that allows to test its features, gather feedback and identify
defects.
One particular type, called Systems Craft is described by John Crinnion in his book
Evolutionary Systems Development in 1991. It was designed as a 'prototype' methodology
that should be modified and adapted to fit the specific environment in which it was
implemented.
In software development, prototyping means nothing less than creating incomplete versions
of a software product before it is finalized. It refers to the process of visualizing a software
product before it has been created. When you run your prototypes, there is a lot that can be
taken into consideration which also improves the workflow of the process. Here is the typical
prototyping process in software development:

• The dev team develops or refine a prototype


• Selected customers use the prototype
• After using the prototype, customers will provide feedback which the dev team will
then use to improve the prototype until it is acceptable enough to form the basis for
creating the final product.

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.

Dr. Qaim Mehdi Rizvi


IMRT, Lucknow
PROTOTYPE MODEL

Pros of Prototype: What benefits Prototype software development has for the projects:

• This model is flexible in design.


• It is easy to detect errors.
• We can find missing functionality easily.
• There is scope of refinement, it means new requirements can be easily accommodated.
• It can be reused by the developer for more complicated projects in the future.
• It ensures a greater level of customer satisfaction and comfort.
• It can actively involve users in the development phase.

Cons of Prototype: What drawbacks Prototype software development has for the projects:

• This model is costly.


• It has poor documentation because of continuously changing customer requirements.
• Customers sometimes demand the actual product to be delivered soon after seeing an
early prototype.
• There may be sub-optimal solutions because of developers in a hurry to build
prototypes.
• Customers may not be satisfied or interested in the product after seeing the initial
prototype.
• There is certainty in determining the number of iterations.
• There may increase the complexity of the system.

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

Dr. Qaim Mehdi Rizvi


IMRT, Lucknow
model takes a cue from the Iterative model and its repetition; the project passes through four
phases over and over in a “spiral” until completed, allowing for multiple rounds of refinement.
This model allows for the building of a highly customised product, and user feedback can be
incorporated from early on in the project. But the risk you run is creating a never-ending spiral
for a project that goes on and on. These projects typically have a high cost, but they manage
risks with the reliance on iterations of the software. This model provides safety for large and
complex systems.

SPIRAL MODEL

Pros of Spiral: The Spiral Model has many pros over other SDLC models. Some of them are as
follows:

• Changing requirements can be accommodated.


• Allows extensive use of prototypes.
• Requirements can be captured more accurately.
• Users see the system early.
• Development can be divided into smaller parts and the risky parts can be developed
earlier which helps in better risk management.
• Cost estimation becomes easy as the prototype building is done in small fragments
• There is always a space for customer feedback

Dr. Qaim Mehdi Rizvi


IMRT, Lucknow
Cons of Spiral: However it is widely used SDLC model and of course highly popular but still it
has some drawbacks that are as follows:

• Changing requirements can be accommodated.


• Allows extensive use of prototypes.
• Requirements can be captured more accurately.
• Users see the system early.
• Development can be divided into smaller parts and the risky parts can be developed
earlier which helps in better risk management.

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:

• Researching the current problem


• Defining project requirements and specifications
• Approval of those requirements by stakeholders
• Everyone can evaluate the goals and expectations for the project and weigh in

Dr. Qaim Mehdi Rizvi


IMRT, Lucknow
RAD MODEL

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:

• Requires skilled developers and designers.


• There is a high dependency on modelling skills.
• It’s more complex to manage when compared with other models.
• It’s only suitable for systems that are component-based and scalable.
• User requirements throughout the lifecycle of the product must be calculated.

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

Dr. Qaim Mehdi Rizvi


IMRT, Lucknow
Incremental features, as it breaks the product development into small incremental builds that
are then provided in iterations.
The Agile thought process had started early in the software development and started
becoming popular with time due to its flexibility and adaptability. The Agile Model relies on
heavy collaboration between cross-functional teams and the customer/user.

AGILE MODEL

Pros of Agile: The Agile Model has many pros over other SDLC models. Some of them are as
follows:

• Promotes teamwork and cross training.


• Functionality can be developed rapidly and demonstrated.
• Resource requirements are minimum.
• Suitable for fixed or changing requirements
• Delivers early partial working solutions.
• Little or no planning required.
• Gives flexibility to developers.

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:

• Not suitable for handling complex dependencies.


• More risk of sustainability, maintainability and extensibility.

Dr. Qaim Mehdi Rizvi


IMRT, Lucknow
• Strict delivery management dictates the scope, functionality to be delivered, and
adjustments to meet the deadlines.
• Depends heavily on customer interaction, so if customer is not clear, team can be
driven in the wrong direction.
• Transfer of technology to new team members may be quite challenging due to lack of
documentation.

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

Dr. Qaim Mehdi Rizvi


IMRT, Lucknow

You might also like