Cost Estimation: Defining the Scope of a Project
I am frequently asked how much a Visual Basic project will cost, after being given no more than a hazy idea of what is required.
The answer is that a database system could cost $500, $5000 or $50,000 to create – depending upon the complexities involved. What may seem a "simple" system to the Client, can often turn out to require many Database Tables, many Visual Basic Forms – and considerable analysis and coding.
Which all take time to Analyse and Code
To give a meaningful estimate of the cost of a project and the time to completion, it is necessary for the system requirements and functional specifications to be fully defined. This will also ensure that client expectations are met.
As well as for large projects, this is also true of "simple" Visual Basic projects.
The imprecise nature of Cost Estimates
The more precise the specifications are, the more precise any estimate of costs will be. Even with exact specifications, it is always necessary to add a contingency margin. Estimates are notoriously over optimistic – project cost estimation is not an exact science. Unanticipated problems, incorrect analysis, hazy logic and changes of mind will all cause cost overruns.
Defining the Project Scope: Required functionality
The Project's scope defines the broad parameters of a project. It specifies the required features and functionality that needs to be delivered. The scope provides a blueprint for all the stages of the development process.
The more aspects of the project scope that are identified, the more accurate cost estimations and the system design process will be. Defining the scope is the most important part of the initial planning process. A well-defined project will set the boundaries of the work to be done.
If the boundaries of a project are properly defined, then expectations will be met. The result will be a successful project and a happy client. The scoping may also result in a project getting abandoned or scaled down – when the objectives are found to be too costly to achieve.
The scope must be defined, documented and agreed before any coding is started. And of course, the specifications have to be set in concrete – any changes will incur additional costs.
Requirements Specification - Documenting the Project Scope
A short description of what is required should be specified:
- Define the objectives of the system and what deliverables are required.
- What benefits are to be derived?
- Describe the background and origin of the existing system.
- Detail the major functions that the system must perform.
- Specify the number of concurrent users to be supported.
- List all documents which define the Software Requirements.
- Will the users all be at the same location, or are they dispersed?
- What transaction and data volumes are involved?
- Does data need to be imported?
Documenting the Operating Environment
Describe the environment in which the software will operate – the hardware platform, operating system, etc.
Detail the relationship between the system and external relationships – databases, libraries, tools, etc.
Documenting the System Functionality
Describe each function in detail, and its priority. Here are some suggestions:
- Detail the Forms required.
- Detail the Reports required.
- Describe the data to be entered.
- Describe the data and the fields to be stored.
- Are data exports required (i.e. to Excel, Word or Email)?
- Are graphics and charting required?
- Are historical records required?
- Are AD Hoc queries required?
- Is general documentation required by the users, or context-specific documentation?
The answers to these points will help create a picture of the system envisaged.
Documenting the Security Requirements
Detail the requirements regarding security, integrity, or privacy issues that affect the use of the product and the data handled by the system. Define which users are to be limited to specific functions.
- Creating records of all users of the system
- Creating a maintenance Form for the users
- Defining the users' authority
- Creating a login form
Allow for User Acceptance and Testing
Time has to be allowed for the testing of each stage of the development of the system.