You are on page 1of 35

Lesson 3 - Software

Development Life Cycle


Software Development Life Cycle
Software Development Life Cycle, SDLC for
short, is a well-defined, structured
sequence of stages in software engineering
to develop the intended software product.
Steps in SDLC
• Communication – initiate the request

• Requirement Gathering – bringing out the information on what the project


requirement is

• Feasibility Study - the team analyzes if a software can be made to fulfill all
requirements of the user and if there is any possibility of software being no
more useful.

• System Analysis - decide a roadmap of their plan and try to bring up the
best software model suitable for the project. Understanding the software
limitations and changes to be done
Steps in SDLC
• Software design - The inputs from users and information gathered in
requirement gathering phase are the inputs of this step. Output will be the
logical design and the physical design

• Coding – programming phase

• Testing – End user testing

• Integration – integration with other entity

• Implementation - installing the software on user machines


Steps in SDLC
• Operation and Maintenance – maintaining the code, the systems for patch
updates

• Disposition – retirement; legacy system


SDLC Model
Waterfall Model

Waterfall model is the simplest


model of software development
paradigm. It says the all the phases
of SDLC will function one after
another in linear manner. That is,
when the first phase is finished then
only the second phase will start and
so on.
SDLC Model
Iterative Model
This model leads the
software development
process in iterations. It
projects the process of
development in cyclic
manner repeating every
step after every cycle of
SDLC process.
SDLC Model
Spiral Model

Spiral model is a combination of both,


iterative model and one of the SDLC
model. It can be seen as if you
choose one SDLC model and combine
it with cyclic process (iterative model).
System Implementation
Implementation
Implementation refers to activities that occur before the system is turned over
to its users. Its purpose is to:
• build a properly working system install it in the organization
• replace the old systems and work methods
• finalize system and user documentation
• train users
• prepare support systems to assist users
System Implementation
In addition, implementation involves project closedown, including personnel
evaluation, staff reassignment, project success assessment, and all resources
turnover on those who will support and maintain the system. Implementation is
considered to be expensive because there are a lot people involved in the
process. It is also time-consuming since all the work must be completed. The
discussion on implementation covers six major activities and these are
coding, testing, installation, documentation, user training, and support.
Coding
Coding is the process where the physical design specifications developed by the
analysis team are converted into computer codes by the programming team.
This can be an involved and intensive activity that depends on the size and
complexity of the system. No matter what development methodology is
used, once the coding has begun, the testing process can begin and proceed in
parallel. With each program module produced, it can be tested individually, then
as part of a larger program, and then as part of a larger system. These different
types of testing will be discussed in the next subsections.
Testing
Even though testing is done during implementation, the planning for testing
should start earlier in the project. Planning covers determining what needs to be
tested and collecting test data. Testing is the process of examining a product
to ascertain what defects it contains. To conduct a test, programmers should
have already built the software and have in hand well-defined standards for
what composes a defect. The product can be tested through reviewing
their construction and composition or through exercising their function and
examining the results. Software testing usually begins early in the systems
development life cycle, although many of the actual testing activities are carried
out during implementation.
Types of Testing
Components can be tested individually or in groups, or the entire system can be
tested as a whole. There are three testing types and these are:

1. Unit testing

2. Integration testing

3. System testing
Each of this type correlated to a specific phase of the SDLC. Unit Testing
Sometimes called module testing, unit testing is the process of testing
individual code modules before they are integrated with other modules. The
objective of unit testing is to identify and fix as many errors as possible before
modules are combined into larger software units (such as programs, classes, and
subsystems). Unit testing is often automated but it can also be done manually.
Unit testing can be tedious and time consuming. It requires patience and
meticulousness on the part of the development team. Unit testing should be
done with an awareness that it may not be possible to test a module for every
input scenario that will occur when the program is run in a real-world
environment. Once all of the modules in a program have been found to be
working in the most efficient and error-free manner possible, larger components
of the program can be assessed by means of integration testing.
Integration Testing
Combining modules and testing them is called integration testing. The use of this
test is to identify errors that were not or could not be detected by unit testing
individual modules. Such errors could result from several problems, including:
• Interface incompatibility. An example is a caller module that passes a
variable of the wrong data type to a subordinate module.
• Parameter values. A module is passed or returns a value that was unexpected
(such as negative number for a price).
• Run-time exceptions. A module generates an error such as “out of
memory” or “file already in use” due to conflicting resource needs.
• Unexpected state interactions. The conditions of two or more modules
interact to cause complex failures (such as an order class method that
operates correctly for all possible customer object conditions except one).
System Testing
In system testing, instead of integrating modules into programs for testing,
the programs are integrated into systems. Not only do individual modules and
programs are tested several times in system testing, but also interfaces
between modules and programs. Usually, system testing is performed first
by developers or test personnel to make sure that the system does not fail and
meets the developers’ understanding of user requirements. If a system is
developed in several iterations, system testing is performed mostly at the end of
each iteration to identify significant issues such as performance problems that
will need to be dealt with in the next iteration.
Acceptance Testing
After the system tests are complete, the system is now ready for acceptance
testing. This is testing the system in the environment where it will
eventually be used. Acceptance means that users normally sign off on the
system and “accept” it once they are satisfied with it. In other words,
acceptance testing is a way for users to verify if the system meets their
requirements. Usually, acceptance testing is the last round of testing before the
system is handed over to its users.
Acceptance Testing
There are two types of acceptance testing and these are:

