Reducing Technical Debt Using Maintainability Index



Similar documents
Baseline Code Analysis Using McCabe IQ

The Advantages of Converged Infrastructure Management

Customer effectiveness

White Paper Software Quality Management

Omni-Channel Banking Customer Experience: Forget What You Thought You Knew about Channels

Effective Enterprise Performance Management

Percerons: A web-service suite that enhance software development process

IBM Global Business Services Microsoft Dynamics CRM solutions from IBM

An Oracle White Paper. December Cloud Computing Maturity Model Guiding Success with Cloud Capabilities

The Journey to High Performance. Transforming Accenture s IT Services

Lead the Retail Revolution.

How Can I Deliver Innovative Customer Services Across Increasingly Complex, Converged Infrastructure With Less Management Effort And Lower Cost?

AVEPOINT CLIENT SERVICES

Transform your customer relationships. Avanade Enterprise CRM Solutions

GET REAL ABOUT BUSINESS DEVELOPMENT. BUSINESS DEVELOPMENT FROM THOMSON REUTERS ELITE CHANGES THE GAME.

IT & Management Consulting Services

Managed Services. The Future of Process Led Transformation has arrived. Insight Driven Value Chain Management. Execution Excellence

SOACertifiedProfessional.Braindumps.S90-03A.v by.JANET.100q. Exam Code: S90-03A. Exam Name: SOA Design & Architecture

Realizing the Benefits of Data Modernization

Symantec Global Intelligence Network 2.0 Architecture: Staying Ahead of the Evolving Threat Landscape

IBM Global Business Services Microsoft Dynamics AX solutions from IBM

Coverity White Paper. Effective Management of Static Analysis Vulnerabilities and Defects

Accenture and Salesforce.com. Delivering enterprise cloud solutions that help accelerate business value and enable high performance

Setting smar ter sales per formance management goals

Today s shared services operating models: The engine behind enterprise transformation

Enaxis Consulting Overview

Total Protection for Compliance: Unified IT Policy Auditing

Ensighten Data Layer (EDL) The Missing Link in Data Management

Why do Identity and Access Management Projects Fail? With FishNet Security IAM Services Group January 26, 2012

Business Process Validation: What it is, how to do it, and how to automate it

Revenue Cycle Management: What s Next in Healthcare

Quality Analysis with Metrics

Application Outsourcing: The management challenge

The SAS Transformation Project Deploying SAS Customer Intelligence for a Single View of the Customer

Project, Program & Portfolio Management Help Leading Firms Deliver Value

Infor10 Corporate Performance Management (PM10)

Business Process Services. White Paper. Improving Efficiency in Business Process Services through User Interface Re-engineering

Banking Application Modernization and Portfolio Management

Industry models for insurance. The IBM Insurance Application Architecture: A blueprint for success

Workforce Management: Controlling Costs, Delivering Results

Ten Mistakes to Avoid

The Recipe for Sarbanes-Oxley Compliance using Microsoft s SharePoint 2010 platform

The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into

EVALUATING METRICS AT CLASS AND METHOD LEVEL FOR JAVA PROGRAMS USING KNOWLEDGE BASED SYSTEMS

8 Ways that Business Intelligence Projects are Different

Accenture Technology Consulting. Clearing the Path for Business Growth

Integration Maturity Model Capability #1: Connectivity How improving integration supplies greater agility, cost savings, and revenue opportunity

Chapter 9 Software Evolution

Accenture Advanced Enterprise Performance Management Solution for Oracle

First Tennessee Bank: Analytics drives higher ROI from marketing programs

2011 Forrester Research, Inc. Reproduction Prohibited

can you improve service quality and availability while optimizing operations on VCE Vblock Systems?

Business Usage Monitoring for Teradata

The heart of your business*

Analytics Strategy Information Architecture Data Management Analytics Value and Governance Realization

Running an Agile and Dynamic Business. Business Solutions Delivered by Microsoft Services

Social Media Implementations

