Subject: RE: AOP interview questions
From: Karl Lieberherr (karllieberherr@attbi.com)
Date: Sat Feb 22 2003 - 21:32:22 EST
Hi Adam:
thanks for the good questions. Here are my answers.
1. My research group has been involved in AOP research for about 15 years,
although it was not called AOP back them. We proposed the Law of Demeter and
noted that when following it, we scatter the code across many classes. We
proposed Adaptive Programming (AP) as a solution. In AP, a program P(R) is
parameterized by another program R that Penhances, where R ranges over an
infinite family of structurally diverse programs. R may be a class graph or
an object graph that is enhanced with additional members. From another
perspective, in AP a program is parameterized by a traversal that defines
for a class (object) graph a static (dynamic) call graph visiting the nodes
and edges of the class (object) graph. A visitor is used to enhance the
static (dynamic) call graph with additional code. Parameterizing programs
with class graphs, object graphs, static and dynamic call graphs is at the
heart of AOP in the context of object-oriented programming. If programming
with the DJ library, the following types are used: ClassGraph, ObjectGraph,
Traversal (static call graph), ObjectGraphSlice (dynamic call graph) as
parameter types.
AspectJ, from PARC, is a programming language that has very strong support
for parameterizing programs over dynamic call graphs generalizing the
capabilities of AP. We are currently involved in both using AspectJ (for
example, to check the Law of Demeter) as well as in adding AP capabilities
to it ( http://daj.sf.net ). In AspectJ you have a rich pointcut language
to enhance dynamic call graphs which are a hidden parameter.
2. We became interested in the concepts of AOP because reading an
object-oriented program often feels like reading a program through a soda
straw. Information that should be modularized in one place is scattered all
over.
3. AOP is a natural improvement to object-oriented programming. But AOP can
also be applied to other paradigms, e.g. functional programming.
4. Yes, there are strong signs that AOP fills a real need of software
developers. But it is too early to tell and it usually takes 25 years or
more until a technology is widely adopted. For example, OOP was invented in
1967 but it became popular only in the early 1990's. Examples of systems
that use AOP are presented at the the annual AOSD conferences, the next one
in March 2003 in Boston, at Northeastern (aosd.net/conference). At AOSD
2003, Verizon presented a case study how they use AP in a mission-critical
application. There are several companies operating in the AOP space
including http://intentsoft.com/ and http://codagen.com.
5. AOP is still a young technology that needs to mature further.
6. The key advantages of AOP are: We write programs at a higher level of
abstraction by parameterizing them with graphs (call graphs and class graphs
and their instantiations). This parameterization facilitates modularization
of concerns that cut across call graphs and class graphs making programs
easier to read, write and understand. AOP will have a very beneficial effect
on use-case driven development by facilitating that
the use-case structure is preserved also in the executable program.
Let me know if you have questions/comments.
-- Karl
-----Original Message-----
From: Adam Lister [mailto:adaml@ccs.neu.edu]
Sent: Thursday, February 13, 2003 1:08 PM
To: Karl Lieberherr
Subject: AOP interview questions
Below are the list of questions described earlier:
1. Briefly describe your involvement in AOP research.
2. For what reasons did you become interested in the concepts AOP?
3. In what was does/can aspect-oriented programming fit into the
object-oriented programming paradigm? Is AOP destined to be an extension of
OOP? Can AOP fit into other paradigms?
4. Do you currently feel that AOP will be adopted by developers familiar
with OOP. If so, how long do you feel it will take for AOP to catch on as a
programming paradigm, and be used in a wide variety of software projects?
Can you offer examples in which AOP has been used successfully in important
software projects (either implemented by you or others).
5. What do you feel is the reason or reasons that AOP is not widely
accepted and used by developers already? Can you list reasons related to
the developers, the corporations that develop and market software
development technologies, or the youth of the paradigm itself?
6. What do you see as the key advantages of the AOP paradigm? As software
grows in complexity, will these advantages become more apparent?
Thanks for your time,
Adam Lister
This archive was generated by hypermail 2b28 : Sat Feb 22 2003 - 21:29:05 EST