| |
Software
Development Life Cycle |
|
|
|
|
| |
Curtain
Raiser |
|
| |
 |
|
| |
|
Like
any other engineering products, software
products are oriented towards customers.
It is either market driven (or) it drives
the market. Customer Satisfaction was the
buzzword of the 80's. Customer Delight is
today's buzzword and Customer Ecstasy is
the buzzword of the new millennium. Products
that are not customer (user) friendly have
no place in the market although they are
engineered using the best technology. The
interface of the product is as crucial as
the internal technology of the product. |
|
|
|
|
| |
 |
|
| |
Market
Research |
|
| |
 |
|
| |
|
A
market study is made to identify a potential
customer's need. This process is also known
as market research. Here, the already existing
need and the possible/potential needs that
are available in a segment of the society
are studied carefully. The market study
is done based on lot of assumptions. Assumptions
are the crucial factors in the development
or inception of a product development. Unrealistic
assumptions can cause a nosedive in the
entire venture. Though assumptions are abstract,
there should be a move to develop tangible
assumptions to come up with a successful
product. |
|
|
|
|
| |
 |
|
| |
Research and Development |
|
| |
 |
|
| |
|
Once
the Market study is made, the customer's
need is given to the Research and Development
(R&D) Department to conceptualize a
cost-effective system that could potentially
solve customer's needs better than the competitors.
Once the conceptual system is developed
and tested in a hypothetical environment,
the development team takes control of it.
The development team adopts one of the software
development methodologies that is given
below, develops the proposed system, and
gives it to the customers. |
|
| |
 |
|
| |
|
The
Marketing group starts selling the product
to the available customers and simultaneously
works in developing a niche segment that
could potentially buy the product. In addition,
the marketing group passes the feedback
from the customers to the developers and
the R&D group to make possible value
additions in the product. |
|
| |
 |
|
| |
|
While
developing a product, the company outsources
the non-core activities to the other companies
who specialize in those activities. This
accelerates the product development process
largely. Some companies work on tie-ups
to bring out a highly matured product in
a short period. |
|
| |
 |
|
| |
|
Following are
the basic popular models used by many software
development firms. |
|
| |
 |
|
| |
System Development Life Cycle Model |
 |
Prototyping Model |
 |
Rapid Application Development Model |
 |
Component Assembly Model |
 |
|
|
| |
System
Development Life Cycle Model |
|
| |
 |
|
| |
|
This
is also known as Classic Life Cycle Model
(or) Linear Sequential Model (or) Waterfall
Method. This has the following activities.
|
|
| |
 |
|
| |
Component Assembly Model |
 |
Software
Requirements Analysis |
 |
Systems
Analysis and Design |
 |
Code Generation |
 |
Testing |
 |
Maintenance |
 |
|
|
| |
System/Information
Engineering and Modeling |
|
| |
 |
|
| |
|
As
software is always a part of a large system
(or business), work begins by establishing
requirements for all system elements and
then allocating some subset of these requirements
to software. This system view is essential
when software must interface with other
elements such as hardware, people and other
resources. System is the basic and very
critical requirement for the existence of
software in any entity. So if the system
is not in place, the system should be engineered
and put in place. In some cases to extract
the maximum output, system should be re-engineered
and spiced up. Once the ideal system is
engineered or tuned up, the development
team studies the software requirement for
the system. |
|
| |
 |
|
| |
Software
Requirements Analysis |
|
| |
 |
|
| |
|
This
is also known as feasibility study. In this
phase, the development team visits the customer
and studies their system. They investigate
the need for possible software automation
in the given system. By the end of the feasibility
study, the team furnishes a document that
holds the different specific recommendations
for the candidate system. It also includes
the personnel assignments, costs, project
schedule, and target dates. The requirements
gathering process is intensified and focused
specially on software. To understand the
nature of the program(s) to be built, the
system engineer ("analyst") must
understand the information domain for the
software, as well as required function,
behavior, performance and interfacing. The
essential purpose of this phase is to find
the need and to define the problem that
needs to be solved . |
|
| |
 |
|
| |
System
Analysis and Design |
|
| |
 |
|
| |
|
In
this phase, the software's overall structure
and its nuances are defined. In terms of
the client/server technology, the number
of tiers needed for the package architecture,
the database design, the data structure
design etc are all defined in this phase.
Analysis and Design are very crucial in
the whole development cycle. Any glitch
in the design phase could be very expensive
to solve in the later stage of the software
development. Much care is taken during this
phase. The logical system of the product
is developed in this phase. |
|
| |
 |
|
| |
Generation |
|
| |
 |
|
| |
|
The
design must be translated into a machine-readable
form. The code generation step performs
this task. If design is performed in a detailed
manner, code generation can be accomplished
with out much complication. Programming
tools like Compilers, Interpreters, Debuggers
are used to generate the code. Different
high level programming languages like C,
C++, Pascal, Java are used for coding. With
respect to the type of application, the
right programming language is chosen. |
|
| |
 |
