Monday, September 1, 2014

Systems Thinking in Software Engineering

So many things to do, so little time. This is the essence of an engineering problem. To achieve meaningful results, we need to program our activities to control the expenditure of time and resources according to plan. In most engineering disciplines, this is easily done, but not so in software engineering. This month I will try again for like the 100th time to solve a challenging software engineering problem—producing a hundred different products for a hundred different customers. This is my version of the "swing problem" shown below.


So far, I have failed, but this time around I'll be applying systems thinking principles in coming up with solutions. Although this seems to be out of the box, I think it is the correct approach to deal with the capacity and scalability issues that face me. In any case, I have done already done some small-scale "experiments" to test my ideas and I'm glad that they produced promising results. The only stumbling block I face now is the difficulty of using systems thinking notations for software engineering purposes.