Controlling the complexity of software designs

Our research has focused on identifying techniques to develop software that is amenable to refactoring and change. The Law of Demeter (LoD) was one contribution in this effort. But it led to other problems. With the current state of the art focused on aspect-oriented software development (AOSD), it is useful to revisit the general objectives of the LoD and adapt it to the new ideas. Hence we introduce the Law of Demeter for Concerns and discuss the important intersection of these approaches with traversals. We explore the ramifications of the Laws of Demeter (LoD and LoDC) to achieve better separation of concerns through improved software processes. They are supported by language mechanisms that are implemented using novel applications of automata theory.

[1]  Karl Lieberherr,et al.  Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns , 1995 .

[2]  Mary Shaw,et al.  An Introduction to Software Architecture , 1993, Advances in Software Engineering and Knowledge Engineering.

[3]  John A. Zinky,et al.  Building adaptive distributed applications with middleware and aspects , 2004, AOSD '04.

[4]  Karl J. Lieberherr Component Enhancement: An Adaptive Reusability Mechanism for Groups of Collaborating Classes , 1992, IFIP Congress.

[5]  Ankit Shah,et al.  XAspects: an extensible system for domain-specific aspect languages , 2003, OOPSLA '03.

[6]  Glenford J. Myers,et al.  Composite/structured design , 1978 .

[7]  Jonathan Aldrich,et al.  Open Modules: A Proposal for Modular Reasoning in Aspect-Oriented Programming , 2004 .

[8]  Clemens Szyperski,et al.  Component software , 1997 .

[9]  Karl J. Lieberherr,et al.  Object-oriented programming: an objective sense of style , 1988, OOPSLA '88.

[10]  Doug Orleans,et al.  Incremental programming with extensible decisions , 2002, AOSD '02.

[11]  Cristina V. Lopes,et al.  Abstracting Process-to-Function Relations in Concurrency Object-Oriented Applications , 1994, ECOOP.

[12]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[13]  Tzilla Elrad,et al.  Aspect-oriented programming: Introduction , 2001, CACM.

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

[15]  David Walker,et al.  Aspects, Information Hiding and Modularity , 2003 .

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

[17]  Karl J. Lieberherr,et al.  Aspectual Collaborations: Combining Modules and Aspects , 2003, Comput. J..

[18]  Mira Mezini,et al.  Conquering aspects with Caesar , 2003, AOSD '03.

[19]  Karl J. Lieberherr,et al.  A case for statically executable advice: checking the law of demeter with AspectJ , 2003, AOSD '03.

[20]  Karl J. Lieberherr,et al.  DJ: Dynamic Adaptive Programming in Java , 2001, Reflection.

[21]  Richard Rasala Embryonic object versus mature object: object-oriented style and pedagogical theme , 2003 .

[22]  Karl J. Lieberherr,et al.  Object-oriented programming with class dictionaries , 1988, LISP Symb. Comput..

[23]  Michael A. Jackson,et al.  Software requirements and specifications - a lexicon of practice, principles and prejudices , 1995 .

[24]  Thomas Reps,et al.  The synthesizer generator , 1984 .

[25]  Robert E. Filman,et al.  What Is Aspect-Oriented Programming , 2001 .

[26]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[27]  Don S. Batory,et al.  Composition Validation and Subjectivity in GenVoca Generators , 1997, IEEE Trans. Software Eng..

[28]  Wim Vanderperren,et al.  JAsCo: an aspect-oriented approach tailored for component based software development , 2003, AOSD '03.

[29]  Johan Ovlinger,et al.  Combining Aspects and Modules , 2003 .

[30]  Karl J. Lieberherr,et al.  Assuring good style for object-oriented programs , 1989, IEEE Software.

[31]  Hidehiko Masuhara,et al.  Compilation Semantics of Aspect-Oriented Programs , 2002 .

[32]  Ivar Jacobson Language support for changeable large real time systems , 1986, OOPSLA 1986.

[33]  Markku Sakkinen,et al.  Comments on “the law of demeter” and C++ , 1988, SIGP.

[34]  Sims,et al.  Bayu-Undan Substructure Foundations: Conception, Design & Installation Aspects , 2004 .

[35]  Karl J. Lieberherr,et al.  Object-Oriented Software Evolution , 1993, IEEE Trans. Software Eng..

[36]  Daniel P. Friedman,et al.  Aspect-Oriented Programming is Quantification and Obliviousness , 2000 .

[37]  Ben Shneiderman,et al.  Path Expressions for Complex Queries and Automatic Database Program Conversion , 1980, VLDB.

[38]  David R. Barstow,et al.  Proceedings of the 25th International Conference on Software Engineering , 1978, ICSE.

[39]  Dave Thomas,et al.  The Art of Enbugging , 2003, IEEE Softw..

[40]  Paul Dourish,et al.  Beyond AOP: toward naturalistic programming , 2003, SIGP.

[41]  Boaz Patt-Shamir,et al.  Traversals of object structures: Specification and Efficient Implementation , 2004, TOPL.

[42]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[43]  Mitchell Wand,et al.  An Empirical Study of the Demeter System , 2004 .

[44]  Rémi Douence,et al.  Composition, reuse and interaction analysis of stateful aspects , 2004, AOSD '04.

[45]  Mitchell Wand,et al.  Navigating through Object Graphs Using Local Meta-Information , 2001 .

[46]  Karl J. Lieberherr,et al.  Preventive Program Maintenance in Demeter/Java , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[47]  Akinori Yonezawa,et al.  Abstracting Object Interactions Using Composition Filters , 1993, ECOOP Workshop.

[48]  David H. Lorenz,et al.  Coupling Aspect-Oriented and Adaptive Programming , 2004 .

[49]  Jens Palsberg,et al.  Efficient implementation of adaptive software , 1995, TOPL.

[50]  Boaz Patt-Shamir,et al.  A New Approach to Compiling Adaptive Programs , 1996, ESOP.

[51]  Gordon S. Blair,et al.  On the Separation of Concerns in Program Families , 2004 .

[52]  Mira Mezini,et al.  Programming with Aspectual Components , 1999 .

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

[54]  Jens Palsberg,et al.  Evolution of object behavior using context relations , 1996, SIGSOFT '96.

[55]  J. V. Gurp,et al.  Separation of Concerns : A Case Study , 2001 .

[56]  David H. Lorenz,et al.  Domain driven web development with WebJinn , 2003, OOPSLA '03.