Complexity by Ivar Jacobson

November 15, 2003

Even if I am Swedish, it is not often that I give speeches in Sweden. However, once a year I have been invited to speak at the Nordic Rational User Conference. Thus, today I gave my talk about Use Cases and Aspects. This is probably my best talk ever. It is better received than anything I have talked about before. I think there are several reasons for this reaction. Use cases are already very well adopted. Aspects are new and hip. Use cases and aspects are really a couple - aspects are the missing link to keep use cases separate all the way down to code -- even down to runtime. If you want to learn more about use cases and aspects there are a couple of articles I have written on this subject, look at:

The conference ended with a panel discussion on the biggest challenges that we face in software. Each panellist was supposed to suggest one challenge only. The moderator then asked the audience to vote for the challenge they felt was most important. The superior winning challenge was Complexity in software development.

This was of course something I could wholeheartedly agree with. Since someone else gave the winning challenge I had to suggest something else: complexity in usage. Users usually only learn 10-20 percent of the features in an application. The rest they never learn. It is too complex, people don't read manuals, and even if they did, they would forget what they have read before putting it to use. 99% of all software of today is passive software. It is waiting for the user to figure out how to make the software useful. We need a new kind of software. We need active software. This is software that instead can figure out what the user is trying to accomplish and actively help him or her to be successful in doing just that.

The next question to the panellists was "How are we going to tackle complexity in software development". Here we heard all kinds of answers. I suggested that we need a new approach to software development. Software development has never been as complex as today. We need a new class of process & tools. We can't continue with a passive process like RUP and we can't continue using passive tools. We need active process & tools.

The winning proposal was that we need to invest more in training. About 70% of the audience voted for this proposal. Maybe 10% voted for active process & tools. I must admit I was quite disappointed. As if we have not invested in training over the years. Traditional training is simply not effective. It is done out of context with artificial examples and at a single point in time. With active processs and tools you learn as you work when you have a concrete business problem to solve. OK, I had to accept the answer, but to my inner self, I said that this will change. This is not the first time that I have suggested a new idea and almost no one liked it. A couple of years from now, I think we will see much more of active software. At the least I will work to make it happen.

Aspect Oriented Development by Ivar Jacobson

September 8, 2003

Last week I gave a talk on aspect-oriented software development at an IBM conference on this subject in Yorktown Heights. Last time I was at this IBM facility was in 1984 when I spent a year as a visiting scientist at MIT. IBM then offered me a job doing research in language development (Prolog-based). I was very excited about moving permanently to the US and so was my family. However, I decided to go back to Sweden to complete my thesis and get a Ph.D. If not, I probably wouldn't have founded Objectory, which was acquired by Rational, which in its turn was acquired by IBM. However, the "end" result was almost the same - working for IBM :-). I am now an executive technical consultant of IBM.

I believe that aspect technology will dramatically improve the way software is developed. I have described this technology as 'the missing link' to keep use cases separate all the way from requirements to code and test. I have written several papers on this subject. Right now I am working on a new book on aspects & use cases.

Last week I gave the same talk on Aspects & Use Cases at the Rational User Conference in Orlando. It was a very well organized conference - a lot of good technical stuff as well as a good portion of fun.

The conference was in Disney World, Orlando, so there were lots of opportunities for having fun. One evening we were dancing at the hotel. Great Caribbean music. The bad part was that the music had to stop at 10 pm! There is no doubt that the interest for aspect-oriented programming (AOP) is growing dramatically. The good news is that the use-case driven development approach is a perfect fit with AOP. To make AOP successful, it needs a methodology. We have such a methodology. Still, it will take a few years before tools support this technology.

At the same conference Jaczone ( demonstrated WayPointer. WayPointer really got a lot of attention. All the time there were people waiting to get a demo. What is so exciting is that WayPointer makes process active and at the same time practically invisible. This is done, by using intelligent agents to support developers in the many micro-activities in software development.

Aspects and agents will be important complementary technologies for the next years to come. You should take the time to learn about them.