Cadastre-se agora para um orçamento mais personalizado!

Implementing AI into software engineering? Here's everything you need to know

12 de outubro de 2023 Hi-network.com
Kobus Louw/Getty Images

Software developers thrive on certainty. If you feed a program a set of inputs, you'll always get the same outputs. For most of software's history, software was built entirely on deterministic logic. What goes in determines what goes out.

We even have a term for that: top-down programming. All algorithms follow a path, with branching that's also based on expected logic. When we debug code, we run down that same path over and over again, finding where behavior deviates from expectation, and wrangling it back on track.

Special Feature

The Intersection of Generative AI and Engineering

The surge of generative AI can harness tremendous potential for the engineering realm. It can also come with its challenges, as enterprises and engineers alike figure out the impact of AI on their roles, business strategies, data, solutions, and product development. What does the future roadmap look like for bringing generative AI into the software fold? decodes from all angles.

Read now

Certainty and deterministic logic work for a lot of software. But the real world doesn't work that way. By contrast, AI is probabilistic. Answers are never exact. Instead, AI uses models to predict behavior, and then generates that behavior.

Perhaps the best way to describe this is how traditional software is updated vs. AI. Traditional software gets updates and patches. AI learns, evolving on its own, understanding and assimilating user feedback without manual intervention. This makes traditional software more precise, but AI more flexible.

By implementing AI into software engineering, we get the best of both worlds: software that is both precise and flexible. This article will explore that merger, and what it means for developers and engineers, as well as the users of their creations.

The convergence of AI and software engineering

Developers today have the opportunity to use AI as part of their coding process. New AI-powered tools help out with creating code, finding bugs, setting up test suites, and generating test and sample data. In some ways, AI can help improve a developer's productivity, reduce the time spent on repetitive tasks, spotlight flaws, and help less experienced developers produce code as if they had more experience.

But there's a downside: AI is notoriously unreliable. You need to be able to check its work. AI's present work with an apparent level of confidence that makes their results appear correct even when they're not. So, if you don't have the skill, knowledge, and experience about the topic you're asking it to work on, you won't be able to tell when it's wrong.

That said, AI can help tremendously with the process of developing, maintaining, and testing code. While not everything will benefit, there are points in the process where AI can jump in and take hours or even days off the amount of work required.

But it's not all about producing code. It's also about the code produced. The convergence of AI and software engineering will allow developers to create more intelligent, user-centric applications, and the software users' experience will be more flexible and dynamic than it is with traditional hand-coded applications.

Over time, we'll see some applications evolve on the fly based on real-time user feedback, and some software that preemptively addresses bugs and incompatibilities before the user even encounters them. It won't ever be perfect, but it will definitely help make software better.

AI in everyday software tasks: What's the real gain?

All that sounds good, right? But let's bottom-line it: What is it about AI in software engineering that can give developers a few extra hours to watch Doctor Who, play with the dog, or -- I know this sounds unreasonable -- sleep? Let's look at five areas that come to mind.

Automation of repetitive tasks

There are a ton of very dull, mundane tasks that require the skills of a developer, but are anything but fun. One example is helping to write repetitive code blocks.

Coders have long been able to set up their IDEs to fill out code blocks as if they were macros, but AI can learn the pattern and intent of code blocks and help generate them using either the style of the programmer or organization, and without necessarily pre-programming them. It could suggest, "I've seen you write code like that before. Would you like me to build it out for you?"

This can help developers focus on the more creative work, yes, but it can also introduce consistency across code without requiring the developer to try to fit code into a restrictive pattern.

Predictive analysis and improved software reliability

This is where AI can anticipate the behavior of code based on patterns and trends. AI tools can be used to predict system overloads, anticipate user behavior, possibly optimize the user experience, and perform preemptive maintenance on areas needing improvement. Another huge benefit would be updating code to meet minimum requirements as the platforms they run on change and update.

Beyond saving programming time, the software can be made to be more reliable and resilient almost entirely on its own.

Speeding up the development/test cycle 

Code always needs to be tested. The typical cycle involves a bit of coding, a bit of testing, a bit of fixing... rinse, wash, repeat. However, because AIs may be able to predict software behavior, they could flag errors before testing even needs to begin.

Development environments have long been able to flag syntax and type-conversion errors, which involve a knowledge of the language structure. But if development environments can start to flag logic errors, this could go a long way to speeding up code delivery and reducing the number of fixing stages necessary for a given project.

Reducing software maintenance costs 

