Special track on Programming for Separation of Concerns: editorial message

Complex systems are intrinsically expensive to develop because several concerns must be addressed simultaneously. Once the development phase is over, these systems are often hard to reuse and evolve because their concerns are intertwined and making apparently small changes forces programmers to modify many parts. Moreover, legacy systems are difficult to evolve due the following problems: the lack of a well defined architecture, use of several programming languages and paradigms, etc.