Sunday, July 28, 2013

Understanding the complexity in systems using simplified mechanisms

As the systems we design and build are getting more function rich, the underlying logic is getting bigger and bigger, and as a result, the complexity in these systems is also increasing. The traditional view of adding features to products has meant that we are now left with systems, whose complexity is understood by very few and sometimes nobody at all.

This is causing trouble not only in testing these large systems, but more often than that even the architects and developers are at a loss to understand which all pieces of the system are interacting with one another.

In open source systems, this complexity is somehow managed by adding more eyeballs to the code base as well as constant re-factoring by self-motivated and many time unpaid developers. However, in commercially developed software the complexity can kill or really shorten the product life.

Luckily, there are techniques that can help everyone understand the underlying complexity so that it can be understood and tackled by everyone. One of these techniques is called DSM where all components of a system are put in a NXN matrix and then the interactions between these components is mapped in the resulting matrix/grid. Optimization techniques involve pulling the interacting elements closer to one another spatially on the grid, so that these can then be understood as one system rather than random components interacting with one another.

Lets hope these techniques become more accessible in the days to come so that we don't end up being in the new Dark Ages of automation, where no body really understands why and how our software and hardware components interact with one another.


No comments: