Chapter 4. Dealing with Uncertainty

The Five Constraints of Software Development

There are five main constraints in software development management: people, time, functionality, budget, and resources (excluding people). Agile methods recognize these constraints and seek to protect and exploit them [Beck 2000, p. 15].

Resources must be protected from uncertainty. Uncertainty manifests itself when the unplanned happens. A system can absorb uncertainty with the provision of buffers. Tom DeMarco wrote an entire book Slack, about buffering resources in software [2001]!

In every case, a constraint can be protected by a buffer. A buffer would normally be allocated in the same unit of measure as the constraint is measured. Hence, people should be ...

Get Agile Management for Software Engineering: Applying the Theory of Constraints for Business Results now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.