Increase Efficiency using Groovy, DSL and SOA

Recently SpringSource published a case study of a project which I supported as system architect and lead developer from concept to production.
The case study shows how organisations can greatly increase efficiency by the use of modern technology approaches such as Groovy, SOA and Domain Specific Languages (DSL).
You can read the case study here.

BPM, Optimization and Scrum

One of the goals of Business Process Management (BPM) is the continuous optimization of business processes.
In fact when we start analyzing existing processes, in most cases it turns out that those processes are far from being ideal.
Usually the first impulse is to say, all right let’s improve the processes while we automate them.
At first sight this seems to be reasonable, but practice shows that it is not.
Why not?
Usually the process knowledge is in the heads of the business users who live the processes every day.
Even if they have some sort of documentation, they feel that they own the process. And they do!

Once you start changing the existing processes you take the ownership and leave the real owners behind.
This can quickly turn into a acceptance problem cause the business users are a vital part of BPM as they have the process knowledge.

Practice shows that it is better to automate processes as is first and keep the business users involved.
Start small (and think big) for instance with partial processes. Then show the benefits and start the optimization loop.

This can be ideally done in an agile setting such as Scrum in which the idea of continuous improvement (Kaizen) is built-in.
A nice side-effect is that not only the business process is improved over time, but also the analysis and implementation process itself.

Goto is not Evil

Those of you who tried to convert BPMN to BPEL know the “Goto”-Problem which stems from the fact that BPMN is graph oriented while BPEL is block oriented.
This makes it hard to transform one into the other and causes pain in todays BPMN undertakings.
Although goto is banned in modern programming languages, business-like modeling languages definitely need it.
The upcoming version of Windows Workflow Foundation with its Flowchart support gives a good example how this could look like.
In his blog Maurice De Beijer has a nice image how this looks like in the Visual Studio.NET Workflow Designer.

Dehydrating long running Groovy DSLs

In my recent article about Domain Specific Languages (DSLs) published in the 12/2009 issue of Javamagazin I described how to implement DSLs using Groovy.
In the article I mentioned that dehydration (state persistence) could be added to the DSL runtime if needed to support long running processes.
I’ve created a Groovy script dehydration.groovy to illustrate how this could be achieved.
Basically the Groovy script is stopped by terminating the executing thread and the state is pulled out.
Later on the state is injected and the remaining part of the script is executed.
This approach can be used to process any kind of long running scripts, especially if they have to wait for external events.

Cars, Software and Competitiveness

It is often said that software development should be like building cars.

But cars are very different from modern software systems.
Since its invention more that 100 years ago a car is a very stable concept.
This works because the purpose for which it is build (driving on a more or less solid ground) is stable as well.

Software on the other hand needs to be much more flexible because the context changes frequently.
Some examples are markets, organizations, products and the internet.
The concept of software is much more abstract than the concept of a car.

More and more people realize that agility paired with quality is a key success factor.
That’s why a short concept to market cycle is needed.

Automotive is in fact a bad role model. You can see that every day.
The market is demanding for efficient cars with a low carbon footprint.
But the vendors fail to deliver. Why? Because they are too inflexible.

Let us not make the same fault.
In fact the methods and tools are available to establish a fast concept to market cycle.
Some examples are Scrum, Silverlight SketchFlow and Business driven SOA

If the companies have the heart to try those new approaches, they might be with rewarded with competitive advantage and flexibility.