Modules for Crosscutting Models
Traditional programming languages assume that real-world systems have “intuitive”, mind-independent, preexisting concept hierarchies. However, our perception of the world depends heavily on the context from which it is viewed: Every software system can be viewed from multiple different perspectives, and each of these perspectives may imply a different decomposition of the concerns. The hierarchy which we choose to decompose our software system into modules is to a large degree arbitrary, although it has a big influence on the software engineering properties of the software. We identify this arbitrariness of the decomposition hierarchy as the main cause of ‘code tangling’ and present a new model called Caesar 1, within which it is possible to have multiple different decompositions simultaneously and to add new decompositions on-demand.
KeywordsTree Node Bidirectional Communication Nest Type Object Node Architecture Description Language
Unable to display preview. Download preview PDF.
- 1.E. Ernst. Family polymorphism. In Proceedings of ECOOP’01, LNCS 2072, pages 303–326. Springer, 2001.Google Scholar
- 3.U. Hölzle. Integrating independently-developed components in object-oriented languages. In Proceedings ECOOP’93, LNCS, 1993.Google Scholar
- 4.Java Foundation Classes. http://java.sun.com/products/jfc/.
- 6.O.L. Madsen and B. Møller-Pedersen. Virtual classes: A powerful mechanism in object-oriented programming. In Proceedings of OOPSLA’ 89. ACM SIGPLAN, 1989.Google Scholar
- 7.J. Magee and J. Kramer. Dynamic structure in software architecture. In Proceedings of the ACM SIGSOFT’96 Symposium on Foundations of Software Engineering, 1996.Google Scholar
- 8.S. McDirmid, M. Flatt, and W. Hsieh. Jiazzi: New age components for old fashioned Java. In Proceedings of OOPSLA’ 01, 2001.Google Scholar
- 9.N. Medvidovic, P. Oreizy, and R.N. Taylor. Reuse of off-the-shelf components in C2-style architectures. In Proceedings of the 1997 international conference on Software engineering, pages 692–700, 1997.Google Scholar
- 10.M. Mezini and K. Lieberherr. Adaptive plug-and-play components for evolutionary software development. In Proceedings OOPSLA’ 98, ACM SIGPLAN Notices, 1998.Google Scholar
- 11.M. Mezini and K. Ostermann. Integrating independent components with on-demand remodularization. In Proceedings of OOPSLA’ 02, Seattle, USA, 2002.Google Scholar
- 12.M. Mezini and K. Ostermann. Conquering aspects with Caesar. In Proc. International Conference on Aspect-Oriented Software Development (AOSD’ 03), Boston, USA, 2003.Google Scholar
- 13.M. Mezini, L. Seiter, and K. Lieberherr. Component integration with pluggable composite adapters. In M. Aksit, editor, Software Architectures and Component Technology: The State of the Art in Research and Practice. Kluwer, 2001. University of Twente, The Netherlands.Google Scholar
- 15.C.H. Pedersen. Extending ordinary inheritance schemes to include generalization. In OOPSLA’ 89 Proceedings, 1989.Google Scholar
- 16.M. Shaw and D. Garlan. Software Architecture: Perspectives on an Emerging Discipline. PrenticeHall, 1996.Google Scholar
- 17.P. Tarr, H. Ossher, W. Harrison, and S.M. Sutton. N degrees of separation: Multidimensional separation of concerns. In Proc. International Conference on Software Engineering (ICSE 99), 1999.Google Scholar
- 18.K.K. Thorup. Genericity in Java with virtual types. In Proceedings ECOOP’ 97, 1997.Google Scholar