My long-term goal is to characterize how early-stage technical decisions are made on complex products and to increase the level of automation in product design. My teaching at MIT looks at how to bring analytical rigor to the front end of product design, informed by research on how design actually proceeds. For example, layered software diagrams are incredibly commonly used in practice as representations of what we intend to build, but relatively little mapping is done on codebases to judge ex post facto whether the logic of the code base is actually cleanly separated into layers, or conversely, if the various modules of the code are actually interdependent.
Design research has traditionally been a data-poor environment. Although we use sophisticated models to analyze what is designed, there is very little data captured on when and how decisions are made during design. However, two trends will present opportunities: 1) Digitally-native design, nascent for 30 years, is finally recording functional information in addition to form information, and 2) Growing uptake of capable simulation models will allow us to exercise many possible combinations and build richer data sets.
My key contention is that by identifying these architectural decisions early, we can structure tensions in the system before they become embedded limitations to scale, and we can more effectively re-use design models. Most importantly, this paradigm will allow us to accrete knowledge faster across products. While libraries and the abstraction level of design in software has improved productivity in software development, there is much to learn yet about how this approach can be adapted, scaled, and integrated with product design.
I will provide an overview of one research direction today, called Model Based System Engineering.