Marco Papacchini

Advanced Separation of Concerns

«Our heads are so small that we cannot deal with multiple aspects simultaneously without getting confused»
(Edsger W. Dijkstra)

Separation of Concerns is a fundamental technique to cope with complexity. A concern is any coherent issue in the problem domain. It is very important identifing and encapsulating those parts of software that are relevant to a particular purpose, each addressing one o more concerns. Software can be then decomposed and organized in more manageable parts and this results in greater comprehensibility, reusability, scalability and maintainability.

Programming languages offer many abstaction mechanisms for realizing that. But abstractions offered by most languages commonly in use (procedures, functions, objects, modules, interfaces) are functional components of the system (they can be called to perform a function). Nevertheless there are many properties that don't align with this kind of decomposition (e.g. persistence and real-time constraints), that are then scattered accross multiple functional components. The source code then results in a tangled mess of instructions. This adds a needless complexity to software systems, which increases dependencies between the functional parts, reducing comprehensibility, reusability, scalability and maintainability.

Avanced Separation of Concerns is a new approach, which aims to reduce the problem of code tangling and therefore improve the quality of software. Aspect-Oriented Programming is a leading paradigm in this context.

© Copyright Marco Papacchini