tomorrow. So, while as systems professionals, we need to drive that discipline into their
heads that they should —freeze“ their requirements, they will be unable to do it
completely, because the nature of human mind is fragmented, and not always sane /
rational / whole.
In the light of the above empirical facts, planning can be categorized into predictive vis-
à-vis adaptive planning. In predictive planning, to come up with predictable processes,
requirements, manpower usage etc, it is required to go through two steps. The first step
has action items and plans which are difficult to estimate, however they throw light on a
much larger second step which is predictable and estimable.
As opposed to this, adaptive planning contends that predictability in software
development is impossible to achieve since we live in the user environment of constant
change and have to adapt to changing customer requirements all the time. This is the
reason why methodologies like rapid prototyping, extreme programming, agile processes,
and iterative as opposed to waterfall methodology of software development have become
commonplace in the last two decades.
No matter which camp you fall into, this chapter will help you estimate your software
development costs better, which will help you more accurately recruit your top software
managers for your projects on one hand and will help you bid more successfully for
projects (if you are an IT consulting house, for example), on the other.
5.2 Detailed Identification of Tasks
The first step in estimating a software project from concept to rollout and beyond
frequently starts with a business / marketing justification, and has a number of tasks
down the line, which require time and effort. Unless time is allocated for each of these
tasks, the manpower estimation will fall short of the mark.
Proper identification all tasks in the minutest detail and manpower allocation for each of
these tasks is a frequent cause of missed deadlines, less profit and/or loss from an
otherwise successfully completed project, etc.
To help with the estimation, a detailed list of tasks as would apply to a typical software
project, whether implemented in-house in an IT department, or whether being
contemplated by a brand new software start-up, have been provided below.
•
Feasibility study
•
Project planning / costing / estimation (you have to allocate time and money for
estimating the time and money needed for the rest of the tasks in this list!)
•
Methodology finalization, e.g. XP (extreme programming) / iterative development
vis-à-vis waterfall methodology