Introduction: For decades, scientists have been striving to imbue computers with knowledge and behavior akin to human beings using artificial intelligence (AI) techniques and algorithms. Although more sophisticated than traditional programming, the techniques used have mainly focused on manually growing and enhancing the system’s knowledge base, which has always been limited. Limited domain knowledge has proven to be a poor substitute for human expertise; in essence, AI systems are only as good as their programming (done manually by humans).

The new approach is to build systems that learn on their own, becoming experts that model and abstract rules from the data they are fed. These systems improve in accuracy, adapt to the unknown, and expand their capabilities beyond their original programming. Traditional techniques like natural language processing (NLP), rule-based reasoning, and knowledge representation are being augmented with machine learning—especially deep learning—to enhance AI (see Figure 1). Preliminary results are promising: we are witnessing the emergence of new apps with a certain level of “intelligence” across a wide range of domains.

This wave of artificial intelligence will impact the work of software developers, so being prepared is crucial. Developers need to understand these technologies and how to apply them, both in the software development lifecycle and in the applications themselves.

Impact on the Development Lifecycle: Here are some possibilities of AI applied to software development:

  1. Swiftly Transforming Ideas into Code: Imagine a development team being able to describe a business idea in natural language, and the system understanding and converting it into executable code. While this might still be science fiction, natural language processing and expert systems can suggest changes and improvements to an application. AI will enrich requirement models and test cases with more sophisticated text recognition, resulting in better code generators.
  2. Enhancing Estimation Accuracy: Estimating software projects remains a complex and imprecise activity, often requiring input from experts with contextual knowledge. Picture a solution that analyzes historical data from previous projects in a company, identifies statistics and correlations, and employs predictive analytics and business rules to provide more accurate estimates of time and effort.
  3. Accelerating Defect Detection and Solutions: AI could analyze the skillset of the person who wrote the original code and locate an available person with a similar profile when troubleshooting production issues, thus saving time and effort.
  4. Automating Prioritization and Testing Decisions: An AI could analyze an application’s usage patterns in production and decide which backlog requirements should have higher priority or be implemented first. This usage behavior analysis could also be used to generate automated test scripts.

Impact on Applications: A new generation of applications that can speak, listen, sense, reason, think, and act is emerging for our computers, phones, and devices. The list of companies building AI-enriched applications is rapidly growing.

Here are some capabilities of next-generation applications made possible by AI:

  1. Natural Interaction with Humans: AI enables computers to see and listen to users, responding through natural language voice interactions, breaking away from the history of unnatural interfaces like punch cards, keyboards, mice, and forms.
  2. Expert Systems: AI offers the possibility of building domain-specific expert systems that can assist novices or support managers in decision-making. These systems, enriched with deep learning, are becoming popular and powerful tools.
  3. Imitating Human Abilities: AI can enable applications to mimic typical human capabilities. For instance, a mining company in Brazil used optical character recognition instead of RFID tags to automate their train inventory process.
  4. Self-Learning Software: Deep learning combined with big data will cause significant disruption in application development. Unsupervised learning will soon play a pivotal role in building applications.

Enabling New Application Types: Thanks to AI, we will gradually construct unprecedented types of applications. Companies need to develop imagination and expertise to build these AI-enabled applications. The adoption of AI will happen gradually, and Forrester Research envisions a three-stage process:

  1. Making Existing Apps More Conversational and Fluid: Initial AI experiments focus on adding limited “cool” features to enhance user experience.
  2. Enhancing Understanding, Reasoning, and Decision-Making: By combining data and ontologies with machine learning algorithms, applications will gain the ability to reason and deduce information.
  3. Building Apps That Transcend Apps: Traditional desktop or web applications will gradually give way to intelligent agents and bots. Developers will shift from programming them to training them.

Conclusion: Software organizations need to develop capabilities in the field of artificial intelligence. AI won’t replace developers’ work; rather, it will enrich it. Building AI-enriched applications and improving development processes through AI will require new skills.

It’s recommended to avoid the notion of data scientists as super-geniuses with domain knowledge, mathematical skills, analytical capabilities, programming expertise, and infrastructure management abilities. A more realistic approach is to have specialists in AI (mathematicians) collaborate with experts in data engineering (programming and infrastructure management).

The software development process is a candidate for improvement through AI. However, for this to happen, well-defined and instrumented processes are necessary. Mature organizations that have this in place will be the first to reap the benefits, ultimately allowing them to build better software with less effort.

References: D. Lo Giudice et al. “How AI Will Change Software Development And Applications”. Forrester Research, October 2016.”

Leave a Reply

Your email address will not be published. Required fields are marked *