Coding the Skies: The Role of Software in Aviation

July 29, 2019

As a pilot with a PhD in physics – as well as someone who works closely with our aerospace teams at Critical Software – we spoke to Luís Gargaté to understand a bit more about the role software plays in the aviation sector.

person standing next to a small airplane

How important is software in the aviation industry?

Without software, modern aviation as we know it would not exist. For example, it wouldn’t be possible to manage flight plans, air traffic control, autopilot systems and complex maintenance routines. There are a lot of automated software systems that aviation currently relies on.

So, there’s a lot of different software systems in planes too?

Inside a plane there are many software systems operating at different levels. This ranges from the software managing the entertainment for passengers, which is less critical, all the way up to the software that controls things like the autopilot or the landing gear of the airplane – much more important! All software systems have different levels of criticality – based on how important they are to things like the safety of the airplane. All software making its way into an airplane is subject to scrutiny, examining how it was developed, how it was tested and how it was certified as safe. These are some of the areas that Critical Software works in.

How important is it that these software systems complement each other?

Obviously, different software systems have to communicate with one another. For example, the flight director is part of modern aircraft’s instrument panel and is linked to autopilot. They are different systems, but they have to communicate with each other. There are many systems inside an airplane that are connected to each other in this way. It’s important to make sure that the interfaces of these software are well defined, to ensure that there is no conceivable way for one system to make another fail. All this first has to be looked at system by system, and then it has to be analysed from a holistic, integrated point of view.

That must make for a lot of software code, right?

In more complex systems, yes. For example, an autopilot system is very complex. It may not have millions of lines of code, but it will certainly be in the thousands. The more complex the system, the harder it is to do tests and make sure it works.

What kind of redundancies are built into these systems?

There is redundancy in most software and on-board computers in planes. For example, typically the autopilot runs on more than one computer and the results are always compared to ensure accuracy. When the criticality of a given system increases, in general, so does the level of redundancy. Redundancy can be integrated into both the hardware and the software. A typical setup is what is known as a two-out-of-three voting system, where the same computation is done at the same time by three separate systems, and where at least two out of the three systems need to agree on the final result.

To what extent can software override a pilot's decisions?

The answer depends on the exact system, as well as the model and manufacturer. Airbus and Boeing are two of the largest manufacturers and have slightly different philosophies on this. However, in practice, it is always possible to switch off a system and take manual control of the airplane.

Like driverless cars, people are already talking about planes that fly totally autonomously. Will this be viable?

I have serious doubts about when this will be possible. There are landing systems that allow airplanes to land completely automatically. Under certain conditions at certain airports, some models of airplanes already do exactly this. Flying and taking off are also easy enough things to automate in principle. Technically, it is possible to build an airplane that does everything by itself in ordinary circumstances, without human intervention. The problems begin when there are failures or unforeseen events. It is very complicated to predict every situation, so it is difficult to get to a point where we can say that a person is not needed for anything in the cockpit.

So, it’s not possible?

It's a difficult thing and it will take time. I think it might take longer in the case of cars then is currently predicted too. Airplanes are in a more or less controlled environment with predetermined routes. In a car, there are people on the street, animals, fog, holes in the road, surfaces impacted by weather. Developing a system completely free of human intervention is taking some time.

Given the demands software has to meet, once it is certified, can it be reused elsewhere?

Yes, this does happen. It’s not always visible in software in the way it is with hardware, but manufacturers do try to reuse certified software in different plane models, for example. When a new feature is built on top of a proven system, it typically makes the process of checking that it meets industry standards easier. That’s one reason why the industry is quite difficult for new competitors to enter, because the legacy systems typically being built on top of are well understood by the existing players developing new features.

How can software save airlines money?

Profit margins in aviation are quite low and competition is fierce. Computerised systems are already used in flight planning to select the best speed for an airplane to travel at in order to arrive on time, balancing fuel burning costs with the costs of missing a landing slot and having to consume more fuel waiting around in the sky. Software systems help airlines to calculate how much fuel is needed for a given flight. Of course, there are minimum legal requirements, but software helps with fuel calculations, performance calculations, and so on. Things are already very efficient because of this. Looking to the future, Artificial Intelligence (AI) may have a role to play that has not yet been fully explored in areas like prognostic maintenance of aircraft too.

What kind of clients does Critical Software have?

We typically work for aircraft manufacturers or aircraft component manufacturers. For example, landing gear systems use control software to check whether the landing gear is up or down. This system has to ensure that it reads the sensors accurately and understands whether the airplane is landing or taking off, emitting an alarm if the gear is not down during landing procedures. We have developed software for some of these systems or – in other cases - we have validated the software developed by manufacturers. That is quite typical of our projects in the sector and we’ve worked with most of the major manufacturers, including Airbus, Boeing and Bombardier.

Is aviation a growing market?

Yes. Clearly, it is subject to the usual economic drivers. The more people travel, the more companies need airplanes, and the more work there is. It’s also a sector with a lot of innovation. A slight change in the shape of a wing or an engine blade can improve fuel consumption and make a particular aircraft model more appealing to an airline. There is a lot of research around things like efficiency and every development then has to be certified to ensure it meets industry safety standards. And that's where we typically come in.

For more on the role software plays in the aviation sector, check out our white papers: An Introduction to Aerodynamics, Software & Certification in Safe Flight and How to Fail at Airborne Software Development.