| Do you have an Exit Strategy? |
|
|
|
Some time ago, eWeek published in interesting article by Scott McNealy named "Technology's Barriers to Exit" (http://www.eweek.com/article2/0,1895,1907211,00.asp). In this article, Scott makes an interesting point about considering the cost of technology. There are three costs to consider:
Most of the time we carefully consider our requirements, think about ongoing manufacturing costs, etc. There may be some thought given to upgrading (the exit), but we encounter several difficulties when planning for the future with complex embedded systems:
As an example, we may have a product with an ethernet networking interface, and two years after product launch we have an opportunity that requires a wireless network interface. How much is it going to cost to add wireless support to our product? If the product is based on technologies that do not fundamentally support wireless networking, we are looking at very costly exit strategy. Another example is application-specific, off-the-shelf solutions. While these are great for many problems and provide a quick way to get something working, what happens when we want to upgrade? Do we have to re-implement the entire system? How does one hedge against the unknowns in the future? One way is to try to anticipate every possible requirement and design it in. I think this is bad strategy because you usually end up spending a lot of time working on things you don't really need and the quality of the product suffers. A better approach is make sure your product does what it needs to do well and is based on a flexible platform where significant parts of your design and software can be re-used in future versions. This approach has many parallels to recent trends in software development and manufacturing such as Agile Software Development, and Lean Manufacturing. Follow Scott's advice and make technology selection decisions with the following questions in mind:
But wait, as long as I write my application in C, it is portable -- right? Most embedded systems support development in C so I will just port my application to a new platform when needed. C is a great language and the language is more or less portable between systems. But as systems get more and more complex, embedded engineers find themselves spending less time writing original code and spending more time putting together pieces that already exist. A modern embedded application is often little more than some glue between various libraries and system functions. The fact that you can develop in C for a particular system does not really mean a lot. What about the threading model, driver model, library APIs, etc. I just spent a significant amount of time recently porting a large C application from a proprietary platform to new hardware platform as the original system was going obsolete. It was a huge amount of work. The driver model was completely different, APIs were different. Changing platforms can be very expensive. It rarely pays to be short sighted when choosing technologies for complex embedded systems. The best strategy is to stay flexible and choose a platform with a future.
| |||||||
|
|||||||
| Last Updated ( Monday, 28 August 2006 ) | |||||||
| < Prev |
|---|