Most software projects, once complete, require a near-constant level of maintenance to keep up with bugs discovered, changes in the platform, and performance issues. I wrote a piece of software that helps facilitate nonprofit donations, and I spend at least 80% of my time not responding to user requests or adding new capabilities, but simply rewriting the code to the constantly changing requirements of payment gateways. If I could reduce any of that thankless and tedious maintenance, a lot more value could be provided to users.

Maintaining the human element 

Despite the addition of AI in the development environment, all indications are that programmers -- real, human programmers -- will be creating most software for the foreseeable future.

Reducing the amount of time and tedium certainly can help developers stay sharp, but AIs can also monitor overall team performance, providing managers with notification if a team member has been over-utilized, over-extended, or heading to burnout. It can also help reallocate team assignments so that each member is working to their strengths, and help with planning and resource allocation.

Challenges and limitations of AI in software engineering

As with any increase in technological complexity, there are issues. In this section, I'll talk about three areas of concern.

Added complexity and maintenance challenge

Here's my biggest worry about AI in software engineering: As we use AI for more and more code, we'll have less and less of an understanding of how it all works. If you've ever inherited a project from someone else, especially if that organization or developer isn't available to consult, you know what I mean.

What's generated by the AI will be much more of a black box than what you and your team code, and the risk is that, once generated, it will be far harder for humans to maintain. Don't fall into the trap of expecting the AI to maintain its own software. When the AI's code breaks, it will be all on you and your team to figure out what went wrong and fix it.

Data dependency

AI relies on vast amounts of data to create its models. If you're not using a public model -- for example, if you're working on something that's unique domain expertise of your company -- the total set of data available to train an AI may not be enough.

Additionally, AI systems train on broad sets of data, not all of which are of the quality level that may be necessary for the work you're trying to do.

I keep reminding folks that bringing an AI to a software engineering project is like hiring a bunch of talented summer students. They may be bright and quick, but they're going to miss the ball from time to time, and you will have messes to clean up after they leave. While your AI won't leave, it will leave you with problems that it's not capable of solving.

Ethical concerns 

