Practical Programmer Robert L. Glass
Software Design and the
Monkey’s Brain
Attempting to capture the nature of software design.

There has been a lot of brilliant software engineering research over the years and decades into the subject of software design. That’s the good news. But then there’s th e bad news.

The bad news is that all of that brilliant research hasn’t enhanced our knowledge of how to do software design in practice. It’s like we now have a really good handle on the philosophy of design, and the reality of how to do design well. But that hasn’t helped us tell practitioners how to be better designers.

MICHAEL SLOAN

My interest in design, and my belief in the work of software engineering researchers on the subject of design, began over 20 years ago. At that time, Bill Curtis was leading a team of researchers at the former Microelectronics and Computing Consortium (MCC) in Austin, TX, and Elliot Soloway was conducting similar work at Yale Univer-

sity. The goal of these two efforts was to investigate the nature of software design in order to figure out how to do it better. The

expectation, especially from Curtis and his team, was that the result of their investigation was going to be a set of processes— probably tools—that could be provided to software practitioners to help them do their job so much better.

The investigations were very successful. By studying expert designers at work, the researchers learned that the essence of soft-

ware design was a sophisticated trial-and-error activity:

• Develop a complete understanding of the problem to be solved;

• Build a mental model of a proposed solution to the problem;

• Mentally execute the model on a sample input to see if it does indeed solve the problem;

• If the output of the execu-
tion is incorrect (as will
often be the case in the
early stages of design),
expand the model to cor-
rect the deficiencies, then
execute again;

• Once the output of the execution of the model is correct, choose a different sample input and repeat the process; and

• Eventually, the expectation is that a strongly enhanced mental model will be able to solve all of the sample inputs considered.

(To find a more complete discussion of this process and its ramifications, read any of the circa-1980s writings of either

References:

Archives