Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 41

Software Development Lifecycle

Learning Outcomes

✔ LO1 Describe different software development lifecycles.


✔ LO2 Explain the importance of a feasibility study.
✔ LO3 Undertake a software development lifecycle.
✔ LO4 Discuss the suitability of software behavioral design techniques
Software Development Lifecycles consist of following
activities.

⮚ Planning: “What do we want?” In this stage of SDLC, the team defines the requirements of the new software
and determines the cost and resources required. It also details the risks involved and provides sub-plans for
softening those risks. In this stage, a Software Requirement Specification document is created.
⮚ Analysis: Requirements Analysis is the process of defining the expectations of the users for an application that is
to be built or modified. Requirements analysis involves all the tasks that are conducted to identify the needs of
different stakeholders. Therefore requirements analysis means to analyze, document, validate and manage software
or system requirements. High-quality requirements are documented, actionable, measurable, testable, traceable,
helps to identify business opportunities, and are defined to a facilitate system design.
⮚ Design: Once the analysis is complete, the step of designing takes over, which is basically building the architecture
of the project. This step helps remove possible flaws by setting a standard and attempting to stick to it.
⮚ Development & Implementation: The actual task of developing the software starts here
with data recording going on in the background. Once the software is developed, the stage
of implementation comes in where the product goes through a pilot study to see if it’s
functioning properly.

⮚ Testing: The testing stage assesses the software for errors and documents bugs if there are
any.(STLC starts here)

⮚ Maintenance: Once the software passes through all the stages without any issues, it is to
undergo a maintenance process wherein it will be maintained and upgraded from time to
time to adapt to changes. Almost every software development Indian company follows all
the six steps, leading to the reputation that the country enjoys in the software market today.
Lifecycles Development Models

Predictive Models Adaptive Model


Waterfall, Prototyping and Spiral, Agile and DSDM
RAD
1. Predictive Model

► This approach is generally referred to as the ‘Traditional Model’ since it has been in practice for
quite some time now. In the field of Information Technology it is generally referred to as the
(Waterfall, Prototyping, RAD).
► It would be ideal to choose the Predictive Model of Software Development when we exactly
know what we are building. When there is no ambiguity(doubt, uncertainty)  in requirement
Waterfall Model would be the most ideal method for Software Development because of the
considerable amount of control it gives one the cost and time of the project.
► In a Predictive Model, the exact number of resources required to build the project, the amount of
time they will have to work to complete the project and the exact amount of cost that would be
required to take the project live to production can be calculated even before the start of the
project.
► This greatly helps in planning the finances and resource allocation of the project. This also helps
the stakeholders be on top of the expected time of completion of the project.
► Let’s assume that a large corporation is trying to clean its employee portal. The ideal
development model for this would be the Predictive Model (Water-Fall Model) because the
requirements are already known and could be frozen.
i. Waterfall Model
The Waterfall Model was first Process Model to be introduced. It is very simple to understand and
use. In a Waterfall model, each phase must be completed before the next phase can begin and there
is no overlapping in the phases. Waterfall model is the earliest SDLC approach that was used for
software development.

In “The Waterfall” approach, the whole process of software development is divided into separate
phases. The outcome of one phase acts as the input for the next phase sequentially. This means that
any phase in the development process begins only if the previous phase is complete. The waterfall
model is a sequential design process in which progress is seen as flowing steadily downwards (like
a waterfall) through the phases of Conception, Initiation, Analysis, Design, Construction, Testing,
Production/Implementation and Maintenance.
As the Waterfall Model illustrates the software development process in a linear sequential flow;
hence it is also referred to as a Linear-Sequential Life Cycle Model.
ii. Prototyping Model

A prototype is an early sample, model, or release of a product built to test a concept


