Image
Jennifer Horkoff from Canada is one of the researchers in the big group in Software Engineering.
Jennifer Horkoff from Canada is one of the researchers in the big group in Software Engineering.
Photo: Gunnar Jönsson
Breadcrumb

AI for software engineering, and software engineering for AI systems

Published

The Division of Interaction Design and Software Engineering is one of the world's largest research groups in Software Engineering, internationally known for a more applied approach to research and a close collaboration with industry.

Requirements expert Jennifer Horkoff from Canada is one of the researchers in the group and in her research she is focusing on requirements engineering for software systems. AI is now slowly starting to change the conditions for requirements engineering, but the complexity definitely remains.

At Lindholmen in Gothenburg you can find an internationally well-known group in software. The group is among the largest research groups in software in the world and contains many prominent researchers in requirements specification, testing, software architecture and AI technology. The environment is very international with researchers and doctoral students from over 15 countries such as the USA, India, Iran, France, Germany, China, and Uzbekistan.

One of the researchers is Jennifer Horkoff from Canada who hasbeen part of the group since 2016.

Jennifer Horkoff started her career with a bachelor's degree in computer science but chose to specialize in software engineering. She realized early on that she wanted to devote herself to research. Already as a BSc student she was looking for people who had research projects available and as a master's student she finally found a research project to delve into. The project went well, Jennifer realized that she liked the software field and has worked with it ever since.

She did here master's and PhD there in Canada at the University of Toronto, working in in goal models and requirements engineering. 

Requirements for software is an art and a practice

“For about 20 years now, I have been conducting research in requirements engineering for software systems,” says Jennifer Horkoff. "Working with requirements engineering for software systems means understanding what the system should do and how well the system should perform its tasks. It may seem obvious, but it is not as easy as it sounds."

“In our research, we try to create different theories, principles, practices, methods and tools to make this process as controlled as possible. We want to achieve a very good understanding and be able to create an exact definition of what a system should do and keep that knowledge alive during the system's lifetime. The goal is to create a system that is simpler and more manageable but at the same time high quality: more stable, safer, more reliable with a higher quality and where the system can also maintain these properties throughout the time it will be installed.“

Conflicts between qualities

“There are many ways to develop a system, and different solutions also generate different qualities, says Jennifer Horkoff. Conflicts between qualities in software is a large area of research. A certain kind of solution can achieve a certain kind of quality, but at the same time have a negative impact on another. You must try to find a way to balance the qualities you want to achieve. My doctoral thesis was about exactly that – how to analyze different models to try to understand which trade-offs are the most optimal when navigating between different requirements and different technical solutions.“

Requirements management that includes AI

In recent years, Jennifer Horkoff has been working on requirements management for systems that include AI and machine learning. The technology is fairly new to the software field, when Jennifer was a doctoral student the research was on “regular” software. With new practices where machine learning is starting to be added to software systems, the problems around constructing optimal software are also becoming significantly more complex. It is difficult to specify in advance what AI systems are capable of and difficult to overview what they should do. According to Jennifer Horkoff, there will be more risks in software development that are difficult to predict.

"All the techniques, frameworks and tools that we have previously developed for requirements setting and software development now also need to be able to be applied to systems that include machine learning, says Jennifer. Some parts of the material we have in requirements management sometimes need to be rewritten, sometimes the material can be used as is. Unfortunately, all the problems that we have had in software requirements setting for decades remain despite artificial intelligence. Now we have also received new and sometimes more complex problems to solve precisely because of the machine learning aspect."

How to find the best way to use AI to solve real problems?

"The focus when it comes to Software Engineering and AI technology is not so much about coming up with new and innovative ways to conduct machine learning or new algorithms or new approaches, says Jennifer. "Rather, it's about using all the results that AI generates and figuring out how we can use them in real life. Much of the research in AI is fantastic but is largely based on lab situations and can sometimes be difficult to apply to real-world problems. This is where AI engineering comes in: finding the right data and integrating the AI parts with the entire software product, which is large and complex."

"For us in our Software Engineering group, it's less about inventing new AI and more about just applying different AI systems, working with the systems in real life, and applying all the software and requirements engineering principles that we have been working with for the past 40 years."

It is mainly about "Taming the beast"

