EssUP

TechED by Ivar Jacobson

Barcelona is my last stop on an around the world trip that started Oct 17 from Stockholm. That morning I gave a talk to key developers at a key Swedish company developing key telecom products :). After my talk I rushed to the airport and flew to Tokyo to meet some key people from large software companies. After Tokyo I went to Taipei, followed by San Francisco and now Barcelona. This is my 6th around the world trip this year with one more to go before the end of year – three less than last year. As you can see I am slowing down.

Barcelona hosted one of the largest software conferences this year, the Microsoft Tech•Ed – Developer conference and yesterday I gave, together with my colleague Pan-Wei Ng, a talk on Next Generation Process (NGP). Here is the core idea of the talk:

The world of software development is constantly changing and evolving. New ideas arise all the time and existing ideas go in and out of fashion. Software development processes find it very hard to keep up with this rapid rate of change, especially as they find themselves quickly going out of fashion or becoming bloated as they bolt on more and more information. Teams find themselves struggling as they try to mix-and-match practices from various sources into a coherent way-of-working.

A new approach to capturing and sharing experience is required. In my company, Ivar Jacobson International, we have developed a fundamentally new way of managing software development that downplays the importance of process – in particular big process. Instead practices become important. A practice is a way of working with a clear beginning and a clear end. Following a practice should give a clear result of value. Instead of trying to give an academic definition, let me give some examples: Iterative development is a practice that you can imagine to use separately to how you specify requirement or define your architecture.

  1. Practices are First Class Citizens
  2. Practices can be made smart to truly help the developers in their work, this is achieved with WayPointer
  3. Practices can be used individually or in a multitude of combinations
  4. Process is just a composition of Practices, and
  5. Teams compose the process they need by selecting just the practices that they want to use

As you can see this is a paradigm shift. We move away from working with a big monolithic process (like RUP) to working with practices. Process is downplayed to just become a composition of practices.

To enable this, a number of innovations are required: innovations related to the way that practices are collected, presented and applied. We have developed two components to realize these innovations:

EssWork is a new set of tools for deploying practices in an organization. These tools allow you to author practices separately and to compose them to a process. They allow you to use a completely new way of learning, adopting, scaling up, and changing your selected practices. You use cards to describe your practices, to plan your project and to guide you in developing software. Cards are good because they force us to be very brief in describing process elements. You focus on the essentials, which makes practices very lightweight.

EssWork is available on top of several platforms: Eclipse, EPF, VSTS so you can have the same process independently from which vendor tools you use. On top of EssWork we have built a first set of eight practices called EssUP (Essential Unified Process).

EssUP is just a subset of all the practices we eventually will see on EssWork. Five of these practices are traditional Unified Process practices: use cases, architecture, iterations, components and products. Moreover, there is one practice which supports social engineering practices unique for agile methods, and one practice for process improvement derived from the process improvement camp such as CMMI.

However, we are not dogmatic about which practices you should use. You can replace any practice that we offer with a competing practice from your favourite methodology. You can also add practices that you have discovered yourself. Mix and match is our recipe.

Best of all: EssWork and EssUP are going to be Open Source! I can’t give a date, but it will happen as soon as possible.

The presentation was completely full (around 500 people) which was a fantastic result – there were people standing in the auditorium and watching on the remote screen outside So there is much to do going forward.

Various Podcasts were arranged. This is one:
http://www.mseventseurope.com/TechEd/06/Pre/Live/VideoDev9.aspx?id=3#an3 
 

EssUP Launches by Ivar Jacobson

Yesterday we launched Essential Unified Process in the UK. We had around 180 attendants and these were all invited by us. We wanted participants that could help us understand if we are on the right path.

I think we can count this event as very successful. We all felt very upbeat afterwards when we met at a pub.

In the picture above I am the guy who gesticulates. The others are from left to right: Agneta Jacobson (CEO of Jaczone), Pan Wei Ng and Ian Spence (both Chief Scientists of Ivar Jacobson Consulting) and Chris Littlejohns (managing director of Ivar Jacobson Consulting UK).

The most central idea behind the Next Generation Process (NGP) is that Practices are First Class Citizens and Process is just a composition of Practices. This is then followed up by three innovations (in no particular order):

  • Practice Separation and Composition. This is an idea I first presented at the Agile Conference in New Orleans in August 2003.
  • Practice User Experience using the card metaphor to move the focus to the developers away from the process engineers. This idea originates from Brian Kerr at Ivar Jacobson Consulting in the UK.
  • Practice Smartness using intelligent agents to make process active. This comes from Jaczone’s WayPointer.

Essential Unified Process is a first incarnation of the NGP. It is a package of practices…8 to be exact. It could equally well have been 5 or 10, the most important things are the practices and not the package. Apart from the three major innovations mentioned earlier, there are many other ideas in what we mean with NGP. We have alphas and betas, competencies instead of roles, aspect-oriented thinking, how we make EssUP agile with social engineering practices, etc. Ian Spence showed how we have created three games to play the cards. There is a process assembly game, a process planning game and a project game in which the team actually develops software. (We have a paper to be published in August in Dr Dobb’s Journal). Today, on the surface RUP is hardly recognizable in EssUP (but of course EssUP is a great way to move to RUP; it is also very easy to move a RUP customer over to EssUP).

NGP Infrastructure has been developed to prototype status. Pan Wei Ng demonstrated navigation through practices, authoring of practices and cards, composition of practices. I think it is fair to say that the audience was very impressed getting a glimpse of NGPI. Many people came up to me afterwards and said that our work on NGPI really gives us credibility. EssUP with physical cards is a good start. With an electronic version of the cards we give the card metaphor a face in the tool world. I believe that NGPI helps us to move people from being excited about EssUP to wanting to plan their first EssUP project, something our launch proved.

WayPointer is now a mature and proven product. Several persons came up to me and said that the latest version is a big step forward. WayPointer is already very effective when it comes to to the complete adoption of software development best practices by a team. With our practice-centric approach another role of WayPointer becomes evident. For each practice we can now offer cards and guidelines with the most essential knowledge and as additional leverage provide support from intelligent agents to help people both with the cards/guidelines but also with all the other more specific and context sensitive advices that are made explicit in books or elsewhere. WayPointer will of course also provide automation and real-time quality checks for the practices. Together these components provide an unprecedented framework for process dissemination. The story starts to get together in a wonderful way.

We have a fantastic story. People definitely see us as The Thought Leaders on Process. However, this is not enough for us. We don’t just want them to see us as thought leaders. We want them to come to us and ask for services and products. Thanks to our very strong team we can deliver that.  

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.