Thursday, March 13, 2003
(Computer Science conference room)
Separation of concerns has always been a prime directive in the development of software that is cost-effective to produce, robust, maintainable, and extensible. Programming language designers have continuously sought to facilitate this approach through the invention of many language constructs. These include the GO TO statement, the if statement, the subroutine, the object, and inheritance. However, experience shows that these constructs, however useful, do not go far enough. Developers find that their software is still not always easy to change in response to new or changing requirements. Too many separate pieces of code must be changed for what appears to be a "simple request" from a customer, and certain concerns seem to be ubiquitous in the code body no matter how one attempts to isolate them.
Some of the latest attempts to solve these problems fall into a category called "Aspect-Oriented Programming". An "aspect" can be seen to represent a codified representation of a concern. In this colloquium I will define the field of AOP in more detail and present a couple of language systems that claim to realize AOP in some form.