How COBOL Code Can Benefit from Machine Learning Insight
Did you realize that you, as a software developer, spend about 75% of your time searching through and querying to understand code, fix bugs and make necessary changes? No, not writing new code but engaging in the cumbersome, time-consuming endeavors of debugging and enhancing.
With every change, applications grow increasingly complex, escalating the importance of software development productivity, which is attracting greater attention from the professional community. Whether a startup’s leadership is concerned about how much the software development team costs and wants to promote efficiency to get more done with less, or a corporate engineering leader is “shaking out” their teams to improve output, questions about productivity inevitably arise.
While some tools can help improve productivity by suggesting what code to write, even as the developer is writing code, software developers still have to use their brains to add new features, fix bugs, implement changes to meet regulatory requirements, address security needs and solve challenging engineering problems. But what if there was a tool that did some of the hardest thinking for you?
Enter COBOL Colleague, software that uses artificial intelligence to automate the identification of specific lines of code that require attention — regardless of how entangled that code might be throughout the application. (The software initially supports COBOL programs but will soon support others as well.)
What Software Developers Do without Realizing It
To be effective in maintaining and supporting complex critical systems and applications, software developers do arduous work to ensure that the software remains functional. By gaining specialized industry and institutional domain knowledge and conceptualizing the code to understand the intent of previous developers, engineers inherently understand the risks associated with modifying the code. The more developers understand how different pieces of code are connected, the better they’ll understand the entire code base, making them more effective in changing it.
To develop that understanding and create those concepts about the code, one common approach is to just read the code. Developers will often find one thing they know the code does and trace that behavior backward from the end, creating a “mind map” of the connections between different parts of the code.
Another method for closing the knowledge gap is utilizing code search tools and static and dynamic analysis tools. These tools will also ultimately require that the developers simulate what the code is doing so they can conceptualize the capabilities. That means they are mentally tying the pieces together.
Ask any seasoned developer who is new to a code base about their experience, and they will undoubtedly tell you that the process of understanding what all of the code does is cognitively intensive and very time-consuming (remember the eye-opening statistic in this article’s opening paragraph?).
How Today’s Tools Are Helping
From bug localization to program repair to code analysis and synthesis, many modern software development tools like Sourcegraph, SonarQube and DeepCode can analyze massive code bases, suggest where in the source code to look and even signal potential “bad code” that needs to be addressed. Whether illustrating the code using pictures, or enabling developers to search for particular APIs, or recognizing how a piece of code is not optimally written, tools like these can help developers more quickly identify patterns in the code. Yes, these tools help but not with the most cognitively difficult part of maintaining applications.
Most of today’s tools are not yet capable of identifying the specific lines of code that need to be changed, and unearthing that information is hard cognitive work. Worse yet, some tools can even suggest incorrect code changes or deliver false positives that send developers down rabbit holes that they might not realize they’ve fallen into for a long time. Consequently, even when using the best software development tools, developers still have to rely on their cognition to weed through seemingly disconnected facts and assemble the relevant pieces of code to safely make changes.
A Code Base Is a Little Like a Novel
Imagine that a murder mystery novel is the code base. In this scenario, when readers (developers) want to determine where the murder took place (what behavior in the code needs to change), they have to look on more than just one page (throughout the code base). In such novels, there is also often more than one plot readers have to follow. Whether the main character gets married or moves away, readers need to understand how the different elements on all the different pages work together to construct the whodunit narrative. To find where the murder took place, they must also disambiguate those multiple storylines, the murder weapon, potential suspects, the murder location and more.
Now imagine using a universal code search tool to find out where in the novel the murder took place. Such a tool might tell readers to look on specific pages, but then readers will have to go back and read all of those pages to determine whether the hit is relevant to the storyline they care about in the novel. And then they still have to reassemble the storyline because it may not unfold in order or relate back to earlier passages.
But there’s a better way! What if you could ask a tool for the storyline that you want and just get that back? Enter COBOL Colleague.
COBOL Colleague: An Artificially Intelligent Coworker
Powered by Phase Change Software, COBOL Colleague employs a unique artificial intelligence approach to automate thinking processes for developers. With the source code as the tool’s only input, COBOL Colleague immediately empowers organizations with application expertise and intellectual control over their applications and systems — whether written in COBOL or (in the future) any other programming language.
The solution rapidly improves developer efficiency by getting developers quickly to the precise code that needs to be changed and presenting that code in execution order, along with the data necessary to replicate the behavior. Utilizing cognitive automation to close the software knowledge gap at machine speed, COBOL Colleague reinterprets the code into accurate, easily understandable concepts much faster than humans can think, and then makes those concepts easily accessible to developers for their maintenance activities.
Utilizing symbolic machine learning on application code, COBOL Colleague “thinks” about the code in the same way humans do — in cause and effect. In essence, this reflects the code as use cases, which is what developers are ultimately seeking to work with. By transforming the code repository into a knowledge repository developers can query, the unique AI enables software developers to interact with a collaborative agent to find the code they need instead of searching through millions of lines of code and piecing it together in their heads.
Using the murder mystery analogy, the developer asks for the storyline from the book and gets the storyline they need.
With COBOL Colleague, developers like you can now isolate defects, identify the code to be changed and mitigate the risk involved in digital transformation and modernization. While Colleague is not yet sophisticated enough to reconstruct or write code for you, the tool empowers developers to focus on what brings their organizations the most value — making code changes.