Mastering Software Complexity – A Perspective

The slogan ‘Mastering Software Complexity’ has been core to our company mission since the beginning. Having worked in the modelling and simulation industry for over 20 years, I have seen firsthand how exponentially software complexity has grown. Mastering this complexity is critical not just for companies like mine, but for the many industries that rely heavily on software such as ours, such as aviation and automotive.

In my view, the root of the ‘software complexity’ problem lies in the natural desire of companies to achieve more and more with their software. As capabilities grow, so too does the size and intricacy of the codebase. What begins as a simple application soon becomes an expansive tangle of interconnected systems and components. Even with practices like modular design, complexity tends to outpace our efforts to contain it.

This creeping complexity then leads to a lack of transparency and trust—from both software producers and consumers alike. As an end user, how can you really know whether the autonomous vehicle software update you just received was properly tested and certified? And as a developer, how confident are you that your module integrates correctly with components created by far-flung team members? Without a way to master this complexity, trust erodes.

The aviation industry learned this lesson early through disasters like the crash of Air France Flight 296 in 1988. Investigations revealed that complexity of ‘fly by wire’ and Air Traffic Control had exceeded the human ability to operate it safely using prevailing practices. Radical changes were needed. Thus, began decades of work to install rigorously defined processes, standards, and certification programs, such as DO-178C for airborne software.

While no industry can eliminate accidents entirely, the results from aviation speak for themselves. Even as air traffic continuously expands, passenger fatality rates have fallen dramatically, down over 90% from the early 1970s. This is directly attributable to the industry’s dogged efforts to get complexity under control.

So why have other industries like automotive lagged so far behind aviation in tackling complexity? In my view, there are two primary reasons:

First, it is expensive. Developing and adhering to comprehensive processes, standards and certification programs requires enormous investment. For a large company, implementation can take years if not decades. With thin profit margins, it may be hard for automakers to justify the cost despite the long-term benefits.

“Mastering complexity means shifting company culture from impulsive creativity toward discipline and accountability.”
– John Lundback, CEO

Second, and perhaps more crucially, overcoming complexity requires companies to fundamentally change how they think about software development. Rigorous processes often feel restrictive to engineers accustomed to improvising and tinkering. New communication and planning mechanisms can seem bureaucratic rather than liberating. And constant incremental testing and verification slow the thrill of rapid innovation cycles and big releases.

In essence, mastering complexity means shifting company culture from impulsive creativity toward discipline and accountability. And what fun is that? Even if lives are at stake, the institutional inertia against such organizational soul-searching is intense.

Yet I firmly believe embracing this change is the only sustainable path forward as complexity continues mushrooming. How can this be achieved? Based on my experience, four guiding principles are critical:

First, pursue model-based development. Using modelling paradigms allows software design to be simulated, analysed and verified by computers. This reduces defects while freeing engineers to focus on the logic rather than the code itself. Integrating models from disparate disciplines also helps identify integration issues early. Modelling won’t eliminate sprawl entirely, but it tames the beast.

Second, implement strong, standardized processes. Unified processes allow distributed teams to collaborate efficiently. They also facilitate analysis, integration and certification of software components developed independently. Adapting processes to local needs is fine, but the core axioms must be followed dutifully. This ensures coherence across engineering teams and products.

Third, design for incremental evolution. The complexity breaking point for many companies comes when attempting to integrate new technologies and architectures. By continually making small enhancements instead, complexity can be managed more gradually. This philosophy also allows regular certification of changes to keep up with development velocity.

Finally, persistence beats resistance. Change is hard. Some engineers will buck back against anything perceived as slowing innovation or micromanaging their creativity. Persist through this resistance phase to reach acceptance. With time, most will realize the benefits of increased rigor and discipline.

This cultural transition extends beyond engineering teams. Sales, marketing, support—every department must embrace the commitment to complexity mastery. If any link in the chain remains focused solely on speed, the system will fracture, and trust will fail.

For an example, look at Tesla’s “full self-driving” software offered to customers in beta form without federal certification. The legal liability for any crashes rides fully on the driver’s shoulders rather than Tesla’s. While drivers may accept these risks, I believe releasing such safety-critical software without rigorous certification is irresponsible. It reflects cultural nonchalance about complexity that will only lead to avoidable accidents down the road.

Does this mean regulation is needed to enforce complexity mastery where consumer safety is involved? Perhaps someday. But for now, companies must lead, eschewing complacency and short-term profits to build cultures focused on the long-term sustainable management of complexity.

At my company Arcticus Systems, ‘Mastering Software Complexity’ is not just a slogan—it is central to our identity and informs every decision we make. Have we achieved perfection? Far from it. But we continually take steps to refine our processes, enhance modelling capabilities, and plan for gradual evolution.

Most importantly, we actively nurture a culture recognizing complexity mastery as central to engineering excellence and building customer trust. And this culture extends beyond our walls through frequent touchpoints with partners, customers and industry groups.

The task of mastering complexity is without end. Advances in computing power and connectivity will ensure complexity always stays ahead of us. But with concerted commitment to the right cultural pillars, we can prevent it from ballooning out of control. This will lead to software users and producers alike benefiting from transparency, security, and trust.

So, while complexity cannot be mastered once and for all, through perpetual dedication to strong process, modelling, incremental evolution and culture building we can master the art of managing it responsibly ensuring our software ambitions empower society rather than imperil it. This is the guiding mission of my company, and the lesson I hope technology leaders everywhere take to heart.

Leave a Comment

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

Scroll to Top