Unsustainable Regaining Control of Uncontrollable Apps


Published on

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.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Unsustainable Regaining Control of Uncontrollable Apps

  2. 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. 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. 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. 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. 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. 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. 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. 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. 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.
  11. 11. We make the Invisible, Visible.