Modern software systems are made up of many moving parts that can fail  that are then built on top of and integrated with systems that can also fail Throw into this mix the need for these parts to be under the stress of constant change and improvement under the increasing pressures of the business to deliver more and faster  and building systems that are reliable enough to have confidence in is a real challenge