Agee Software, Inc.

Microsoft Access Project Cost Estimate

Disclaimer: This is only a guide.

An excellent reference on software estimation is Applied Software Measurement: Assuring Productivity and Quality by Capers Jones. You can also find out more at

An estimate is only as good as the user's ability to completely communicate each requirements to the developer. Defining requirements takes time. They change over time. There are implied tasks underlying many features that take a great deal of time. If the programmer has never done a particular task, you must include research time and plan for contingencies if the first solution fails. In my experience, these times are highly unpredictable.

Estimates also depend on your knowledge of how long it takes the programmer to complete each feature. Each programmer is different. The programmer's speed generally increases with experience because a greater amount of code can be reused, research time is greatly reduced and the programmer usually finds more efficient ways to work.

Estimating software development is less predictable than other industries because most of the repetitive work can be eliminated leaving more new work and problem solving than in construction or automobile maintenance.

There are many other variables at work too: Security, Testing, Documentation, Flexibility, Maintainability, External Interfaces, Complexity and Coordination to name a few. The programming language has a great impact too. I find Microsoft Access is so efficient that it is off the charts in Dr. Jones' book.

With those caveats, here is my approach to Microsoft Access project development estimating:

Object Complex Average Simple
  Count * hr ea = Hrs Count * hr ea = Hrs Count * hr ea = Hrs
Form   8     2     .5  
Report   8     2     .5  
Query   .75     .50     .25  
Sum of three subtotals   + Other   = Total Hrs  

  1. Design the table structure and count a form to maintain each table.
  2. Assign complexity level to each form based on your experience developing similar forms. If a form with a similar number of controls, underlying VBA code and testing took one to four hours, assign it to Average. This seems circular at first, but quickly becomes easy to spot the complex and simple forms.
  3. Add specialized forms: Report, MainMenu, Users, Import, Setup...
  4. Count outputs and reports in the existing system and by interviewing users.
  5. Assign a complexity level to each report. Base on the amount of VBA code and number of business rules, and to a lesser degree, on grouping levels and number of controls.
  6. Consolidate reports where appropriate. Place sort order and input parameters on the Report form or in input boxes when you open the report. You may be able to reduce overall development time with a smaller number of more complex reports. Stop combining reports when it takes more time to add the complexity that it would to work with two separate reports.
  7. Count the number of select queries for the forms and reports. Each form and report has at least one query for the record source. Each combo box has a query. Reports are often based on intermediate queries or tables.
  8. Add action queries for batch updates, imports and exports. Use previous projects to refine your estimate. For example: If a previous project had twenty forms, twenty-five reports and thirty combo boxes and 150 queries, you could estimate the non-select queries by 150 - 20 - 25 - 30 = 75. If your current project is 20% larger, multiply 75 by 1.2.
  9. Assign each query a level of complexity. I often skip this step and assign them all to average or simple if I feel confident about the overall number of queries.
  10. Do the math to sum the three subtotals.
  11. Assign hours for tasks not considered so far. I use the description property of objects, tooltips, status bar tips and remarks as I develop, so they are included in the basic estimate. So is user level security and a moderate amount of testing. Estimates, table design, extra testing, on-site meetings, communication interfaces, user documentation and training take time. You may choose to add features like the ability for an administrator to add users or to force all users out of the database for maintenance here. This is also the place to itemize research and extremely complex forms and reports. You may also be able to reduce an estimate because you are able to reuse more code than you normally do.
  12. Calculate the Total, multiply it by your hourly rate and submit your proposal.

A simpler technique is to simply estimate by tables. Estimate about five hours per table on moderate size projects with one .5hr report per table. That is four simple queries at .25hr ea + .5hr per table, 1 hr per table to convert data and 2hr per form.

If you find this method useful or have suggestions to improve it, I would appreciate hearing from you. -- Al