OEM Software: the problems of success
MCCI develops and licenses software for integration into other companies' embedded software products, primarily for supporting USB and Wireless USB, especially for cell phones. Our customers build products in very high volume (hundreds of millions of units per year), and their software is constantly being upgraded by large teams; so they need repeatability and traceability. Our software has to be integrated (in source form) into their build environments and development paradigms typically as part of a much larger software package, so we face the problem of delivering tools and software in a controlled way for use in development systems we don't control and which change at unpredictable and uncoordinated rates. This is an interesting problem space, and the "received wisdom" doesn't always apply. I discuss the problems faced, and the methods we use to mitigate them: coding style, build systems, automation.