LIVE projects is a term much used, abused and
misused but little understood by students and
academicians alike. To understand the true meaning
of LIVE project one needs to first decipher how
a real life software development exercise differs
from a lab situation.
Today computers are becoming key elements influencing
our daily lives in a number of ways. We cannot
imagine several applications such as banking,
financial transactions, manufacturing, defence,
process control, communication etc without the
use of computers in some way. Computers, per se,
are dumb pieces of hardware. It is the software
that gives life to them. With the near total control
of our lives by computers, any malfunctioning
in either the hardware or the software will lead
to disastrous consequences. While it is relatively
easy to ensure reliability of hardware components
by stringent quality measures in the manufacturing
process, the same cannot be said of software.
Though software development process is still not
an exact science, it is imperative that software
always behaves in a predictable manner. Therefore
it is necessary that software in the real world
is developed through a well defined and systematic
process.
A simple code and test approach may suffice in
a lab or an academic situation, real world applications
on the other hand require a structured and comprehensive
approach. Some critical elements of real life
software projects are:
Methodology: Before starting the development
exercise one needs to choose between two methodologies
- “Object Oriented Methodology” and
“ “Procedure oriented methodology”.
Planning: All software development exercises
take place against client requirements. Every
client will have time, cost and other constraints.
Therefore a great deal of planning needs to be
done to meet these constraints.
Team effort: No piece of software in the real
world is ever developed by a single individual.
All large software development efforts require
a team of specialists - domain experts, software
experts, coding specialists, testers, hardware
and networking professionals etc. While each group
works on a specific aspect, no group works in
isolation and there is a need for constant interaction
among the team members.
Quality: A lab effort basically concentrates
on meeting the functionality expected. In the
real world the software, in addition to meeting
the functional requirements, should meet additional
quality constraints in terms of performance, security
etc.
Maintenance: The life of a piece of software
is really long and during this period the original
development team members would certainly not be
available for maintaining the package. Some others
would be given the responsibility of maintaining
the software. In some cases it would be a totally
different organisation too.
Change management: Any real world project has
to cope with change. Before making any change,
its impact on all the parts of the software has
to be analysed.
Lay user: In most cases the software is used
by non-technical people who may not be computer
savvy. Therefore the software has to be highly
robust.
Documentation: Clear and unambiguous documentation
is required in any real world project for a number
of reasons. Client signoff will be required at
various stages of the project and submission of
documentation is therefore manadatory for this
purpose. Once developed, the software will live
for a long time and during its life it will have
to be mainatained and as noted earlier there may
be several occasions necessitating a change. Without
design specs and well documented code, it will
be impossible to do either.
Standards: To ensure that the documentation is
clear and unambiguous it is necessary to follow
standards. For example, there are IEEE standards
for requirement specifications, design etc. Most
major sofware companies have their own standards
for documentation and coding and sometimes the
client may specify the standards to be followed.
Reuse: In order to reduce development effort
and to optimise on costs and time, reusability
of code is a major consideration while developing
new software. Mathematical libraries, GUIs, EJBs
etc are all prime candidates for reusability.
Version Control: Since there will be many changes
in the life of any software developed, keeping
track of changes made is necessary. Therefore
all changes and functionality have to be mapped
on to a particular version. In case, for example,
there is a problem with a new version, the client
can roll back to an earlier version without difficulty.
Live projects @ CMC LIBERTY
All Rights Reserved. Copyright Manac Infotech Pvt. Ltd.