When determining the success of a software development project, one would normally assess whether the application was delivered on time, whether it was on budget and whether the software actually does what the client wants it to do. Richard Jenner, Communications Manager, MSM Software, says there's more to it than this though.

The key to achieving these goals is having a good, structured process in place - successful project delivery will ultimately depend on having procedures in place about what to do at each stage of the development process and what to do in the event of unforeseen circumstances.

This is not only an effective method of risk management, but also provides a way of controlling project scope and managing change - one of the key factors of project success or failure.

In many application development processes however, there exists a ‘black box’ part somewhere in the middle known as development. During this stage, although the process maintains a certain influence and management of the surrounding inputs and outputs remains, what goes on inside the development black box is generally left to the development team.

In this article I seek to examine some of the techniques and practices companies employ inside the black box to ensure a project is delivered on time, on budget and to specification.

What makes a system a quality system?

We have established the importance of having a tried and tested process in place which enables us to capture exactly what the customer requires, but what controls are in place to ensure that the system is being written to a high standard? How can management and client know that they have a quality system ‘under the hood’?

The first and most obvious measure of a quality system is a low failure rate. As much as we would like for there to be no failures, in the real world it does occasionally happen that a system does not quite perform as well as hoped or that there are small bugs in the system.

The second measure is ease of maintenance. Requirements change in a fast moving world and new requirements for a system need to be able to be implemented as quickly and cheaply as possible – if a system is badly written it is difficult to alter, and alterations may lead to malfunctions in other parts of the system.

Ensuring low failure rates

Traditional application development processes have a quality control stage where the software is tested for defects and compliance to specification. Best practice dictates that these tests be performed by experienced software testers who are not involved in the application development process - someone not involved in the development is more likely to spot errors.

This part of the process is ‘outside the box’ when the system has been completed or modified but what can we do to limit the amount of failures or in effect, build quality in?

To reduce the probability of failure using an established design pattern and knowledge sharing can go a long way. However, each project has its own set of obstacles and challenges, so in order to ensure compliance it is necessary to test every part or ‘unit’ of the code be tested to make sure every bit of the software performs correctly under different scenarios - hence the term ‘unit testing’.

In the past unit testing and ‘debugging’ would be performed by developers but the current trend is more toward a test-driven development’ (TDD). This method of testing involves the unit test being written in code form in order that the tests can be run repeatedly and automatically.

The advantage of doing it this way is that the tests can be run automatically at certain stages of the application development, if the unit tests fail at any point then changes can be made quickly - extensive manual testing can be expensive and time consuming especially in a large project. In addition, TDD encourages good practice. Developers are testing the system as they go, reducing the possibility of failure ‘outside the box’.

Ease of maintenance

Ease of maintenance is achieved by following pre-defined standards and guidelines in coding style and software design. For example new developers working on a project for the first time would be able to easily understand the purpose of the code and how it works.

Knowledge sharing can also be very important - common solutions to common problems can save a lot of time and money.

Ease of maintenance can also be enhanced by technology. Use of established technologies like Microsoft’s .NET framework means that companies can take full advantage of the management and development tools available. Since developers are already familiar with such tools, there are no learning curve issues and developers can get their teeth into a project immediately.

Looking for quality

Taking all this into account then, we can see that if you are looking for a good software development company to build a quality application for your business it is best to make sure they have a decent development process in place.

Applying best practices in project management and software development play a pivotal role in a company developing high quality systems rapidly that will provide a faster return on investment for its clients.