The ever-growing cost to maintain systems continues to crush IT organizations robbing their ability to fund innovation while increasing risks across the organization. There are, however, some tactics to reduce application total ownership cost, reduce complexity and improve sustainability across your portfolio.
2. INTRODUCTION
The ever-growing cost to maintain systems continues to crush IT organizations
robbing their ability to fund innovation while increasing risks across the
organization. Legacy systems are difficult to modify due to the accumulation
of changes that erode the original design, lack of documentation or
obsolescence. While new systems are difficult to maintain as the organization
lose qualified staff, complex architectures are poorly documented, system
complexity grows out of control, and organization fail to adhere to best
92% of the cost of
practices.
an average application
occurs after the
project has finished
as "maintenance".
Regardless of how systems evolved getting them under control is critical
because reducing maintenance cost offers the largest and most immediate
opportunity to cut ADM spending.
- Gartner Research
Software Sustainability is the processes, procedures, people, materiel, and
information required to support, maintain, and operate the software aspects of a
system.
- Software Engineering Institute
3. IMPROVE SUSTAINABILITY
More sustainable
systems:
• Reduces enterprise
support costs
• Frees internal
resources from support
roles to capital projects
• Increases efficiency
of IT operations
Visibility into the structural quality and composition of these complex systems
provides a baseline understanding of its health, size, complexity and risks.
Performing a system audit or application assessment is easy but what do you
do once you have this insight?
Sometimes the best thing to do is simply monitor the key indicators of a system
as it may be the cheapest and most effective way to ensure that your team is
• Lowers rework rates
not eroding the health of the system further.
• Eases transition
between development
resources and vendors
Likewise, there may be quick wins that can immediately impact the cost and
• Makes systems easier
and faster to fix
effort to maintain these systems. The cost of maintaining a software system is
directly proportional to the size and complexity of the system. Therefore any
effort to reduce the size and complexity translates into direct improvement of
software maintenance cost. The following provides guidance on the actions
you may take to immediately improve the maintainability of systems.
4. ELIMINATE DEAD CODE
Knight Capital
Killed by Dead Code
Between 5-10% of legacy application source code is dead code. Dead code is
code that can never be executed in a running program. The surrounding code
"Most IT applications
makes it impossible for a section of code to ever be executed.
have dead code, it's in
there just hanging out in
the code base but none
of the live modules are
The impact of Dead Code:
Wastes computation time as its results are never used
Complicates deployment processes (e.g., Knight Capital had process to
calling it. If you don't
ensure dead code wasn‘t triggered… and they didn‘t follow the complete
have structural oversight
procedure)
then you don't know if
maintain
your new live code could
be calling the dead
code." In Knight's
Complicates maintenance as developers have more code to read and
Distorts program measurements as it artificially inflates the size of a system
– when measured by LOCs .
case, it was. The live
code called the dead
To improve readability and ensure that logic errors are resolved, dead code
code back to life and the
should be identified, understood, and eliminated. Removing such code shrinks
program started trading
program size, an important consideration in some contexts, especially where
on that.‖
DLLs or multiple excess executables have to be transported in memory
constrained devices.
http://www.sec.gov/litigation/admin/2013/34-70694.pdf
5. /** DOCUMENT CODE /*
Application maintenance accounts for +80% of the lifetime costs of an
application, so wasting half of this effort on just trying to understand
excessively complex code is an enormous part of the applications total cost of
Programmers who work on
applications with no documentation
spent 21.5% longer trying to
understanding the code base.
ownership.
The Impact of No or Poor Documentation
Counter acts developer skill. Good developers are less productive and
more likely to make mistakes in poor or undocumented systems.
Prevents transferability between development teams or vendors.
Increases the time for new hires to be able to understand the code base and
achieve productive levels of performance.
Increases the time to market of bug fixes or minor enhancements. This
delay in time to market has significant impact depending on the type of
application and industry.
47% of software maintenance
effort is spent understanding
existing codebase.
(*) Report from an experiment : impact of documentation on maintenance in Journal of empirical software engineering
Tryggeseth, Eirik, Kluwer Academic 2: 2, 201-207 1997 ISSN 1382-3256
(**) A Case Study on the Long-Term Effects of Software Redocumentation , ICSM, Proceedings of the 20th IEEE International Conference
on Software Maintenance, Alexander J. Rostkowycz , Vaclav Rajlich, Andrian Marcus, Wayne State University, Pages: 92 – 101, Year of
Publication: 2004
•Professor Mordecai Ben-Menachem, Tel Aviv University, 1999
6. IDENTIFY DUPLICATED CODECODE
Duplicated code is code that has been produced by copying and then adapting
existing code. Also known as ―copy-and-paste development‖, this strategy of
producing code is frequently employed as a way of reusing software.
The Impact of Duplicated Code
5-20% of typical business
systems source code
is duplicated.
Increases the time it takes for developers to get up to speed.
Impacts enhancements since similar changes must be made to all the
clones or the clones must consolidated into a single block before introducing
any changes.
Impacts your company‘s reputation due to update anomalies (e.g., a bug is
fixed in an update only to be rediscovered later by customers).
Increase the amount of test cases needed.
*A Survey on Software Clone Detection Research. Chanchal Kumar Roy and James R. Cordy. September, 2007.
7. CODECOMPLEXITYREDUCECODECOMPLEXITYREDU
CECODECOM
Empirical study suggests that high levels of software complexity account for
approximately 25% maintenance costs or more than 17% of total life-cycle
costs. The comprehensibility of most applications degrades exponentially as
new features are continually grafted on top of the existing code. This growing
complexity makes it difficult to transfer an application to a new outsourced
service provider without creating a huge learning curve that dilutes the
expected cost benefits. When these structural problems can be identified in
the code, the most severe ones can be remediated, reducing the wasteful time
required to understand the code and allowing new features to be delivered
more quickly.
Is your code base more
complex than 2 years
ago?
Much more
complex
14%
3%
About
the same
Much
complex
48%
35%
Source: Improving Software Quality to Drive Business Agility Melinda-Carol Ballou, IDC
8. PROACTIVE MONITORING
―The better quality
we can build into our
product, the less
maintenance we
The proactive monitoring of ADM output is the only way to a system is
becoming more maintainable, less complex and higher level structural quality.
Active monitoring helps:
have to do, and of
course, the more
Identify and remove dead code - Use analysis and measurement to remove
code and to monitor enhancements that may introduce new dead code.
Identify duplicated code - Specific segments of code with 3 or more clones
efficiency we can
should be considered for conversion into a reusable component (a
build into our
function, a service, an object, etc.).
software, the more
features and
Identify concentration of code complexity and distribute the complexity
across components
Generates complexity measures beyond Cyclomatic Complexity include
functionality can
algorithmic complexity, SQL complexity, 4GL complexity, OO
be built in.‖
complexity, Coupling (Fan in / fan out), and component size.
implementation of the source code.
Gene Baker,
Chief Architect Wells Fargo
Generates up-to-the-minute system blue prints from the actual
Teams improve code readability and transferability every time they touch the
code.
Prevents new defects being injected into code base.
Identify new code that fails to adhere to coding best practices
9. CASE STUDY
A clear
Although the notion that higher quality systems are easier to work with is rather
intuitive, it is often difficult to prove. Recently a CAST client analyzed more
correlation as the
than 350 applications in several industries and geographies and captured the
Technical Quality
relationship between the structural quality of the applications, as determined by
improves an
CAST‘s Technical Quality Index (TQI), and the volume of maintenance fix
organization‘s
ticket requests. The study tracked the overall health of the systems over a year
break/fix activity
against ticket volume per application and effort to fix defects. The results show
a clear and direct correlation— as the client improved the TQI one quarter of a
point, the organization‘s break/fix activity reduced by 50%. As a result, the
client was able to shift effort from reactive break/fix to higher value added
enhancement work.
3.6
Technical Quality Index (TQI)
reduces by 50%.
3.4
3.2
3
2.8
2.6
2.4
2.2
0
50
100
150
200
Ticket Volume
The CAST TQI is a composition index generated by structural quality analysis it is determined by the
number and type of critical violations and architectural vulnerabilities detected across technologies
and tiers. The index ranges from 1.0 to 4.0, where 4.0 is the best score.
10. SUMMARY
Whether you built
The application maintenance ‗death spiral‘ continues to consume more and
it, bought
more resources; critical resources that are needed in high value areas or
it, inherited it, or
found it you need to
missions.
Traditional application maintenance approaches focus on process drivers;
understand it and
however, ADM leaders must now consider the product itself and how it drives
control it.
sustainability. The path to regaining control of this maintenance challenge is
first through visibility then through governance that focuses on the end result
that is delivered to the business or customer—the product.
Effective governance requires that you perform the due diligence that a
software deliverable from internal or external sources is sufficient to meet the
needs of customers without exposing them to unacceptable risks and that it is
affordable – that it is on a financial path that is sustainable over its life cycle.
IT leaders need measures that track trends in the health of critical applications
their robustness, security, changeability, performance efficiency, and
transferability in order to know where they need to invest their resources to
sustain the level of service they provide to the business. These measures will
alert them to problem applications where they need to take management action
to reverse costly or risky trends in quality.