N degrees of separation: multi-dimensional separation of concerns

Done well, separation of concerns can provide many software engineering benefits, including reduced complexity, improved reusability, and simpler evolution. The choice of boundaries for separate concerns depends on both requirements on the system and on the kind(s) of decomposition and composition a given formalism supports. The predominant methodologies and formalisms available, however, support only orthogonal separations of concerns, along single dimensions of composition and decomposition. These characteristics lead to a number of well-known and difficult problems. The paper describes a new paradigm for modeling and implementing software artifacts, one that permits separation of overlapping concerns along multiple dimensions of composition and decomposition. This approach addresses numerous problems throughout the software lifecycle in achieving well-engineered, evolvable, flexible software artifacts and traceability across artifacts.

[1]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[2]  Bashar Nuseibeh,et al.  Expressing the relationships between multiple views in requirements specification , 1993, ICSE '93.

[3]  Mira Mezini,et al.  Adaptive plug-and-play components for evolutionary software development , 1998, OOPSLA '98.

[4]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[5]  Harold Ossher,et al.  Subject-oriented programming: a critique of pure objects , 1993, OOPSLA '93.

[6]  Harold Ossher,et al.  Specifying Subject-Oriented Composition , 1996, Theory Pract. Object Syst..

[7]  Ian M. Holland,et al.  Specifying Reusable Components Using Contracts , 1992, ECOOP.

[8]  Trygve Reenskaug,et al.  System Design by Composing Structures of Interacting Objects , 1992, ECOOP.

[9]  Harold Ossher,et al.  Operation-Level Composition: A Case in (Join) Point , 1998, ECOOP Workshops.

[10]  Gregor Kiczales,et al.  D: A Language Framework for Distributed Programming , 1997 .

[11]  Ivar Jacobson,et al.  The unified modeling language reference manual , 2010 .

[12]  Steven P. Reiss,et al.  Connecting tools using message passing in the Field environment , 1990, IEEE Software.

[13]  Desmond D'Souza,et al.  Objects, Components, and Frameworks with UML: The Catalysis Approach , 1998 .

[14]  Kevin Sullivan,et al.  Mediators: easing the design and evolution of integrated systems , 1994 .

[15]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[16]  R. Kadia,et al.  Issues encountered in building a flexible software development environment: lessons from the Arcadia project , 1992, SDE 5.

[17]  허진호 [參觀記] European Conference on Object Oriented Programming 참관기 , 1988 .

[18]  William G. Griswold,et al.  Adding Implicit Invocation to Languages: Three Approaches , 1993, ISOTAS.

[19]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[20]  David Notkin,et al.  Using role components in implement collaboration-based designs , 1996, OOPSLA '96.

[21]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[22]  Alexander L. Wolf,et al.  Feature Engineering , 1998 .