The Software Development Lifecycle is really a set of dependent events. Someone has to come up with an idea for a feature, Product Management has to write the requirement or User Story, Development has to analyze and code it, QA has to test it, etc. Each event or process depends on the previous one completing, in essence making each of them covariant on the next. If I want to explain how we can use Throughput Accounting and the Theory of Constraints to manage our software projects, we need to understand Dependent Events with Variance. Dr. Eliyahu M. Goldratt describes the "match game" in his book titled The Goal which illustrates this very well. The game is played as follows:
- 6 buckets are laid out on a table.
- A person mans each bucket in which matches are placed. The matches and buckets are to represent some type of production process. Think SDLC in this case.
- Each person is given matches from the person to his right and places them in his bucket.
- The flow of matches is controlled by the roll of a die.
- The right-most person rolls the die and gives that amount of matches to the person on his left who in turn places them in his bucket.
- The die is handed left and rolled. That person takes the amount of matches less than or equal to the roll and hands them left. The amount is constrained by the amount of matches in the bucket.
- Goto #5.
We can measure three things in this game very easily.
- The amount of matches consumed by the right-most person. (Raw materials)
- The amount of matches in the system. (Inventory)
- The amount of matches passed out of the system by the left-most person. (Throughput)
To illustrate this, I wrote a simple SilverLight application that demonstrates the game. Pay close attention to what happens to Inventory.
I will talk about Constraints, optimizations, etc. in future articles.
ead89e76-aa2b-45ec-81ad-e05fccd413ca|0|.0