A Business-Oriented Architecture

While some people keep fighting for their knowledge domain, the world change around them. I'm talking about program languages, design tools and runtime engines, still using object-orientation as a model for implementing a business critical system. Since the early 90th object-oriented architectures have been the main technology platform for building solutions for business. What we got with us from those years is that technology driven view point of software development is bad. Whether an object-centric perspective helped the programmers understand the business or not isn't relevant. What we do know is that noone else understood the object model. Lot of initiatives have tried to bridge between the business and the OO model. Most of them have just made it worse, with really high cost as a result for software development.

No, there's a need for a new, better model for designing software. Something that the business can relate to, something that everyone can relate to. Processes and services are keys to this new model. We have all heard all the great stuff we can do with SOA and BPM, but what are the differences and can they play together?



A process-oriented architecture (POA) fits a company that's frequently changing and improving their business processes. This architecture supports a process improvement life cycle where bottle necks and bad design are found and adjusted using analyzis tools. A POA is a platform using a transparent model for business processes that aligns the business with IT very well.

A service-oriented architecture (SOA) on the other hand suites a company reorganizing their business structure frequently (such as out-sourcing, mergers and acquisitions, internal reorginization, etc). The main goal with a SOA is to control the services based on policies. These policies are defined in the service management framework. A SOA gives the agility in a business where services easily can be controlled from using service governance. A SOA will provide the virtual service mediation layer between the service consumer and the service producer where loosely coupling is crucial.

Normally a company would agree that both transparency and agility is important for their business. The only way to achieve this is by taking the road from OOA to a business-oriented architecture (BOA). This is a platform where the best from BPM and SOA is combined. People from the BPM community call this platform BPM 2.0, while some call it SOA 2.0. I think something neutral as BOA is more diplomatic.

The next question would be to ask which way is more natural to go from OOA to BOA, the red or the blue road. I would say the red because SOA is the foundation for a successfull POA.

9 comments:

Anonymous said...

Hi

Interesting read. But as a developer some thing makes me confused.

"Whether an object-centric perspective helped the programmers understand the business or not isn't relevant. What we do know is that noone else understood the object model."

Isnt important for the developer to know his domain he works in. I myself is a developer and the most important thing for me is to understand the problem domain I shall work with. And even more important is the next person who shall work with the system are able to gain knowledge about the domain from reading code. And I have used the classes I created in my oo domain to discuss and solve problem with the clients, so some points sounds a little bit naive.

What Im interested in is seeing some code, can you point me to some example of how I eg, how do I group my business logic in my program to make it easy to maintain.

Jonas Ekström said...

To understand the business and to make great software, developers are projecting requirements on a model, right? What I'm trying to say is that the object model is not understood by business people and some times not even by the developer. The object model is great to use in some scenarios, but when it comes to business applications it's not.

Business people don't think of their businesses as objects. Surely some parts can be explained as an object, but not how the business work. They think in terms of services and functions. They think of processes crossing those functions. They know the terms, decisions, events and rules.

The BOA (i.e. BPM on top of a SOA) is the architecture supporting that vocabulary where the business is implemented using the same model as the business it self (to get transparency).

Grouping the processes logic is essential. Showing code might be tricky but take a look at this post where I asked developers to group their process logic.

Anonymous said...

For me, what you call BOA, is really how I think of SOA - enabling businesses and business processes to change at will without being restricted by software that is difficult to change.

What use is there to have frequently changing services for no reason? The only real need for changing services is changing business requirements, business processes or business capabilities.

I think BPM is an integral part of high-level SOA adaptation, without having a new TLA. Just don't call it SOA 2.0. =)

Jonas Ekström said...

If you ask a BPM guy he or she would call it BPM 2.0 :)

It's not the service it self that change in a SOA. Service producers are called from consumers via a mediation framework. The way we manage that mediation framework is called service governance. The architecture supporting service governance is called SOA.

Anonymous said...

hi,

can you explain to me what differ from business process modeling and analysis (IDS-Scheer, itp commerce and so on) and Business Process and Human Workflow (SourceCode, Skelta)? and is there any Java based Business Process and Human Workflow solution available in the market?

Jonas Ekström said...

Hi Syawal,

A human workflow is a sequence of activities performed by humans, while business process activities are executed by system services. In terms of process execution, there are no differences.

For Java implementations check out Active Endpoints and Intalio.

Anonymous said...

Hi Jonas,

Thanks for the answer. I was wondering the cost to purchase the enterprise solution for BPM...? I was looking around BPM product - comparing price, performance between Java and .Net based product. Which one is superior in both category? And superior between both category? Can you do a matrix comparison between Java and .Net BPM product.. i found a blog which comparing .Net product but loss the link. Can suggest me blog covering BPEL. thanks. :)

Jonas Ekström said...

Hi Syawal,

There are a lot of BPM products but I don't think they should be compared from a platform view point. Some vendors support both .NET and Java, such as Active Endpoints (AE). AE is a BPEL engine while Intalio position it self as a BPMS vendor. BPMS is a suite of components such as a BPEL engine, a workflow designer, forms designer, analysis tools, BAM, etc.

I recommend you to read this BPMS product guide by Bruce Silver.

Anonymous said...

here is the reference site that i search last time http://www.sharepointblogs.com/bmixon/archive/2005/04/22/1842.aspx