Distributed Aspects: better separation of crosscutting concerns in distributed software systems

This thesis shows that abstractions provided by current mainstream Object Oriented (OO) languages are not enough to address the modularization of distributed and concurrent algo- rithms, protocols, or architectures. In particular, we show that code implementing concurrent and distributed algorithms is scattered and tangled in the main implementation of JBoss Cache, a real industrial middleware application. We also show that not only code is tangled, but also conceptual algorithms are hidden behind object-based structures (i.e., they are not visible in the code). Additionally, we show that such code is resilient to modularization. Thus, we show that several cycles of re-engineering (we study the evolution of three different version of JBoss Cache) using the same set of OO abstractions do not improve on the modularization of distributed and concurrent code. From these findings we propose a novel Aspect Oriented programming language with explicit support for distribution and concurrency (AWED). The language uses aspects as main abstractions and propose a model for distributed aspects and remote pointcuts, extending sequential approaches with support for regular sequences of distributed events. The language also proposes advanced support for the manipulation of groups of host, and the fine-grained deterministic ordering of distributed events. To evaluate the proposal we perform several experiments in different domains: refactoring and evolution of replicated caches, development of automatic toll systems, and debugging and testing of distributed applications. Finally, using this general model for distribution we provide two additional contributions. First, we introduce Invasive Patterns, an extension to traditional communication patterns for distributed applications. Invasive Patterns present an aspect-based language to express protocols over distributed topologies considering different coordination strategies (Architec- tural programming). The implementation of this approach is leveraged by the distributed features of AWED and is realized by means of a transformation into it. Second, we add the deterministic manipulation of distributed messages to our model by means of causally ordered protocols.

[1]  Jean-Marc Menaud,et al.  Invasive Patterns: Aspect-Based Adaptation of Distributed Applications , 2007 .

[2]  Fred B. Schneider,et al.  Implementing fault-tolerant services using the state machine approach: a tutorial , 1990, CSUR.

[3]  Butler W. Lampson,et al.  Crash Recovery in a Distributed Data Storage System , 1981 .

[4]  Lidia Fuentes,et al.  Separation of coordination in a dynamic aspect oriented framework , 2002, AOSD '02.

[5]  Fabio Kon,et al.  An Eclipse-Based Tool for Symbolic Debugging of Distributed Object Systems , 2007, OTM Conferences.

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

[7]  Shigeru Chiba,et al.  Load-Time Structural Reflection in Java , 2000, ECOOP.

[8]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.

[9]  Shigeru Chiba,et al.  A metaobject protocol for fault-tolerant CORBA applications , 1998, Proceedings Seventeenth IEEE Symposium on Reliable Distributed Systems (Cat. No.98CB36281).

[10]  Éric Tanter,et al.  A versatile kernel for multi-language AOP , 2005, GPCE'05.

[11]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.

[12]  Vladimiro Sassone,et al.  Jeeg: temporal constraints for the synchronization of concurrent objects: Research Articles , 2005 .

[13]  A. Turing On Computable Numbers, with an Application to the Entscheidungsproblem. , 1937 .

[14]  Seth Copen Goldstein,et al.  Distributed Watchpoints: Debugging Large Multi-Robot Systems , 2007, Proceedings 2007 IEEE International Conference on Robotics and Automation.

[15]  Jan Bosch,et al.  Design Patterns as Language Constructs , 1998, J. Object Oriented Program..

[16]  Noam Chomsky,et al.  On Certain Formal Properties of Grammars , 1959, Inf. Control..

[17]  Jun Li,et al.  Monitoring and characterization of component-based systems with global causality capture , 2003, 23rd International Conference on Distributed Computing Systems, 2003. Proceedings..

[18]  Friedemann Mattern,et al.  Virtual Time and Global States of Distributed Systems , 2002 .

[19]  Gregor Kiczales,et al.  Back to the future: a retroactive study of aspect evolution in operating system code , 2003, AOSD '03.

[20]  Michael A. Frumkin,et al.  NAS Grid Benchmarks: a tool for Grid space exploration , 2001, Proceedings 10th IEEE International Symposium on High Performance Distributed Computing.

[21]  Mira Mezini,et al.  An Overview of CaesarJ , 2006, LNCS Trans. Aspect Oriented Softw. Dev..

[22]  S. Chiba,et al.  Remote pointcut: a language construct for distributed AOP , 2004, AOSD '04.

[23]  Kris Gybels,et al.  Arranging language features for more robust pattern-based crosscuts , 2003, AOSD '03.

[24]  Michael A. Frumkin,et al.  Evaluating the Information Power Grid using the NAS Grid Benchmarks , 2004, 18th International Parallel and Distributed Processing Symposium, 2004. Proceedings..

