Design principles in architectural evolution: A case study
There is a plethora of instructional literature on object-oriented (OO) design [5, 2]. This literature describes how OO systems should be structured, yet we have very little knowledge of how they are actually structured. In other words, we have very little idea of the extent to which software developers in industry follow the “design principles” proposed in this literature. Casual observation would suggest that many design principles are not widely followed in the construction of “real” software systems . In this paper I explain why we would like to know with greater certainty the extent to which developers of OO software follow design principles, and how we might go about determining this. We would like to know the extent to which software developers follow specific design principles so we can: Better align research in software engineering with problems actually faced by practitioners. Engineering is about applying scientific and mathematical principles to practical ends. It follows that research in software engineering ought to focus on solving problems actually faced by practitioners. Unfortunately the perception of many practitioners is that research is not relevant to them . One way we can improve the perception of software engineering research is to study the artefacts produced by practitioners. More specifically, by performing empirical studies of real software systems we can determine design principles that are not widely followed by practitioners. Such studies can then be used to convince practitioners of the relevance of tools, techniques, and educational material purporting to improve software structure. Better study the effect of design principles on software quality. While it is widely accepted that the design principles presented in the literature lead to systems that are better (e.g., cheaper to maintain, less prone to error, easier to understand and so on) the reality is that we have little idea about the efficacy of these principles. In other words, seldom has there been empirically established a relationship between a design principle and a specific attribute of software quality [3, p.80]. A reason we lack knowledge of this nature lies in the (typically high) cost and difficulty associated with performing convincing empirical studies to expose such relationships. To get the best “bang for our buck” in performing such studies we ought to concentrate on design principles that are not widely followed. It is knowledge of these design principles that would be
Unfortunately, ACM prohibits us from displaying non-influential references for this paper.
To see the full reference list, please visit http://dl.acm.org/citation.cfm?id=1176717.