Multi-Dimensional Separation of Concerns and the Hyperspace Approach
- 122 Downloads
Separation of concerns is at the core of software engineering, and has been for decades. This has led to the invention of many interesting, and effective, modularization approaches. Yet many of the problems it is supposed to alleviate are still with us, including dangerous and expensive invasive change, and obstacles to reuse and component integration. A key reason is that one needs different decompositions according to different concerns at different times, but most languages and modularization approaches support only one “dominant” kind of modularization (e.g., by class in object-oriented languages). Once a system has been decomposed, extensive refactoring and reengineering are needed to remodularize it.
Multi–dimensional separation of concerns allows simultaneous separation according to multiple, arbitrary kinds (dimensions) of concerns, with on-demand remodularization. Concerns can overlap and interact. This paper discusses multi-dimensional separation of concerns in general, our particular approach to providing it, called hyperspaces, and our support for hyperspaces in Java™, called Hyper/J™.
KeywordsSeparation of concerns software decomposition and composition modularization evolution traceability limited impact of change
Unable to display preview. Download preview PDF.
- 1.R. Allen and D. Garlan. A formal basis for architectural connection. ACM Transactions on Software Engineering and Methodology, July, 1997.Google Scholar
- 2.E. P. Andersen and T. Reenskaug. System design by composing structures of interacting objects. In ECOOP ′92: European Conference on Object-Oriented Programming, Springer-Verlag. LNCS, no. 615, pp. 133–152, Utrecht, June/July 1992.Google Scholar
- 4.S. Clarke, W. Harrison, H. Ossher and P. Tarr. Subject-oriented design: Towards improved alignment of requirements, design and code. In Proceedings of the Conference on Object-Oriented Programming: Systems, Languages, and Applications, pages 325–339, November, 1999. ACM.Google Scholar
- 5.D. D’Souza and A. C. Wills. Objects, Components, and Frameworks with UML: The Catalysis Approach. Addison-Wesley, 1998.Google Scholar
- 6.E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.Google Scholar
- 7.J. Gosling, et al.. The Java ™ Language Specification. Addison-Wesley, 1996.Google Scholar
- 8.W. Harrison and H. Ossher. Subject-oriented programming (a critique of pure objects). In Proceedings of the Conference on Object-Oriented Programming: Systems, Languages, and Applications, pages 411–428, September 1993. ACM.Google Scholar
- 9.I. M. Holland. Specifying reusable components using contracts. In ECOOP ′92: European Conference on Object-Oriented Programming, Springer-Verlag. LNCS 615, pp. 287–308, Utrecht, June/July 1992.Google Scholar
- 10.Hyperspace web site, http://www.research.ibm.com/hyperspace.
- 11.M. Jackson. Some complexities in computer-based systems and their implications for system development. In Proceedings of the International Conference on Computer Systems and Software Engineering, pages 344–351, 1990.Google Scholar
- 13.G. Kiczales. Aspect-oriented programming. In ECOOP ′97: European Conference on Object-Oriented Programming, 1997. Invited presentation.Google Scholar
- 14.Doug Kimelman, Multidimensional tree-structured spaces for separation of concerns in software development environments. Position paper, OOPSLA ′99 Workshop on Multi-Dimensional Separation of Concerns in Object-Oriented Systems, http://www.cs.ubc.ca/~murphy/multid-workshop-oopsla99.
- 15.M. Mezini and K. Lieberherr. Adaptive plug-and-play components for evolutionary software development. In Proceedings of the Conference on Object-Oriented Programming: Systems, Languages, and Applications, October, 1998.Google Scholar
- 19.H. Ossher and P. Tarr, Operation-level composition: A case in (join) point. In ECOOP ′98 Workshop Reader, pages 406–409, July 1998. Springer Verlag. LNCS 1543.Google Scholar
- 21.D. L. Parnas, On the Design and Development of Program Families. In IEEE Transactions on Software Engineering, 2(1), March 1976.Google Scholar
- 22.J. Rumbaugh, I. Jacobson, and G. Booch. Unified Modeling Language Reference Manual. Addison-Wesley, 1998.Google Scholar
- 23.M. Shaw and D. Garlan. Software Architecture: Perspectives on an Emerging Discipline. Prentice Hall, April 1996.Google Scholar
- 24.P. L. Tarr and L. A. Clarke. PLEIADES: An object management system for software engineering environments. In Proceedings of the ACM SIGSOFT ′93 Symposium on Foundations of Software Engineering, pages 56–70, December, 1993.Google Scholar
- 27.M. VanHilst and D. Notkin. Using roles components to implement collaboration-based designs. In Proceedings of the Conference on Object-Oriented Programming: Systems, Languages, and Applications, pages 359–369, October 1996. ACM.Google Scholar