Conquering Complexity

  • Mike Hinchey
  • Lorcan Coyle

Table of contents

  1. Front Matter
    Pages I-XXIII
  2. Recognizing Complexity

    1. Front Matter
      Pages 1-1
    2. José Luiz Fiadeiro
      Pages 3-47
  3. Controlling Complexity

    1. Front Matter
      Pages 73-73
    2. Gerard J. Holzmann
      Pages 75-84
    3. Alan Wassyng, Mark Lawford, Tom Maibaum
      Pages 85-102
    4. Norman F. Schneidewind
      Pages 103-119
    5. Shawn Bohner, Ramya Ravichandar, Andrew Milluzzi
      Pages 121-158
    6. Mike Hinchey, James L. Rash, Walter F. Truszkowski, Christopher A. Rouff, Roy Sterritt
      Pages 159-176
    7. Mike Hinchey, Roy Sterritt
      Pages 177-190
    8. Joaquin Peña, Renato Levy, Mike Hinchey, Antonio Ruiz-Cortés
      Pages 191-214
  4. Complexity Control: Application Areas

    1. Front Matter
      Pages 215-215
    2. Tiziana Margaria, Bernhard Steffen
      Pages 217-236
    3. Jonathan P. Bowen, Mike Hinchey
      Pages 237-251
    4. Antonio Filieri, Carlo Ghezzi, Raffaela Mirandola, Giordano Tamburrelli
      Pages 253-275
    5. Kun Wei, Jim Woodcock, Alan Burns
      Pages 277-307
    6. Tiziana Margaria, Steve Boßelmann, Markus Doedt, Barry D. Floyd, Bernhard Steffen
      Pages 407-429
    7. Marco A. Casanova, Karin K. Breitman, Antonio L. Furtado, Vânia M. P. Vidal, José A. F. de Macêdo
      Pages 431-461
  5. Back Matter
    Pages 463-466

About this book


Software has long been perceived as complex, at least within Software Engineering circles. We have been living in a recognised state of crisis since the first NATO Software Engineering conference in 1968. Time and again we have been proven unable to engineer reliable software as easily/cheaply as we imagined. Cost overruns and expensive failures are the norm.

The problem is fundamentally one of complexity: software is fundamentally complex because it must be precise. Problems that appear to be specified quite easily in plain language become far more complex when written in a more formal notation, such as computer code. Comparisons with other engineering disciplines are deceptive.  One cannot easily increase the factor of safety of software in the same way that one could in building a steel structure, for example. Software is typically built assuming perfection, often without adequate safety nets in case the unthinkable happens. In such circumstances it should not be surprising to find out that (seemingly) minor errors have the potential to cause entire software systems to collapse.

The goal of this book is to uncover techniques that will aid in overcoming complexity and enable us to produce reliable, dependable computer systems that will operate as intended, and yet are produced on-time, in budget, and are evolvable, both over time and at run time. We hope that the contributions in this book will aid in understanding the nature of software complexity and provide guidance for the control or avoidance of complexity in the engineering of complex software systems.


Complexity agent-based systems real-time systems self-managing systems service orientation

Editors and affiliations

  • Mike Hinchey
    • 1
  • Lorcan Coyle
    • 2
  1. 1.Lero, Irish Software Eng Research CtrUniversity of LimerickLimerickIreland
  2. 2.Lero, International Science CentreUniversity of LimerickLimerickIreland

Bibliographic information