or process or to act as a thing to be replicated or learned from. It is a term used in a
variety of contexts, including semantics, design, electronics, and software
programming. A prototype is generally used to evaluate a new design to enhance
precision by system analysts and users. Prototyping serves to provide specifications
for a real, working system rather than a theoretical one.  In some design workflow
models, creating a prototype (a process sometimes called materialization) is the step
between the formalization and the evaluation of an idea.
For example Marvelapp, Pencil, In vision etc.
Prototype for Mobile
Assignment 1

Please make a prototype for a website?

1. Sign Up Page
2. Login Page
3. Picture Upload
4. Employee List
5. Employee Search Option
iii. RAD (Rapid Application Development)

The RAD (Rapid Application Development) model is based on prototyping and


iterative development with no specific planning involved. The process of writing the
software itself involves the planning required for developing the product.
Rapid Application Development focuses on gathering customer requirements through
workshops or focus groups, early testing of the prototypes by the customer using
iterative concept, reuse of the existing prototypes (components), continuous
integration and rapid delivery.
Fig: RAD Description
2. Adaptive Model

► When we are developing a new Software Product which is first of its kind, it is
impossible to freeze on the requirements and hence choosing a Predictive
Development Model would not be a great idea.
► This is where the ‘Adaptive Development Model’ comes into play. Adaptive
Model is also referred to as ‘Agile Method’ or ‘Iterative Method’ e.g. ( Spiral,
Agile, DSDM).
► The Adaptive Model allows the liberty of not having the freeze on the complete
set of requirements before the start of the project. Usually agile / iterative models
have a certain resource pool allocated to the project and they work on software
development following the iterative approach.
► In the Agile / Iterative approach, the project is divided into smaller units called as user
stories which are independent of one another. These User stories are added to a Product
Backlog and the development team works on each of the User stories based on
priorities.
► This Agile approach allows the Stakeholders to add the User stories for the first one or
two sprints and kick-start the project. As the project proceeds the stake-holders can add
the User Stories necessary for the further sprints. This would allow them to account for
any iterative changes or any new / change requirements that might come up during the
process.
► Consider the example of Uber or Airbnb, these companies were the first to come up
with a product / service in their corresponding industries. It would be completely
impossible for them to extrapolate and determine how their product would look like
once the development is complete.
► This is because they might have to account for a lot of customer feedback and
demographic customizations as they expand across territories. For such projects going
with an Adaptive Development Approach would be more successful.
i . Spiral Model

The development team in Spiral-SDLC model starts with a small set of requirement
and goes through each development phase for those set of requirements. The software
engineering team adds functionality for the additional requirement in every-
increasing spirals until the application is ready for the production phase.
► Each phase of Spiral Model is divided into four quadrants as shown in the above
figure. The functions of these four quadrants are discussed below-
► Objectives determination and identify alternative solutions: Requirements are
gathered from the customers and the objectives are identified, elaborated and
analyzed at the start of every phase. Then alternative solutions possible for the
phase are proposed in this quadrant.
► Identify and resolve Risks: During the second quadrant all the possible solutions
are evaluated to select the best possible solution. Then the risks associated with that
solution is identified and the risks are resolved using the best possible strategy. At
the end of this quadrant, Prototype is built for the best possible solution.
► Develop next version of the Product: During the third quadrant, the identified
features are developed and verified through testing. At the end of the third
quadrant, the next version of the software is available.
► Review and plan for the next Phase: In the fourth quadrant, the Customers
evaluate the so far developed version of the software. In the end, planning for the
next phase is started.
ii. DSDM (Dynamic System Development Method)
► DSDM is an agile software development methodology. It is an iterative,
incremental approach that is largely based on the Rapid Application Development
(RAD ) methodology. The method provides a four-phase framework consisting of:
Feasibility and business study. Functional model / prototype iteration.
► Dynamic Systems Development Method (DSDM) is a framework based originally
around Rapid Application Development (RAD), supported by its continuous user
involvement in an iterative development and incremental approach which is
responsive to changing requirements, in order to develop a system that meets the
business needs on time and on budget. It is one of a number of Agile methods for
developing software and forms part of the Agile Alliance.
Principles of DSDM
► There are 9 underlying principles of DSDM consisting of four foundations and five starting-points for the
structure of the method. These principles form the cornerstones of development using DSDM.
► User involvement is the main key in running an efficient and effective project, where both users and developers
share a workplace, so that the decisions can be made accurately.
► The project team must be empowered to make decisions that are important to the progress of the project, without
waiting for higher-level approval.
► DSDM focuses on frequent delivery of products, with assumption that to deliver something "good enough" earlier
is always better than to deliver everything "perfectly" in the end. By delivering product frequently from an early
stage of the project, the product can be tested and reviewed where the test record and review document can be
taken into account at the next iteration or phase.
► The main criteria for acceptance of deliverable in DSDM is on delivering a system that addresses the current
business needs. It is not so much directed at delivering a perfect system addressing all possible business needs, but
focuses its efforts on critical functionality.
► Development is iterative and incremental, driven by users’ feedback to converge on an effective business solution.
► All changes during the development are reversible.
► The high level scope and requirements should be base-lined before the project starts.
► Testing is carried out throughout the project life-cycle.
► Communication and cooperation among all project stakeholders is required to be efficient and effective.
The Phases of DSDM

