As a consultant at both project and strategy levels I'm finding that a lot of real work needs to be done to get SOAs up-and-running. For most organisations, the first step of their SOA project is to figure out how much this SOA will cost. Only then can you can budget appropriately and obtain the funding.

It’s a good first step, but most organisations that want to build an SOA don't have a clue how to approach the cost estimation process. In many cases, they grossly underestimate the cost of their SOA, hoping their bosses and accountants won't notice later. In other words, go in low to get the approval, and reveal the higher costs later after it's too late...the investment has been made. Not a good management practice, if you ask me, but a pretty common one.

So, how do you calculate the cost of an SOA? While you can't cost out an SOA like a construction project, many of the same notions apply, including: understanding the domain, how much the required resources cost, and how the work will get done. Moreover, understand ing what can go wrong and accounting for it.

Here are some very "general" guidelines:

Budget to budget. The problem that I'm seeing over and over again is that cost estimates are provided without a clear understanding of the work needed to be done. Indeed, you need to budget some time to create the budget. This means understanding the domain in detail, including:

1. Number of data elements

2. Complexity of data storage technology

3. System complexity

4. Service complexity

5. Process complexity

6. New services needed.

7. Enabling technology

8. Applicable standards

9. Potential risks

Typically it's expressed as:

Cost of SOA = (Cost of Data Complexity + Cost of Service Complexity + Cost of Process Complexity + Enabling Technology Solution)

For instance:

Cost of Data Complexity = (((Number of Data Elements) * Complexity of the Data Storage Technology) * Labor Units))

• Number of Data Elements being the number of semantics you're tracking in your domain, new or derived.

• Complexity of the Data Storage Technology, expressed as a percentage between 0 and 1 (0% to 100%). For instance, Relational is a .3, Object-Oriented is a .6, and ISAM is a .8.

So, at $100 a labour unit, or the amount of money it takes to understand and refine one data element, we could have:

Cost of Data Complexity = (((3,000) * .8) * $100)

Or, Cost of Data Complexity = $150,000 USD Or, the amount of money needed to both understand and refine the data so it fits into your SOA, which is a small part of the overall project by the way.

If you get this, you can get the rest of the cost analysis procedure; just reapply the same notions to:

Cost of Service Complexity

Cost of Process Complexity

Enabling Technology Solution

Some things to remember:

- This is not really metrics (e.g., function points), because we really don't have historical data to abstract here. In essence, you need to use your own project management and project costing methods; just apply them to this new approach, using the formulas I'm suggesting above.
- Count on 10 to 20 percent variations in cost for the simple reason that we've not walked down this road before. As we move from project to project, we'll get better at costing out SOA.
- Make sure you allow for at least two major mistakes, meaning, selecting the wrong vendor, or hiring the wrong architect. You may encounter more, but it will almost never be fewer.
- Make sure to change cost estimates as scope creep occurs, and it always does. The nice things about using formulas such as the ones I’m expressing here is that, as change occurs, you can quickly see the effect on the budget. Moreover, as change occurs later in the SOA projects, the cost of change goes up exponentially.

Finally, here is a sensible, no-nonsense approach to costing out SOA. While the actual numeric assumptions may be debatable, it's the approach that's refreshing. It would be great to see people start using this model, sharing any data points and providing feedback so it could be refined. Clearly, this would benefit the IT community a lot. I plan to develop a much more sophisticated model in the near future. If you’re interested, let me know, I’ll post it on my website.

*David Linthicum is the CEO of the Linthicum Group, a consulting organisation dedicated to excellence in SOA product development and implementation.*