SDLC - An Introduction To SDLC
SDLC - An Introduction To SDLC
SDLC - An Introduction To SDLC
Professional system developers and the customers they serve share a common goal of
building information systems that effectively support business process objectives. In order to
ensure that cost-effective, quality systems are developed which address an organization's
business needs, developers employ some kind of system development Process Model to
direct the project's life cycle. Typical activities performed include the following:
Definition Phase
Feasibility Analysis
Requirements Definition
Construction Phase
System Design
System Building
System Testing
Implementation Phase
Installation
Operation
Maintenance
System conceptualization
System requirements and benefits analysis
Project adoption and project scoping
System design
Specification of software requirements
Architectural design
Detailed design
Unit development
Software integration & testing
System integration & testing
Installation at site
Site testing and acceptance
Page 2 of 13
SDLC [ ]
Training and documentation
Implementation
Maintenance
A. Ad-hoc Development
Early systems development often took place in a rather chaotic and haphazard
manner, relying entirely on the skills and experience of the individual staff members
performing the work. Today, many organizations still practice Ad-hoc Development
either entirely or for a certain subset of their development (e.g. small projects).
The Software Engineering Institute at Carnegie Mellon University2 points out that
with Ad-hoc Process Models, "process capability is unpredictable because the
software process is constantly changed or modified as the work progresses.
Schedules, budgets, functionality, and product quality are generally (inconsistent).
Performance depends on the capabilities of individuals and varies with their innate
skills, knowledge, and motivations. There are few stable software processes in
evidence, and performance can be predicted only by individual rather than
organizational capability."
Page 3 of 13
SDLC [ ]
Systems Analysis. This step refers to the gathering of system requirements, with the
goal of determining how these requirements will be accommodated in the system.
Extensive communication between the customer and the developer is essential.
System Design. Once the requirements have been collected and analyzed, it is
necessary to identify in detail how the system will be constructed to perform
necessary tasks. More specifically, the System Design phase is focused on the data
requirements (what information will be processed in the system?), the software
construction (how will the application be constructed?), and the interface
construction (what will the system look like? What standards will be followed?).
Coding. Also known as programming, this step involves the creation of the system
software. Requirements and systems specifications from the System Design step are
translated into machine readable computer code.
Testing. As the software is created and added to the developing system, testing is
performed to ensure that it is working correctly and efficiently. Testing is generally
focused on two areas: internal efficiency and external effectiveness. The goal of
external effectiveness testing is to verify that the software is functioning according
to system design, and that it is performing all necessary functions or sub-functions.
Page 4 of 13
SDLC [ ]
The goal of internal testing is to make sure that the computer code is efficient,
standardized, and well documented. Testing can be a labor-intensive process, due to
its iterative nature.
Although the Waterfall Model has been used extensively over the years in the
production of many quality systems, it is not without its problems. In recent years it
has come under attack, due to its rigid design and inflexible procedure. Criticisms fall
into the following categories:
Real projects rarely follow the sequential flow that the model proposes.
At the beginning of most projects there is often a great deal of uncertainty about
requirements and goals, and it is therefore difficult for customers to identify these
criteria on a detailed level. The model does not accommodate this natural
uncertainty very well.
Developing a system using the Waterfall Model can be a long, painstaking process
that does not yield a working version of the system until late in the process.
C. Iterative Development
The problems with the Waterfall Model created a demand for a new method of
developing systems which could provide faster results, require less up-front
information, and offer greater flexibility. With Iterative Development, the project is
divided into small parts. This allows the development team to demonstrate results
earlier on in the process and obtain valuable feedback from system users. Often,
each iteration is actually a mini-Waterfall process with the feedback from one phase
providing vital information for the design of the next phase. In a variation of this
model, the software products which are produced at the end of each step (or series
of steps) can go into production immediately as incremental releases.
Page 5 of 13
SDLC [ ]
PROBLEMS/CHALLENGES ASSOCIATED WITH THE ITERATIVE MODEL
While the Iterative Model addresses many of the problems associated with the
Waterfall Model, it does present new challenges.
The user community needs to be actively involved throughout the project. While this
involvement is a positive for the project, it is demanding on the time of the staff and
can add project delay.
Informal requests for improvement after each phase may lead to confusion -- a
controlled mechanism for handling substantive requests needs to be developed.
The Iterative Model can lead to "scope creep," since user feedback following each
phase may lead to increased customer demands. As users see the system develop,
they may realize the potential of other system capabilities which would enhance
their work.
E. Prototyping
The Prototyping Model was developed on the assumption that it is often difficult to
know all of your requirements at the beginning of a project. Typically, users know
many of the objectives that they wish to address with a system, but they do not
know all the nuances of the data, nor do they know the details of the system
features and capabilities. The Prototyping Model allows for these conditions, and
offers a development approach that yields results without first requiring all
information up-front.
When using the Prototyping Model, the developer builds a simplified version of the
proposed system and presents it to the customer for consideration as part of the
development process. The customer in turn provides feedback to the developer,
who goes back to refine the system requirements to incorporate the additional
information. Often, the prototype code is thrown away and entirely new programs
are developed once requirements are identified.
There are a few different approaches that may be followed when using the
Prototyping Model:
Creation of the major user interfaces without any substantive coding in the
background in order to give the users a "feel" for what the system will look
like,
Development of an abbreviated version of the system that performs a
limited subset of functions; development of a paper system (depicting
proposed screens, reports, relationships etc.), or
Page 6 of 13
SDLC [ ]
Use of an existing system or system components to demonstrate some
functions that will be included in the developed system.
Assessment. The prototype is presented to the customer for review. Comments and
suggestions are collected from the customer.
Prototype Refinement. Information collected from the customer is digested and the
prototype is refined. The developer revises the prototype to make it more effective
and efficient.
Criticisms of the Prototyping Model generally fall into the following categories:
Prototyping can lead to poorly designed systems. Because the primary goal of
Prototyping is rapid development, the design of the system can sometimes suffer
because the system is built in a series of "layers" without a global consideration of
the integration of all other components. While initial software development is often
built to be a "throwaway", attempting to retroactively produce a solid system design
can sometimes be problematic.
Page 7 of 13
SDLC [ ]
F. Variation of the Prototyping Model
A popular variation of the Prototyping Model is called Rapid Application
Development (RAD). RAD introduces strict time limits on each development phase
and relies heavily on rapid application tools which allow for quick development.
Page 8 of 13
SDLC [ ]
2. The Spiral Model
The Spiral Model was designed to include the best features from the
Waterfall and Prototyping Models, and introduces a new component - risk-
assessment. The term "spiral" is used to describe the process that is
followed as the development of the system takes place. Similar to the
Prototyping Model, an initial version of the system is developed, and then
repetitively modified based on input received from customer evaluations.
Unlike the Prototyping Model, however, the development of each version of
the system is carefully designed using the steps involved in the Waterfall
Model. With each iteration around the spiral (beginning at the center and
working outward), progressively more complete versions of the system are
built.6
R=Review
Figure 4. Spiral Model
Page 9 of 13
SDLC [ ]
Planning and Management. The customer is given an opportunity to
analyze the results of the version created in the Engineering step
and to offer feedback to the developer.
Due to the relative newness of the Spiral Model, it is difficult to assess its
strengths and weaknesses. However, the risk assessment component of the
Spiral Model provides both developers and customers with a measuring tool
that earlier Process Models do not have. The measurement of risk is a
feature that occurs every day in real-life situations, but (unfortunately) not
as often in the system development industry. The practical nature of this
tool helps to make the Spiral Model a more realistic Process Model than
some of its predecessors.
Within the Reuse Model, libraries of software modules are maintained that
can be copied for use in any system. These components are of two types:
procedural modules and database modules. When building a new system,
the developer will "borrow" a copy of a module from the system library and
then plug it into a function or procedure. If the needed module is not
available, the developer will build it, and store a copy in the system library
for future usage. If the modules are well engineered, the developer with
minimal changes can implement them.
Definition of Objects. The objects, which can support the necessary system
components, are identified.
Page 10 of 13
SDLC [ ]
Prototype Evaluation. The prototype is evaluated to determine if it
adequately addresses customer needs and requirements.
A general criticism of the Reuse Model is that it is limited for use in object-
oriented development environments. Although this environment is rapidly
growing in popularity, it is currently used in only a minority of system
development applications.
Page 11 of 13
SDLC [ ]
The Uncertain Environment. The requirements of the system are
unknown or uncertain. It is not possible to define requirements
accurately ahead of time because the situation is new or the system
being employed is highly innovative. Here, the development methods
must emphasize learning. Experimental Process Models, which take
advantage of prototyping and rapid development, are most
appropriate.
5. Summary
The evolution of system development Process Models has reflected the
changing needs of computer customers. As customers demanded faster
results, more involvement in the development process, and the inclusion of
measures to determine risks and effectiveness, the methods for developing
systems changed. In addition, the software and hardware tools used in the
industry changed (and continue to change) substantially. Faster networks
and hardware supported the use of smarter and faster operating systems
that paved the way for new languages and databases, and applications that
were far more powerful than any predecessors. These rapid and numerous
changes in the system development environment simultaneously spawned
the development of more practical new Process Models and the demise of
older models that were no longer useful.
IV. References
Bassett, Paul "Partnerships take out the garbage", Software Magazine, Nov
1994 v14 n11 p96(2).
Page 12 of 13
SDLC [ ]
Mark C. Paulk, Bill Curtis, Mary Beth Chrissis, and Charles V. Weber,
"Capability Maturity Model for Software, Version 1.1", Software Engineering
Institute, February 1993
Mark C. Paulk, Charles V. Weber, Suzanne M. Garcia, Mary Beth Chrissis, and
Marilyn W. Bush, "Key Practices of the Capability Maturity Model, Version
1.1", Software Engineering Institute, February 1993.
Kal Toth, Intellitech Consulting Inc. and Simon Fraser University; lecture
notes: Software Engineering Best Practices, 1997.
Page 13 of 13