Software Engineering. So(ware Evolu1on

Using Code Quality Metrics in Management of Outsourced Development and Maintenance

Measuring the value of social software

innovative solutions

Tectura Offshore. Delivering Development Services for Microsoft Dynamics

Enabling Data Quality

900 FTE RECRUITING OVER. How Capita used insight to deliver the most successful Black Friday for a major retail customer.

Design methods. List of possible design methods. Functional decomposition. Data flow design. Functional decomposition. Data Flow Design (SA/SD)

Four Steps to Faster, Better Application Dependency Mapping

Centralized Operations: Strategies for Today and Tomorrow

Agile Master Data Management A Better Approach than Trial and Error

Measuring Software Complexity to Target Risky Modules in Autonomous Vehicle Systems

14 TRUTHS: How To Prepare For, Select, Implement And Optimize Your ERP Solution

Achieve full value from your applications. Avanade Application Development Solutions

MANAGING USER DATA IN A DIGITAL WORLD

Digital Enterprise. White Paper. Multi-Channel Strategies that Deliver Results with the Right Marketing Attribution Model

ROUTES TO VALUE. Business Service Management: How fast can you get there?

BestPractices. Dashboard Design: Key Performance Indicators & Metrics Choosing the right data to display. Thomas W. Gonzalez Managing Director

G-Cloud III Services Service Definition Accenture Cloud Integration Services

Meeting the challenge of software quality and maximizing return on investment Performance driven. Quality assured.

Improving Quality with Software Metrics

"Why Didn't We Do It Sooner?" Deployment of a New BI Solution at The Pain Center of Arizona

Asia Pacific. Tax Management Consulting Why and What?

Make the Leap from ecommerce to Omni- Channel

CONSULTING SERVICES Managed IT services

Transforming Your Core Banking and Lending Platform

The Future of HCM Technology Wim Valstar, SAP SuccessFactors

BI Dashboards the Agile Way

Transcription:

Reducing Technical Debt Using Maintainability Index Too much debt can be bad for business. We are all familiar with the negative repercussions that financial debt can cause. Technical debt, and the cost of addressing structural issues within software code, can also place a huge burden on the business unless it is managed. In the case of technical debt, the onus is on the technology leadership of an organization to contain it. Development managers often do not see it coming, as they are too close to the software releases. Rather, debt builds up, exposing the company to significant risk unless the organization has a reliable way to quantify and manage it. Ness Software Engineering Services ness-ses.com 1

So, what is Technical Debt? Software development is often destabilized by an expanding footprint of applications that is built over many years. Companies do not sunset parts of applications, functions, or redundant capabilities, so they end up with bloated code that is difficult to maintain over time. Software application development that involves customizations is particularly prone to incur technical debt. This debt needs to be contained, or the cost of managing the software will reach levels that are no longer sustainable. Figure 1 Software entropy view Figure 1 shows a software entropy view that illustrates the steady increase of debt that occurs with every release. This delta debt increase often goes unnoticed because it is not quantified, or it may have been justified as a necessary corner to cut in order to make a timely software release. With every release, net-new functionality is introduced that eliminates some prior code, but in many instances, this older code is not extracted and remains in the code base. In addition, the architecture choices made earlier on in the development program is another reason organizations incur technical debt. Some organizations employ a form of refactoring and code cleanup to eliminate this debt, and some have initiatives to revise the code architecture. Both are good practices in code hygiene to help maintain a supportable application. The rate at which technical debt is incurred varies by application type; for example, applications that use frameworks/platforms, applications that are built traditionally, (i.e. from scratch and/or with some frameworks), and applications that are built as Proof of Concepts that are then modified and moved into production. The rate of technical debt incurred is directly proportional to the software entropy. The amount of software entropy in custom-developed applications is greater than solutions built on commercial, off-the-shelf software (Figure 2). This is because commercial software limits the number of customizations and extensions that can be applied to the solution. Nevertheless, companies should have clear boundaries on what is an acceptable level of debt and what is not. Figure 2 - The entropy curve will be different for each application suite. Ness Software Engineering Services ness-ses.com 2

How can you measure technical debt? The Maintainability Index (MI) The Maintainability Index (MI) is a comprehensive metric that measures the entropy of an application. This software engineering metric is derived from a number of measures, such as Cyclomatic Complexity (CC) and Halstead Volume, which provide meaningful data to help organizations understand the maintainability of an application. The Maintainability Index is by far the one metric that has proven to provide a comprehensive view into any code base, and coefficients have been developed over time to adapt the Index to structured programming code, objectoriented programming code and other programming constructs. Microsoft has specific adaptations to this metric aligned to programming constructs on the Microsoft stack. Cyclomatic Complexity, developed by Thomas J. McCabe, Sr. indicates the complexity of a software program by measuring the number of linearly independent paths through its source code. Halstead Volume, created by Maurice Howard Halstead, is part of a set of metrics developed to identify measurable properties of software and relationships among those properties. Figure 3 Snapshot of Maintainability Index for an application Organizations should use this measure and apply it to all the modules, components and objects within an application to understand the current Maintainability Index of the code base. Using standard benchmarks outlined by the Index, any score above 85 is considered good code, between 85 and 65 is moderate, and any score below 65 suggests some form of code remediation is required. Figure 3 gives an illustrative example. The initial benchmark, when the application was first released, showed Good to Moderate maintainability. The bubble shows module-level granularity, and the size of the bubble illustrates scope in terms of Lines of Code (LOC). This makes it easier to size the code base and gain perspective relative to the MI. Ness Software Engineering Services ness-ses.com 3

In addition to a Maintainability Index, there are several other software engineering metrics that should be employed when assessing the quality of code. Applying the right set of metrics for the code base being evaluated is important to determining which aspects of the code to focus on. For example, for object-oriented code (and some of the Domain Specific Languages) you would apply metrics such as depth of inheritance, abstractness, afferent/efferent coupling, key classes, support classes, and Instability (Figure 4) to determine the quality of code and derive the technical debt. For structured languages, metrics such as lines of code, comments per line of code, Cyclomatic Complexity (CC), and distinct operators and operands are useful means for deriving the degree of technical debt. Figure 4 - View into Abstractness, Instability with classes in functional areas If an application suite has 2 million lines of code, for example, a good approach would be to generate a heat map (Figure 5) against the code base using a variety of software metrics. This helps isolate the code that is the most offending and provide insight into the areas that require further focus. The heat map also helps the company understand the correlation among parametric complexity (the number of parameters applied to a function/procedure of primitive type, derived and/or compound types), the interface complexity (measuring efferent coupling, functional cohesion), and the Cyclomatic Complexity (CC) in that module. Figure 5 - Heat map of the modules Of all the metrics, a Maintainability Index is an excellent starting point and a reliable metric for measuring technical debt. Because the metric is derived from other software engineering measures, it is also a good indicator of the quality of code that is being committed into the source code repository. Ness Software Engineering Services ness-ses.com 4

The value of trending Maintainability Index Trending MI over a period of time will highlight the rate of software entropy that is setting in. Doing so also makes it easier to mark the rate of software degradation including by each object, derived object, super or composite object with every release. Companies can go back to the first code check in to see where the MI was, and then trend with respect to that Index. Calculating the slope between two major releases or between minor (or point) releases can provide valuable insight into the maintainability of specific modules within a code base. Refactoring is needed to address the technical debt, but the current MI and any negative trends can help with prioritizing the objects or modules to be addressed. Figure 6 - Trending the Maintainability Index over time highlights the most offending modules As you see in Figure 6, the progression of the Maintainability Index for one of the modules over three releases went from Good Maintainability to Extremely Poor Maintainability. This illustrates rapid degradation of the code. Using this charting method, companies can more easily identify problem modules and perform a deeper analysis with additional information sources, such as a heat map (as illustrated in Figure 5) and input from the development team facilitating a faster and more effective remediation process. What steps can leaders take to reduce technical debt? There are a number of ways to address technical debt and scores of research articles on how to manage it. However, the most effective way to manage technical debt is by instituting proactive measures. Your development teams can incorporate simple changes into their development cycles or run them as separate initiatives. Technical debt will catch up to you over time, but by then, you will have gotten the most out of the useful life of the application. The proactive measures your teams can apply include the following: 1. Isolate the modules that have a low Maintainability Index (MI) and have trended at a rapid rate of degradation, as well as the modules that are in the negative range. 2. Group them by functionality/module. It will help you isolate which of the modules have higher technical debt. Assess how often that code gets changed by adding new functionality, modifications, or updates. Determine the specific team that is making the changes to help you further manage the code base. 3. Once the most troublesome modules are isolated, look at the heat map of the modules relative to depth of inheritance, abstractness, afferent/efferent coupling, key classes, support classes, Instability, and the size of code for each of the modules. Focus on the ones that have high Cyclomatic Complexity (CC), and check if the nesting of code, expressions, logic and convoluted code is warranted. Ness Software Engineering Services ness-ses.com 5

4. Review the amount of code that is written to implement a piece of functionality. Over the years, that piece of logic would have increased. Perform code reviews with an eye toward optimizing the code. Dead and redundant code are a primary cause of most technical debt increases. Don't forget to review the database code, as some of the views, procedures and predicates/identity statements will likely have dead code, as well. 5. Refactor, optimize the code, and run an analysis again against the newly checked-in code. Re-compute the Maintainability Index (MI), and you will see a substantial improvement in the MI. In summary, use the Maintainability Index (MI) to get in front of technical debt. It provides valuable insights into the level of entropy in an organization's code base. With every release, a quick analysis using MI of the checked-in code will provide a view into the level of debt you are incurring, so you can address it then or make plans to do so in future releases. About the Author Kuruvilla (Mat) Mathew, Chief Innovation Officer, Ness Software Engineering Services Kuruvilla Mathew is an Enterprise Architect by trade, working with solutions, sales and delivery to build leading-edge solutions for Ness's clients. With a deep working knowledge of architectures and technologies across various stacks and platforms, he leads the company's efforts in building service offerings that help companies transform in their digital journey. Mat has over 20 years of experience in product and services development in various industries working with Fortune 500 clients worldwide. He has led several enterprise initiatives as Chief Architect for clients in leading-edge technologies through thought leadership and innovation. He was the CTO of a startup developing solutions for social media marketing and monitoring in Retail and Hospitality and led an innovation technology center where he designed and built a showcase lab. A graduate of Pune University where he received his engineering degree in Computer Engineering, he works on several IoT projects and has showcased several of them at different forums. About Ness Software Engineering Services (SES) Ness Software Engineering Services (SES) is a premier provider of outsourced engineering services. Ness SES helps organizations compete and grow in today's digital economy by providing deep expertise in products and platforms, data and analytics, and experience engineering. With access to world-class software engineering resources, Ness SES' clients create advanced, new products and services, enter new markets, win new customers, and streamline operations to radically reduce costs. Ness SES delivers consumer-grade experiences with commercial-grade quality and stability through its global delivery model that offers the flexibility and efficiencies of on-site, on-shore, near-shore and off-shore sourcing, leveraging sophisticated distributed Agile techniques. Ness Software Engineering Services For more information, visit ness-ses.com 2015 Ness Software Engineering Services. All rights reserved. All other trademarks are the property of their respective owners. TBWP 1015 6