Design Representation
Authors: Ebert Jürgen , Engels Gregor 
Published: February 2015

Following usual software life cycle models the early phases of the software development process consist of activities like problem analysis, requirement definition, and system design. During these early phases only a rather imprecise, insecure, incomplete, and usually very abstract knowledge exists about the software system to be developed. On the other hand, there is a need to communicate about this knowledge by the developers as well as by potential users and, of course, between both groups of people. Furthermore, the decisions cast during the early stages of system development have a far‐reaching effect throughout the life cycle up to maintenance and thus must be well documented.

There is a need to describe the system on a high level in a general way, which has the intended level of preciseness on one hand and is easy to understand on the other. The description languages employed during the early phases are to a large partgraphicalorsemigraphicalin nature (annotated byformalorsemiformaltexts) because this helps to cope with the problems cited above.

Thedesign phaseis that phase in the software development process by which the documents produced during system analysis and requirement definition are to be transformed into an ideally coarse but precise and rigorous description of the intended system.

The outcome of the design phase is a set of documents that altogether describe the system to be built and form the basis for implementation; that is, these documents altogether represent thedesign description(design representation) of the system under development.

Of course, the large set of different documents that comprise a design description cannot be handled without appropriate tools.

This article gives an overview on the different approaches to depict software designs, that is, how to represent the outcome of the design phase in design documents. Thedesign description languagesused to write design documents range frominformalnatural‐language approaches toformalspecification languages or even programming languages. Since the design activity very much interacts with the other early phases of software development, many of the languages described below are also in use for representing analyses and/or requirement definitions.

Themethodicalaspects of software design are not the focus of this article; here thedescriptiveaspect of the design description languages is stressed. Furthermore, the focus is especially on conventionalsequential systems. Aspects dealing with the additional problems that come in withconcurrentand/ordistributedsystems are not addressed.

The description given here is arranged according to the mainparadigmsthat are used in identifying software components. For each of these paradigms there exist numerousvariantsanddialects, each with their individual methodical background.

After a general discussion on how to represent architectures of large systems, each design representation paradigm is discussed separately with its basic concepts, historical background, and main variants. Then some multiparadigmatic approaches are discussed, which integrate several of the aspects introduced before.