In a previous post, I rattled on about the problems faced by Application Portfolio managers who wish to reduce the total cost of ownership and measure portfolio return through the oversimplified lens of "how many apps do you have?"
I complained, rather heartily, that the older definitions of an app are no longer valid. However, I didn't propose a new definition. Bad Nick. OK... third try.
First, what is the purpose of the definition? To whom does it apply?
This definition is useful only for counting the NUMBER of applications in your portfolio and for determining the boundaries of that application. Why would you want to know the boundaries of an application? Because, in the world of composite applications, the boundaries allow you to measure the complexity of the app once and only once. This allows the basic formula to be: Complexity of portfolio = sum of (complexity of application)
Therefore, I would define an application in the following manner:
Application - An executable software component or tightly coupled set of executable software components (one or more) that deliver some or all of a series of steps needed to create, update, manage, calculate or display information for a specific business purpose. In order to be counted, each component must not be a member of another application.
Of course, my definition of 'application' included a reference to the term 'software component' so I need to define that too.
Software Component - An executable set of computer instructions contained in a single deployment container in such a way that it cannot be broken apart further. Examples include a Dynamic Link Library, an ASP web page, and a command line EXE app. A zip file may contain zero or more software components because it is easy to break them down further (by unpacking the ZIP archive).
By this definition, the following 'things' are applications:
The following thngs are not an application at all
The following things are many applications