|
| |
Testing |
|
| |
 |
|
| |
|
Once
the code is generated, the program testing
begins. Different testing methodologies
are available to unravel the bugs that were
committed during the previous phases. Different
testing tools and methodologies are already
available. Some companies build their own
testing tools that are tailor made for there
own development operations. |
|
| |
 |
|
| |
Maintenance |
|
| |
 |
|
| |
|
Software
will definitely undergo change once it is
delivered to the customer. There are many
reasons for the change. Change could happen
because of some unexpected input values
into the system. In addition, the changes
in the system could directly affect the
software operations. The software should
be developed to accommodate changes that
could happen during the post implementation
period. |
|
| |
 |
|
| |
Prototyping
Model |
|
| |
 |
|
| |
. |
This
is a cyclic version of the linear model.
In this model, once the requirement analysis
is done and the design for a prototype is
made, the development process gets started.
Once the prototype is created, it is given
to the customer for evaluation. The customer
tests the package and gives his/her feed
back to the developer who refines the product
according to the customer's exact expectation.
After a finite number of iterations, the
final software package is given to the customer.
In this methodology, the software is evolved
as a result of periodic shuttling of information
between the customer and developer. This
is the most popular development model in
the contemporary IT industry. Most of the
successful software products have been developed
using this model - as it is very difficult
(even for a whiz kid!) to comprehend all
the requirements of a customer in one shot.
There are many variations of this model
skewed with respect to the project management
styles of the companies. New versions of
software product evolve as a result of prototyping |
|
| |
 |
|
| |
Rapid
Application Development (RAD) Model |
|
| |
 |
|
| |
|
The
RAD is a linear sequential software development
process that emphasizes an extremely short
development cycle. The RAD model is a "high
speed" adaptation of the linear sequential
model in which rapid development is achieved
by using a component-based construction
approach. Used primarily for information
systems applications, the RAD approach encompasses
the following phases: |
|
| |
 |
|
| |
Business
modeling |
|
| |
 |
|
| |
|
The
information flow among business functions
is modeled in a way that answers the following
questions:
|
|
| |
What information drives
the business process?
What information is generated?
Who generates it?
Where does the information go?
Who processes it? |
|
| |
 |
|
| |
Data
modeling |
|
| |
 |
|
| |
|
The
information flow defined as part of the
business modeling phase is refined into
a set of data objects that are needed to
support the business. The characteristic
(called attributes) of each object share
identified and the relationships between
these objects are defined. |
|
| |
 |
|
| |
Process
modeling |
|
| |
 |
|
| |
|
The
data objects defined in the data-modeling
phase are transformed to achieve the information
flow necessary to implement a business function.
Processing the descriptions are created
for adding, modifying, deleting, or retrieving
a data object |
|
| |
 |
|
| |
Application
generation |
|
| |
 |
|
| |
|
RAD
assumes the use of the RAD tools like VB,
VC++, Delphi etc rather than creating software
using conventional third generation programming
languages. The RAD works to reuse existing
program components (when possible) or create
reusable components (when necessary). In
all cases, automated tools are used to facilitate
construction of the software. |
|
| |
 |
|
| |
Testing
and Turnover |
|
| |
 |
|
| |
|
Since
the RAD process emphasizes reuse, many of
the program components have already been tested.
This minimizes the testing and development
time. |
|
| |
 |
|
| |
Component
Assembly Model |
|
| |
 |
|
| |
|
Object
technologies provide the technical framework
for a component-based process model for
software engineering. The object oriented
paradigm emphasizes the creation of classes
that encapsulate both data and the algorithm
that are used to manipulate the data. If
properly designed and implemented, object
oriented classes are reusable across different
applications and computer based system architectures.
Component Assembly Model leads to software
reusability. The integration/assembly of
the already existing software components
accelerate the development process. Nowadays
many component libraries are available on
the Internet. If the right components are
chosen, the integration aspect is made much
simpler. |
|
| |
 |
|
| |
Conclusion |
|
| |
 |
|
| |
|
All
these different models have their own advantages
and disadvantages. Nevertheless, in the
contemporary commercial software development
world, the fusion of all these methodologies
is incorporated. Timing is very crucial
in software development. If a delay happens
in the development phase, the market could
be taken over by the competitor. Also if
a 'bug' filled product is launched in a
short period of time (quicker than the competitors),
it may affect the reputation of the company.
So, there should be a tradeoff between the
development time and the quality of the
product. Customers don't expect a bug free
product but they expect a user-friendly
product. That results in Customer Ecstasy |
|
| |
|
|
| Whether
you need a cool Cold Fusion dynamic web site,
an ASP auction portal, a PHP shopping cart
or a Lotus Notes-Domino application or your
MS SQL database needs optimization we have
the necessary skills. Call us ! |
| |
|
|