Every development manager could save time and money if they would...
Updated: August 28, 2007
On This Page
Don Burn: ...involve Windows driver developers early in product development.
It is alarming the number of times that developers are presented with the need for a driver after the hardware is working. It is very rare that a Windows driver expert reviews a project before senior management does.
Unfortunately, many of these projects have flaws that a simple review would have identified. Many hardware devices have features that are unusable for a production driver, and in some cases, the device itself is unusable without redesign. Many pure software projects also fail to understand the Windows environment and are doomed to either fail or cause the Windows system on which they run to be less stable.
So how should a driver expert be involved? The expert can:
Review the product in the concept phase. The expert can ensure that the product works and fits with Windows. Many simple changes at this point can produce huge savings in the life of the product or make the product much more successful since it works seamlessly with Windows.
Help write the hardware specification. Many hardware specifications are useless for the programmers and support people for the device. A driver developer working with the hardware engineer can specify how to program the device for common operations. This effort can find flaws in the hardware and help eliminate hardware features that are unusable in production code. Additionally, it can reduce development costs by having only one "How does this device work?" effort for all the programmers.
Write the driver specification early. Writing the driver specification early can save time and money. All too often trivial details of the driver or installation produce the biggest arguments. Having the specification early allows changes without affecting driver development. Providing the specification early also means that QA and support can prepare for the driver.
Start the driver before the device is ready. In some cases, it is possible to code and test pieces of the driver before having a working device. As a device begins to work, the driver expert can start testing parts of the driver even though some problems exist.
What if this is a new project and you do not have a Windows driver developer? Consider hiring a consultant to help write the specifications. Additionally, the consultant can help interview and recruit the development resources for the project. A consultant might appear to be an added expense, but in most cases, having the expert early will save time and money over the course of the project.
Finally, if you are considering outsourcing the project, then it is desirable that full specifications be available for bids on the project. Without the specifications, you cannot know what you are getting. With the specifications, asking for a fixed price bid is reasonable and can protect you from cost overruns.
Stephan Wolf: ...urge developers to improve their style.
Although the C compiler does not tolerate any quirks in the syntax of source code, software developers are free to use any coding style. But all those countless coding styles out there make it very hard for developer A to read the source code of developer B and vice versa. I therefore strongly recommend all developers in the same development project or even in the same company follow just one coding style convention.
Following this rule will add a considerable increase to readability of source code. And that in turn will allow developers to easier and faster understand foreign source code and to better recognize programming faults during a code review.
Here are some useful links I found about C coding conventions, but the list is by no means complete:
Note that from my experience, any developer discussion on coding style will most likely end up in a quarrel charged with emotions. But after two or three weeks of daily use of the style guide, the dust will settle.
One important aspect of source code is documentation. An interesting way to embed the documentation in the source code is by using the free Doxygen documentation system , which can generate documentation in various output formats such as HTML, Word, and others.
Tim Roberts: ...get the hardware and software guys talking in the same room very early in their projects.
In many of the projects in which I've been involved, the hardware designers made design decisions that seemed quite sensible to them, but ended up clashing with the philosophy of modern operating systems or making driver debugging more difficult. They should remember that hardware design has been streamlined so much, and driver design complicated so much, that the driver development costs of a piece of hardware can easily exceed the hardware development costs. Get the driver guy in there from the start and avoid headaches later.