The DSDM framework consists of three sequential phases, namely the pre-project,
project life-cycle and post-project phases. The project phase of DSDM is the most
elaborate of the three phases. The project life-cycle phase consists of 5 stages that
form an iterative step-by-step approach in developing an IS. The three phases and
corresponding stages are explained extensively in the subsequent sections. For each
stage/phase, the most important activities are addressed and the deliverables are
mentioned.

Phase 1:In the pre-project phase candidate projects are identified, project funding is
realized and project commitment is ensured. Handling these issues at an early stage
avoids problems at later stages of the project.
Phase 2: The Project life-cycle
The process overview in the figure above shows the project life-cycle of this phase of DSDM. It depicts the
5 stages a project will have to go through to create an IS. The first two stages, the Feasibility Study and
Business Study are sequential phases that complement to each other. After these phases have been
concluded, the system is developed iteratively and incrementally in the Functional Model Iteration, Design
& Build Iteration and Implementation stages. The iterative and incremental nature of DSDM will be
addressed further in a later section.
► Feasibility Study
► Business Study
► Functional Model Iteration
► Design and Build Iteration
► Implementation
Phase 3: Post-project
The post-project phase ensures the system operating effectively and efficiently. This is realized by
maintenance, enhancements and fixes according to DSDM principles. The maintenance can be viewed as
continuing development based on the iterative and incremental nature of DSDM. Instead of finishing the
project in one cycle usually the project can return to the previous phases or stages so that the previous step
and the deliverable products can be refined.
iii. Agile
What is Agile?

► Agile is the ability to create and respond to change. It is a way of dealing with, and ultimately
succeeding in, an uncertain and turbulent environment.
► The authors of the Agile Manifesto chose “Agile” as the label for this whole idea because that
word
represented the adaptiveness and response to change which was so important to their approach.
► It's really about thinking through how you can understand what's going on in the environment
that you're in today, identify what uncertainty you're facing, and figure out how you can adapt
to that as you go along.
► What is Agile Software Development?
► Agile software development is more than frameworks such as Scrum, Extreme Programming or
Feature-Driven Development (FDD).
► Agile software development is more than practices such as pair programming,
test-driven development, stand-ups, planning sessions and sprints.
Agile Manifesto

✔ Individuals and interactions over processes and tools.


✔ Working software over comprehensive documentation.
✔ Customer collaboration over contract negotiation.
✔ Responding to change over following a plan.
Assignment 2

Write 5 stories/requirements for a product you want to develop?


Login:
3.Lifecycle stage and connectivity:
Feasibility study, analysis, design, implementation, testing, review or analysis, design,
implementation, maintenance, planning; requirements traceability.

4. Test and integration:


✔ Building test environments;
✔ Developing test harnesses;
✔ Black box/white box testing;
✔ Incremental testing; acceptance test and integration approaches; changeover
strategies,
✔ Trials and Go-Live prerequisites
Types of Environment

