How to estimate for software development projects

Image

How to estimate for software development projects

Build It BetterJuly 11, 2019

Introduction

For any software solution to be of a high quality, a number of important factors will first need to be taken into consideration to determine whether the project is viable. How much time will be required to develop it? Which browsers need to be supported? Will the software be able to cope with large amounts of data? Will additional research need to be completed before development begins?

This is where estimating comes in.

Estimating plays a pivotal role in allowing us to complete projects on time and on budget. At Enable, we realise how important it is for us to provide accurate estimates, both from an internal scheduling perspective and a cost perspective for our clients.


Before estimating starts

Before the development team at Enable will carry out a piece of work, a specification document will be produced in cooperation with the client, which details exactly what needs to be developed and how it should work.

Following the creation of the specification document, estimates are carried out by the development team to determine the time they believe will be required to implement the specification, alongside feedback on the specification for the analysis team to consider as part of the estimating process.

This estimation process is followed for all our specifications, no matter how small or large, giving us the confidence that our tried and tested methodology is always adhered to.

The estimating cycle for software development projects

What should be estimated for

On top of the time required to write the code or implement a required configuration, there are many aspects of a project to consider when estimating for a new specification. Let’s dive in and take a look.

Build

How much time is required for a developer to implement a specified unit of work?

Testing

Time is always required for a second developer to independently test the functionality of a completed unit of work, as well as time required to resolve any bugs raised as a result.

Automated testing

Is there up-to-date automated test coverage for the area in question, and can further tests be added? See our Testing and QA book to learn how we leverage automated tests to ensure continuing quality over the course of years of code enhancements.

Browser and operating system support

Which browsers and operating systems need to be supported? Is additional time required to account for this?

UX design

Will there be any user interface work? If so, time will be required to design the interface and ensure the best possible user experience.

Security testing

Security is always one of Enable’s most important concerns, and whilst Enable’s best practices produce highly secure applications as a standard, extra effort may still be desired to guarantee a solution is the safest it can be.

Accessibility testing

If a solution is WCAG compliant, or has other specified accessibility requirements, time will be required to make sure these standards are met.

Load testing

A client may have a requirement to load test their system in order to track performance over time or measure the outcome of a performance enhancement phase.

Project management time

Every project will come with management overhead — this is time for the team leader to assemble resources and split the specification into build tasks to assign to the project team.

User volumes

Is the number of users relevant to a system? The anticipated traffic through a system may change the best approach when implementing a new solution.

Data volumes

What quantities of data will the system have to deal with? Large amounts of data may slow the system down if it is not optimised to deal with this efficiently.

New solutions

A brand-new system will require dedicated solution preparation time to set up the required infrastructure.

Feasibility study

In some cases, a specification document may propose use of a particular technology or require a change the development team is at first unsure how to tackle. Time may be required to research the technology or investigate alternatives.


Things to do at the same time

Raise observations

Other than providing estimates for the time required to implement a piece of work, a large aspect of estimating is to raise observations about the specification for the analysis team to consider. These may range from something as simple as a spelling mistake to more in-depth concerns about technical limitations or behavioural clarifications.

Evaluate feasibility

An observation may indicate that a requirement is not feasible in its current form. This could be due to limitations of the technologies employed, making a requirement an impossibility. A requirement could also turn out to bring with it some non-trivial problems as a result of the system architecture or data volumes involved.

Request clarification

A requirement may be ambiguous or lack enough detail for the development team to implement correctly. If a developer encounters a requirement they believe has not been fully explored, they will raise an observation asking for the requirement to be further articulated.

Check accuracy

At each stage of the estimation process, the estimator uses a combination of their expertise and previous estimates in order to establish how long a unit of work will take to complete. After a project is completed, the reliability of the estimate is reviewed, which allows us to improve the accuracy of future estimates — for example, by identifying functionality that frequently takes longer to implement than expected.


Conclusion

Enable builds bespoke software with a strong focus on quality. Our aim is to be the software solutions provider of choice for companies needing strategic software products. We realise how important it is for us to provide high-quality and accurate estimates for all our clients, however large or small their business may be.

Read other articles from our blog

Latest

Why we had a third party carry out penetration testing on our DealTrack software

Today it seems we hear about a new major data breach every week; regular attacks on high-profile companies proving that when guards slip, malicious and opportunistic attackers make their advance. While traditional firewalls and other network security controls are an important layer of any informatio...