Uploaded by Socialize Rango

LO1 Describe different software development lifecycles

advertisement
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. Highquality 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 RAD
Spiral, Agile and DSDM
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 startingpoints 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 preproject, 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.
Related documents
Download