In Is AI in software engineering reaching an 'Oppenheimer moment'?, I discussed the ethical issues AI brings to software developers. Keep in mind that coders are not trained to deal with ethical concerns. I did, in fact, minor in ethics and political philosophy next to my computer science major, but at the time I was the only computer science major to have that as a minor. (Full disclosure: I chose that as a minor because a girl I liked was taking philosophy classes. So even my ethics minor wasn't fully ethical.)

Coders are trained to be solid technologists, but societal impact is not part of most computer science curricula. Self-taught programmers and developers could be even farther from training in ethics. So, expecting an army of talented technicians to see -- and be on the front lines of -- historical ethical considerations is unrealistic.

Companies using AI should either expect to expand the training of their technical teams to issues of societal impact, or bring in consulting experts to help advise and guide developers as they enter this very uncharted territory of human factors.

Tools and platforms for AI-driven software engineering

Fortunately, developers and organizations don't have to embark on their AI journeys by building all their own tools. There has been a lot of investment in fundamental research and the production of practical tools and libraries that can be licensed and included in projects.

In this resource guide section, I present a quick survey of five categories of tools you're likely to want to use, and point out a few of the key leaders in each sector. This will give you a tangible, hands-on starting point for your next project.

General-purpose machine learning frameworks

Tools in this category provide foundational structures and functionalities for designing, training, and deploying machine learning models.

  • Google TensorFlow: An end-to-end open-source platform designed for machine learning that facilitates building and deploying ML models.
  • Facebook PyTorch: A dynamic computational graph-based platform that provides flexibility in building deep learning models.
  • Keras: A high-level neural networks API, written in Python and capable of running on top of TensorFlow, PyTorch, and others.

Cloud-based AI development platforms 

These platforms offer cloud infrastructure to develop, train, and deploy machine learning models at scale, often integrated with other cloud services.

  • Google Vertex AI: A unified platform on Google Cloud offering comprehensive tools and services for building, deploying, and scaling AI and machine learning models across diverse datasets.
  • Amazon AWS SageMaker : A fully managed service that helps developers build, train, and deploy machine learning models.
  • Microsoft Azure Machine Learning: A set of cloud services that use machine learning tools to train and deploy models faster. Think of it as Machine Learning as a Service.

AI for code and software development

Tools in this section assist developers in the coding process, offering suggestions, auto-completion, and automated code analyses based on AI.

  • OpenAI Codex: This tool powers applications like GitHub Copilot, helping developers write code faster with AI-powered suggestions.
  • Github Copilot: An AI-powered code assistant that suggests entire lines or blocks of code as developers type, helping to speed up the coding process and ensure best practices
  • Snyk Code: Offers developers automated code analysis, security vulnerability detection, and recommendations for fixes by analyzing vast open-source projects.

Don't be confused by these offerings. GitHub Copilot is powered by OpenAI Codex. While OpenAI Codex serves as a general-purpose AI tool for many different coding tasks and can be integrated into various platforms, GitHub Copilot is a specialized tool for real-time code completion and assistance within the Visual Studio Code environment.

Snyk Code focuses on automated code analysis and security vulnerability detection by analyzing vast open-source projects.

Pre-trained models and platforms

These tools offer models that are pre-trained on tremendous amounts of data, allowing developers to fine-tune them for specific tasks without starting from scratch.

  • Hugging Face's Transformers: A library offering pre-trained models mainly for Natural Language Processing tasks, with a focus on transformer architectures.
  • spaCy: An open-source software library for advanced natural language processing in Python, known for its speed and efficiency.

Also: Want to build your own AI chatbot? Say hello to open-source HuggingChat

Neural architecture search tools

Finally, tools in this category automate the process of finding the most optimal neural network architecture for a specific dataset or task. (Note: This category of tools is often abbreviated as NAS. This NAS is very different from the NAS that refers to network-attached storage.)

  • AutoKeras: An open-source software library for automating machine learning, and helping find the right model for your dataset.
  • Google's AutoML: Provides cloud solutions that automate the design and tuning of machine learning models based on given datasets.

Calling the landscape of AI-driven tools and platforms in software engineering "vast" would be a severe understatement. Generative AI, and AI in general, has become the hottest trend in technology and is showing no signs of slowing down. As development requirements increase, developers seek out the most appropriate tools for completing their projects. We've shown you just a small cross-section of the resources available.

Keep in mind that this is a very fluid environment. In compiling this list, we found a number of tools that were once (as in last year) fairly popular resources but have been bought out, merged into other projects, or simply shut down as their open-source developers found new opportunities with paying gigs offering more long-term potential.

It's not only important to develop skills with the tools you use: Companies and coders also must bake the understanding of constant change into their skill sets, to be able to adapt to a market and a set of technologies innovating at warp speed.

Looking ahead: The future of AI in software engineering

The convergence of artificial intelligence with traditional software engineering is not a fleeting trend. It provides too much "easy value" to be ignored, yet as it provides new efficiencies, it also opens the many challenges we've discussed in this article and the overall Special Feature.

As we look to the future, several key trends and predictions emerge:

  • AI-first development, with machine learning at the core of projects
  • Self-adapting software that evolves in real time based on user needs
  • Collaborative AI that partners with developers, understanding context and team dynamics
  • A focus on ethical and responsible AI that emphasizes transparency and fairness
  • AI-powered cybersecurity that proactively detects and addresses threats
  • Custom AI models catering to specific needs, democratizing AI's benefits
  • An emphasis on continuous learning for developers, given AI's evolving nature
  • Code and solutions written primarily by AIs that are opaque to human developers

It's both exciting and a little worrisome to think about the impact AI promises for software engineering. As with any technological advancement, challenges will arise. However, if the last year has been any indicator, the integration of AI into software engineering is a journey rife with opportunities, set to redefine the boundaries of what software can achieve. 


You can follow my day-to-day project updates on social media. Be sure to subscribe to my weekly update newsletter on Substack, and follow me on Twitter at @DavidGewirtz, on Facebook at Facebook.com/DavidGewirtz, on Instagram at Instagram.com/DavidGewirtz, and on YouTube at YouTube.com/DavidGewirtzTV.

Artificial Intelligence

The impact of artificial intelligence on software development? Still unclearAndroid 14's AI-generated wallpapers are super fun. Here's how to create themAI aims to predict and fix developer coding errors before disaster strikesGenerative AI is everything, everywhere, all at once
  • The impact of artificial intelligence on software development? Still unclear
  • Android 14's AI-generated wallpapers are super fun. Here's how to create them
  • AI aims to predict and fix developer coding errors before disaster strikes
  • Generative AI is everything, everywhere, all at once

tag-icon Tags quentes : Nosso processo Inteligência artificial Inovação

Copyright © 2014-2024 Hi-Network.com | HAILIAN TECHNOLOGY CO., LIMITED | All Rights Reserved.