Software development is at the heart of everything that takes place in this digital age. There is no denying that software development has also become an integral part of AI disruption. Artificial intelligence (AI) is becoming a real-life force, one capable of changing the world as we know it today. So how has software changed over time? What are some major trends to watch for? And what does this mean for businesses moving forward?
This article will explore how software development within AI disruption looks like now, and what to expect moving forward. It will touch on implications for programmers and for machine learning systems in particular.
Software Development
There have been advances in DevOps and IDEs. Yet software development remains labor-intensive. And it does not help that it is extremely difficult to recruit qualified developers.
But AI can make a big difference. “Advancements in state-of-the-art natural language processing algorithms could revolutionize software development, initially by significantly reducing the ‘boilerplate’ code that software developers write today and in the long run by writing entire applications with little assistance from humans,” said Nnamdi Iregbulem, who is a Partner at Lightspeed Venture Partners.
Take automated testing, for example. If you think of the most common software development tasks like parsing, matching, and searching through strings of code, there is a way to automate them using AI. The result is a much more enjoyable experience because the work required to test the software is simplified.
In many cases, it’s not just about programming that needs automation. Data science has been largely ignored by big companies which have been relying on a small set of banking and finance algorithms to perform their analysis – a field known as ‘financial engineering.’ AI will help transform financial services with algorithms that can process huge amounts of data in real-time and perform a sophisticated risk assessment.
“Big companies are simply not agile enough to continually build and maintain the complex models they use to perform a risk assessment. That’s why startups tackling this problem that embrace AI will be the winners in the next few years,” said Iregbulem.
Forget Deep Blue, IBM’s chess-playing computer that beat Garry Kasparov in 1997. Its successor, Watson has already started automating the management of medical data and could soon be used for diagnostics purposes. AI can also make a big difference in other industries among which are healthcare, insurance, fintech, and cybersecurity. It’s still early days but it is hardly surprising that investors are pouring money into AI ventures at an unprecedented pace.
Note that AI techniques like natural language processing can make other parts of software development more efficient. Instead of forcing developers to write large amounts of code, they can focus on building solutions. Here’s how Torsten George, Investor at Accel Partners put it: “Where once the tools that enterprises used for software development, testing and operations were disparate and hard-to-use, today there are open source alternatives to every system in the software value chain. The IoT will bring even more data to the table; big data analytics is making analysis easier; machine learning is making sophisticated pattern matching possible. Together, this will fundamentally change how software is built and how startups approach enterprise customers.”
Software Testing
When it comes to testing, AI has a lot to offer as well. There are techniques like genetic algorithms that can be used for fuzzing, which is a technique of corrupting inputs to software. It’s commonly used to find memory leaks and other defects in the program.
The concept of fuzzing originated at Microsoft and was first used to test its Windows OS. Two programmers, Rick Rashid and Doug Klunder wanted to develop a tool that could automatically identify bugs by introducing random errors into the operating system’s executable file format. That required them to understand the assembly language—code used to generate machine instructions for a processor. The pair programmed a genetic algorithm that would search for new inputs that would cause their program to crash. This led to some very strange results like the fuzzer creating malicious code numbers like 1,234,567,891,000, which is out of range for an integer variable.
“When they ran this program on all Windows programs they could find no pattern or meaning in these crashes,” said Rashid. “This was very strange because there was nothing wrong with the program itself; it was just some random events that had corrupted its behavior. We had created a new kind of bug.”
And since then, fuzzing has become a common practice among software testers at the software industry level. The challenge is that it doesn’t always work. And sometimes, the fuzzer itself could be the source of issues. But it’s useful since it can find defects in complex programs like system software or web applications, where the code is written in low-level languages like C or C++, where bugs can be hard to trace even for skilled programmers.
That said, there are essential changes that need to happen inside of software development. First-order defects are the most common ones – bugs that are easy to find and fix. But there are second-order defects that are more difficult to identify. Finally, third-order defects need to be addressed by AI techniques like deep learning or reinforcement learning.
Interested in reading more about software development? 5 Common Myths in Software Development discusses myths that you might have heard about software development and why they are not correct.
If you would like to discuss Your Logo with Mojoe.net or your website’s analytics, custom logo designs, social media, website, web application, need custom programming, or IT consultant, please do not hesitate to call us at 864-859-9848 or you can email us at dwerne@mojoe.net.