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