By Ian S. Hayes
(Excerpted from an article appearing in Application Development Trends
magazine, August 1996.)
The importance of business applications to the operations of
corporations is beyond question. However, attention is seldom directed to
the overall challenge of effectively correcting, improving and
functionally extending existing business applications. Regardless of an
application’s underlying technology, this process is fundamentally
different than the process for creating new applications. Yet, because of
their biases, IT organizations ignore this reality. They attempt to define
and manage enhancements to existing applications using the same methods
they use for building new applications from scratch, and they relegate
other essential activities to the disdainful category of maintenance. The
results are predictably inefficient and unsatisfactory. Fortunately, this
is beginning to change through the discipline of application management.
Defining Application Management
Application management is the maintenance, enhancement and support of
production software applications. It begins once an application has
completed initial development, that is, the application has been placed
into production for the first time. After this critical point, all further
development falls within the processes and control of the application
management function. Thus, there is a clear distinction between
"pure" new development and "new" development performed
on existing applications.
The basis for this broad definition is the fundamental difference
between the activities used to develop an application from scratch and the
activities used to modify that application after initial completion.
Unlike changes in a development project, any change to a production
application, regardless of size or type, affects the business users of the
application, risks damaging existing functionality and requires
coordination with other support activities.
Application Management provides three broad functions:
This function assists business area users of production applications.
It includes answering questions, researching problems, collecting
requests and providing status reports on active requests.
This function ensures the continuing operation of production
applications. It includes responsibility for resolving all production
failures (that is, corrective maintenance).
This function handles application programming activities for
perfective (upgrading technology or improving technical quality), and
adaptive (enhancements to functionality) changes.
An Idealized Application Management Organization
Although it is related to application development, and shares some of
the same attributes, an entirely separate strategy is needed to
productively manage a portfolio of existing applications. The role of an
application manager is to optimize the performance of the company's
portfolio of applications in support of corporate business objectives.
This role challenges IT managers to find new methods to improve the way
they manage their portfolio of applications, as well as the people and
processes used to support, enhance and extend that portfolio.
Depicted below is an idealized application management organization
designed to maximize the effectiveness of existing application support.
Figure 1
This organizational structure was developed from a combination of
"best practices" gleaned by observing dozens of successful (and
unsuccessful) IT organizations. It is based upon the following principles.
- Defined and managed levels of service
All services provided by the application management organization are
identified, measured and documented within service level agreements.
These agreements are negotiated with each major organization that has
interfaces with the application management organization. These
agreements are reciprocal --they specify commitments and
responsibilities for both parties. All activities performed by the
application management organization are managed according to the
commitments within these agreements.
- Single point of entry for all service requests
All requests of any form enter the organization through a central
help desk. This ensures that all requests are captured, distributed to
the optimal resource and tracked until completion. A properly
implemented help desk increases the effectiveness of the application
management organization by handling questions and requests for project
status, eliminating "under-the-table" work, enabling the use
of virtual teams, and capturing statistics for process improvement and
service level management.
- Institutionalized methods for capturing and reusing knowledge
Team knowledge about best practices are captured and reused through
internal methodologies and activity scripts. This ensures that process
enhancements are quickly disseminated to all project teams. Reusable
code components are captured through the infrastructure management
organization.
- Continuous Quality Improvement
Software and process metrics are captured through the application
management organization and used for service level management and to
identify methods for enhancing productivity and improving quality. Best
practices are replicated, and problems are quickly identified and
corrected.
- Virtual teams
People resources are managed through short-lived virtual teams. This
approach allows team members to work on a variety of different projects
ensuring continuous exposure to new technologies and practices. The goal
of a team structure is to maximize the career growth and job
satisfaction of application management team members.
- Formal management of application assets
Application software is viewed as a set of assets that can be
proactively managed to optimize business value or extend the technical
life of useful applications. These assets are far to valuable to be left
to the traditional reactive methods of management.
The AM organization provides a number of different services to its
clients. While many of these functions are provided by traditional
maintenance organizations, the application management organization treats
them as discrete "virtual" services that are performed as needed
on each application. These services include:
This function supports customer requests for knowledge and
assistance. It provides answers to questions, researches issues and
offers status information for all application management activities.
This function provides programming support to enhance and extend the
functionality of production applications (adaptive maintenance).
Production support monitors the execution of all production
applications and provides quick response to correct any operational
problems.
- Preventive/Proactive Maintenance
Preventive maintenance researches methods for decreasing the future
cost of support by enhancing software quality and removing potential
errors. Proactive maintenance researches and implements methods for
advancing the business value of the applications.
This function handles one-time and targeted efforts used to ensure
the effective operation of application assets and their support
environment. Examples of special projects include application process
improvement; transitioning applications to new
architectures/technologies; and large-scale migrations (Year 2000, Euro,
etc.)
As depicted in figure 1, the physical structure of the application
management organization shows its functional areas and its major clients.
While the corporation’s business areas are the obvious clients for
application management services, this organization also works closely with
the data processing operations area and the development organization. The
operations area receives application updates for production, executes
production jobs and notifies the application management organization of
problems. The development organization creates new applications, which are
accepted for support by the application management organization. The
development organization also uses infrastructure management services.
The application management organization contains the following
functional areas: Help Desk, Service Level Management, Quality Management,
Resource Pool and Infrastructure Management. Individual applications are
supported by a Core Team that coordinates support activities and by
Virtual Teams, which are formed to handle specific projects.
This function supports customer requests for knowledge and
assistance. It provides answers to questions, researches issues and
offers status information for all application management activities.
This is a small organization that collects, analyzes and reports on
service level metrics for all application management organization
applications. It provides the results of its research to the business
area clients, application management and Core Team members.
Part of its charter is to identify the root causes of positive and
negative trends in service level performance.
Despite its name, this function does not perform the traditional QA
role. Instead it serves as the central repository of organizational
knowledge and "best practice" experience. This group collects
and analyzes process statistics as well as receiving statistics from
service level management, the help desk and infrastructure management.
This group reviews the data to discover methods for enhancing team
performance and to identify proactive process and application asset
improvement projects. Shared improvement projects are staffed by virtual
teams and managed by this group.
The resource pool is a central organization that manages the staff
resources for the application management organization. This organization
is responsible for: assigning people to virtual projects; monitoring
their workloads; handling personnel tasks (such as performance reviews);
and obtaining outside resources (consultants) when needed.
- Infrastructure Management
Infrastructure management owns responsibility for the physical assets
for all production applications. It handles a range of functions that
are shared by all application management project teams and by the
development organization. This organization: takes responsibility for
packaging application components into releases; working with the
application management or development team to system test and certify
those releases; and migrating certified releases into production. It
handles the database administration and configuration management
functions that maintain production source, database definitions,
documentation and testing libraries.
The goal of the core team is to function as the product manager for
one or more functionally related applications. This is not a programming
role. The core team: works with its business clients to create
requirements and define service levels for their application; manages
virtual projects to implement those requirements; and resolves any
service level issues. The ideal core team is very small; it is should be
staffed by no more than one or two people.
Virtual teams are assembled out of the resource pool as needed. These
teams range in size according to the needs of the project. They can
perform any of the services offered by the application management
organization. The two characteristics of virtual teams are flexibility
and limited life span. Even on-going services such as production support
can, and should, be handled by rotating teams. Virtual teams are managed
by the core team for the application they are supporting, or in the case
of internal improvement projects, by a member of the quality management
group.
Conclusion
This article is, at best, a high-level introduction to the concept of
organizing for more effective application management. Its purpose is to
stimulate thinking about new methods of application support and
enhancement. While some of these concepts may appear radical, they have
already taken hold among outsourcing vendors and more advanced IT
organizations. Traditional IT organizations must take a step back from
their daily activities to ask themselves if their current organizational
structure and support processes are still valid or if they can be enhanced
to better serve their business. In this increasingly competitive market,
effective IT organizations will thrive while less efficient organizations
find themselves increasingly replaced by outsourcers and end-user
computing, or subsumed in corporate mergers.