Software Core Values

What core values do you use when you design software?  For VxWorks, we defined the core values to be small footprint, scalable and modular functionality, high performance, low latency and determinism, and reliability.  Enumerating the core values for software is pretty useful – it allows you to evaluate designs or technology at a high level to see if there is…

Manageable Devices

The more we rely on intelligent devices in our lives, the more they need to be easily managed.  It just doesn't scale for us to look at the LCD panel of dozens of devices in our homes just to see if they are all still working properly.  Who has time to do that once a week let alone once a…

Software Componentization

Componentization is a seductive software development practice.  Simply put, software componentization is when you break your software system down into smaller easily identifiable pieces that have well-defined interfaces – and you do this in a specific way (i.e. by following a component model). The promise of software componentization is five-fold: Complexity Management: having a manageable unit of software functionality enables…

Fault Propagation Paths

I like to use the term fault propagation a lot.  It has so many uses.  When we talk about multiprocessor systems, we think about fault propagation across a bus or other interconnect at the electrical level, the protocol level and even at the service level.  It is bad enough if a fault in a piece of code manages to take…