Wednesday, May 4, 2011

System Architecture Principle 8: Beware of software

Tagline: Beware of software.

Descriptive version: Software grows very complicated very quickly.  It can be of high leverage, but can be potentially dangerous because of how complicated it can become.  Further, software does not have a "laws of physics" like physical systems making it difficult to reason about using models and such (the code is the model!).

Prescriptive version: When deciding to allocate functions to software, be aware that you are substantially increasing the internal complexity and number of operating modes of your system.

Discussion: I am not sure if this is an architecture principle, yet.  I am certain it will be one with enough time.  Certainly of my principles it is the one that has the shortest lifespan. 

Software is this very new thing that can quickly grow substantially more complicated than the physical system in which it operates.  The number of operating modes of software is estimated as the number of inputs times the number of outputs to some power (Ayaswal2007).  Further, software seems to be having a tendency to creep from being something embedded in some component helping that component deliver its functions to an item that becomes a system bus interacting with just about every component in the system.  On top of all of this, the work of software is largely hidden in complicated code in bits on software developer's computers making it even harder to reason about.

Citation
B. K. Ayaswal and P. C. Patton. Design for Trustworthy Software. Prentice Hall, 2007.

No comments:

Post a Comment