SDLC & Models
SDLC & Models
SDLC & Models
What is Software
Software is:
•Instructions (computer programs) which when executed, provide desired function
and performance.
•Data structures that help the program to adequately manipulate information.
•Documents that describe the operation and use of the programs.
Principles and Concept of Testing
What are software characteristics?
•Software is logical unlike hardware, which is physical (contains chips, circuit
boards, power supplies etc.,) Hence its characteristics are entirely different.
•Software is developed and not manufactured.
•Software does not “wear out” …as do hardware components, from dust, abuse,
temperature and other environmental factors. Hence its failure curve is
idealized.
•Although industry is moving towards component-based assembly, most systems
continue to be custom built.
•A software component should be built such that it can be reused in many
different programs.
–Poor requirements
–Unrealistic Schedule
–Inadequate testing
–Features
–Miscommunication
Solutions
What are common solutions to software development problems?
–Solid requirements
–Realistic Schedules
–Adequate testing –
–Stick to initial requirements as much as possible
–Communication
Life Cycle Testing
•Life Cycle Testing means perform testing in parallel with systems development.
•While the system being developed, a test plan and test conditions are developed
and executed.
•At predetermined points during the life cycle, the system is tested to ensure that
it is being developed properly and the defects are detected at the earliest possible
points of the life cycle.
SDLC
Software is developed based on specific process models, which are chosen
–Based on the nature of the project, methods and tools to be used.
–Controls and deliverables required.
Few of the models are:
–Waterfall Model
–V – Model
–Spiral Model
–Progressive Development Life Cycle
–Iterative Life Cycle models
Sequential SDLC models
•The sequential phases are usually represented by a V or waterfall diagram.
•There are many variations of V and waterfall lifecycle models, introducing
different phases to the lifecycle and creating different boundaries between
phases.
•G VV
V Model
V-Model Testing
Spiral Model
Progressive SDLC model
Progressive SDLC model
•Progressive model used for reasons, such as volatility of requirements, or a need
for an interim system with reduced functionality when long timescales are
involved.
•Solution to form a compromise between timescales and functionality, providing
"interim" deliveries of software, with reduced functionality, but serving as a
stepping stones towards the fully functional software.
•Stepping stone approach as a means of reducing risk.
•Each individual phase of development follows its own SDLC,typically using a V or
waterfall model. The actual number of phases will depend upon the development.
Iterative model
•An Iterative lifecycle model does not attempt to start with a full specification of
requirements.
•Development begins by specifying and implementing just part of the software,
which is then reviewed in order to identify further requirements.
•Above process repeated, producing a new version of the software for each cycle
of the model.
•Consists of repeating the following four phases in sequence.
–Requirements phase-Requirements are gathered and analyzed.
Iterative model
–Design phase-Solution to meet the requirements is designed. May be a new
design or an extension of an earlier design.
–Implementation and Test phase-Software coded, integrated and tested.
–Review phase-Software evaluated, current requirements reviewed and
changes and additions to requirements proposed
Decision as to software produced by the cycle will be discarded, or kept as
a starting point for the next cycle
Key to successful is rigorous validation of requirements and verification
(including testing).
Iterative model
Maintenance phase
•Successfully developed software eventually becomes part of a product and enter
a maintenance phase.
•During Maintenance phase software undergoes modification to correct errors
and to comply with changes to requirements.
•Like initial development, modifications also follow a development lifecycle, but
not necessarily using the same lifecycle model as the initial development.
•Throughout maintenance phase, software tests have to be repeated, modified
and extended.
Maintenance phase
•Effort to revise and repeat tests consequently forms a major part of the overall
costs of developing and maintaining software.
•Regression testing used for repetition of earlier successful tests to make sure
that changes to software have not introduced side effects.
Thank you
S U N D A Y, N O V E M B E R 2 1 , 2 0 0 4
SDLC models Advantages & disadvantages
SDLC models Advantages & disadvantages
integration testing
Integration tests are performed when new code is added to an
existing code base; for example, when a new function is
added to a set of existing functions. Integration tests measure
whether the new code works -- integrates -- with the existing
code; these tests look for data input and output, correct
handling of variables, etc.
Integration level tests verify proper execution of application components and do not
require that the application under test interface with other applications.
Communication between modules within the sub-system is tested in a controlled and
isolated environment within the project.
Examples
• Final test a group of changes by executing a regression test run as the last System Test
• Reusing accumulated test cases to re-unit-test a module each time an incremental
change is coded
regression testing
The term "regression testing" can be applied two ways. First,
when a code problem has been fixed, a regression test runs
tests to verify that the defect is in fact fixed; "Imagine finding
an error, fixing it, and repeating the test that exposed the
problem in the first place. This is a regresson test" (Kaner in
Testing Computer Software). Second, regression testing is
the counterpart of integration testing: when new code is
added to existing code, regression testing verifies that the
existing code continues to work correctly, whereas integration
testing verifies that the new code works as expected.
regression testing can describes the process of testing new
code to verify that this new code hasn't broken any old code.