|
|
|
|
Multi-dimensional separation of concerns is a new approach to separation of concerns, supporting construction, evolution and integration of software. Its goals are to enable:
Separation of concerns is a concept that is at the core of software engineering. It refers to the ability to identify, encapsulate, and manipulate those parts of software that are relevant to a particular concern (concept, goal, purpose, etc.). Concerns are the primary motivation for organizing and decomposing software into manageable and comprehensible parts. Many kinds of concerns may be relevant to different developers in different roles, or at different stages of the software lifecycle. For example, the prevalent concern in object-oriented programming is the class, which encapsulates data concerns. Feature concerns, like printing, persistence, and display capabilities, are also common, as are concerns like aspects, roles, variants, and configurations. Appropriate separation of concerns has been hypothesized to reduce software complexity and improve comprehensibility; promote traceability; facilitiate reuse, non-invasive adaptation, customization, and evolution; and simplify component integration. These goals, while laudable, have not yet been achieved in practice. We believe this is because the set of relevant concerns varies over time and is context-sensitive--different development activities, stages of the software lifecycle, developers, and roles often involve concerns of dramatically different kinds. Thus, any criterion for decomposition will be appropriate for some contexts, but not for all. Further, multiple kinds of concerns may be relevant simultaneously, and they may overlap and interact, as features and classes do. We use the term multi-dimensional separation of concerns (MDSOC) to refer to flexible and incremental separation, modularization, and integration of software artifacts based on any number of concerns. It overcomes limitations of existing mechanisms by permitting clean separation of multiple, potentially overlapping and interacting concerns simultaneously, with support for on-demand remodularization to encapsulate new concerns at any time. Realizations of MDSOC can permit incremental identification and encapsulation of concerns, without requiring the use of new languages or formalisms. MDSOC promotes reuse, improves comprehension, reduces the impact of change, eases maintenance and evolution, improves traceability, and opens the door to system refactoring and reengineering. Thus, it addresses some fundamental limitations in software engineering. Hyperspaces are our approach to achieving MDSOC. Hyperspaces also provide a powerful composition mechanism that facilitiates non-invasive integration, adaptation, and "plug-and-play." The approach has a low entry barrier, since it does not affect programming languages or processes--developers can continue to use their programming languages, development processes, development environments, and compilers of choice, while still reaping the benefits of multi-dimensional separation of concerns. We have defined a tool, called Hyper/J(TM), which provides support for hyperspaces in Java(TM). This tool is now available IBM's alphaWorks site, free of charge. Site Roadmap:
Guestbook:
If you have any questions or comments, click here to send us mail. |
![]()