Even if there are AI and machine learning elements in her work nowadays, Jennifer still sees herself as a software engineer.

“Again, from my requirements engineering perspective, it's still all about specifying what the machine should do. I don't see the work as man versus machine. Technology is a tool; it's about getting the system to do exactly what you have in mind and how well the system performs the task. It's a difficult process, both when you use traditional software technology and when you train a machine learning model, for example. The work of getting exactly the right data into the system is complex. The system may also be using generative AI with unknown training data. To try to create success with AI systems, we should ask: Do you have a sufficiently in-depth understanding of what it is that you need the system to do? Do you have any way of measuring how well the system performs the task?"

"It’s more about 'taming the beast' as I see it, than man versus machine. What is the most optimal way to use different forms of AI to help develop software and to set a sensible requirements specification?"

AI to develop improved software and software to develop AI systems

Requirements engineering is a large area of research, according to Jennifer Horkoff. There is a lot of work going on in AI and a lot of work going on in Software Engineering and the work goes both ways: AI to improve software and a lot of software work to improve systems with AI and machine learning.

"In our research, we have studied different examples where we have used either machine learning or generative AI to improve the quality of our software requirements specifications. You have different requirements that you specify in text form for the systems and then ask questions like: Okay, in what ways can my requirements be ambiguous? Are there any obvious errors in the requirements statement? Is there something I’m missing? And the systems then suggest improvements, classify the different requirements, and the systems may respond, 'This is an ambiguous requirement, and this particular requirement is not testable.' For these types of tasks, we see that AI and machine learning can be really useful."

Are requirements generated by AI representative of the chosen area?

"But it is also easy to get carried away and use generative AI to generate software requirements specifications, says Jennifer Horkoff. Instead of creating a requirements specification in the traditional way through interviews with users, market research, and perhaps studying app reviews, you now just ask the AI, 'Okay, I have this type of system, what are the requirements I should implement?'"

“It is tempting to use these kinds of generative AI systems because they are successful in writing requirements that sound good and coherent. The requirements appear relatively complete. The problem is that the context and the people you are going to design the system for and the huge data source that the generative AI is trained on may not be the same. Generative AI is generally trained on a  large quantities of Western datasets scanned from the internet or books, and this data may not be representative of your software users."

How will a machine be able to understand the users? When it is difficult for humans?

"How can we get a machine or a system to truly understand the needs of the users is also a good question, as one of the biggest problems today is the communication between the users and those who develop the system, says Jennifer. This is what requirements engineering has largely been about for many years. How do you effectively capture the information and requirements specification from the user and how do you check with the user that you have understood each other correctly? It is difficult. Almost all requirements engineering today is largely a manual task because it is very difficult to fully automate this."

"But despite manual handling with real people trying to interpret the needs, there will always be some preconceived notions from the people involved in the process. Some of the biases that software developers have about the needs of the users are based on experience – these can be perceptions that facilitate the upcoming work and are good for the project. But some of the developers' preconceived notions can also lead the project astray. It is very difficult to define what is good and what is a bad bias."

"There is a famous article about 'intelligent ignoramus' by Dan Barry, a well-known researcher in in requirements engineering. You can be intelligent but at the same time ignorant in many areas – like medicine or the automotive industry or any domain. That ignorance is good because then you can ask many stupid questions that force people to question their assumptions."

"The big problem with the newly installed IT system Millennium in Västragötalandsregionen in the fall of 2024 is a good local example of how difficult it can be to create a system that really works for a complex business. It was a very large and well-known IT company that provided its product, but likely somewhere there were gaps in the requirements when the system was to be adapted to Swedish needs. Historically, there are many examples of huge IT system investments that failed and were also often enormously expensive."

New "AI Engineering Lab" for increased knowledge about how we should apply AI technology in practice 

Researchers in the Department of Computer Science and Engineering have recently created an AI Engineering Lab. The "Lab" is primarily an informal group with a common interest in applications of AI technology.

"The AI Engineering Lab has many members with a software engineering background, but wants to broaden the network and invite local researchers who work with AI applications in the real world: computer scientists, security experts, network experts and others, says Jennifer Horkoff. With the lab website, we hope to connect all kinds of expertise working on similar problems around applications of AI."

 

Interview: Catharina Jerkbrant, 2024