Golden Braid IT
Project Development
Home Projects Database Programming Consultancy Support

The Project Development Life Cycle.

Regardless of the project size, it must go through a number of essential stage. Analysis, where information about the problem is gathered; Design, where solutions to the problem are explored; Coding, where the chosen design is implemented; Installation, where the solution is delivered to the customer; Maintenance, where the solution is adapted to suit changing needs; and last but not least, Testing, which is not a stage in itself, but rather is an ongoing process, carried out at all stages, to ensure that the final solution will work.

Analysis

Analysis is not in fact the first step, for it is implicitly preceded by a problem statement which initiates the project development cycle. The problem statement acts as a starting point for Analysis which involves gathering all relevant information necessary to define the problem domain. In order to produce a good solution, it is vitally important that the development team understand all the problems they are required to solve.

A frequently occurring difficulty is that customers often assume that certain features will be included, without explicitly asking for them. This is why our standard contract states that any feature not explicitly included in the problem domain during the analysis phase will only be added later at an extra cost, which could be significant if it involves extensive modification.

Most software projects will be based upon some existing manual or computerised systems, and will be expected to extend and expand these to overcome present and anticipated limitations. The first step is therefore to gather the information which will fully define these existing systems. This will be followed by understanding the problems being experienced. Finally, sub-systems not specifically identified as problem areas will be critically examined with a view to identifying difficulties which might arise in future.

Design

There is a high degree of overlap between Analysis and the early stages of Design. As various top level solution options are examined, it may be necessary to widen the scope of the problem domain and gather extra information. At this stage almost all projects will admit several solutions, the most significant difference between them being development time, and hence cost.

If we consider that more than one design is worth considering, our initial design proposal will include an outline of each option, indicating its specific advantages and an estimate of development time and cost. We may indicate our preferred option based upon our knowledge of the business, but the final choice will lay with the customer.

Having adopted a top level design, the next stage would be to agree upon specific user interfaces and input/output formats. It would also be a good time to determine the most appropriate technologies and development tools to be used.

Coding

Whilst in theory the design should be independent of the implementation, in practice we find that certain processes are more easily carried out in a specific development environment. This is one reason why we are excited about the new Dot Net development environment from Microsoft. Using this tool it is possible to develop individual modules in the most suitable language from a range which includes Visual Basic, C and Java, and yet integrate them easily into the final application. It is even possible to use Assembly Language if this would be advantageous.

Having finalised the design, the coding starts. We usually carry out the coding in two main parallel threads; the data manipulation engine and the user interface. The user interface is the part of the application which is most visible to the customer, and by starting this early it allows several iterations to fine tune small details which can be very important to the users. It also gives an environment in which to demonstrate project features as they are developed, and gives the customer a tangible feel for how the project is progressing. In parallel with this, the various modules of the data manipulation engine will be written and tested in isolation, before being integrated into the demonstration build.

We have experience writing code in Visual Basic, Delphi (Object Pascal), C/C++ and Java, and we are now gaining experience with the Dot Net range of languages.

Visual Basic has its drawbacks, but it is probably the most universally known language. It has derivations in Visual Basic for Applications (VBA), which can be used to develop user specific applications in the Microsoft Office suite, and in VBScript, which can be used to develop web based applications.

Delphi, which is based upon Object Oriented Pascal, is probably one of the best Integrated Development Environments (IDE) available today. The introduction of the almost identical Kylix language for the Linux operating system makes it a very attractive option for cross platform project development.

C/C++ is the language of choice for development of operating systems and extensions, hardware drivers, and complex applications that need the low level control afforded by it.

Java makes the claim of being platform independent, and whilst this is true to a certain extent, in practice it is very easy to run into platform specific issues. Though it is quite widely used, the hardware Java machine which was promised in the early days has never materialised. A script version of Java, JavaScript, rivals VBScript for development of web based applications.

As mentioned earlier, the new Dot Net environment brings together VB, C/C++, a derivation of C known as C# and Java in a common framework, and is establishing a new standard in development flexibility.

Testing

Thorough testing at each stage is a key factor in producing reliable software on schedule and within budget. Errors are much easier and cheaper to correct in the early stages. To this end we rigorously test each function in isolation before integrating it into its module, and then test each module before integrating it into the demonstration build.

We find that ongoing testing of the demonstration build by the customers staff provides us with valuable feedback, and we actively encourage this. Testing by staff in this way gives them a feeling of involvement, and the familiarity they gain reduces or eliminates the training requirement after installation. Final acceptance testing of the release candidate can be carried out by the customers own staff, of by independent contractors, as appropriate.

Installation

As far as possible, release versions of our software will be provided in a user installable format. However, we will carry out the initial installations if the customer would prefer us to do so. In some cases it can be an advantage for us to be on-site during installation, as we can then resolve any difficulties which might be encountered.

Maintenance

As a business grows and evolves, it may prove necessary to upscale, modify or extend the software. With complex software, it is possible that it may be used in ways not originally foreseen, and this could give rise to subtle errors. We will take a continued interest in our product for the extent of its anticipated lifetime, and will be on hand to give support as and when necessary.

Training

If required, we can attend your site after installation to train key members of staff in the use of our software. Following this initial training, we can provide telephone and on-site support as required to resolve any difficulties that might arise.

Contact

Please feel free to give us a call for an informal chat about your needs. We do not claim to have all the answers, but even if we cannot directly satisfy your requirements, we should be able to put you on the right track.