Logical complexity of software systems is one of the main factors causing problems and errors in their planning, design, development, testing, deployment, maintenance, and use. There is a common under- standing that building complex software systems requires careful planning, good architectural design, and well-controlled development processes. Many good books and papers, as well as all softwar…