1. Alpha testing – user testing of a completed information system using


simulated data

2. Beta testing – user testing of a completed information system using real data
in the real user environment
Alpha Testing
In alpha testing, the whole system is implemented in a test environment to find
out whether the system is openly destructive to itself or to the rest of the
environment. There are several types of tests done during alpha testing and
these are as follows:
• Recovery testing – forces the software (or environment) to fail in order to
verify that recovery is properly performed · Security testing – verifies that
protection mechanisms built into the system will protect it from improper
penetration
• Stress testing – tries to break the system
Alpha testing
• Performance testing – determines how the system performs in the range
of possible environments in which it may be used; often the goal is to have
the system perform with similar response time and other performance
measures in each environment
Beta Testing
The purpose of beta testing is to ascertain whether the software,
documentation, technical support, and training activities work as planned.
Beta testing can be considered as a preparation of the installation phase.
Problems not covered in alpha and beta testing in any of these areas should be
fixed before users can accept the system.
Alpha Testing Beta Testing
Alpha testing involves both the white box and black
Beta testing commonly uses black box testing.
box testing.
Alpha testing is performed by testers who are usually Beta testing is performed by clients who are not part of
internal employees of the organization. the organization.
Alpha testing is performed at developer’s site. Beta testing is performed at end-user of the product.
Reliability and security testing are not checked in alpha Reliability, security and robustness are checked during
testing. beta testing.
Beta testing also concentrates on the quality of the
Alpha testing ensures the quality of the product before
product but collects users input on the product and
forwarding to beta testing.
ensures that the product is ready for real time users.
Beta testing doesn’t require a testing environment or
Alpha testing requires a testing environment or a lab.
lab.
Alpha testing may require long execution cycle. Beta testing requires only a few weeks of execution.
Most of the issues or feedback collected from beta
Developers can immediately address the critical issues
testing will be implemented in future versions of the
or fixes in alpha testing.
product.
Installation
After the new system has been developed and tested, it must be installed and
placed into operation. Installation is the process of moving from the current
information system to the new one. There are many constraints when installing
a new system and making it operational. These include cost, customer relations,
employee relations, logistical complexity, and overall exposure to risk. Some
other important issues to consider when planning installation are as follows:

• Incurring costs operating both systems in parallel

• Detecting and correcting errors in the new system


Installation
• Potentially disrupting the company and its IS operations

• Training personnel and familiarizing customers with new procedures


Approaches to Installation
There are different approaches to installation and the most commonly used are:

1. Direct installation

2. Parallel installation

3. Phased installation
Direct Installation
In direct installation, the old system is turned off and the new system is turned
on.
Direct Installation
In direct installation, the users use the new system. Whatever errors found from
the new system will have a direct impact on the users and how they do
their jobs. If the new system fails, considerable delay may occur until the old
system can operate again and business transactions are re-entered to make the
database updated. The main advantage of direct installation is its simplicity.
There are fewer logistical issues to manage fewer resources required
because the old and new systems are not operated in parallel. However,
the drawback of direct installation is its risk. There is no backup when the new
system fails because older systems are not operated in parallel. Moreover,
direct installation requires a complete installation of the whole system.
Direct Installation
In general, direct installation is used in one or both of the following conditions:

• The new system is not replacing an older system (automated or manual).

• Downtime of days or weeks can be tolerated

If neither of the condition applies, then parallel or phased installation is used to


minimize the risk of system unavailability.
Parallel Installation
In parallel installation, the old system continues to operate along with the new
system until the users and management are satisfied with the performance
of the new system and has been thoroughly tested and determined to be
error-free and ready to operate independently. All of the work done by the old
system is performed in parallel by the new system. The time allotted for parallel
operation is often determined ahead and limited to minimize the cost of dual
operation.
Parallel Installation
An advantage of parallel installation is its low risk of system failure and the
negative consequences that may result from that failure. If both systems are
operated completely, then the old system serves as a backup for the new
system. Any failure in the new system can be mitigated by relying on the old
system.

A parallel installation can be very expensive. Since two systems are running,
it implies employing and paying two staffs to operate and maintain them. In
addition, parallel installation can be confusing to users because they are
dealing with both systems.
Parallel Installation
A parallel approach may not be possible or feasible if the users of the system
(such as customers) cannot tolerate redundant effort or if the size of the
system is large.
Phased Installation
In Phased Installation, the new system is
installed and brought into operation in a
series of steps or phases. Components
or functions are added to the
operational system on each phase. The
system is tested in each phase to make
sure that it is ready for the next phase.
Phased installation can be combined
with parallel installation, especially
when the new system will take over the
operation of multiple existing systems.
Phased Installation
The main benefit of phased installation is that it reduced risk because
failure of a single phase is less problematic than failure of an entire system.
However, its drawback is that it increased complexity. Dividing the
installation into phases makes more activities and milestones, hence making
the whole process more complex. Though each individual phase includes a
smaller and more manageable set of activities. Phased installation is useful
mainly when a system is large, complex, and composed of relatively
independent subsystems. If these subsystems are not substantially
independent, then it is hard or impossible to define separate installation phases.
Thank you!

You might also like