EssUP, the practice centric software development process
We don't like RUP, let's do practices. Last week Ivar Jacobson (the father of the Use Cases and the Unified Process) was in the Netherlands spreading the word of the Essential Unified Process (EssUp). EssUp (http://www.ivarjacobson.com/essup.cfm) provides a fresh approach to software process improvement and claims to be a new “Practice” centric software development process.
Ivar adopted these practices (or should I say best practices) from the successes of modern software development, which came from software engineering (Unified process), process maturity (CMMi, Spice) and agile methods (Scrum, XP). EssUP emphasizes using only those practices you really need and adapting the process to the needs of the project.
Ivar stated that we don't like reading. He has got a point with this statement. In multiple organizations the way of working is written down in thick documents which no one is going to read. Except for the ones who wrote it, nobody likes it. EssUp aims to be different. It uses a refreshing presentation approach using cards, and guidance sheets to present practices. Because it is presented lightweight way, the practices are easy to learn and understand.
The real power of EssUp that it is open and extensible. Anyone can create their own practices and share them with others in for instance a community.
The EssUp has 8 essential practices which are divided five technical practices, and three cross cutting practices:
- Technical practices: Architecture, Iterative, Use-case, Component, Product
- Cross cutting practices: Process, Team (agile), Modeling
Where is testing you might ask? Testing is everywhere. It should be an integrated part of the practices and performed by the creators of the artifacts.
So are these 8 practices all there is? No, these are the ones that are gathered and aligned with each other. You can add more practices (even your own practices) to EssUp, but be aware that the practices could conflict with other practices.
EssUp vs RUP
The nice thing about EssUp is that you don't have to use all practices. You could easily start with one and add more if you like. With RUP you use the whole process even if you don't need create all the artifacts. Ivar stated this as the real difference. Depending on your implementation of RUP this might be true. In most projects I use cherry picking so this isn't a real difference to me. EssUp differs in the lightweight presentation of the practices and extensibility.
After the presentation I asked Ivar about a Scrum practice. He likes Scrum a lot and is working on a practice which will be available in a few months.
Ivar described EssUp in terms of knowledge generations. EssUp is the interactive way of storing knowledge. The differences between the generations are shown in table below.
|1st generation (tactic)||2nd generation (explicit)||3rd generation (interactive)|
|Ad hoc knowledge (text books)||Structured knowledge||Interactive knowledge in a dynamic environment|
|XP, Scrum||Rup, Msf||EssUp in EssWork|
The EssWork is an intelligent agent that can do active guidance, active review, active automation, etc. of EssUp. It will be available in the VisualStudio and the Eclipse environment. In my opinion the EssWork tool makes the EssUp fragile. Good tools will support the ideas behind EssUp whereas bad tools might result in not using EssUp.
So what's so great about EssUp? It's lightweight, easy to learn without reading tons of books. You could say it is in a way agile. I like the way EssUp is using cherry picking. Whether it will be a success depends on the way tools are supporting it and the practices that are created by the community.