Our Approach to Product Development
Turning ideas into products is harder than it sounds. It involves a number of steps, all of which must be performed correctly to obtain the desired result. This section describes our approach to product development and how we have been able to deliver high quality results.
Early on, the idea must be refined to determine which features are essential and which get in the way. Detailed feasibility work must be performed to determine how the product will be implemented, what it will cost, and how long it will take.
One of the main outputs of feasibility is the overall system architecture. This points clearly to the various components of the system, and once these are identified, specification work can begin. If large parts of the project are new and unknown, feasibility can become a daunting task. For this reason it is best performed by engineers who have a broad knowledge of system design and the ARM architecture. At Bluewater Systems, a complete feasibility study on a new idea typically takes from two to four weeks, depending on the scope. Where the product has substantial overlap with our existing in-house technology, the time is obviously diminished.
From feasibility we can normally provide a fixed-price bid for the project, with few exclusions, and a high-level timeframe for the development.
In some cases, the customer may have already developed existing specifications which we can work from. Otherwise we produce our own, in consultation with the customer. Concrete and detailed specifications must be completed before development commences in most cases. A good set of specifications helps to reduce both cost and risk. It also generally shortens the project timeframe by allowing several engineers to work on the project in a co-ordinated manner.
Development can proceed on many tracks in parallel. For example, a hardware team may work on schematics, a mechanical design team may work on the physical aspects and a software team may work on applications software, all in parallel.
If short timescales are required, then more work must be done in parallel. This may require significant project management expertise to ensure that all teams are co-ordinated and that the critical path is tracked and managed. Otherwise you may find that one team has nothing to do for 6 weeks while another team delivers critical components. Late delivery of some components is inevitable and must be managed to ensure that the overall project does not suffer as a result. For hardware prototyping, some electronic components are inevitably on long lead times and must be ordered well in advance or obtained ex-stock from where ever they are available worldwide.
For software to start before hardware is ready requires a few basic elements. Hardware simulators may be needed, to simulate the hardware and allow development of software which will not need to change markedly when the hardware is ready. These simulators are generally just bits of software, and may be very simple, but they can save enormous amounts of time in a project. Development may be performed on a fast desktop PC instead of a slow inaccessible embedded system. Simulators also have benefits in testing since individual components can be tested, or joined together, for integration testing without needing many units of the real hardware.
Development tools and equipment usage must be scheduled so that each team has access to the right tools at the right time. Good technical management is also critical to development success. Often there are two ways to do a task: a good way and a bad way. The bad way might seem good initially, but cost many weeks of time later when integration starts. There is no substitute for experience.
Integration involves bringing together all the pieces of the development into a working and cohesive prototype. The complexity of this depends on the number of threads which must be sewn together.
For hardware it will generally take two to three PCB spins to produce the final version. However, the initial prototype is generally close enough to allow bring-up to commence and low level software to be written and tested.
Effective software testing is as much art as science, but there are certain steps which can help to produce a reliable product. Automated unit testing of individual components is very important - it costs time during development, sometimes doubling the development time of a module. But it often saves enormous amounts of time at the integration stage.
Connecting units together using simple test programs or protocols can allow automated integration testing to be performed as development proceeds. Hardware simulators allow hardware and software to be tested independently. Splitting control and user interface code into separate parts allows the control to be tested automatically even if the user inteface cannot be.
On the hardware side, test software can be written to exercise the hardware and locate any faults. A test rig enables testing of interfaces such as serial ports, ethernet and LCD.
Once the prototype is complete, system-level testing can begin in earnest. If everything has been engineered correctly this should be relatively straight-forward, relying largely on manual testing based around previously-agreed acceptance tests and other relevant documentation.
Bluewater Systems uses a number of manufacturing companies for prototyping and production work. Depending on the volume and technology requirements, we can assist with locating the right manufacturing for your product.
Production must be planned from an early stage. A Design For Manufacture (DFM) report is generally obtained during prototyping and this allows us to rework the hardware where required to make manufacturing easier.
Manufacturing obviously requires a number of test rigs into which completed units can be placed for testing. Developing these is relatively straight-forward, but the test rig software often presents challenges. For anything but low-volume production, testing time must be minimised without impacting the test coverage. Failures must be carefully analysed since they may indicate a problem which requires a board respin. All of this requires careful management and dedication, as well as a competent manufacturing partner.
In general, handover is where the customer takes over the development after the project completes. For a successful handover, good comprehensive documentation of a consistent quality is essential.
In some cases you may have a number of development staff who are able to 'take over' the development of at least parts of the product once we have completed the project. Alternatively you may wish to 'respin' the product later to reduce cost or add features. Product maintenance and support, as well as manufacturing management, will benefit from having the product well documented at a technical level.
As part of the handover we can supply:
- Circuit schematics and layout
- Circuit description
- Bill of materials including cost, manufacturer, supplier, possible substitutes
- Full source code documentation (generated from the source code so that it is easier to keep in sync).
- Complete build environment for the product source code
- List of tools required to build and modify the product designs
There are many stages to product development, each with its own challenges and issues. But with effective management, a good technical team, the right tools and good project processes, a successful product will eventuate.