Remember meForgot password?
    Log in with Twitter

article imageInterview: How AI is revolutionising software maintenance

By James Walker     Oct 9, 2017 in Technology
Artificial intelligence is transforming how programmers write and maintain their code. Developers are using AI to manage legacy software, allowing them to move forward and work on new projects.
Of all the legacy processes to be automated for businesses, maintaining software might be the most daunting. Companies like Sema aim to improve and automate maintenance using machine learning and other elements of AI. Sema's work shows the importance of automated software maintenance, and reveals how the technology will help developers build their next big thing.
The company wants to help firms iterate on ideas more quickly by letting developers always look ahead. The costly, time-consuming task of maintaining legacy codebases can be handed over to the AI.
Digital Journal spoke to Sema CEO Matt van Itallie to learn more about the company's technology and aims. The company has already obtained promising results, including an AI that can automatically speed up Java programs.
Digital Journal: In simple terms, what's Sema doing?
Matt van Itallie: Sema is building software that improves legacy software maintenance. In other words, we're making code that fixes code.
To be clear, fully automated solutions for really complex maintenance projects are years off. We’re pursuing two tracks: tools that automate simpler software maintenance problems, and tools that assist developers with complex maintenance projects.
We have solutions for each of these types of products today. For example, we can automatically speed up the performance of Java-based algorithms. And we can provide developers with user-friendly tools that help them prioritize and sequence refactoring steps.
DJ: Not everyone's necessarily aware of what "maintenance" means. Can you offer a little more context about the kind of work you're talking about?
Sure. When I say "software maintenance," I'm talking about making improvements to existing software, not adding new features or functionality, and not the creation of new code.
"Legacy" software maintenance just means code that is not new. It includes year-old code all the way to the decades-old software that the governments and businesses use.
DJ: How is it machine learning can be useful here?
The theory of using machine learning to improve software engineering and software maintenance has been around for years and in some cases decades.
What’s exciting is that the rise of GPUs and other technologies have radically improved the cost-adjusted performance of machine learning. And we are seeing the rise of giant software data sets, through repositories like GitHub, that provide the training and testing sets.
Let me give you two examples of machine learning used in software maintenance.
First, genetic programming (GP). Let me give a mea culpa to the technical experts reading this: GP is similar to but not exactly the same as machine learning. It allows you to "mutate" an initial piece of software hundreds of times, determine which of those versions are better, and then mutate those, until you get to the best possible version of the code. This is much more doable now, thanks to advances in processing power.
Second, given the power of machine learning to find solutions to complex, nonlinear problems — and not just hot dog/not hot dog — we can apply that tool to improve tools that were built with traditional methods. Basically, more computing power means more ability to find the best possible answer.
DJ: How much are firms spending on software maintenance?
A lot. It can eat up 50 to 70 percent of a project's total budget. I was really surprised hearing that statistic the first time. I would have thought that software teams were able to focus mainly on building new software products. But it turns out they are stuck spending a lot of time and energy on old software.
Gartner estimates that organizations will spend about $380 billion on enterprise software in 2018, part of a $3.6 trillion global spend on IT. Within that $380 billion, maintenance costs run about 55 percent of the total. So on the higher end we are talking about a potential market of up to $230 billion per year.
And finally, software maintenance is just no fun. For almost all of my friends and colleagues who are developers, figuring out someone else’s "spaghetti code" and trying to improve it is one of the least satisfying parts of the job. They’d much rather be building new features and new functionality.
DJ: Aren't there already technologies to help developers maintain code?
The primary way that most organizations carry out maintenance is through in-house teams. Typically an organization will allocate a percentage of its software development teams to maintenance, and the remaining "chunk" to new development.
Second, in some cases organizations turn to outsourced organizations, development shops that are skilled in software maintenance. For big institutions, it’s not uncommon to have huge teams working for many years to modernize legacy systems.
What we’re starting to see is the development and adoption of software tools that can fundamentally change how software is built or maintained. For example, there are many offerings available today that can help automate or otherwise improve software testing, which is useful for both new development and maintenance.
DJ: What's next for you?
We’re busy.
On the business side, we have strong interest from organizations across industries: advanced electronics, financial services, and others. We all know the quote from Marc Andreessen of Andreessen Horowitz that software is eating the world. So it makes sense that organizations are trying to find ways to limit how much software maintenance eats up their time, energy and creativity.
On the technology side, we are pursuing several exciting projects for future functionality. I’m particularly excited about new ways to mine software repositories, but why don’t we save that for another time.
More about Ai, Artificial intelligence, Automation, Software, software development