[25]  Wim Vanderperren,et al.  Jumping Aspects Revisited , 2005 .

[26]  Vijay K. Garg,et al.  Predicate control for active debugging of distributed programs , 1998, Proceedings of the First Merged International Parallel Processing Symposium and Symposium on Parallel and Distributed Processing.

[27]  Fabien Hermenier,et al.  Aspect-Based Patterns for Grid Programming , 2008, 2008 20th International Symposium on Computer Architecture and High Performance Computing.

[28]  Ian T. Foster,et al.  The anatomy of the grid: enabling scalable virtual organizations , 2001, Proceedings First IEEE/ACM International Symposium on Cluster Computing and the Grid.

[29]  Carlos José Pereira de Lucena,et al.  Modularizing design patterns with aspects: a quantitative study , 2005, AOSD '05.

[30]  Shigeru Chiba,et al.  A metaobject protocol for C++ , 1995, OOPSLA.

[31]  Rémi Douence,et al.  Expressive scoping of distributed aspects , 2009, AOSD '09.

[32]  Rajeev Alur,et al.  Visibly pushdown languages , 2004, STOC '04.

[33]  J. T. Robinson,et al.  On optimistic methods for concurrency control , 1979, TODS.

[34]  Luis Daniel Benavides Navarro,et al.  Modularization of Distributed Web Services Using Aspects with Explicit Distribution (AWED) , 2006, OTM Conferences.

[35]  Grady Booch,et al.  Core J2EE Patterns (Core Design Series): Best Practices and Design Strategies , 2003 .

[36]  Wim Vanderperren,et al.  Stateful Aspects in JAsCo , 2005, SC@ETAPS.

[37]  Murray Cole,et al.  Algorithmic Skeletons: Structured Management of Parallel Computation , 1989 .

[38]  Gail E. Kaiser,et al.  Debugging multithreaded programs with MPD , 1991, IEEE Software.

[39]  Wim Vanderperren,et al.  Requirements for a Workflow System for Grid Service Composition , 2006, Business Process Management Workshops.

[40]  Mario Südholt,et al.  An expressive aspect language for system applications with Arachne , 2005, AOSD '05.

[41]  Willy Zwaenepoel,et al.  Causal distributed breakpoints , 1990, Proceedings.,10th International Conference on Distributed Computing Systems.

