Complexity arises from many sources – both within and outwith the system. Internal sources include modern hardware, e.g. super-scalar processors, and external sources include the requirements for evolving already successful systems. Complexity is inescapable – unless we are willing to reduce our dependence on computers, and to forgo the benefits they bring us. This raises the issue of how we control, or simply cope with, ever-increasing complexity. We try to clarify what is meant by complexity, and what causes complexity. We identify some causes of complexity, focusing on embedded systems with strict dependability requirements as these pose some of the most significant challenges. We then propose some strategies for coping with complexity, including the use of product families and the use of risk as a means of managing complexity.
John A. McDermid