Complexity in Software Design

Anders Törne

Dept. of Computer and Information Science, Linköping University, Sweden


Contemporary and future engineers face increasing demands from society and laymen on design quality. A durable quality entails many things - safeness, reliability, functionablity , operational and extensional simplicity, low production and maintenance costs, certified properties, environmental acceptability, and an aesthetic appearance are but some of the qualities asked for. Some of these demands may result in contradictory requirements. A part of the engineering task is actually to balance these requirements, so that satisfactory levels of quality are achieved for each one. The number of design decisions increase with the number of requirements. This means that every extension of such requirements will result in extra design decisions and designs that will become more difficult to comprehend for the individual engineer and certainly for the layman. This incomprehensibility is "complexity". Two lines of thought appear from this - "What is a complex design?" - and "How can the engineer be supported in his task when complexity increases?" In the introductory chapter we discuss some measures of complexity and how to apply this to design. A chapter follows on complexity in software systems and a presentation of how this complexity can be handled. Finally there is a chaper on a specific project adressing the issue of tools and methods for handling complexity in system design, where software is only a part, i.e., systems with embedded software.

Download the paper (38969 bytes).

Anders Törne <>