Language Support for Evolvable Software: An Initial Assessment of Aspect-Oriented

Separation of concerns [1] is key to manage the complexity of understanding and evolving software. Software engineers have learned how to decompose a complex system into simpler sub-systems, with the goal of making the complexity of sub-problems tractable. Sub-problems are addressed relatively independently and the complete solution is built by gluing together the sub-solutions. The parts that compose the whole system are often modular units of functionality and this partitioning is well supported by existing programming languages, thanks to object orientation, functional decomposition, etc. Indeed, object-oriented programming languages, and the adoption of suitable programming techniques, are important steps in the direction of making software evolution easier. There are two major object-oriented concepts that affect evolution: encapsulation and inheritance. Encapsulation limits the effects of change to localized portion of code. Inheritance allows one to incrementally evolve a component by adding new features or redefining existing features. Both encapsulation and inheritance are instances of the more general concept of separation of concerns. However, sometimes a concern is not easily encapsulated in a functional unit, because it crosscuts the entire system, or parts of it. Synchronization, memory management, network distribution, load balancing, error checking, profiling, security are all aspects of computer problems that are unlikely to be separated in functional units.

[1]  Gul A. Agha,et al.  Concurrent object-oriented programming , 1993, CACM.

[2]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[3]  Oscar Nierstrasz,et al.  Composing active objects , 1993 .

[4]  Bashar Nuseibeh,et al.  Viewpoints: A Framework for Integrating Multiple Perspectives in System Development , 1992, Int. J. Softw. Eng. Knowl. Eng..

[5]  Robert J. Walker,et al.  An initial assessment of aspect-oriented programming , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[6]  Satoshi Matsuoka,et al.  Analysis of inheritance anomaly in object-oriented concurrent programming languages , 1993 .

[7]  Cristina V. Lopes,et al.  Open Implementation Design Guidelines , 1997, Proceedings of the (19th) International Conference on Software Engineering.