Essential Unified Process by Ivar Jacobson

After two very intense days in Ottawa I am on my way to China, Taiwan and Korea. Two intense but very memorable days. In Ottawa I gave two talks on the Essential Unified Process, the first to Statistics Canada while the second was a public seminar arranged by IBM Rational Canada.

The welcome I got at Statistics Canada was mind-blowing. Andrew Konecny who organized the event compared it to when Rolling Stones visited Ottawa in the summer of 2005: Sold Out. Around 250 persons attended the seminar and the introduction that Andrew gave was most memorable and made me feel very welcome. Every attendant got a black T-shirt with the logos of Jaczone, IBM Rational and Ivar Jacobson Consulting on the front and a listing of all my postcards on the back. It was really fun.

I presented the Essential Unified Process. So what is it?

The Essential Unified Process stands on the shoulders of modern software development practices. It is a fresh start integrating successful practices from three camps: the unified process camp, the agile methods camp and the process maturity camp. Each of them contributes different capabilities: structure, agility and process improvement.

The Essential Unified Process is very different from other processes or methods in how it is presented. It relies in many ways on a new idea: Separation of Concerns (SOC or aspect-oriented thinking). When you apply this general idea it will be dramatically simpler to work. It will be much easier and much more pleasant to select your tailor-made software process. Most important, it will be more natural and intuitive to plan and execute a software project. To make this concrete let me describe a number of situation where we have applied the idea of SOC:

  1. The Essential Unified Process separates the essentials from the non-essentials. This allows us to create a core lightweight process with unprecedented growth potential. We have learnt over the years that very few people really read process materials whether it is in a book or on the web. Therefore it doesn’t make sense to give them a lot. Instead, provide the real essence and let them learn the rest the way they want. Some may want to learn it by studying and there are a lot of articles and books available to do that. Some will learn by working with people who have already gained the knowledge. The effect of this separation is that the process will be very light and easy to adopt and change.
  2. Each practice is kept separate from other practices. The Essential Unified Process comes with the essentials of our five foundation practices:
    1. Component Based Development,
    2. Model-Driven Development,
    3. Iterative and Incremental Development,
    4. Architecture-Centric Development and
    5. Use-Case Driven Development.

These practices have been used in 1000s of projects and proved to be very successful. By keeping them separate, we can simplify the process description dramatically. The process description is presented as a set of individual practices. Each such practice can be developed, adopted and applied separately from the other practices. This is a significant difference compared to the Unified Process where all practices are intertwined. Moreover, you can easily select only the practices you need without having to deselect activities and artefacts. You just select the practices you want and compose them with your already existing process.

  1. You can easily separate elements from your existing process from the elements of the Essential Unified Process. This allows you to improve what you already have, one practice at a time in an evolutionary way. You start from a generic platform and describe your own process using a very simple technique inspired by the game industry. Based on this we can add our practices without requiring a revolutionary adoption of all our practices. You take what you need and what you think your organization can adopt without taking any severe risks.
  2. It separates two different views of the process: the process authors’ view and the software developers’ view. In the past processes have almost entirely focused on the authors’ needs. The Essential Unified Process prioritizes the developers’ perspective. It uses techniques from the game industry to develop, teach, apply and use the process to make it lightweight and agile. And, I promise, much more fun.
  3. It separates explicit knowledge from tacit knowledge in a balanced way. Tacit knowledge is knowledge you acquired one way or the other – you have it in your “head”. Explicit knowledge exists in the form of descriptions made available to you. In the past the Unified Process tried to capture all knowledge in explicit form. Though this is a good ambition, it makes the process heavy. The Essential Unified Process makes only the essentials explicit. The rest is either tacit or referenced from the essentials. However, the most elegant form of dealing with knowledge is to deliver it through intelligent agents when needed – this is what we call a smart process. As you all know, WayPointer is the first commercial product that makes smart process available.
  4. It is prepared to separate creative work from no-brain work. This will allow developers to spend their time on what humans are good at – being creative – and leave the no-brain work to intelligent agents. Once again, this is made possible with WayPointer.

Our long term vision for the Essential Unified Process and WayPointer is to move from a ‘process’ era when everyone is forced to think about process to an ‘invisible process’ era, a time when we don’t talk specifically about process but take it as a given.

Now you may wonder: Does WayPointer support the Essential Unified Process? The answer is indisputably; YES! WayPointer already today supports the core of the foundation practices. Over time as the Essential Unified Process grows WayPointer support will grow too. As an example, the first released practice, “Use Case Driven development” is fully supported in the upcoming release of WayPointer.