Module-2
SOFTWARE DEVELOPMENT LIFE CYCLE MODELS
Introduction
A Software life cycle or software process is a series of identifiable stages that a software product
undergoes during its lifetime. A software product development effort usually starts with a feasibility
study and then requirement analysis and specification, design, coding, testing and maintenance are
undertaken. Each of these stages is called a life cycle phase.
A software life style model is a descriptive and diagrammatic model of software life cycle. A Life cycle
model identifies all the activities required to develop and maintain the different activities. Several
different activities are carried out in each life cycle phase. For example, the design stage might
comprise a structured analysis activity followed by a structured design activity.
A Software Life Cycle Model (SLCM) graphically describes how development activities will be performed
by depicting the “sequenced “of the activities. The sequence may or may not be linearly sequential
because the phase may follow one another, repeat themselves, or run concurrently. Figure is a simple,
generic process framework showing that the overall process consists of major phases, which consists of
activities that produce deliverables.
Life Cycle
Process
Phase Plan Specify Develop Post project
Activity System
Design Code Unit test test
Test Test
Deliverable plan,Test plans,Test
LOC Results Results
A generic process framework
An SLCM is the framework, for defining the repeatable process that the software engineering applies to
the development of software. it defines the explicit practices that the software engineer can use to
consistently produce high- quality software systems. The concept of the software life cycle applies to all
software projects, whether large or small.
IMPORTANCE OF LIFE CYCLE MODEL
While developing a software product, it is necessary for the development team identifies a suitable life
cycle model and adhere to it. The advantage of adhering to a life cycle model is that it encourages
development of software in a systematic and disciplined manner. When a program is developed by a
single programmer, he has the freedom to decide the exact steps through which he will develop the
program. However, when a software product is being developed by a team, there must be precise
understanding between the members as to when to do what otherwise it may lead to chose and
project failure.
Life cycle models encourage development of software in a systematic and disciplined manner. it
defined entry and exit criterion for every phase. A phase is considered to be complete only if the
corresponding exit criterion is satisfied. Similarly, a phase can start only if the corresponding phase-
entry criteria are satisfied. For example the phase –exit criteria for the software requirement
specification phase can be that the Software Requirement Specification (SRS0 document has been
completed ,internally reviewed and approved by the customer .With such well define d entry and exit
criteria or various phases, it becomes easier for the software project managers to monitor the progress
of the project.
When a life cycle model is adhered to, the project manager can easily tell at which stage (e.g., design,
code, test, etc.) of development the project currently is .if no life cycle model is adhered to, it becomes
very difficult to chart the progress of the project and the project manager would have to depend on the
estimation of the team members .this leads to a problem known as the 99%complete syndrome. In this
syndrome, which appears when there is no definite way to assess the progress of a project, the
optimistic team members feels that the project is 99%complete even when it is far from its completion,
making all projection about the completion highly inaccurate.
GENERIC SOFTWARE PROCESS MODEL
Each process model has strength and merits that makes it suitable for specific application. However all
process are the same, so far as some activities are concerned. These activities by default are required
to be carried out whether the software is simple or complex, small or large and may belong to any type.
The software process comprises activities; tasks and deliverable .Some of the activities are common to
all software development and are mandatory .These activities relate to:
A1: Planning, scheduling, tracking and control of activities.
A2: Technical reviews, design, architecture and programs.
A3: Software quality assurance.
A4: Documentation
A5: Risk analysis.
A6: Measurement of efforts, resources, costs and budgets for planning and building development
standards.
Activity Processes
Software and Components Common Activities Task Activities
A1 Work Breakdown
Code Executable A2 Tasks
A3
A4
Documentation A5
A6
Plans Software
System
development
plans
Generic software process model
SOFTWARE DEVELOPMENT LIFE CYCLE
Software life cycle is a series of identifiable staged that a software product undergoes during its
lifetime. A software product development effort usually starts with a feasibility study stage, then
requirement analysis and specification design, coding, testing, and maintenance are undertaken each
of these stages is called a life cycle phase.
1. Feasibility Study
The main aim of feasibility study is to determine whether developing the product is financially
and technically feasible. This include:-
An abstract definition of the problem
Formulation of the different solution strategies
Examinations of alternative solution strategies and their benefits.
A cost/benefits analysis is performed to determine which solution is the best.
2. Requirement Analysis and specification(SRS)
The aim of the requirements analysis and specification phase is to understand the exact
requirement of the customer and to document them properly.
The goal of the requirement analysis is to collect and analyze all related data into information
with a view to understand the customer requirement clearly and wedding out inconsistency in
these requirements.
During requirements specification, the user requirements are properly and documented is a
SRS document.
In addition to producing the SRS document during this phase the users manuals and the system
test plan are produced. The engineer doing requirement analysis and specification is usually
designated in the software industry as the analyst.
3. Design
The goal of the design phase is to transform the requirement specifications into a structure that is
suitable for implementation in some programming language.
High Level(HL) Design
High level design includes information about the various functions and how a particular function
invokes the other functions.
Detailed design
This design is obtained by using HL design .The objective of detailed design is to transform the
requirements into well defined steps.
4. Coding
Coding involves translating the design into the code of programming language, beginning when
the design document is baseline. Coding comprises of the following activities:
Identifying reusable modules
Code editing
Code inspection
Final test planning
Identifying reusable modules is an effective way to save time and effort. Before writing the code,
there may be existing code for modules of other systems or projects which is similar to the current
system. These models can be reused with modification when writing the code; developers should
adopt good program styles. A good program style is characterized by simplicity, readability, good
documentations, changeability, and module independence. Generally, programming standards
should be followed to ensure that the written programs are easily understood by all project team
members. When modifying reusable code, the impact of reusable modules and the interfaces with
other modules need to be considered.
Code inspection includes code review quality, and maintainability. Code reviews is to check
program logic and readability. Quality verification ensures that all the modules perform the
functionality as discussed in the detailed design. Maintainability is also checked to ensure that
programs are easy to maintain.
The final test plan should be ready at the coding phase. Based on the test plan initiated at the
design phase, with the feedback of coding activities, the final teat plan should provide details of
what needs to be tested, testing strategies and methods testing schedules, and all necessary
resources.
5. Testing
Testing is the verification and validation activity for the software product. The goals of the testing
phase are
To affirm the quality of the product by finding and eliminating faults in the program.
To demonstrate the presence of all specified functionality in the product.
To estimate the operation reliability of the software.
During the test phase, program components are combined into the overall software code and
testing is performed according to developed test (Software verification and validation) plan. The
testing phase consists of.
1. Unit test
2. Integration test
3. Acceptance test
The unit test is the process of tasking a program module and running it in isolation from the
rest of the software product. By using prepared inputs and comparing the actual results with
the results predicted by the specifications and design of the module. The unit testing is the
responsibility of programmers while the later stage of testing may done by an independent
testing group?
The integration test includes subsystem and system tests. the subsystem test focuses on
testing the interface and independencies of subsystems or modules. The system test tests all
the subsystem as a whole to determine whether specified functionality is performed correctly
as the results of the software. The integration test also includes they system integration
process which brings together all system components, hardware and software and
humanware. This testing is conducted to ensure the system requirements in real or simulated
system environments, are satisfied.
The acceptance test acts as validation of testing phase, consisting of internal test and field
test. The internal test includes capability test and guest test both performed in house. The
capability test-tests the system in an environment configured similar to the customer
environment. The guest test in conducted by the user in their software the user to test the
product where customers often lead the test and define and develop the test cases. The field
test is also called “beta test” .The acceptance test is defined as formal testing conducted to
determine whether a software system satisfies its acceptance criteria and to unable the
customer to determine whether the system is acceptable.
6. Maintenance
It is estimated that maintenance of any software product requires much more efforts than the effort
necessary to develop the product. Many studies indicate that the relative efforts of development of a
typical system to its maintenance effort are roughly in the 40:60 ratios: maintenance involves
performing any one or more of the following kinds of activities:
[Link] maintenance
Correcting errors that were not discovered during the product development phase. This is called
corrective maintenance.
[Link] maintenance
Improving the implementation of the system and enhancing the functionalities of the system according
to the customer’s requirements. This is called perfective maintenance.
[Link] maintenance
Porting the software to a new e.g., to a new computer or to a new operating system. this is called
adaptive maintenance.
Alpha Testing is a type of software testing performed to identify bugs before releasing the
software product to the real users or public. It is a type of acceptance testing. The main
objective of alpha testing is to refine the software product by finding and fixing the bugs that
were not discovered through previous tests.
Beta Testing is one of the Acceptance Testing types, which adds value to the product as the
end-user (intended real user) validates the product for functionality, usability, reliability, and
compatibility. Inputs provided by the end-users helps in enhancing the quality of the product
further and leads to its success. This also helps in decision making to invest further in the
future products or the same product for improvisation.
Since Beta Testing happens at the end user’s side, it cannot be the controlled activity.
Alpha Testing VS Beta Testing
Alpha Testing
It is a type of acceptance testing; performed to identify all possible issues and bugs before
releasing the final product to the end users. Alpha testing is carried out by the testers who are
internal employees of the organization. The main goal is to identify the tasks that a typical
user might perform and test them.
To put it as simple as possible, this kind of testing is called alpha only because it is done early
on, near the end of the development of the software, and before beta testing. The main focus
of alpha testing is to simulate real users by using a black box and white box techniques.
Beta Testing
Beta Testing is performed by "real users" of the software application in "real environment"
and it can be considered as a form of external User Acceptance Testing. It is the final test
before shipping a product to the customers. Direct feedback from customers is a major
advantage of Beta Testing. This testing helps to test products in customer's environment.
KEY DIFFERENCE
Alpha Testing is performed by the Testers within the organization whereas Beta Testing is
performed by the end users.
Alpha Testing is performed at Developer's site whereas Beta Testing is performed at
Client's location.
Reliability and Security testing are not performed in-depth in Alpha Testing while Reliability,
Security and Robustness are checked during Beta Testing.
Alpha Testing involves both Whitebox and Blackbox testing whereas Beta Testing mainly
involves Blackbox testing.
Alpha Testing requires testing environment while Beta Testing doesn't require testing
environment.
Alpha Testing requires long execution cycle whereas Beta Testing requires only few weeks
of execution.
Critical issues and bugs are addressed and fixed immediately in Alpha Testing whereas
issues and bugs are collected from the end users and further implemented in Beta Testing.
Black Box Testing is a software testing method in which the internal structure/ design/ implementation of the item
being tested is not known to the tester. White Box Testing is a software testing method in which the internal
structure/ design/ implementation of the item being tested is known to the tester.
Differences between Black Box Testing vs White Box Testing:
BLACK BOX TESTING WHITE BOX TESTING
It is a way of software testing in which It is a way of testing the software in
the internal structure or the program or which the tester has knowledge about
the code is hidden and nothing is the internal structure or the code or the
known about it. program of the software.
It is mostly done by software
It is mostly done by software testers. developers.
No knowledge of implementation is Knowledge of implementation is
needed. required.
It can be referred as outer or external It is the inner or the internal software
software testing. testing.
It is functional test of the software. It is structural test of the software.
This testing can be initiated on the
basis of requirement specifications This type of testing of software is
document. started after detail design document.
No knowledge of programming is It is mandatory to have knowledge of
required. programming.
It is the behavior testing of the
software. It is the logic testing of the software.
It is applicable to the higher levels of It is generally applicable to the lower
testing of software. levels of software testing.
It is also called closed testing. It is also called as clear box testing.
It is least time consuming. It is most time consuming.
It is not suitable or preferred for
algorithm testing. It is suitable for algorithm testing.
Data domains along with inner or
Can be done by trial and error ways internal boundaries can be better
and methods. tested.
Example: search something on Example: by input to check and verify
google by using keywords loops