Application Understanding

The core operations of your business are managed by portfolios of enterprise applications. As these systems are adapted over the course of many years, complexity increasingly intrudes. New code is placed on top of existing code. Formerly clear architectural layers tend to erode. Coding standards are less adhered to and monitored. And unnecessary code is left in production. The result is a massive increase in the complexity of your application portfolio.

This complexity is made still more challenging by the loss of intelligence about the business and technical reality of the application portfolio. Subject matter experts have moved on to other roles, applications have been outsourced to teams that are less experienced with the portfolio, and documentation has fallen so far out of date as to be meaningless.

The combination of complexity and loss of insight means that applications cannot be efficiently adapted. Developers lack sufficient information to make modifications without risk and lengthy delays. This has raised maintenance costs to their current average level -- 70% of IT's total budget.

Confronting Application Complexity

How do we confront this complexity and realign applications with business goals? The best approach is via the Application Modernization lifecycle. The first stage in the lifecycle is Application Understanding. That is, gaining business intelligence on the structure and behavior of the application portfolio. By shining light on your application portfolio, you can better identify misalignments and determine business priorities for the development organization.

How to Understand Application Portfolios

Application portfolios are more than a collection of technical artifacts. To business users, they automate business operations. To software architects they are representations of the defined architecture in practice. To a development manager they are projects to be completed and assets to be managed. Because of this diversity, it is important to understand applications from many perspectives. In turn, this requires that information about the application portfolio is pulled from many sources and fed to the right individual within an organization.

Now, let's look at paths an organization can take to improve its understanding of the application portfolio.

Placing Applications into Context

The sheer scale of application portfolios makes them extremely difficult to understand. The millions of lines of code and thousands of interdependencies make it nearly impossible for a human to comprehend an application, let alone manage and adapt it. But by 'abstracting' an application, that is by assessing an application from a higher-level vantage point, you can erase the complexities and come to terms with your applications.

An analogy could be Google Maps. If you were to try plan a cross-town trip, you would likely want significant detail on roads and alternative routes. But if you were looking to understand, say, the borders between your home country and neighboring nations, then the excessive detail of a local map would obscure what you are looking for. A more effective approach is to obscure detail as you "zoom out".

As a business analyst, we may want to zoom out to see how the application is structured to support business processes. An outsourcing manager may want to zoom out to see how different service providers support the application portfolio. By overlaying different contexts onto our software, we are able to provide the mechanism for abstracting in a way that has meaning for a user. In our Google Maps paradigm, this would equate to zooming-out on a topographical view versus a political view.

Placing software into its appropriate context has parallels to Web 2.0 usages. Essentially, you are tagging software artifacts using hierarchies of metadata. These groupings allow software to be visualized in a context at a level that has meaning to the user. It allows querying, assessments, and other reporting mechanisms to be targeted to portions of our application portfolio that are relevant to a given development task. It even allows incremental modernization tasks to be concentrated on targeted portions of the application portfolio. We will see the importance of contextualization throughout this discussion.

Understand the Application Portfolio Inventory

A frequent challenge that IT executives face is that they have limited information on the contents of their application portfolio. In this case, we are not looking to understand the structure of the portfolio, but rather the contents of the portfolio. How many applications are under management? How large are they? What environments are they operating on? Are there burning platforms or related resource-availability issues?

A related need relates to the 'boundaries' of an application portfolio. That is, where are the logical ends of a given application and how does it interface with others. This is useful information not only to scope projects but also to understand the potential impacts of a change to the system.

Harvesting this information allows managers to scope their modernization activities and spot areas that can be immediately rationalized from their application portfolio. It also allows managers to focus analysis on portions of the application portfolio that are important to the business.

Understand Applications' Technical Reality

One industry analyst estimated that developers that are knowledgeable about a given application are 40% more productive than their peers. As a result, it is important to understand the technical reality of the applications under management. We will need to understand the layering of an application – its data access, logic, and user interface. We must understand how artifacts relate to each other, how data flows through a system, and how changes to one artifact will impact another.

This information should be globally accessible to the right teams to provide insights to support development activities like application maintenance and application modernization.

Understand Business Processes

Applications are important because of the business processes that they automate. How applications automate these processes is governed by business logic embedded within application code. Business rules like "approve credit card transaction if amount is less than $500", or "offer free shipping if customer status is 'preferred client'" are examples of this logic. So, to understand your business, it is important to understand this logic.

Understanding this logic can have valuable inputs into the application modernization and maintenance process. For instance by isolating the discovered logic into reusable services, using business rule documentation as a basis for redevelopment specifications, or as inputs into a business rule engine.

Application Modernization Blog

Webinar: Application Understanding

Application Understanding Paper

Wikipedia Entry on Business Rule Mining

LinkedIn Group

Join the Application Modernization LinkedIn group to stay on top of the latest developments in Application Modernization.


Modernization Papers

Modernization Resources

Powered by