We bring long experience of software engineering to assist in developing your systems. This was acquired through academic and industrial development projects in such diverse fields as computer networks, real-time systems, data acquisition and signal processing and medical device technology.
The pages in this section outline both historic and modern practice in order to show why current techniques offer significant improvements in design technologies. Current best practice design techniques, based around model-driven development, offer development at costs significantly below those employing traditional hand-coding methods. They also offer much greater reliability, and crucially, the ability to minimise development risk. The tools that we use are designed to be able to develop real time and embedded applications.
We look at how an iterative development process may be applied to software development. This provides investors and project managers with clear short-term goals that can be managed and routinely reviewed. Uncertainties, which are more or less inevitable early in a product's design cycle may be resolved in a controlled manner to avoid wasteful development.
We review the tools that we use, especially for software development. It should be noted that aspects of these, and in particular the Requirements Management functions, are very much applicable to the development of any product. The tools provide a strong framework, when used in conjunction with our templates for specifications. They help to highlight which issues in a product's development demand the greatest attention and where problems may lie. If the requirements for a product are not developed along these lines, the risk of project failure is heightened.
Our discussion of tools also looks at the use of modelling tools, which help drive development forward around a clearly planned framework. The models facilitate experimentation with both requirements at a very early stage in development and testing of the product's effectiveness prior to completion of the development.
We provide some background information on programming technologies, which is derived from experience of system development using automated techniques that stretches back over many years. There are examples of the use of lightweight self-checking FSA techniques as well as the reuse of code and design to improve reliability and minimise development time.