Aspect-Oriented Development of Crosscutting Features in Distributed, Heterogeneous Systems

  • Eric Wohlstadter
  • Premkumar Devanbu
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4242)

Abstract

Some “non-” or “extra-functional” features, such as reliability, security, and tracing, defy modularization mechanisms in programming languages. This makes such features hard to design, implement, and maintain. Implementing such features within a single platform, using a single language, is hard enough. With distributed, heterogeneous systems, these features induce complex implementations which crosscut different languages, OSs, and hardware platforms, while still needing to share data and events. Worse still, the precise requirements for such features are often locality-dependent and discovered late (e.g., security policies). This paper describes an interface description language, Dado, to help program crosscutting features in CORBA based middleware software through an aspect-oriented programming. A Dado specification comprises pairs of adaptlets which are explicitly modeled in an extended version of CORBA IDL. Dado supports flexible and type-checked interactions (using generated stubs and skeletons) between adaptlets and between objects and adaptlets. Dado also supports co-ordinated, run-time binding of adaptlet-based features to applications in a distributed setting.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Tarr, P.L., Ossher, H., Harrison, W.H., Sutton Jr., S.M.: N degrees of separation: Multi-dimensional separation of concerns. In: International Conference on Software Engineering (1999)Google Scholar
  2. 2.
    Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An Overview of AspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, p. 327. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  3. 3.
    Murphy, G.C., Lai, A., Walker, R.J., Robillard, M.P.: Separating features in source code: An exploratory study. In: International Conference on Software Engineering (2001)Google Scholar
  4. 4.
    Coady, Y., Brodsky, A., Brodsky, D., Pomkoski, J., Gudmundson, S., Ong, J.S., Kiczales, G.: Can AOP support extensibility in client-server architectures? In: Proceedings, ECOOP Aspect-Oriented Programming Workshop (2001)Google Scholar
  5. 5.
    Wohlstadter, E., Jackson, S., Devanbu, P.: DADO: Enhancing Middleware to Support Crosscutting Features in Distributed Heterogeneous Systems. In: Proc. of the International Conference on Software Engineering (2003)Google Scholar
  6. 6.
    Smaragdakis, Y., Batory, D.: Mixin layers: An object-oriented implementation technique for refinements and collaboration-based designs. Software Engineering and Methodology 11(2), 215–255 (2002)CrossRefGoogle Scholar
  7. 7.
    Amsler, T., Walters, R.: (Open RCT home), http://davinci.cs.ucdavis.edu/
  8. 8.
    Dean, D., Stubblefield, A.: Using Client Puzzles to Protect TLS. In: Proc. of USENIX Security Symposium (2001)Google Scholar
  9. 9.
    Balzer, B.: Transformational implementation: An example. IEEE Transactions on Software Engineering 7(1) (1981)Google Scholar
  10. 10.
    des Rivieres, J., Smith, B.: The implementation of procedurally reflective languages. Technical Report ISL-4, Xerox PARC (1984)Google Scholar
  11. 11.
    Aksit, M., Wakita, K., Bosch, J., Bergmans, L., Yonezawa, A.: Abstracting Object Interactions Using Composition Filters. In: Proceedings of the ECOOP 1993 Workshop on Object-Based Distributed Programming (1993)Google Scholar
  12. 12.
    Chiba, S.: A metaobject protocol for C++. In: Object Oriented Programming, Systems, Languages, and Applications (OOPSLA) (1995)Google Scholar
  13. 13.
    Tatsubori, M., Chiba, S., Itano, K., Killijian, M.O.: Openjava: A class-based macro system for java. In: OOPSLA Workshop on Reflection and Software Engineering (1999)Google Scholar
  14. 14.
    Chiba, S.: Load-Time Structural Reflection in Java. In: Bertino, E. (ed.) ECOOP 2000. LNCS, vol. 1850, pp. 313–336. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  15. 15.
    Smaragdakis, Y., Batory, D.: Implementing Layered Designs with Mixin Layers. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, p. 550. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  16. 16.
    Walker, R.J., Murphy, G.C.: Implicit context: easing software evolution and reuse. In: Foundations of Software Engineering (2000)Google Scholar
  17. 17.
    Liang, S., Hudak, P., Jones, M.: Monad transformers and modular interpreters. In: Symposium on Principles of Programming Languages (1995)Google Scholar
  18. 18.
    Wang, N., Parameswaran, K., Schmidt, D.: The design and performance of meta-programming mechanisms for object request broker middleware. In: Conference on Object-Oriented Technologies and Systems (COOTS) (2000)Google Scholar
  19. 19.
    Narasimhan, P., Moser, L., Mellior-Smith, P.: Using interceptors to enhance CORBA. IEEE Computer (1999)Google Scholar
  20. 20.
    Kon, F., Román, M., Liu, P., Mao, J., Yamane, T., Magalhães, L.C., Campbell, R.H.: Monitoring, Security, and Dynamic Configuration with the dynamicTAO Reflective ORB. In: Coulson, G., Sventek, J. (eds.) Middleware 2000. LNCS, vol. 1795, p. 121. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  21. 21.
    Clarke, M., Blair, G., Coulson, G., Parlavantzas, N.: An efficient component model for the construction of adaptive middleware. In: Guerraoui, R. (ed.) Middleware 2001. LNCS, vol. 2218, p. 160. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  22. 22.
    Fraser, T., Badger, L., Feldman, M.: Hardening COTS software with generic software wrappers. In: IEEE Symposium on Security and Privacy (1999)Google Scholar
  23. 23.
    Souder, T.S., Mancoridis, S.: A tool for securely integrating legacy systems into a distributed environment. In: Working Conference on Reverse Engineering (1999)Google Scholar
  24. 24.
    Roman, E., Ambler, S., Jewell, T.: Mastering Enterprise JavaBeans. Wiley, Chichester (2001)Google Scholar
  25. 25.
    http://www.jboss.org JBoss (4.0 edn.)
  26. 26.
    Cohen, T., Gil, J.: AspectJ2EE = AOP + J2EE: Towards an aspect based, programmable and extensible middleware framework. In: Odersky, M. (ed.) ECOOP 2004. LNCS, vol. 3086, pp. 221–245. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  27. 27.
    http://aspectwerkz.codehaus.org/ AspectWerkz (2 edn.)
  28. 28.
    http://www.springframework.org Spring Framework (1.2.3 edn.)
  29. 29.
    Pawlak, R., Seinturier, L., Duchien, L., Florin, G.: JAC: A Flexible Solution for Aspect-Oriented Programming in Java. In: Yonezawa, A., Matsuoka, S. (eds.) Reflection 2001. LNCS, vol. 2192, p. 1. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  30. 30.
    Zhang, C., Gao, D., Jacobsen, H.A.: Towards just-in-time middleware architectures. In: International Conference on Aspect-Oriented Software Development (2005)Google Scholar
  31. 31.
    Brose, G.: JacORB: Implementation and design of a Java ORB. In: Proc. of the International Working Conference on Distributed Applications and Interoperable Systems, pp. 143–154 (1997)Google Scholar
  32. 32.
    Schmidt, D.: Using design patterns to develop reusable object-oriented communication software. Communications of the ACM 38(10), 65–74 (1995)CrossRefGoogle Scholar
  33. 33.
    Object Management Group: CORBA 3.0 Specification (3.0 edn.)Google Scholar
  34. 34.
    Romer, T., Lee, G.V.D., Wolman, A., Wong, W., Levy, H., Bershad, B.N., Chen, J.B.: Instrumentation and optimization of Win32/Intel executables using etch. In: Usenix Windows NT Workshop (1997)Google Scholar
  35. 35.
    Blair, G., Campbell, R. (eds.): Reflective Middleware (2000)Google Scholar
  36. 36.
    Duclos, F., Estublier, J., Morat, P.: Describing and using non functional aspects in component based applications. In: International Conference on Aspect-Oriented Software Development (2002)Google Scholar
  37. 37.
    Gamma, E., Helm, R., Johnson, R., Viissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1994)Google Scholar
  38. 38.
    Truyen, E., Vanhaute, B., Joosen, W., Verbaeten, P., Jorgensen, B.N.: Dynamic and selective combination of extensions in component-based applications. In: International Conference on Software Engineering (2001)Google Scholar
  39. 39.
    Wohlstadter, E.: Aspect-Oriented Development of Distributed Object Applications. PhD thesis, University of California at Davis (2005)Google Scholar
  40. 40.
    Popovici, A., Alonso, G., Gross, T.: Spontaneous container services. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol. 2743. Springer, Heidelberg (2003)Google Scholar
  41. 41.
    Loyall, J., Bakken, D., Schantz, R., Zinky, J., Karr, D., Vanegas, R., Anderson, K.: QuO Aspect languages and their runtime integration. In: Proceedings of the Fourth Workshop on Languages, Compilers and Runtime Systems for Scalable Components (1998)Google Scholar
  42. 42.
    Vanegas, R., Zinky, J., Loyall, J., Karr, D., Schantz, R., Bakken, D.: Quo’s runtime support for quality of service in distributed objects. In: International Conference on Distributed Systems Platforms and Open Distributed Processing (Middleware) (1998)Google Scholar
  43. 43.
    Hauck, F., Becker, U., Geier, M., Meier, E., Rastofer, U., Steckermeier, M.: Aspectix: a quality-aware, object-based middleware architecture. In: Proc. of the 3rd IFIP Int. Conf. on Distrib. Appl. and Interoperable Sys. (2001)Google Scholar
  44. 44.
    Chen, W.K., Hiltunen, M., Schlichting, R.: Constructing adaptive software in distributed systems. In: International Conference on Distributed Computing Systems (2001)Google Scholar
  45. 45.
    He, J., Hiltunen, M.A., Rajagopalan, M., Schlichting, R.D.: Providing qoS customization in distributed object systems. In: Guerraoui, R. (ed.) Middleware 2001. LNCS, vol. 2218, p. 351. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  46. 46.
    Nishizawa, M., Chiba, S., Tatsubori, M.: Remote pointcut - a language construct for distributed aop. In: Proc. of the International Conference on Aspect-Oriented Programming (2004)Google Scholar
  47. 47.
    Mehta, N.R., Medvidovic, N., Phadke, S.: Towards a taxonomy of software connectors. In: International Conference on Software engineering (2000)Google Scholar
  48. 48.
    Perry, D.E., Wolf, A.L.: Foundations for the study of software architecture. ACM SIGSOFT Software Engineering Notes 17(4) (1992)Google Scholar
  49. 49.
    Allen, R., Garlan, D.: A formal basis for architectural connection. ACM Transactions on Software Engineering and Methodology 6(3) (1997)Google Scholar
  50. 50.
    Ducasse, S., Richner, T.: Executable connectors: towards reusable design elements. In: Foundation of Software Engineering (1997)Google Scholar
  51. 51.
    Shaw, M., DeLine, R., Klein, D.V., Ross, T.L., Young, D.M., Zelesnik, G.: Abstractions for software architecture and tools to support them. Software Engineering 21(4) (1995)Google Scholar
  52. 52.
    Dashofy, E.M., Medvidovic, N., Taylor, R.N.: Using off-the-shelf middleware to implement connectors in distributed architectures. In: International Conference on Software Engineering (1999)Google Scholar
  53. 53.
    Spitznagel, B., Garlan, D.: A compositional approach to constructing connectors. In: Working IEEE/IFIP Conference on Software Architecture (WISCA) (2001)Google Scholar
  54. 54.
    Wohlstadter, E., Tai, S., Mikalsen, T., Rouvellou, I., Devanbu, P.: GlueQoS: Middleware to Sweeten Quality-of-Service Policy Conflicts. In: Proc. of the International Conference on Software Engineering (2004)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Eric Wohlstadter
    • 1
  • Premkumar Devanbu
    • 2
  1. 1.University of British ColumbiaVancouverCanada
  2. 2.University of CaliforniaDavisUSA

Personalised recommendations