The first workshop on multi-dimensional separation of concerns in object-oriented systems will occur at OOPSLA '99 on Monday November 1, 1999.

Separation of concerns is at the core of object-oriented software development. It can provide a host of well-known and crucial benefits, but only if one has the right modularization at the right time: the concerns that are separated must match the concerns one needs to deal with. Unfortunately, different development activities often involve concerns of dramatically different kinds. For example, changing a data representation in an object-oriented system is typically well localized because of modularization by class, whereas adding a new feature to a system typically involves invasive changes to many classes: the feature code is scattered across multiple classes, and tangled with other code within those classes. One therefore needs different modularizations for different purposes: sometimes by class, sometimes by feature, sometimes by aspect (e.g., distribution or persistence), role, variant or other criterion.

The term multi-dimensional separation of concerns is being used to denote separation of concerns involving:

  1. Multiple, arbitrary kinds (dimensions) of concerns.
  2. Separation according to these concerns simultaneously; i.e., a developer is not forced to choose a small number (usually one) of "dominant" dimensions of concern at the expense of others.
  3. Overlapping or interacting concerns. It is appealing to think of many concerns as being independent or "orthogonal," but this is rarely the case in practice. It is essential to be able to support interacting concerns, while still achieving useful separation.

This workshop is intended to bring together researchers in this burgeoning area, and practitioners who have experienced problems that can help to guide the research. Specific areas of interest include:

  1. Development scenarios illustrating the need for multi-dimensional separation of concerns.
  2. Illustrations of concern overlap or interactions.
  3. Flexible, concern-based modularization and remodularization.
  4. Multi-dimensional separation of concerns throughout the software lifecycle, especially handling of concerns that span lifecycle phases and software artifacts.
  5. Adaptive programming, aspect-oriented programming, composition filters, conceptual modules, role-modeling, subject-oriented programming, views, viewpoints, and other related approaches.
  6. Theoretical foundations.
  7. Language support.
  8. Environment support.