Reducing the number of assumptions and clarifying assumptions between different groups can save time and money.

By Jon McDonald

I’m on a cruise this week. I’m spending some time thinking about things other than work, but from time to time even normal life does have an impact on esoterically engineering concepts.

As the cruise has visited a number of different ports my wife and I have made many assumptions—assumptions about what we both want to do in port, assumptions about what will be available, what the local attractions might be like, and assumptions about what each of us is thinking about all of the previous assumptions. Some of those assumptions turned out to be not very accurate, the most disruptive being the last category listed.

It struck me that in designing complex systems, engineers make a monumental number of assumptions. We assume that two people can read the same specification and will understand what is needed from that specification. We assume that what we intend to implement is what we have actually built. We assume that what we built will meet the needs of the system. The entire design process could be viewed as built on a series of assumptions.

To be fair making intelligent assumptions is the only way to build increasingly complex systems without reducing the process to a completely serial endeavor that would take much longer than we have to deliver the end system. I believe some of the most significant areas of improvement in the design process have come from a desire to reduce the number of assumptions that are being made in getting from the specification to the end system.

This desire to reduce the number of times we assume is significantly addressed by adopting ESL approaches. We can quantify and analyze the implications of our choices in defining an architecture to implement our specification. This becomes an unambiguous definition of at least a portion of what our system is intended to deliver. I found on my cruise that assumptions about what we expect someone else to do are often the most costly.

In system design we need to clarify the assumptions made between the Systems Engineering, Software and Hardware groups. When the work of these groups is based on disagreeing assumptions the cost of these variations can be extremely high. By designing at the system level and sharing this design between the groups we can greatly minimize the number of assumptions, which ultimately allows us to deliver a more robust system in the end.

*–Jon McDonald is a technical marketing engineer for the design and creation business at Mentor Graphics.*