The author in this
reading has compared the large-scale software project to the tar pit. Since the
past decade, the reason behind the large-scale software projects not being able
to meet the goals, schedules, and the assigned budget are the complex errors
that arise during the development of such projects.
The author describes the following types of software products
being developed around the world:
- Simple Program
- The program is itself complete and ready for execution
by its programmer on the system used for its development.
- Usually, these types are projects are being developed
by students as a semester project, or even as a final year project.
- Programming Product
- It can be executed, tested, repaired, and extended by
anyone.
- It is usable in many environments for many
sets of data.
- Generalized programs should be written in generalized
fashion i.e. different ranges and form of input, and algorithms.
- It is thoroughly documented for use and repair
processes.
- Developing this type of project from 'simple program'
requires three times the original effort.
- Programming System
- It is a collection of interacting programs, coordinated in functionalities and disciplined in a format so that the assemblage continues of the entire facility for a large task.
- Every input/output confirms in syntax and semantics with precisely defined interfaces.
- It should only use a prescribed budget, and resources e.g. memory space, I/O devices, and computation time.
- The product must be tested with other components in all possible test combinations possible.
- The cost of the product is directly proportional to the number of components in the product.
- Developing this type of project from 'simple program' requires three times the original effort.
- Programming System Product
- It is the combination of all of the above types thus making it the most useful.
- These types of projects are the actual requirement of the client.
- Developing this type of project from 'simple program' requires nine times the original effort.
Successful working of the program is possible if and only if the
product is properly developed. Adjusting to the requirements for perfection is
the most difficult part of learning to program. Other people set the one's
objectives, provide resources and then furnish the one's information. One can
rarely control its circumstances in his work or goals. According to the
management ones, authority is insufficient for his responsibilities. In actual
practice, authority is required from the very momentum of accomplishment.
- Dependency of one on others can be harmful to
programming as it can result in:
- Mal-designed and poorly implemented program.
- Incomplete delivery and poorly documented program.
- The increase in maintenance
cost.
With creativity comes
hours of programming work. One finds debugging a linear work and expects
somehow a quadratic approach to the end exists and can be adopted; thus leading
to the increase in software testing time.
LONGER THE DEVELOPMENT TIME = OBSOLETE PROGRAMS
Advancements are the
actual basis for the development of the program. If the design is done late
resulting in the program becoming obsolete then:
- Implementation of the product demands phasing and
quantizing.
- Absence of implementation must be measured against
other existing implementations and not against unrealized concepts.
Therefore the goal is to determine a real solution to the real
problem using the available resources and on an actual schedule.
Comments
Post a Comment