DGTLENG 103: Systems Thinking for Engineers
DGTLENG 103 · Lesson 5 of 5

Managing Complexity in Practice

You Cannot Eliminate Complexity

Complex systems are complex because the problem demands it. A modern aircraft has millions of parts and interdependencies not because of poor engineering but because transporting 300 people at 900 km/h at 35,000 feet is inherently a complex problem. The goal is not to make the system simple — it's to make the complexity manageable.

Five strategies, used in combination, make this possible.

Modularity

Design subsystems with well-defined interfaces so they can be developed, tested, and changed independently. A modular system confines the blast radius of change: modifying one module affects only the modules it interfaces with, not the entire system.

The value of modularity scales with team size. A solo engineer can hold a monolithic design in their head. A hundred-person organization cannot. Modularity converts a coordination problem (everyone must understand everything) into an interface problem (teams must agree on contracts). Interface problems are tractable; coordination problems across large teams are not.

When modularity breaks down: when the real physics doesn't respect your module boundaries. Thermal management in aerospace systems, for instance, resists modular containment because heat flows through every structural path regardless of organizational boundaries. Modules are an organizational and architectural choice; physics is not obligated to cooperate.

Abstraction

Hide internal details behind interfaces. Work at the right level of detail for the decision at hand.

A systems architect evaluating top-level performance doesn't need to know the internal state machine of every controller — they need input/output behavior. A software developer implementing a sensor driver doesn't need to understand system-level trade studies — they need the interface specification.

Abstraction is what makes hierarchical thinking possible. At each level, you see enough to make decisions but not so much that you drown in detail. The danger is leaky abstractions — when internal details that were supposed to be hidden affect system behavior in ways the abstraction doesn't capture. A database "abstracted" behind an API still has latency characteristics that affect system timing. Recognizing when an abstraction leaks is a critical engineering skill.

Hierarchy

Organize complexity into levels: system, subsystem, component. Each level has its own concerns, its own models, and its own verification strategy.

Hierarchy is not just an organizational chart — it's a modeling strategy. System-level models use subsystem-level results as inputs without replicating their internal detail. This is how computational complexity becomes tractable: a million-component system is not modeled as a million simultaneous equations but as a hierarchy of models, each at the appropriate fidelity for its level.

The N-squared diagram from Lesson 2 operates at each hierarchical level. System-level N² captures subsystem interfaces. Within each subsystem, a lower-level N² captures component interfaces. This recursive structure means interface management scales logarithmically with system size rather than quadratically — if the hierarchy is well-designed.

Standardization

Reduce variety where it doesn't add value. Standard interfaces, standard components, standard protocols, standard data formats.

Every unique interface is an integration risk. Every custom component is a qualification cost. Every proprietary protocol is a vendor dependency. Standardization reduces these costs by making components interchangeable and interfaces predictable. The bolt standards that mechanical engineers use, the communication protocols that electrical engineers follow, and the API conventions that software engineers adopt all serve the same purpose: reducing the variety tax.

When standardization breaks down: when the standard doesn't fit the problem. Forcing a non-standard problem into a standard solution creates hidden complexity — workarounds, adapters, and exceptions that are harder to manage than a custom design would have been. The discipline is knowing where to standardize (interfaces, protocols, common components) and where to allow customization (novel subsystems, competitive differentiators, physics-driven designs).

Computational Support: The Digital Engineering Answer

The four strategies above are centuries old — Roman engineers used modularity and hierarchy to build aqueducts. What's new is the scale at which modern systems exceed human cognitive bandwidth.

Miller's law — the observation that working memory holds roughly 7 plus or minus 2 chunks of information — means that any system with more than about 7 active interfaces per component exceeds what a single engineer can track mentally. Modern systems routinely exceed this by orders of magnitude. A vehicle ECU network has dozens of interfaces per node. An integrated circuit has millions of connections.

This is where digital engineering becomes not just helpful but necessary. Computational models encode complexity so you don't have to hold it in your head. The digital thread traces associations so you can find impacts without reading every document. Simulation explores the interaction space faster than physical testing. AI detects patterns in high-dimensional data that humans cannot perceive.

The five strategies work together: modularity defines the pieces, abstraction hides their internals, hierarchy organizes them into levels, standardization reduces variety, and computational support makes the whole thing queryable, traceable, and analyzable at a scale that human cognition alone cannot reach.

Assessment

Question 1 of 3Score: 0

A team is designing a satellite with 12 subsystems. They estimate 7 active interfaces per subsystem on average. Which complexity management strategies are most critical for this project? (Select all that apply)

Select all that apply

Choose an engineering project you know — either one you've worked on or one that is well documented publicly. Assess which of the five complexity management strategies (modularity, abstraction, hierarchy, standardization, computational support) it uses effectively and which it neglects. For the neglected strategies, describe a concrete consequence of that neglect and how applying the strategy would improve the project.