I'm consulting now...at the project and strategy levels...and thus finding that a lot of real work needs to get done to get SOAs up-and-running. With most organizations at the initial stages of their SOA project, the first step seems to be is to figure out how much this SOA will cost. Thus, you can budget appropriately, and obtain the funding.
First thing, most organizations building a SOA don't have a clue how to approach this, and in many cases grossly underestimate the cost of their SOA hoping that 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.
So, how do you calculate the cost of a SOA? While you can't cost out a SOA like a construction project, many of the same notions apply, including: Understand the domain, understand how much resources cost, and understand how the work will get done. Moreover, understand what can go wrong and account for it.
Here's 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 get done. Indeed, you need to budget some time to create the budget. This means understanding the domain in detail, including:
Number of data elements
Complexity of data storage technology
System complexity
Service complexity
Process complexity
New services needed.
Enabling technology
Applicable standards
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 labor unit, or the amount of money it takes to understand and refine one data element, we could have:
Cost of Data Complexity = (((3,000) * .5) * $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:
1. 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.
2. 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.
3. Make sure you dial in at least 2 major mistakes, meaning selecting the wrong vendor, or hiring the wrong architect.
4. Make sure to change cost estimates as scope creep occurs, and it always does.
Posted by Dave Linthicum on November 19, 2006 05:57 PM







![[VoiceIndigo Mobilize - Listen to podcasts on your mobile phone]](http://www.voiceindigo.com/ht/images/mobilize_logo_sm.gif)


