Separation of Concerns: What Comes Next?
Separation of concerns is one of the key principles in design of complex software systems, which states that individual concerns must be identified and separated in software systems to increase various quality attributes such as maintainability and reusability. Various kinds of module abstractions such as functions, procedures, objects, aspects and event modules have been proposed to facilitate the realization of this principle. Likewise, several composition mechanisms such as method call, event-based communication, joint points/pointcuts, and polymorphism have been proposed to facilitate integrating modules to form the intended software. Software engineers are in an era that have to deal with software systems that must inevitably support some kinds of self-adaptation, have to deal with systems of systems that consist of many independently developed and managed software systems, and have to deal with massively parallel and distributed software systems. 
These raise the following questions, which we aim at addressing them in the panel:
  • Is separating concerns based on functions and/or data abstractions suitable for these kinds of systems? Where is the limit?
  • What are distinguishing characteristics of these systems from the perspective of modularity and composition?
  • Should we search for new abstractions/techniques to improve the modularity of these systems?
  • Are composition mechanisms of today too syntactic?
  • How can semantic-based modularization and composition help?
  • What are limitations to achieve semantic-based modularization and composition?
  • What comes next?
  •  Somayeh Malakuti, Technical University of Dresden, Germany
  • Mehmet Aksit, University of Twente, the Netherlands
  • Don Batory, University of Texas at Austin, USA
  • Cristina Lopes, University of California Irvine, USA
  • Harold Ossher, IBM, USA