Advertisement

Static verification of component composition in contextual composition frameworks

  • Mircea TrofinEmail author
  • John Murphy
Regular Contribution

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.

Keywords

Software components Contextual composition Static analysis Enterprise Java 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Sun Microsystems. Enterprise JavaBeans Specification (2003). http://java.sun.com/products/ejb/docs.html#specs
  2. Don Box. Essential COM. Addison-Wesley (1998)Google Scholar
  3. Object Management Group. Corba Component Model (2002). http://www.omg.org
  4. Ammons, G., Choi, J.-D., Gupta, M., Swamy, N.: Finding and removing performance bottlenecks in large systems. In: Proceedings of ECOOP (2004)Google Scholar
  5. 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)Google Scholar
  6. Trofin, M., Murphy, J.: Removing Redundant Boundary Checks in Contextual Composition Frameworks. J. Obj. Technol pp. 63–82, July–August 2006Google Scholar
  7. 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)Google Scholar
  8. 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)Google Scholar
  9. 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 CrossRefGoogle Scholar
  10. Lindholm, T., Yellin, F.: The JavaTM Virtual Machine Specification. Sun Microsystems, Inc. (1999)Google Scholar
  11. 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 2002Google Scholar
  12. 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 zbMATHCrossRefGoogle Scholar
  13. Sun Microsystems. Java Pet Store Demo 1.3.2 (2003). http://java.sun.com/developer/releases/petstore/
  14. BEA Systems, Inc. Avitek Medical Records 1.0 Architecture Guide (2003)Google Scholar
  15. 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)Google Scholar
  16. 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)Google Scholar
  17. Demartini, C., Iosif, R., Sisto, R.: dSPIN: a dynamic extension of SPIN. In SPIN, pp. 261–276 (1999)Google Scholar
  18. Naumovich G. and Centonze P. (2004). Static analysis of role-based access control in J2EE applications. SIGSOFT Softw. Eng. Not. 29(5): 1–10 CrossRefGoogle Scholar
  19. 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)Google Scholar
  20. 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)Google Scholar
  21. Adamek J. and Plasil F. (2005). Component Composition Errors and Update Atomicity: Static Analysis. J. Softw. Mainten. Evolut. Res. Pract. 17(5): 363–377 CrossRefGoogle Scholar
  22. 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)Google Scholar
  23. 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)Google Scholar
  24. 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)Google Scholar
  25. 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)Google Scholar
  26. Hearn, A.C.: REDUCE User’s and Contributed Packages Manual, Version 3.7. Knorad-Zuse-Zentrum Berlin, Germany, February 1999Google Scholar
  27. Cardelli L. (1996). Handbook of Computer Science and Engineering, chapter Type Systems. CRC Press, New York Google Scholar

Copyright information

© Springer-Verlag 2007

Authors and Affiliations

  1. 1.School of Computer Science and InformaticsUniversity College DublinDublinIreland

Personalised recommendations