Cohesive

A post by James Webber, criticised by

In his post James states:

“Since every component or service is decoupled from every other component or service it should be possible to arrange and re-arrange them in a Lego-style in a myriad of useful ways. Building out “business services” from some more fundamental set of services is how the books tell us to do it. In fact we could even do that quite easily with point-and-client BPM tools, ruling out such overheads as developers and change management along the way. Right?”

That’s a pretty good description of my understanding, although I’m not so naive about the developer bit and version control and dealing with sync between analyst and developer are clearly important.

“No. In fact absolutely wrong.” says James.  This is great :-) I love it when people get straight to the point and start trashing conventional wisdoms.  The important thing is why?

“…low cohesion is a by-product of this architecture to keep those services and databases general enough to be recomposed by the BPM toolkit. And we all know how successful that is: Not very.”

Oh crap.  All this time spent learning BPMN/BPEL/B…, using tools, following the trends, trying to figure out what this all means to me in my domain.  What haven’t they told me James?

“the secret is this: build your services to implement business processes.”

Bugger, I thought I was building business processes from services.  Faced with an endless loop my brain closed down yesterday.  Having slept on it, this blog posting is the start of my therapy.  Plus, a little voice kept shouting granularity.  I’ve got to get better so that I can stop hearing the voices.  James, help me

“talk to the business guys and understand their processes, their workflows [that's me, talking to myself...]. Help them to prioritise which of those processes or workflows are most important, and then build out a service that implements that process [that implements those services, I want to add]. Don’t forget to include the business-centric messaging (if you’re SOAP-y) or resources (if you’re Web-y) [hey, that's me too, web-y, but not like the Man from Atlantis] that the process uses to enable it to be consumed by other processes across the enterprise (or even more widely).”

James, I’m confused …

“If you’re confused about how to build such a service, it’s just an instance of MVC:”

So, you mean like Ruby on Rails, a framework that I managed to build something with.  That sounds great.  I can use my favourite framework, which has a restful architecture baked in, to build a service (a small lego brick) that captures a business process.  But heck, that endless loop is starting – isn’t the small-lego brick business process itself composed of smaller lego-bricks?  Erase that program quickly I need an abort routine.

GO.TIGHT

I’m thinking, the process in my new business process service, that doesn’t have to be loose does it?  Going tight is when I can stop the endless loop of greater granularity.  I could embed something like openWFEru in the RoR app to run it, and then provide the external resources that I need to compose it into my big lego-brick (even though I don’t know how to build a big lego brick of resources using tools, I’m thinking it could be just as quick using Ruby, but then I’m really spoiling the story ‘cos that makes me a software guy not a domain guy and that’s not helpful and get’s me back to where I started from, yes?  shit).

James, am I close to passing software architecture 101?

“It might sound like a pretty dumb idea that my business stakeholders are to become (inadvertent) IT architects…they are the authoritative source of truth for business processes – those same processes that we reflect in our services. So when a process changes or is retired in the business world, the business folks (inadvertently) govern the SOA world – we change our services to continually match the business-level processes.”

Perhaps not (on the 101), but I agree.  I’m a domain expert, I want to leverage all this fantastic loose resource stuff to make my life better.  But I need to know how IT is broadly going to do it.  It just that when I ask them they just don’t seem to know just now.  We can do web apps though … ;-)

Hey, I’m feeling a bit better now, but if you’re a software architect and you’re reading this [probably not] then drop me a comment and tell me where I’ve got my wires crossed (just like that ESB) [sorry, I didn't mean that].