[42]  Dewayne E. Perry,et al.  Using AOP to monitor and administer software for grid computing environments , 2005, 29th Annual International Computer Software and Applications Conference (COMPSAC'05).

[43]  Maja D'Hondt,et al.  Hybrid aspects for weaving object-oriented functionality and rule-based knowledge , 2004, AOSD '04.

[44]  Richard Monson-Haefel,et al.  Java message service , 2000 .

[45]  Optimizing JAsCo dynamic AOP through HotSwap and Jutta , 2004 .

[46]  Kenneth P. Birman,et al.  A response to Cheriton and Skeen's criticism of causal and totally ordered communication , 1994, OPSR.

[47]  Denis Caromel,et al.  A theory of distributed objects - asynchrony, mobility, groups, components , 2005 .

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

[49]  Alaa A. Kharbouch,et al.  Three models for the description of language , 1956, IRE Trans. Inf. Theory.

[50]  Rémi Douence,et al.  Trace-Based Aspects , 2004 .

[51]  Patrick Th. Eugster,et al.  Type-based publish/subscribe: Concepts and experiences , 2007, TOPL.

[52]  Akinori Yonezawa,et al.  Hybrid Group Reflective Architecture for Object-Oriented Concurrent Reflective Programming , 1991, ECOOP.

[53]  Mario Südholt,et al.  Towards expressive, well-founded and correct , 2010 .

[54]  James H. Anderson Lamport on mutual exclusion: 27 years of planting seeds , 2001, PODC '01.

[55]  Luis Daniel Benavides Navarro,et al.  Explicitly distributed AOP using AWED , 2006, AOSD '06.

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

[57]  Koushik Sen,et al.  Efficient decentralized monitoring of safety in distributed systems , 2004, Proceedings. 26th International Conference on Software Engineering.

[58]  Mathieu Braem,et al.  Requirements for Reusable Aspect Deployment , 2007, SC@ETAPS.

[59]  Robert H. Halstead,et al.  MULTILISP: a language for concurrent symbolic computation , 1985, TOPL.

[60]  Anne-Marie Kermarrec,et al.  The many faces of publish/subscribe , 2003, CSUR.

[61]  Jack C. Wileden,et al.  An approach to high-level debugging of distributed systems (Preliminary Draft) , 1983, SIGSOFT '83.

[62]  Ondrej Lhoták,et al.  Adding trace matching with free variables to AspectJ , 2005, OOPSLA '05.

[63]  Luís Moura Silva,et al.  System-level versus user-defined checkpointing , 1998, Proceedings Seventeenth IEEE Symposium on Reliable Distributed Systems (Cat. No.98CB36281).

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

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

[66]  Andrew Clement,et al.  Large-scale AOSD for middleware , 2004, AOSD '04.

[67]  Jiri Soukup,et al.  Implementing patterns , 1995 .

[68]  Luis Daniel Benavides Navarro,et al.  LTS-based Semantics and Property Analysis of Distributed Aspects and Invasive Patterns , 2008 .

[69]  Leslie Lamport,et al.  Distributed snapshots: determining global states of distributed systems , 1985, TOCS.

[70]  G. Barish,et al.  World Wide Web caching: trends and techniques , 2000, IEEE Commun. Mag..

[71]  Mario Südholt,et al.  VPA-Based Aspects: Better Support for AOP over Protocols , 2006, Fourth IEEE International Conference on Software Engineering and Formal Methods (SEFM'06).

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

[73]  Polyvios Pratikakis,et al.  Transparent proxies for java futures , 2004, OOPSLA.

[74]  Sérgio Soares,et al.  Implementing distribution and persistence aspects with aspectJ , 2002, OOPSLA '02.

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

[76]  Éric Tanter Expressive scoping of dynamically-deployed aspects , 2008, AOSD.

[77]  David R. Cheriton,et al.  Understanding the limitations of causally and totally ordered communication , 1994, SOSP '93.

[78]  Denis Caromel,et al.  Partial behavioral reflection: spatial and temporal selection of reification , 2003, OOPSLA '03.

[79]  Laurence Duchien,et al.  JAC: an aspect‐based distributed dynamic framework , 2004, Softw. Pract. Exp..

[80]  Fabio Kon,et al.  Debugging distributed object applications with the Eclipse platform , 2004, eclipse '04.

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

[82]  Gail E. Kaiser,et al.  Modeling concurrency in parallel debugging , 1990, PPOPP '90.

[83]  Robert J. Walker,et al.  Implementing protocols via declarative event patterns , 2004, SIGSOFT '04/FSE-12.

[84]  Li Fan,et al.  Summary cache: a scalable wide-area web cache sharing protocol , 2000, TNET.

[85]  Gerard Tel,et al.  Synchronous, asynchronous, and causally ordered communication , 1996, Distributed Computing.

[86]  Jörg Kienzle,et al.  AOP: Does It Make Sense? The Case of Concurrency and Failures , 2002, ECOOP.

[87]  Gregor Kiczales,et al.  Design pattern implementation in Java and aspectJ , 2002, OOPSLA '02.

[88]  Ajit Singh,et al.  Design Patterns for Parallel Programming , 1996, PDPTA.

[89]  Wouter Joosen,et al.  True and Transparent Distributed Composition of Aspect-Components , 2006, Middleware.

[90]  Éric Tanter,et al.  A Versatile Kernel for Distributed AOP , 2006, DAIS.

[91]  Irving L. Traiger,et al.  The notions of consistency and predicate locks in a database system , 1976, CACM.

[92]  Jean-Marc Menaud,et al.  Invasive Patterns for Distributed Programs , 2007, OTM Conferences.

[93]  Jonathan Schaeffer,et al.  Using generative design patterns to generate parallel code for a distributed memory environment , 2003, PPoPP '03.

[94]  Rick Chern,et al.  Debugging with control-flow breakpoints , 2007, AOSD.

[95]  Robbert van Renesse,et al.  Horus: a flexible group communication system , 1996, CACM.

[96]  Peter Sommerlad,et al.  Pattern-Oriented Software Architecture Volume 1: A System of Patterns , 1996 .

[97]  Friedemann Mattern,et al.  Detecting causal relationships in distributed computations: In search of the holy grail , 1994, Distributed Computing.

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

[99]  Jim Gray,et al.  Notes on Data Base Operating Systems , 1978, Advanced Course: Operating Systems.

[100]  Luis Daniel Benavides Navarro,et al.  Debugging and Testing Middleware with Aspect-Based Control-Flow and Causal Patterns , 2008, Middleware.

[101]  Rémi Douence,et al.  A Framework for the Detection and Resolution of Aspect Interactions , 2002, GPCE.

[102]  Luis Daniel Benavides Navarro,et al.  ATOLL: aspect-oriented toll system , 2007, ACP4IS.