SENG3011
Theory of Constraints
(2024)
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
SENG3011: Theory of Constraints (2024)
By npatrikeos
SENG3011: Theory of Constraints (2024)
- 248