The End – and Happily Ever After

Our series of articles on the different stages a software development project will go through from start to finish is now nearing completion.  In the previous post we discussed the subject of verification and validation, placing these two procedures within the more general context of quality control.

Verification and validation involves conducting a series of different tests, including system tests and an acceptance tests. Once the system has passed these we’re ready for the final stage – delivering the finished job to the client.

Installation and commissioning

If the system is relatively small, a desktop application for instance, we will install it ourselves and make sure everything is working correctly.

However, in many cases our system will be a part of a much bigger job – we are just sub-contracted to develop one element of a project that is far more substantial. In that situation the main contractor will have responsibility for installation and we will just help with the commissioning of our particular sub-system.

For example, we’ve worked with Siemens on rail projects in Germany and Singapore and this has involved the key person from our team, the one who has been most involved, spending a few days, to a week or more, on site to check everything works as it should.

Warranty period

Once a system is up and running it will generally be covered by a warranty. The period of the warranty can vary from 3 months to a year, depending on what has been agreed. During that time we will obviously fix any issues that arise.

Support contracts

In the case of a big project, where we are just the subcontractor, it may be that we’ll not be asked provide on-going support – the main contractor and their client will arrange the support package between themselves. It may be that we will be asked at a later date to provide enhancements but this is often done as a separate development contract.

However, we are regularly asked to provide support contracts for smaller systems that maybe we did not initially develop. Each one will be very different, and tailored to the client’s specific needs. Having said that, the arrangement will generally be to have a skilled person, or team, available for a certain amount of hours or days. They will be familiar with the system and can respond as and when required.

Examples of support contracts:

Project 1

Our client has a software product that works in a retail environment and which manages the transaction between a credit card reader and a till. It has been developed and refined over a period of time by a number of different people. We had nothing to do with it until they asked us if we could support and maintain it.

Rather than calling in a different person every time there was an issue they wanted one organization to take ownership of it, familiarize themselves with the software, and to provide consistent long term support they could rely on.

We set up a framework contract which included the provision of support at an agreed day rate. It’s on a sliding scale – the more work they give us the lower the rate. The framework contract also sets out the Service Level Agreements. If the work is high priority we give it greater urgency, but other issues may be less critical and so we can take a little longer to address them.

Under the framework arrangement we are also able to enhance the software and add new features, in accordance with the client’s product development roadmap, on a call-off basis.

Project 2

Our client had been providing health & safety audits of work being carried out on mobile telephone masts by contractors. They had a software system to manage the whole process. This again had been developed and upgraded in a piecemeal manner over many years by several different people. The result was an inefficient system that was slow and cumbersome to use.

Zircon were brought in to firstly carry out a number of bug fixes and updates to improve the system performance and then to provide ongoing support on a monthly retainer basis. Over time we significantly improved system performance and reliability to the extent that the client was able to scale back the support requirements to just a single day a month.

Flexibility is built in

As you can see from just the two above examples no two systems or projects are the same and often it’s hard to define what comes under the heading of support and what falls outside of that arrangement. This is not a problem – we can accommodate any situation.

With both projects we initially had to familiarize ourselves with the system, set up a development and test environment in our office and put the version control system in place before we were ready to provide the support.

The end is not the end

The point is that our involvement does not end with the testing, verification and validation. We’ll undertake whatever installation or commissioning work is required, then provide support and upgrades as required, either to our own systems or those developed by third parties. What’s more, our approach is flexible – we’ll tailor everything to meet the unique needs of our client.

So there you have it, our complete cradle-to-grave software development process laid out for all to see.

Hopefully you will find it helpful and reassuring – we employ skilled and capable people who follow industry best practice to create high quality solutions for a wide variety of clients, industries and situations.