Software is International by Ivar Jacobson

Since my last postcard I have been traveling around the world talking about the Next Generation Process -- which actually is not about process but about practices.

I have been meeting customers and given seminars in San Francisco, Seoul, Beijing, Taipei, Tokyo, Boston, New York, Jacksonville, London and now I am in Stockholm for a few days. When I see that people need a break from technical stuff in my sessions, I usually give them a break.

Sometimes I ask the audience if they know where object-orientation and components were born. Which was the very first object-oriented programming language ever designed? Usually, I get some mumbling as an answer so then I go on saying: OK, I will teach you some geography and history :-).

Up there in the north (I point in some direction which is not very precise), there is a large, beautiful country that looks like a rectangle called Sweden. To the west of Sweden is a tiny, totally uninteresting country called Norway :-). It is unbelievable but the first OO language was born in Norway (created by Ole-Johan Dahl and Kristen Nygaard). It was in 1967 and the language was Simula. Simula had everything important about OO that you find today in for example Java.

At the very same time, in Sweden, components were born. Everything important about components and component-based development was used in the Ericsson AXE system. The software component idea was my first baby. Thus it is not true that Microsoft and Bill Gates invented software components.

The problem was that we in Sweden didn’t know what our neighbors were doing. Even if the geographical distance between Sweden and Norway is small, the intellectual distance is huge :-). In the minds of Swedes, nothing of intellectual value can come out of Norway. Swedes are even surprised that Norwegians have the capacity to have the reverse opinion :-).

South of Norway is another tiny, totally uninteresting country called … and I hope for an answer…yes, Denmark. Do you know what came out of Denmark? Do you know who the father of C++ was? Yes, Bjarne Stroustrop. Bjarne had studied Simula and when he joined ATT in the US he made C look like Simula and called it C++ :-).

Then, we have another country to the east of Sweden called … yes, Finland. Do you know what came out of Finland? Nokia? More? Linux, yes. Do you know who the father of Linux was. No? Linus Torvalds. In Finland about 5% of the habitants have Swedish as their mother-tongue. Linus is Finnish-Swedish :-).

Anyway, you may wonder why I tell you all this? Well, I want to point out that everything important about software was not born in the US :-). However, if you want to make money from it, you have to make the leap over the pond to the US! :-) 

  1. Hipolito Babick | January 23, 2010 at 9:31 am Reply


    Well, cool verbage, I don’t entirely agree and I am still interested in this.

    • Anders | February 13, 2012 at 10:58 am Reply



      I wonder if you could describe the work of Goran Hemdal in the development of the AXE in some more detail. Some time ago at a dinner I had a discussion about the development of the AXE-system with a former co-worker at televerket. He told me that the big genius in the development was Goran Hemdal, who had managed to create PLEX as well as some parts of the hardware, I believe. He also mentioned that Hemdal didn’t get very much credit for the work (publicity-wise, of course), but that he really was very important, and that the general population in Sweden really didn’t know about his contribution.


  2. Ivar Jacobson | November 18, 2009 at 5:44 am Reply


    Let me add, that if you really are interested, several of the original internal documents have been translated into English and can be made available to you.

  3. Ivar Jacobson | November 18, 2009 at 5:28 am Reply


    Frankly, I read about the 1968 NATO’s conference for the first time a few years later, probably around 1972. The software component concept at Ericsson was introduced at the end of 1967. It was one of the hardest decisions I have ever experienced to move from a traditional function/data approach to a component based approach. We were building a second generation of computer-based switching systems, and I was a young project manager with no experience from the first generation, but with a couple of years of experience from building switching systems made up entirely from hardware.

    Hardware systems was managed thanks to being component-based: a component having a well-defined interface being exchangeable with another component with the same interface. Thus, with my background, I couldn’t see that the traditional way of building software would help Ericsson to build a family of systems which could be adapted to all customers around the world. Thus in the late 1967, I proposed a new software architecture (we actually used that term) based on a component concept. Each component had a well-defined interface, it consisted of both code and data and to get access to another components data you had to use its interfaces.

    This was a very hard proposal to get acceptance for. At that time we were still using Assembler. Thus we had no support in the programming language for components with interfaces. The only way we could support the component idea was to introduce what we called interface macros. Every interface was a defined as a macro. Each component owned a set of macros that could be used by other components. Now, this is a long story, but suffice to say that with this approach we believed we would be able to manage the complexity of software reuse, so after a very tough decision we adopted this approach and developed the second generation of computer-based switching systems at Ericsson. The new system was installed in many places: Rotterdam, Copenhagen, Sweden, Finland, and many more.

    However, we discovered soon that although we had got a system that was component-based, it was still hard to manage as such. The development costs were too high, we needed to streamline the idea. The idea to take the component-based approach one step further came from Göran Hemdal in 1970 (or it could have been 1969). Göran developed support for components all the way down: in the programming language, in the operating system and in the micro-program. This resulted in AXE, a third generation of computer-based switching systems. The decision to develop yet another generation of switches after only a couple of years was extremely hard, but as it turned out, a fantastic decision. With AXE Ericsson won everything. AXE became the largest commercial success story ever in the history of Sweden, and it still is.

    However, our work was independent on the work of any other institution or individual. We simply didn’t know about that work.

  4. Rodolpho | November 18, 2009 at 2:29 am Reply


    Hi Dr.Jacobson,

    I though that the term/concept of “reusable component” was presented for the first time in the 1968 NATO’s conference as you mention in your book “Software Reuse: Architecture, Process, and Organization for Business Success”, where we can read “Ever since libraries of shared components were first proposed by Doug McIlroy in 1968″ in the preface.

    Can you help us to clarify the relation (if any) between McIlroy work at NATO and yours at Ericsson?

    PS: I’m not doubting that you are “the father” of the component engeneering and architecture approach… but I’m confused and wish to explain all this history in my lectures.

    Thank you and best regards,