Abstract

Separation of concerns [Parnas72] 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 concept, goal, purpose, or issue.

Object-orientation has significantly improved our ability to achieve good separation of concerns. Developers can now produce modular implementations of fairly complex systems. However, software complexity has since grown to tremendous proportions. Thus today we face even more challenging development tasks and the next generation of separation of concerns problems are emerging.

Recently, many researchers have become aware of this fundamental problem and begun to gain some understanding about its underlying causes. They have proposed potential solutions based on, for example, new, crosscutting modularity mechanisms (aspects) and support for multiple dimensions of overlapping concerns. This workshop is intended to bring together those researchers interested in pushing the frontier in this important area. 

Themes and Goals

Main Theme: Separation of Concerns

Separation of concerns [Parnas72] 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 concept, goal, purpose, or issue.

Object-orientation with its enhanced encapsulation has succeeded in greatly improving on the degree of separation of concerns achievable with procedural programming. Thanks to OO more complex software systems can be built today than before the adoption of object-oriented methodologies and languages. However, software system's complexity has since grown to such proportions that we now face even more challenging development tasks and the next generation of separation of concerns problems are emerging. Consequently, even today, software systems still suffer greatly from poor separation of concerns which results in low maintainability, obscure code, high impact of change etc.

This can be traced back to the fact that current software methodologies and programming languages adhere too strictly to a model of hierarchical decomposition and composition. It is true that hierarchies are powerful organizational structures and hierarchical composition is therefore certainly a powerful and good way to organize software (both design and implementation). Nevertheless, the failure of current software methodology and languages can be attributed to a too strict adherence to this inherently good principle of hierarchical decomposition. Many researchers have come to realize that it is fundamentally flawed to force every aspect of a software system into a single, rigid hierarchical model. When trying to do so, one invariable runs into crosscutting concerns which do not fit into the 'dominant' hierarchy.

The main theme of this workshop is to identify and explore research and practitioners' experience related to providing good ways of modularizing crosscutting concerns [Kiczales-et-al-97] and breaking the so called 'tyranny of the dominant decomposition' (the limitation that only concerns that align with the dominant hierarchy can be separated) [Ossher-and-Tarr-2000], in all phases of the software development life-cycle.

Specific topics of interest include (but are not limited to): aspect-oriented programming, adaptive programming, composition filters, conceptual modules, generative programming, feature-based software engineering, hyperspaces, intentional programming, role-modeling, subject-oriented programming, viewpoints, views, etc.

Specific Workshop Goals: Dissemination of new ideas and preliminary results

This workshop is intended to bring together researchers and practitioners interested in pushing the frontier in supporting better separation of concerns in all phases of the development life cycle.

 Its primary goal is to stimulate dissemination of ideas between researchers and practitioners in this area of research. It will take the form of a mini conference. The workshop will allow researchers to present recent progress, preliminary results and new interesting ideas. It will be a forum both to test new ideas and to promote good existing ideas to evolve the field to a stage where it is benefits may be realized in software development. Not all attendees will be selected for presentation. Instead, papers will be selected for presentation based on quality, general interest and novelty of the presented ideas. Preference will be given to interesting, novel, perhaps non-fully developed ideas, over well established results, which can easily be disseminated elsewhere. It is also our hope that a set of collaborative research efforts will result from interactions at the workshop.