Abstract
Contextual component frameworks, such as Enterprise JavaBeans (EJB), allow for components to specify boundary conditions for the runtime context. These conditions are satisfied at runtime by services of the underlying platform, thus ensuring that the context in which components run exhibits properties that allow them to operate correctly. Depending on how components call each other, it is possible that satisfying such conditions lead to problems such as reduced performance due to redundant service execution, or permanent errors (composition mismatches), due to incompatible boundary conditions. Currently, the semantics of these boundary conditions are expressed in natural language only, making it impossible to incorporate them into an automatic analysis tool. Furthermore, early understanding of how components call each other would be necessary, but it is currently difficult to achieve by means of a tool, as the method dispatch rules in a component system differ from the dispatch rules of the programming language(s) in which they were developed. We have developed a metamodel, \({\mathbb{M}}\) , for describing boundary conditions, an analysis method, \({\mathbb{A}}\) , and a static component-level call graph extraction method for EJB applications, CHA EJB . \({\mathbb{A}}\) uses \({\mathbb{M}}\) models to analyze inter-component call graphs, and thus detect problems such as composition mismatches or redundancies, thus allowing for remedial action to take place. We present \({\mathbb{M}},{\mathbb{A}}\) and CHA EJB in this article, show that \({\mathbb{A}}\) produces correct results, and describe a prototype analysis tool implementing the three, which we used to validate our approach on two popular EJB applications.
Similar content being viewed by others
References
Sun Microsystems. Enterprise JavaBeans Specification (2003). http://java.sun.com/products/ejb/docs.html#specs
Don Box. Essential COM. Addison-Wesley (1998)
Object Management Group. Corba Component Model (2002). http://www.omg.org
Ammons, G., Choi, J.-D., Gupta, M., Swamy, N.: Finding and removing performance bottlenecks in large systems. In: Proceedings of ECOOP (2004)
Trofin, M., Murphy, J.: A self-optimizing container design for enterprise java beans applications. In: Proceedings of the Second International Workshop on Dynamic Analysis (WODA 2004), pp. 52–59 (2004)
Trofin, M., Murphy, J.: Removing Redundant Boundary Checks in Contextual Composition Frameworks. J. Obj. Technol pp. 63–82, July–August 2006
Vallée-Rai, R., Hendren, L., Sundaresan, V., Lam, P., Gagnon, E., Co, P.: SOOT - a Java Optimization Framework. In: Proceedings of CASCON 1999, pp. 125–135 (1999)
Flanagan, C., Leino, K., Lillibridge, M., Nelson, C., Saxe, J., Stata, R.: Extended static checking for Java. In: Proceedings of Programming Language Design and Implementation (2002)
Dean J., Grove D. and Chambers C. (1995). optimization of object-oriented programs using static class hierarchy analysis. Lecture Notes Comput. Sci. 952: 77–101
Lindholm, T., Yellin, F.: The JavaTM Virtual Machine Specification. Sun Microsystems, Inc. (1999)
Bruneton, E., Lenglet, R., Coupaye, T.: ASM: a Code Manipulation Tool to implement adaptable systems. In: Proceedings of the ASF (ACM SIGOPS France) Journées Composants 2002 : Systèmes à composants adaptables et extensibles (Adaptable and Extensible Component Systems), November 2002
Gansner E.R. and North S.C. (2000). An open graph visualization system and its applications to software engineering. Softw. Pract. Exp. 30(11): 1203–1233
Sun Microsystems. Java Pet Store Demo 1.3.2 (2003). http://java.sun.com/developer/releases/petstore/
BEA Systems, Inc. Avitek Medical Records 1.0 Architecture Guide (2003)
Grundy, J., Ding, G.: Automatic validation of deployed j2ee components using aspects. In ASE ’02: Proceedings of the 17th IEEE International Conference on Automated Software Engineering. Washington, DC, USA, p. 47. IEEE Computer Society (2002)
Hatcliff, J., Deng, X., Dwyer, M.B., Jung, G., Ranganath, V.P.: Cadena: An integrated development, analysis, and verification environment for component-based systems. In: International Conference on Software Engineering (ICSE), pp. 160–173 (2003)
Demartini, C., Iosif, R., Sisto, R.: dSPIN: a dynamic extension of SPIN. In SPIN, pp. 261–276 (1999)
Naumovich G. and Centonze P. (2004). Static analysis of role-based access control in J2EE applications. SIGSOFT Softw. Eng. Not. 29(5): 1–10
Clarke, D., Richmond, M., Noble, J.: Saving the World from Bad Beans: Deployment-Time Confinement Checking. In: OOPSLA ’03: Proceedings of the 18th annual ACM SIGPLAN Conference on Object-Oriented Programing, Systems, Languages, and Applications. New York, NY, USA, pp. 374–387. ACM Press, New York (2003)
Reimer, D., Schonberg, E., Srinivas, K., Srinivasan, H., Dolby, J., Kershenbaum, A., Koved, L.: Validating Structural Properties of Nested Objects. In: OOPSLA ’04: Companion to the 19th annual ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications. New York, NY, USA, pp. 294–304. ACM Press, New York (2004)
Adamek J. and Plasil F. (2005). Component Composition Errors and Update Atomicity: Static Analysis. J. Softw. Mainten. Evolut. Res. Pract. 17(5): 363–377
Plasil, F.: Enhancing component specification by behavior description: the SOFA Experience. In: WISICT ’05: Proceedings of the 4th International Symposium on Information and Communication Technologies, pp. 185–190. Trinity College Dublin (2005)
Bacon, D.F., Sweeney, P.F.: Fast Static Analysis of C++ Virtual Function Calls. In: OOPSLA ’96: Proceedings of the 11th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pp. 324–341. ACM Press, New York (1996)
Fernandez, M.F.: Simple and effective link-time optimization of Modula-3 Programs. In: SIGPLAN Conference on Programming Language Design and Implementation, pp. 103–115 (1995)
Sundaresan, V., Hendren, L., Razafimahefa, C., Vallée-Rai, R., Lam, P., Gagnon, E., Godin, C.: Practical virtual method call resolution for Java. In OOPSLA ’00: Proceedings of the 15th ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications. New York, NY, USA, pp. 264–280. ACM Press, New York (2000)
Hearn, A.C.: REDUCE User’s and Contributed Packages Manual, Version 3.7. Knorad-Zuse-Zentrum Berlin, Germany, February 1999
Cardelli L. (1996). Handbook of Computer Science and Engineering, chapter Type Systems. CRC Press, New York
Author information
Authors and Affiliations
Corresponding author
Additional information
The support of the Informatics Commercialisation initiative of Enterprise Ireland is gratefully acknowledged.
Rights and permissions
About this article
Cite this article
Trofin, M., Murphy, J. Static verification of component composition in contextual composition frameworks. Int J Softw Tools Technol Transf 10, 247–261 (2008). https://doi.org/10.1007/s10009-007-0061-y
Received:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10009-007-0061-y