Flexibility is a major concern in engineering design. This paper examines two complementary approaches to designing flexibility into engineering systems. One approach, based on system decomposition, emphasizes a one-to-one mapping between form and function, as in modular designs. The second approach decouples form from function, enabling a many-to-many mapping, as in layered designs. These approaches need not be mutually exclusive; rather, they can be synergistic. These claims are examined using simulated intermodal freight shipping networks. Results show that systems relying on decomposition are especially sensitive to disruptions. In contrast, systems relying on abstraction are less sensitive to disruption as long as rates of change in the environment are low; however, they are also less able to respond to unmet demand. Given enough resources, systems using both approaches can respond both to disruptions and unmet demand. Implications for system design are discussed.