Representing structure in a software system design
Structure, clearly understood and represented, is a key tool in the design of any complex artifact. Software systems are among the most complex of all human artifacts. The software designers essential product is not the software itself, but the behaviours that it evokes in the problem world outside the computer and the affordances it provides to its users. The properties of the problem world, and the users capacities to understand and exploit the systems complex functionality, are therefore vital subjects for the designers attention. Causality is an important concern in a realistic system, within the computer, within the problem world, and in their mutual interactions. The computer can process and manipulate information; it can therefore embody useful representations of the problem world, of its users, and even of itself, adding further levels of structural complexity. This paper discusses some aspects of structure and its representation arising from these concerns in software system design, and offers some general observations relevant to other design fields. The discussion is illustrated by the design task studied in the SPSD, 2010 workshop that took place in February 2010 at UC Irvine, CA, USA.
structure software design problem solving design requirements