SOFTWARE DEVELOPMENT
Risk Management
Risk may arise due to loosely defined requirements, difficulties in estimating the
time and/or resources needed for the software development, dependence on individual
skills and rapidly changing requirements due to changing needs.
Here are some thoughts on how to limit the unpredictability of software development.
Spend more time setting objectives
Project objectives are important. A lot of thought should go into what the project
is trying to achieve. The project objectives need to provide guidance for every
programming task.
Having set the objectives of the project, do an exhaustive analysis of how the objectives
can be achieved. This should eliminate unrealistic objectives.
Do not spend too much time gathering requirements.
Rigid analysis stifles programmer and user creativity. It is also
no guarantee against a software disaster. Where the documentation of the requirements
runs into several volumes, it usually guarantees a software disaster.
Break a project into multiple tasks.
The initial task should create the framework and the basic functionality for the
project. With the project objectives soundly set, this should be subject to little
change.
Later tasks can then add the "bells and whistles".
Design the project so that it can handle major changes to requirements.
The system should be designed to be "infinitely modifiable". Changes to the requirements
must have minimal effect on producing the software.
With a soundly defined framework and infinitely modifiable code, the effect of users
changing their minds will be minimal. As will the consequences of new or better
ideas as the project evolves.
The benefits of a large Contingency Factor.
The most obvious benefit is that the project will come in on time. But there are
other benefits.
If the project cannot be cost justified, the project scope should be re-examined,
but not the Contingency Factor. The project should be re-analysed to determine what tasks are
really essential and affordable.
Large projects should be broken down into smaller and independent projects. The
Contingency Factor can then be reduced for tasks with smaller scope.
Do not use new or complex technology
Using the tried and trusted Microsoft Visual Basic with SQL Server and Access databases
provides a head start. There is always some advantage in using the latest version
of software - but there is a cost. If the new technology is essential for the project,
then do an independent trial of the software, to ensure adequate technical knowledge,
and that all the software bugs have been ironed out.
Hire only the best and brightest
The cost of developing software is mainly dependent upon the abilities of the developers.
They determine more than any other factor, the viability of a project and have a
tremendous influence on productivity.
Reusable code
It is always productive to collect a large library of reusable code. The procedures
should be used to standardise error handling, ADO database access, edit routines,
Grid handling, etc. The reusable code will reduce debugging times, as each procedure
will be called multiple times. It also lessens the amount of coding needed.
|