Develop Environment: A development environment is a collection of procedures and tools for


developing, testing and debugging an application or program.

The development environment normally has three server tiers, called development, staging and
production. All three tiers together are usually referred to as the DSP.

Development Server: Here is where the developer tests code and checks whether the application runs
successfully with that code. Once the application has been tested and the developer feels that the
code is working fine, the application then moves to the staging server.
Staging Server: This environment is made to look exactly like the production severer environment.
The application is tested on the staging server to check for reliability and to make sure it does not fail on
the actual production server. This type of testing on the staging server is the final step before the
application could be deployed on a production server. The application needs to be approved in order to
deploy it on the production server.
For example staging.abc.com

QA Server: QA server is where you test your upgrade procedure against data, hardware, and
software that closely simulate the Production environment and where you allow intended users to
test the resulting Wave set application.
For example: https://qa.abc.com
Production Server: Once the approval is done, the application then becomes a part of this server.
For example www.abc.com
Test harness

► In software development, a test harness is a collection of software and test data used by
developers to unit test software models during development. A test harness will specifically refer
to test drivers and stubs, which are programs that interact with the software being tested. Once a
test harness is used to execute a test, they can also utilize a test library to generate reports.
► Test harnesses are made up of test execution engines and test script repositories. A test execution
engine is the software used to perform the test, not the software being tested. The test script
repository is the location where test scripts and cases are stored.
Black box and White box testing
Incremental Testing

► In this testing, we test each module individually in unit testing phase, and then modules are
integrated incrementally and tested to ensure smooth interface and interaction between modules.
► In this approach, every module is combined incrementally, i.e., one by one till all modules or
components are added logically to make the required application, instead of integrating the
whole system at once and then performing testing on the end product. Integrated modules are
tested as a group to ensure successful integration and data flow between modules.
► As in integration testing, the primary focus of doing this testing is to check interface, integrated
links, and flow of information between modules. This process is repeated till the modules are
combined and tested successfully.
Objective of Incremental Test

► To ensure that different modules work together successfully after integration.


► Identify the defects earlier and in each phase. This gives developers an edge to identify where
the problem is. Like if testing after M1 and M2 are integrated is successful but when M3 is
added, the test fails; this will help the developer in segregating the issue.
► Issues can be fixed in early phase without much rework and in less cost.
Acceptance Testing

► ACCEPTANCE TESTING is a level of software testing where a system is tested for


acceptability. The purpose of this test is to evaluate the system’s compliance with
the business requirements and assess whether it is acceptable for delivery.
► Formal testing with respect to user needs, requirements, and business processes
conducted to determine whether or not a system satisfies the acceptance
criteria and to enable the user, customers or other authorized entity to determine
whether or not to accept the system.
Tasks

► Acceptance Test Plan


✔ Prepare
✔ Review
✔ Rework
✔ Baseline
► Acceptance Test Cases/Checklist
✔ Prepare
✔ Review
✔ Rework
✔ Baseline
► Acceptance Test
✔ Perform
Who performs it?

► Internal Acceptance Testing (Also known as Alpha Testing) is performed by members of the
organization that developed the software but who are not directly involved in the project
(Development or Testing). Usually, it is the members of Product Management, Sales and/or
Customer Support.
► External Acceptance Testing is performed by people who are not employees of the organization
that developed the software.
✔ Customer Acceptance Testing is performed by the customers of the organization that
developed the software. They are the ones who asked the organization to develop the
software. [This is in the case of the software not being owned by the organization that
developed it.]
✔ User Acceptance Testing (Also known as Beta Testing) is performed by the end users of
the software. They can be the customers themselves or the customers’ customers.
Integration testing

► Integration Testing is defined as a type of testing where software modules are integrated logically
and tested as a group.
► A typical software project consists of multiple software modules, coded by different
programmers. Integration Testing focuses on checking data communication amongst these
modules.

You might also like