Using multidimensional separation of concerns to (re)shape evolving software

Harold L. Ossher, Peri L. Tarr · Communications of the ACM · 2001

This article focuses on the use of multidimensional separation of concerns to reshape evolving software. Separation of concerns is a key guiding principle of software engineering. It refers to the ability to identify, encapsulate and manipulate only those parts of software that are relevant to a particular concept, goal or purpose. Concerns are the primary criteria for decomposing software into smaller, more manageable and comprehensible parts that have meaning to a software engineer. Much of software evolution, reuse and integration are of an unanticipated nature. This is not necessarily because of poor design, but rather because the world is changing so fast it is impossible to predict the paths of software evolution and use with accuracy. It is not even possible to predict exactly which concerns will arise or become important during the lifetime of a system. This article describes an approach called multidimensional separation of concerns, which addresses these issues and permits effective encapsulation of arbitrary kinds of concerns simultaneously, even when the concerns were not anticipated originally, and the integration of separate concerns.

Read the paper · More papers on PaperTik