Looking Back on Aspects by Ivar Jacobson

June 6, 2004

Often I am asked which my favourite country is. In addition to Sweden, where I grew up and have family, I have many favourite countries. Most countries have something that makes me feel happy and at home. Singapore is certainly one of them.

Last Thursday I held a seminar in Singapore for more than 200 persons and launched my latest adventure – the forming of a new company, Ivar Jacobson Pte Ltd. We will help organizations to implement the best practices of the unified process. We will also expand the set of best practices, not just help with the existing ones. For instance we will train and mentor organizations in aspect-oriented software development and active software development (using intelligent agents).

One of the best practices is about aspects. The first time I heard the term aspect-oriented programming was back in 1997. I immediately saw it as an interesting technology, but at the time I couldn’t take a serious look at. I was working on the first version of UML, I was working on getting RUP right and I was initiating an effort on active software processes – actually what now has resulted in Jaczone WayPointer. When I finally had time to take a good look at aspects it was in September 2002. I downloaded a lot of papers and studied them for a couple of days. After that I contacted Harold Ossher at IBM Research and Karl Lieberherr at North Eastern University in Boston. They are two of the leaders in this space. The most well-known guy on aspects is Gregor Kizcales. I tried to get his attention as well, but he was too busy at the moment.

In November 2002, I visited the IBM folks and spent a day with them understanding their work. After the meeting I was very impressed and excited about what they had done. I left their office, rushed to Newark airport; I had to run to the gate. This is normal. I was on my way to Stockholm. When I was seated in the plane, I ordered some champagne and began to relax and think a little. Suddenly, it struck me. Didn’t I do something similar before? Didn’t I write a paper on the same subject at OOPSLA’86 – the very first OOPSLA conference?

When I came to Stockholm, I started to hunt for the paper. It was a paper that discussed a topic that I mentioned as future work in my Ph. D. thesis from 1985. However, I got no interest for the ideas in the paper, so I decided to leave the subject. I felt it was too early to push those ideas. So I just forgot about it. My work on component-based development with objects and use cases was so successful so there was no room for new inventions. However, now I wanted to find the paper, I went to the publisher’s web site. I found the paper. I had to pay $95 to download it! My own paper!!!

The title of the paper is “Language Support for Changeable Large Real Time Systems”. In that paper I introduced several concepts – existion which represents a base, extension which represents separate functionality which you want to add to the existion. Instead of modifying the existion to invoke an extension, we used a mechanism to allow the extension to add behaviour into the existion. Thus from the perspective of the existion, no modification was needed. This means that you can add extensions after extensions without breaking the existion. The key idea is this: by keeping extensions separate from the base from the developer’s perspective, the system is much easier to understand, maintain and extend.

The basic idea sounded very much like what aspect orientation research is trying to achieve. But I needed confirmation. Two hours after I downloaded the paper I sent it to Karl Lieberherr. He responded: “Wow Ivar, this is an early paper on aspect-orientation”. He asked me if I had anything more. Since, I throw away everything I don’t work with; my first thought was that there was nothing more. However, I was excited, and my thoughts went back to the time before the paper. My memory asked me, “Didn’t you file a patent for a similar work?”

The patent was filed in 1981 and I made it as an employee of Ericsson. I called the Ericsson patent department and asked if they had saved the application. After a week they came back. I got a copy of the application – in Swedish. The application used typical patent language, so I had actually never understood it. It was written by a patent engineer. However, attached to the application was an internal Ericsson paper that described the whole idea in a couple of pages. It was a quite detailed paper with a practical example. This paper was also in Swedish. I had both documents translated by a professional translator into English, and you can find them on www.ivarjacobson.com (look for published papers and aspect-oriented software development).

The patent was about what we called a sequence variator. It works at the micro-program instruction level. The highlight of the design is this: A program has a list of instructions. To each instruction, I added a flag. If this flag is turned on, it means that there is an extension that needs to be executed at this point. The sequence variator will fetch instructions from the extension, and thereafter resume at the next instruction. This branching is taken care of by the sequence variator. The developer of the original instructions do not need to code branch statements.

Alright, to make a long story short, Karl Lieberherr and Harold Ossher liked my early work. Karl wrote an email where he compared my early work with modern aspect-orientation: Extension ˜ Aspect, extension point ˜ join point, etc. I then wrote a couple of papers on aspects and use cases (see www.jaczone.com/papers) , and I was a result invited to give keynote talks at international conferences on aspect orientation. I was very happy being recognized for my early work. Now I am working on a book on aspects and use cases together with my colleague Pan-Wei Ng from Singapore. You will soon see this book in bookstores. I will be very happy if you buy it :-). I will be even happier if you read it (because this is not the same) :-). You can also ask me for a presentation. After all, I am in the business of promoting best practices in software development.