Complexity in Software Design
Anders Törne
Dept. of Computer and Information Science, Linköping University, Sweden
ABSTRACT
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
<andto@ida.liu.se>