Invasive Patterns for Distributed Programs

Software patterns have evolved into a commonly used means to design and implement software systems. Programming patterns, architecture and design patterns have been quite successful in the context of sequential as well as (massively) parallel applications but much less so in the context of distributed applications over irregular communication topologies and heterogeneous synchronization requirements. In this paper, we propose a solution for one of the main issues in this context: the need to complement distributed patterns with access to execution state on which it depends but that is frequently not directly available at the sites where the patterns are to be applied. To this end we introduce invasive patterns that couple well-known computation and communication patterns like pipelining and farming out computations with facilities to access non-local state. We present the following contributions: (i) a motivation for such invasive patterns in the context of a real-world application: the JBoss Cache framework for transactional replicated caching, (ii) a proposal of language support for such invasive patterns, (iii) a prototypical implementation of this pattern language using AWED, an aspect language for distributed programming, and (iv) an evaluation of our proposal for refactoring of JBoss Cache.

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

[2]  D. B. Davis,et al.  Sun Microsystems Inc. , 1993 .

[3]  P.G. Bridges,et al.  A Configurable and Extensible Transport Protocol , 2007, IEEE/ACM Transactions on Networking.

[4]  Mario Südholt,et al.  Towards expressive, well-founded and correct Aspect-Oriented Programming , 2007 .

[5]  João Luís Sobral,et al.  Reusable aspect-oriented implementations of concurrency patterns and mechanisms , 2006, AOSD.

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

[7]  Douglas C. Schmidt,et al.  Pattern-Oriented Software Architecture, Patterns for Concurrent and Networked Objects , 2013 .

[8]  Pierre Cointe ECOOP ’96 — Object-Oriented Programming , 1996, Lecture Notes in Computer Science.

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

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

[11]  Rémi Douence,et al.  Concurrent aspects , 2006, GPCE '06.

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

[13]  B. F. Castro Buschmann, Frank; Meunier, Regine; Rohnert, Hans; Sommerlad, Peter; Stal, Michael. Pattern-oriented software architecture: a system of patterns, John Wiley & Sons Ltd, 1996 , 1997 .

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

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

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

[17]  B. J. Ferro Castro,et al.  Pattern-Oriented Software Architecture: A System of Patterns , 2009 .

[18]  Jørgen Lindskov Knudsen ECOOP 2001 — Object-Oriented Programming , 2001, Lecture Notes in Computer Science.

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

[20]  Matti A. Hiltunen,et al.  A configurable and extensible transport protocol , 2001, Proceedings IEEE INFOCOM 2001. Conference on Computer Communications. Twentieth Annual Joint Conference of the IEEE Computer and Communications Society (Cat. No.01CH37213).

[21]  Thomas Ledoux,et al.  Aspect-Oriented Software Development , 2003 .

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

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

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