Enterprise software systems are complex and require specialized abilities and unique knowledge to update, add new features, and generally solve problems. They necessitate ongoing systems maintenance to grow and evolve, which costs your organization a significant amount of money – generally about three-quarters of your IT software budget. Unfortunately, because of the global software developer shortage, the typically brief developer average tenure at one job, and today’s inadequate source-code search tools, linters, and static and dynamic analysis tools, organizations across industries are struggling to maintain their software systems effectively.
Phase Change President Steve Brothers recently wrote an article for The Next Tech about how a novel approach to artificial intelligence (AI) software tools can help enterprises save a significant amount of time and money while minimizing the risks associated with making changes in complex software systems. The article, "Combining developer knowledge with artificial intelligence to improve software maintenance," discusses how AI and cognitive automation can automate the identification of the specific lines of code that require attention — no matter how entwined throughout the system that code might be – at machine speed. The tools also comprehend and reveal all of the upstream and downstream changes that will occur due to code modifications so developers can be confident when updating source code to add new features, fix bugs, meet regulatory requirements, and address information security concerns.
When maintenance issues result in mission-critical application downtime or crashes, your organization will likely lose market share, social capital, and maybe most important – reputational risk. A 2019 IBM report revealed that 41% of IT leaders surveyed indicated that the costliest aspect of downtime is its negative impact on corporate reputation.
Phase Change President Steve Brothers recently authored an article for CEOWORLD magazine titled, "Reputational risk: How AI helps mitigate damage to your brand," about how artificial intelligence (AI) can now be used to locate specific code that's causing maintenance issues (and downtime) to improve developer productivity and ensure that source code changes remain intact and won't cause more problems down the road.
Mainframe systems are used across industries and around the globe, with over 10,000 currently in worldwide use. They are relied on by some of our most important institutions, including 96 of the world’s 100 largest banks, nine out of 10 of the world's biggest insurance companies, 23 of the 25 largest U.S. retailers, and 71 percent of Fortune 500 companies. Unfortunately, often because of a lack of detailed understanding of these mainframe systems, making source-code changes can be costly, risky, and can tarnish the organizations' reputations.
Phase Change President Steve Brothers recently wrote an article for BuiltIn.com titled, "You Can Use Artificial Intelligence to Fix Your Broken Code," which explains how artificial intelligence (AI) can help developers better understand the codebase, and help them find code responsible for application behavior at machine speed. Developers will no longer have to pore over millions of lines of code to unearth the intent of previous developers and find the source code that requires change.
Mainframes are widely considered the backbones of many global financial services firms because they deliver unparalleled security, stability, and processing power. From credit card payments and ATM transactions to loans and mortgages, mainframes are relied on by 44 of the top 50 banks to host core applications that deliver secure experiences based on real-time data analytics.
Mainframe systems are complicated and require meticulous processes to continue providing core operational value. While they are fully capable of running newer applications and systems to create new products and revenue streams, their ongoing support and modernization are challenging.
Brothers believes automation and artificial intelligence (AI) could greatly assist banking firms in maintaining and enhancing their mainframes because the key to sustaining these systems is precisely identifying the functionality created by the source code that is intertwined throughout the system — and changing that behavior without unintended consequences. Using a new AI approach that's designed to sift through large quantities of code in the same way humans do, AI-powered tools can aid developers in their frequent search through the deluge of code to rapidly identify where they need to make a change.
Phase Change President Steve Brothers was recently interviewed for an article in The Fintech Times that considers the role AI could soon play in the financial industry. The article, "Phase Change: AI Powers the Future of Financial Services — Just Not in the Ways You Think," examines how AI will help maintain the software that runs the global financial enterprises, as well as other mainframe-based industries.
AI is already utilized by financial-industry players to automate investments, insurance, trading, banking services, and risk management, primarily on mainframes originally developed in the 1960s. Mainframe computing systems provide high security; high-speed, high-volume transaction processing; and reliable uptime. However, they can be complicated to use and require constant maintenance. Plus, they struggle to evolve quickly enough to support the increasing number of banking services supported by cloud mobility and big data.
New AI technologies can soon be used to automate software maintenance by helping developers better comprehend the source code — and make changes rapidly and precisely. The programmers that developed and maintained these huge and complex systems are in high demand (and are paid like it) or aging out of the workforce, and the financial institutions that rely on them are scrambling to understand the codebases with less experienced developers.
Rather than relying on knowledge transfer protocols to pass along specialized domain and program knowledge, financial institutions can now deploy advanced AI-powered tools to automate the process of identifying specific code that requires attention, regardless of how entangled that code is throughout the system.
Transforming business operations is a constant need, and the pandemic-prompted emphasis on modernizing legacy computing systems has forced organizations across industries to accelerate their modernization plans. The problem with mainframe modernization, however, is that today’s code search tools, linters, and program analysis tools are deficient when it comes to mitigating the risks associated with improving and even simply maintaining legacy systems.
Phase Change President Steve Brothers recently authored a contributed article for DevOps.com about how artificial intelligence (AI) tools can help developers work more productively and decrease the risks associated with legacy system modernization and maintenance.
The article, "How AI Can Improve Software Development," explains how today's bug localization, code visualization, and error detection tools don't actually identify specific lines of code that require change. And, once the code is identified, developers are still required to build mental models of their applications to make sure any source code changes don't make even more bugs or crash the entire system.
Through intelligence augmentation, AI can automate the identification of specific lines of code that require change – developers simply ask the AI-driven knowledge repository where unwanted behaviors are coming from, and the AI quickly identifies the code associated with that behavior. Also, before the developers compile or check in the new code, the AI can forward simulate the changes and validate that they won't create more problems or break the system.
Tech media publisher readwrite recently published an article authored by Phase Change President Steve Brothers about how AI can be used to vastly improve a developer’s ability to efficiently identify code that requires modification or modernization.
Developers new to software applications often require months or even years of on-the-job training to avoid making dangerous mistakes and putting critical systems at risk. With today's tools, developers spend roughly 75% of their time searching through and reading source code to identify the relevant code that produces the functionality that requires modification or modernization.
By using AI tools to analyze source code and discover each and every one of its behaviors at machine speed, the code repository can become a knowledge repository that represents source code in the same way that humans think about the world, in cause and effect. The AI interacts and collaborates with developers to disregard code unrelated to the behavior and narrows down the codebase to the specific code that needs to change, without searching through and understanding all of the surrounding code.
Phase Change President Steve Brothers recently authored a contributed article for Nextgov.com about how artificial intelligence (AI) tools can help governments deal with the mainframe-developers skills shortage and continue to maintain critical legacy systems.
Brothers' article explains why the problem isn't just language skills, it's the lack of application knowledge to productively maintain applications. Supporting applications is very different than creating them. Defects are discovered through behaviors, which the developer must trace back to the flawed source code. The defective code and its dependencies can be spread throughout the codebase in multiple modules and repositories. Without the application knowledge to know how the system works, maintenance becomes an unproductive scavenger hunt. Then the developer must discover how the repair will impact the rest of the system.
AI tools help developers locate and isolate defective code by conceptualizing code computations at machine speed. It eliminates code unrelated to the bad behavior and enables the developer to find and focus on defects. Then the AI simulates running the repaired code to determine change impact so the developer is confident his work won't negatively affect the application.
Although the modern enterprise moves quickly to adopt and support helpful new technologies, most organizations must continue to rely on their legacy systems for core functions. Legacy applications struggle to evolve fast enough to support shifting and evolving organization demands. The companies frequently try alternate strategies to keep pace, such as building on top of existing applications or moving them to other platforms, but these approaches only complicate another risk -- the software developer shortage.
On May 19, BetaNews.com published the article, "Leveraging AI to close the application knowledge gap," which was written by Phase Change President Steve Brothers. The story explains how the software-developer shortage forces many companies to work around legacy applications when they lose the expert developers that built and maintained them, and how those word-arounds can produce disastrous results for the organizations' bottom lines and reputations.
Steve also describes how artificial intelligence (AI) can reinterpret what source-code computations represent and convert them into concepts so developers no longer have to research and discern the original developers' intent. This enables new developers to quickly understand the applications' behaviors, and with that knowledge, the AI can quickly guide developers to the precise area of code where changes need to be made.
Software must evolve to stay effective, which makes application maintenance a persistent and growing obligation, especially for organizations with large, legacy systems.
Changing marketplaces, compliance updates, security patches, hardware improvements, bug fixes, and process updates all drive code changes.
And software maintenance isn't cheap. Kuipers says that some of his clients spend up to 90% of their IT budgets on program upkeep.
A common problem is the technical debt that piles up when the software team doesn't understand the code they are modifying and its system interdependencies. Combine that lack of knowledge with time and resource demands and the team often resorts to short-sighted modification techniques that add code instead of modifying it in place, which only increases the codebase size, complexity, and technical debt.
Maintenance Challenges for Legacy Code
Legacy applications can have massive and complex code bases created by hundreds of developers throughout decades of work. For example, in 2012, The Bank of New York Mellon reported that its core banking system contained 323 million lines of code and 112,500 COBOL programs. With that size and complexity, even an experienced developer can’t know the whole system.
One issue is the lack of useful documentation. A Catholic University of Brazil study found that between 40% to 60% of maintenance activity is studying the software just to understand it, and the impact analysis required to make the changes without breaking functionality.
Updating documentation can shorten time-to-competency, but it's frequently a low-priority task when stakeholders are demanding that bug fixes, security updates, and functionality improvements be completed yesterday.
Another challenge is institutional brain drain. Inevitably, experienced developers depart the software team, and the loss of that expert knowledge extends the amount of time it takes new developers to understand the applications because there are fewer experienced colleagues they can rely on for assistance.
How do software teams cope?
Application change is required but the lack of understanding introduces risk. To decrease immediate costs and risks, developers and managers may choose to use short-sighted strategies.
Don’t touch the black box
One technique programmers use to avoid breaking unmanageable applications is building separate subsystems (Figure 1).
Just copy the whole damn thing
Another tactic is to duplicate the applicable code (Figure 2). Good development practices recommend editing code rather than duplicating it, but if developers don't understand the code they are editing or its interdependencies, they risk breaking the old functionality.
Instead, developers leave the applicable code in the application, but copy it and place the copy in a new location. Then they modify the duplicate code, hopeful that by leaving the original code in place, they won’t break its functionality.
Duplicating code reduces the risk of breaking the application in the short-term but increases maintenance costs and program complexity in the future. By adding 15% to the code base annually, it will double in just 5 years, making maintenance that much more difficult, expensive, and risky.
Conclusion
Companies face a difficult situation when they choose short-terms strategies that avoid immediate cost and risk but end up creating long-term technical debt.
The solution is to ensure that developers understand the code completely to make sound development decisions. However, the speed of business and technical change affords few organizations the time needed to completely understand their applications.
To learn more about how Phase Change's COBOL Colleague helps developers understand complex COBOL-based applications and make changes quickly and confidently, visit Phase Change's product page.
Elizabeth Richards is Phase Change's Director of Business Operations. You can reach her at [email protected]. Todd Erickson is a Technology Writer with Phase Change. You can reach him at [email protected].