Applying Rapid Prototyping Techniques to Software Development
By Dave Blakeman and Jon Twigge
Thursday, October 11, 2007
Over the last 20 years the directors of RPS have been involved with technologies to improve the quality and speed of the software development process. Much of our work is based around research in persistent object stores, CASE tools and software specification methods.
The Rapid Prototyping Philosophy
In maufacturing industry, the techniques of rapid prototyping are well established and have been used to dramatically reduce the time to market and development cost of manufactured goods. Precise specifications of the required products in the form of CAD drawings are used to produce short runs of prototype components. Examples include stereo lithography (where lasers are used to set resins in into solid components) and 3D printing.
The cost of the process is usually significantly higher as the equipment and materials used frequently more costly than would be used for a production run, but the extra cost is considered worth the savings in time compared with having to manually manufacture prototypes. In the event of problems being found with a prototype the process can be rapidly repeated, allowing a more refined end product to produced quickly.
Applying the Rapid Prototyping Philosophy to Software
Given the existence of a precise specification, it is relatively simple to develop a piece of software that can write other software (and such software has been used for specialised purposes since the early 1970s (and probably before that). However, this becomes somewhat more complex when the applications need to be used by tens or hundreds of users concurrently, contain hundreds of screens and hundreds of database tables. In the mid 1990's the authors were involved with a project which achieved 100% software generation. However, this was at the expense of the useability of the software.
RPS was established in 1996 to address this problem. We have spent a number of years developing a variety of different applications for different industries, all the time looking for common patterns. Each time we encounter what we consider a useful pattern, we develop a set of components and rules for automating it. This has culminated in the development of our "Rapide" software generation suite.
Other Tools?
We have found that although this process is relatively high tech, the best tools are often pencil, large sheets of paper and post-it notes - these allow far more flexibility than any software (try sticking a laptop to your whiteboard). We are not dogmatic - we use anything which we feel will help, but we have found that many of the ideas of Michael Jackson have been extremely useful in formulating our toolset.
What Changes?
This way of working changes the way that things are done. For example, when an application has been developed in a particualr language or for a particular database, changing such a fundamental element is considered as a massive investment. For us, it is doable.
Documentation is generally considered by developers to be an annoying distraction. However, if the specification is documented, we can automate the generation of significant portions of help files, technical manuals etc. Better yet, because the specification is a live document, documentation is automatically up-to-date.
Prototypes can be developed within minutes - we have found it useful to generate screens as web pages before any software is delivered. Examples include Rapidity and Rapidity Solo.
Conclusion
The tools we have developed allow us to deliver a step-change in the quality and flexibility of the software we deliver - please call us on 0161 426 1120 for further details