JPloy: User-Centric Deployment Support in a Component Platform

Component-based software development is intended to make it easy to build applications from reusable components, but current technologies are very complex to use. One reason for this situation is the lack of tools to support the task of application building. An application builder should be able to easily compose applications without having to perform much manual programming. Tools for application builders should, among other things, support modeling and enforcement of architectural properties in order to give the application builder full control over the structure of an application. In this work, we present JPloy, a component-based extension to the Java platform that is user-centric (geared towards application builders) and supports architectural modeling and adaptation. JPloy is transparent to existing components; this means that components do not have to be specifically developed for use with the tool. The JPloy approach is based on loading time code modification; compiled code is modified when it is loaded into memory. In this way, we can automatically generate adaptations and enforce architectural constraints; components are not required to be written in a special-purpose programming language or to use a special-purpose API. Key elements of our approach are a configuration language, which can be used to express architectural connections and adaptations, and support for component interaction styles. The configuration language gives application builders full control over the architecture of an application without requiring much coding. Interaction style can be used to easily change architectural properties inherent in the way components communicate. We demonstrate our approach by applying it to a three-tier customer relationship management application.

[1]  Flavio Oquendo,et al.  Software Architecture , 2004, Lecture Notes in Computer Science.

[2]  Clemens A. Szyperski,et al.  Overcoming independent extensibility challenges , 2002, CACM.

[3]  Stanley M. Sutton,et al.  Hyper/J™: multi-dimensional separation of concerns for Java™ , 2001, ICSE '02.

[4]  Petr Tuma,et al.  Fighting Class Name Clashes in Java Component Systems , 2003, JMLC.

[5]  Alexander L. Wolf,et al.  Software architecture , 2001 .

[6]  David S. Rosenblum,et al.  WREN---an environment for component-based development , 2001, ESEC/FSE-9.

[7]  Jeff Magee,et al.  The Koala Component Model for Consumer Electronics Software , 2000, Computer.

[8]  André van der Hoek,et al.  Composition Environments for Deployable Software Components , 2002 .

[9]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[10]  Richard S. Hall,et al.  A cooperative approach to support software deployment using the Software Dock , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[11]  Eric M. Dashofy,et al.  An infrastructure for the rapid development of XML-based architecture description languages , 2002, Proceedings of the 24th International Conference on Software Engineering. ICSE 2002.

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

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

[14]  Richard S. Hall,et al.  Software release management , 1997, ESEC '97/FSE-5.

[15]  Dennis Heimbigner,et al.  Reconfiguration in the Enterprise JavaBean Component Model , 2002, Component Deployment.

[16]  R.S. Hall,et al.  An OSGi implementation and experience report , 2004, First IEEE Consumer Communications and Networking Conference, 2004. CCNC 2004..

[17]  Peyman Oreizy,et al.  An Architecture-Centered Approach to Software Environment Integration , 2000 .

[18]  David F. Bacon,et al.  MJ: a rational module system for Java and its applications , 2003, OOPSLA 2003.

[19]  Merijn de Jonge,et al.  Imposing a memory management discipline on software deployment , 2004, Proceedings. 26th International Conference on Software Engineering.

[20]  Sheng Liang,et al.  Dynamic class loading in the Java virtual machine , 1998, OOPSLA '98.

[21]  Satoshi Matsuoka,et al.  Object Technologies for Advanced Software , 1996, Lecture Notes in Computer Science.

[22]  Andr Van Der Hoek,et al.  Architecture-Based Program Compaction , 2003 .

[23]  David F. Bacon,et al.  MJ: a rational module system for Java and its applications , 2003, OOPSLA.

[24]  Matthew Flatt,et al.  Jiazzi: new-age components for old-fasioned Java , 2001, OOPSLA '01.