SENG3011
🐶
1.6
- Theory of Constraints
In this lecture
What is the theory of constraints?
How does it apply to Software Engineering?
The five focusing steps - a process of ongoing improvement
POV: You're the head of process engineering at a manufacturing company
Each letter represents a sub-process (e.g. sales, design, operations, customer invoicing, payment collection / coding, PR review, CI running)
The report below details the efficiency of each subprocess
Where will you focus most of your attention?
Where will you avoid putting any of your attention?
POV: You're the head of process engineering at a manufacturing company
Then you receive a report containing the maximum capacity of each subprocess
Identifying the constraint
Most people think Process B, but Process D is the constraint
What happens if you optimise Process B?
What is the maximum possible output of the system?
The Core Idea
Every system has a limiting factor or constraint
Focusing improvement efforts to better utilise this constraint is the fastest and most effective way to improve profitability/performance
A chain is only as strong as its weakest link
The Core Idea
Strengthening other links can never increase the overall strength of the chain
Strengthening the non-weakest link will decrease the strength of the chain due to the added weight
A constraint limits the output of every system, whether we acknowledge it or not
When properly identified and managed, constraints provide the fastest route to significant improvement
Bushwalking
The Five Focusing Steps: A Process of Ongoing Improvement
1. Identify the Constraint
Need to identify the right constraint
Constraints vs. bottlenecks - the weakest link vs. the weak links
Three forms of constraints
Resource constraints
- resources such as a particular machine that block flow based on limited capacity
Policy constraints
- policies/practices/metrics that artificially distort flow due to poor alignment
Permanent constraints
- limiting factors that are present in every process
2. Exploit the Constraint
Squeeze as much as possible out of that link in the chain
Maximise utilisation and productivity of the constraint (not of other non-constraint processes in the system)
Look at availability/quality/performance
3. Subordinate everything else to the constraint
Any non-constraint has more capacity to produce than the constraint itself
Results in bloated WIP inventory and elongated lead times
Don't produce more than the constraint can handle
Bring the constraint to the front of the line
Manufacturing - choking the release of raw material in line with the constraint
The constraint should never be starved - always operating at 100% capacity
4. Elevate the constraint
Steps 1 - 3 don't involve adding more resources (spending more money/time)
Expand by adding more resources
More people
More money
More computing power
(Manufacturing) Implementing the first 3 steps properly typically expose a minimum of 30% hidden capacity within the first few months
5. Rinse and repeat - find the next constraint
CSE Course Tutor Timetabling
Further Reading
https://www.tocinstitute.org