Navigation: This page 'aop.html' ---> Using Dooy ---> Main Page. HELP. Admin. Contact.

Aspect-Oriented Programming

What has been called Aspect-Oriented Programming has arisen from within the Object-Oriented Community in computer science, technology and industry. Kiczales et. al. [1997] seem to have been the first to use this term. It so happens that the use of the word 'aspect' is not a million miles from its use in Dooyeweerdian philosophy.

In an explanatory article (January 18, 2002) by Ramnivas Laddad, "I want my AOP!", we find:

"Most software systems consist of several concerns that crosscut multiple modules. Object-oriented techniques for implementing such concerns result in systems that are invasive to implement, tough to understand, and difficult to evolve. The new aspect-oriented programming (AOP) methodology facilitates modularization of crosscutting concerns."

These 'crosscutting concerns' are each "a particular goal, concept, or area of interest." Laddad continues,

"In technology terms, a typical software system comprises several core and system-level concerns. For example, a credit card processing system's core concern would process payments, while its system-level concerns would handle logging, transaction integrity, authentication, security, performance, and so on. Many such concerns -- known as crosscutting concerns -- tend to affect multiple implementation modules. Using current programming methodologies, crosscutting concerns span over multiple modules, resulting in systems that are harder to design, understand, implement, and evolve.

"Aspect-oriented programming (AOP) better separates concerns than previous methodologies, thereby providing modularization of crosscutting concerns."

We can see at once that this reflects at least the spirit of Dooyeweerdian aspects. Concerns like payments, logging, performance, etc. can be seen as themes within the following Dooyeweerdian aspects: the juridical, lingual, formative.

The main issue in AOP seems to be the methodological one of separating out distinct concerns so that they may be implemented more easily in computer systems and more appropriately related. The result, says Laddad, is:

"Using AOP, you can create implementations that are easier to design, understand, and maintain. Further, AOP promises higher productivity, improved quality, and better ability to implement newer features."

Dooyeweerdian aspectual analysis promises, among other things, to:

If these advantages of Dooyeweerdian thinking were to be applied to computer systems design and implementation then we might expect very similar tangible benefits as are claimed for AOP, and for the same reasons: separation of things that should be separated.

An added - though perhaps accidental - similarity between AOP and Dooyeweerd's ideas is the use of the metaphor of the prism. Laddad "presents a set of requirements as a light beam passing through a prism. We pass a requirements light beam through a concern-identifier prism, which separates each concern." Dooyeweerd says that his aspects are separated out by the 'prism' of time.

So, there might be significant benefit to both Dooyeweerdian thinking and Aspect Oriented Programming if the contribution that each might make to the other were to be investigated.

Possible Contribution of Dooyeweerd to AOP

How might Dooyeweerd's ideas contribute to AOP? It has been suggested that his ideas can contribute to information systems in four areas:

AOP seems to be concerned with the second and third: with methodology for constructing artifacts for use in the real world, and with shaping technology, especially OO technology.

Here is a brief list of suggestions how Dooyeweerd might be of use.