How do you break down the costs of owning your application portfolio into a components that can be calculated?  I have a simple expression that I believe encapsulates the TCO of an architectural component (legacy application, SOBA, service provider, etc).

The Total Cost of Ownership of your portfolio of applications is

   For Each n in Portofolio: sum( BaseCost(Environment(n)) + CpxCost*Complexity(n) + ConnCost(Environment(n))*Connections(n)) 

where

  • Complexity(n) is the complexity of application ‘n’ in the portofolio
  • Connections(n) is the number of systems that are connected to this one either by code or data dependencies
  • BaseCost is the cost of owning an app in each production environment.
  • CpxCost is the cost to maintain the app based on each ‘unit’ of complexity
  • ConnCost is the cost for each connection in a particular environment.
  • Environment(n) is a function that simply returns the environment in which the app runs (on an App Server, within SAP, in IIS, as a rich client, as a smart client, etc)

I’m proposing this formula.  It would require proof that it would accurately capture the cost of owning the portfolio. That said, it makes sense, and is fairly simple to understand.  The formula is based on the following ideas:

  1. The environment in which an app runs dramatically influences the cost of ownership
  2. The complexity of an app is a major factor in its cost of ownership, and not other considerations like the time it took to write it or the language it was written in .
  3. The number of dependencies between an app and another app is a factor in TCO.  Therefore, if you have a connection from app A to app B, the connection cost counts twice: once for A and once for B.    However, the nature of the dependency is not particularly key to the cost… just the fact that it is there.

I’d love to hear opinions on this formula.