CENTERFOLD: Computer Society - 6:30 pm, Thursday, February 26 Smaller, More Evolveable Software Karl Lieberherr, College of Computer Science, Northestern University Most applications have some features that cut across the modules that make up the software. These features increase the complexity of the software significantly, making the software harder to write, maintain, and evolve. We present here an approach to software, Aspect-Oriented Programming (AOP), that results in software that is both smaller and more generic, leading to looser coupling among the different parts of the software, and simpler initial development, maintenance, and evolution of the system. At Marcam Corporation, 95 Wells Avenue, Newton, MA. For more information, please contact Sam Cardman at (781) 271-8636 (sc@mitre.org). FULL ARTICLE: Smaller, More Evolveable Software Karl Lieberherr College of Computer Science, Northestern University Even with present technologies, software is complex, thus hard to write, maintain, and evolve as needs change. Much of this complexity comes from the tangling that the software must have to provide for features that involve many different components spread throughout the system. Even with object-oriented technology, this tangling means that in addition to still being hard to write initially, applications will also face maintenance and evolution problems similar to those of earlier, non-object-oriented systems. One very effective response to this problem is aspect-oriented programming (AOP), an emerging programming technique which distinguishes between 'components' (which can be cleanly encapsulated in generalized procedures, the functional modules of the language) and 'aspects' (which cannot be so cleanly encapsulated, but which cut across, or affect, many different parts of the overall program), thus allowing developers to work explicitly with the aspects of the solution. In this approach, the aspects are described clearly and succinctly, and with minimal redundancy both within a given description and among different descriptions. Changes to the aspect are limited to the aspect description itself rather than spread throughout the program, and changes to one aspect have limited impact on other aspects and components. Thus, this approach increases robustness of the resulting system and simplifies system maintenance and evolution. One special case of aspect-oriented programming is 'adaptive programming', in which one of the aspects is expressible in terms of graphs and the other aspects or components follow 'strategies' to control and interpret references to these graphs. We have developed a system to support this approach, Demeter. Its latest incarnation, Demeter/Java, supports five basic aspects (Structure, Behavior, Object Description, Synchronization, and Remote Invocation). With Demeter, programs can adapt, without change, to interesting changes in the object structure. This capability allows simpler and more understandable programs and easier (and even partially automated) evolution. In this presentation, we discuss this approach and how we make it work. We describe Demeter, the system we have developed to support this approach, and its latest incarnation, Demeter/Java, a perfect example of AOP. And we illustrate the benefits of this approach in terms of a bus simulation example and show the link between this approach and the Law of Demeter. Professor Karl Lieberherr (http://www.ccs.neu.edu/home/lieber/) received his PhD in Mathematics at ETH Zurich in Switzerland. Currently as a Professor of Computer Science at Northeastern University, he teaches a number of courses on software development. He is Founding Editor-in-Chief with Roberto Zicari for the John Wiley journal "Theory and Practice of Object Systems" (TAPOS), and he has published extensively in the literature, and has recently published the book, Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns. He serves on the Advisory Board of Tendril Software, Inc., a company commercializing some of the ideas behind Demeter. This meeting is sponsored by the Boston Section of the IEEE Computer Society. Meeting begins at 6:30 pm. Coffee at 6:15 pm. A no-host dinner follows. More info: Sam Cardman at (781) 271-8636 (sc@mitre.org).