Software Design and Architecture Dup
Software Design and Architecture Dup
net/publication/4250871
Software Design and Architecture The once and future focus of software
engineering
CITATIONS READS
74 1,558
2 authors, including:
SEE PROFILE
All content following this page was uploaded by Andre van der Hoek on 06 February 2016.
Abstract sign over the past forty years and more. Fred Brooks
included in his 1975 list of “promising attacks on the
The design of software has been a focus of soft- conceptual essence” the growing of great designers
ware engineering research since the field’s beginning. [21]. Peter Freeman, in 1976 [31], said “Design is
This paper explores key aspects of this research focus relevant to all software engineering activities and is the
and shows why design will remain a principal focus. central integrating activity that ties the others to-
The intrinsic elements of software design, both proc- gether.”
ess and product, are discussed: concept formation, use Design will remain the focus of software engineer-
of experience, and means for representation, reason- ing. Herb Simon, in his classic, The Sciences of the
ing, and directing the design activity. Design is pre- Artificial [75], includes a discussion of design in the
sented as being an activity engaged by a wide range of context of “artificial” fields, such as software develop-
stakeholders, acting throughout most of a system’s ment, saying:
lifecycle, making a set of key choices which constitute “The artificial world is centered precisely on this
the application’s architecture. Directions for design interface between the inner [the means] and outer
research are outlined, including: (a) drawing lessons, [the task] environments; it is concerned with at-
inspiration, and techniques from design fields outside taining goals by adapting the former to the latter.
of computer science, (b) emphasizing the design of The proper study of those who are concerned with
application “character” (functionality and style) as the artificial is the way in which that adaptation of
well as the application’s structure, and (c) expanding means to environments is brought about – and
the notion of software to encompass the design of central to that is the process of design itself.”
additional kinds of intangible complex artifacts.
Put in software engineering parlance, the outer envi-
ronment is the world of requirements, goals, and
1. Introduction wants; the inner environment is the set of software
languages, components, and tools we have for building
Design is the central focus of software engineering.
systems. As software engineering researchers, we are
Design is both a verb and a noun. It is a key thing we
always “raising the floor” – creating new levels of in-
do and that we produce.
frastructure upon which new developments may be
Such crisp statements will alternatively strike one
built. In Simon’s terms, the “inner environment” or
as obvious or, perhaps, as parochial – if not incorrect.
the “means” is ever changing and expanding. As the
Yet if we consider what software engineering is,
floor rises, however, so do our desires and aspirations.
namely a practice directed at the production of software
Though achievements in improving design have been
systems, then design is seen at its heart, as it is in any
obtained over the previous decades, new challenges for
other productive enterprise, whether the creation of
design will thus continuously arise.
skyscrapers, automobiles, toasters, or urban regions.
Not surprisingly, then, many software engineering
researchers, or those acquainted with software devel-
opment, have studied and written about software de-
sign research of the first type is directed at the me-
chanical organization and structure of the vehicle; de-
Goals and Dreams sign research of the second type is directed at shaping
the car’s appearance, performance, sound, and smell.
"The Task"
Doing a good job of one type of design does not im-
ply doing a good job with the other, yet they are in-
DESIGN trinsically interrelated. Both are important, and are
legitimately the subject of (software) design research.
Work on design of the first type has certainly
"The Means" yielded a wide range of important results over the past
several decades. Numerous development methods have
Materials, Tools, and Mechanisms
been espoused, many based upon the articulation and
application of design “principles” such as modularity
and planning for change. Means for representing de-
Figure 1. The continuing place of design. signs have been devised; domain-specific approaches
have been created and supporting tools supplied. In
Nonetheless, at a suitably abstract level the chal- recent years, particular advances have been made with
lenges for software design today are the same as they regard to product families and the careful specification
were forty years ago. They are the intrinsic challenges of system architectures.
of design: How to create artifacts to obtain goals, how Work on design of the second type has often been
to represent new conceptions, and how to analyze ignored by software engineering researchers, and in-
them. Brooks made this observation twenty years after stead relegated to either other sub-disciplines of com-
the original Mythical Man-Month was published. He puter science, especially human-computer interaction
said the distinctive concerns of software engineering researchers, or simply left to practicing engineers in
now are exactly those he set out earlier, namely “How industry.
to design and build a set of programs into a system; Design of both types is increasingly recognized as a
How to design and build a program or a system into a critical corporate and national asset. Designing of
robust, tested, documented, supported product; How to products is seen as an activity that cannot be effec-
maintain intellectual control over complexity in large tively off-shored – regardless of the shore on which
doses.” [20] (pg. 288). Ten years after that statement it one is standing. Design can be a differentiator that
is still true. determines an organization’s success. The ability to
Arguably all the major threads of software engineer- design effectively is typically the partner of the ability
ing research are directed at improving our ability to to innovate.
meet the challenges of designing software. Work in The remainder of this paper seeks to explore how
requirements engineering contributes to Simon’s “outer and where to advance from the state-of-the art. We pro-
environment”; process research addresses the coordina- ceed by first examining some major historical threads
tion of all activities focused on creating, implement- of design research, then highlighting a few notable
ing, and evolving designs; empirical studies improve current trends. These sections are not merely back-
our ability to assess design artifacts and the processes ground; by straightforward implication from what we
by which they were created; analysis research improves describe, some key directions for software research
our ability to assess candidate designs; work at the emerge. Drawing from the perspectives of these two
patterns and frameworks level improves our ability to sections, we then examine the character of design in
realize designs in source code; and so on. more detail. The remainder of the paper explicitly lays
Though a focus on design has been, and will be, out a set of further research directions, and concludes
the central issue in software engineering, the type of with some challenges and a “long view” of the promis-
design on which our energies have been focused has ing future of software design.
been rather lopsided. Our focus has largely been di-
rected at the design of software qua software. That is,
we focus on the structure of software and its attributes,
2. Paradigms and Persuasions
such as considering what components and connectors
The past forty plus years of design research can be
comprise a system, and what constraints govern their
taxonomized many ways, such as by describing the
interactions. A lesser role in software engineering has
history of models, methods, and tools over time.
been assigned to the design of software as it exhibits
These topics are not independent, however. Rather, the
characteristics to its users. For instance, what “interac-
background or disciplinary orientation of an individual
tive feel” does the application give to its users? What
or group tends to bring along a set of beliefs, choices,
“style” does it exhibit? What is its branding, or dis-
and approaches. Any such perspective, then, drives
tinctive behavioral character? Using the analogy of
specific choices in a variety of areas.
automotive design can make the distinction clear: de-
Prescriptive Design Methods host of profiles publicly available that address a broad
variety of modeling concerns.
Perhaps most familiar to the software engineering
researcher is the perspective of the “software method- The Wisdom of Experience
ologist”. Typified best, perhaps, by work in the 1970’s
and 80’s by such authors as Yourdon [81, 82], Jackson Still focusing on the design of software, but com-
[41, 43], and Parnas [61-65], this strand of work fo- ing at the problem from essentially a bottom-up per-
cuses on the first type of design discussed above, the spective, is a strand of work focused on capturing the
design of software as the artifact of interest, and is an lessons of experience in such a way that future designs
approach that states a principle, then prescribes how to can be guided. The work on “design patterns” is typi-
design based on that principle. cal of this strand. While the “Gang of Four” patterns
Much of this work has been top-down in style; [33] are directed at the programming language level,
principles of design are articulated (“separate abstrac- the concept can be applied at any level of abstraction,
tions”, “use information hiding”, “refine higher-level including requirements (where the experience may be
abstractions into a set of lower-level abstractions”, etc.) captured as “frames” [42]), whole-concept system struc-
and then either methods for employing those principles ture (where the experience is captured as domain-
or notations which highlight or support application of specific software architectures [10, 38, 79]), and gener-
the principles are developed. ally at the level of system components and connectors
One influential strand of work began with Russ (where the experience is captured as styles and architec-
Abbott [8], and was then expanded upon and advocated tural templates [9, 34]).
by authors such as Grady Booch [17]. This design Methods for analysis and restructuring of software
approach is, roughly, “design by simulation”, in which may reflect insights from this research strand, such as
the software application is straightforwardly designed are found in refactoring analysis and reverse engineer-
by creating software objects that correspond to entities ing.
in the real world, and whose methods correspond to Knowledge representation and design rationale re-
actions in the real world. The work contributed to ob- search may contribute to the effective employment of
ject-oriented design, and became in a broader context design based upon the wisdom of experience.
to be supported by methods such as the Rational Uni-
fied Process [51], with designs represented in the Uni- HCI Design
fied Modeling Language (UML) [52].
Innovation in product design and distinctiveness in
Notations product design have long been argued as contributing
to product (and corporate) success [45] – though such
Notations have been a part of software design since innovation is no guarantee of commercial success. The
the beginning. Any time design thought is external- software engineering literature is relatively silent on
ized, such thought must be written down in some the matter of such design, possibly because researchers
structure or form that supports interpretation at a later view the subject as too domain-dependent, and hence
time by others, oneself, or a computerized program. It exclusively the focus of developers within that do-
is no surprise, then, that notations continue to serve as main. Even if one assumes that, it is surprising that
a primary driver of research in the community. software researchers have not focused on the methods
Notations range from informal conventions that are by which innovative domain-specific designs are cre-
established on-the-fly by a group of designers engaged ated.
in a design exercise to precise formalisms that are The exception is user interface design. Often rele-
standards for the field. Two primary concerns in the gated to (at best) the fringes of software engineering
formulation of new notations are expressiveness and research, human-computer interaction research includes
usability. Expressiveness concerns what aspects of a a focus on techniques for developing user interfaces
design can be captured in the notation; usability con- which effectively engage and satisfy the user. Some
cerns the fluidity with which designers can work with lessons of such work are captured, for instance, in pat-
the notation. Though both factors are equally impor- terns for web site design, as found in the work of Lan-
tant, the primary driving force behind the development day and colleagues [80]. This work is partially bottom-
of most new notations has been expressiveness – add- up, in the manner described above, but also reflects
ing modeling capabilities, often for a particular analy- cognitive understandings of how people interact with
sis purpose. web sites and undertake electronic commerce transac-
Extensibility is a required property of any modern tions.
notation, as it is now common knowledge that no The importance of considering this field is indi-
standard notation can fulfill all modeling needs. UML cated, in no small measure, by the repeated failure,
profiles are perhaps best known in this regard, with a over many years, of standard software engineering top-
down design techniques to create pleasing and effective and conversation – all aspects that must be taken into
user interfaces. account.