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 the 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.
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 University. 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 processesprobably toolsthat 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 software design was a sophisticated trial-and-error activity:
(To find a more complete discussion of this process and its ramifications, read any of the circa-1980s writings of either Curtis or Soloway, or see my discussion in my recent book Software Creativity 2.0 (that discussion is found in the chapter "Creativity and Software Design: The Missing Link").
Now, all of that understanding of design that Curtis and Soloway produced was almost monumental in its scope. We now understood, in very believable ways, that software design as practiced by its experts was a trial-and-error iterative process. This may not have been a terribly acceptable discovery to computer scientists who presumably had hoped for a more algorithmic or prescriptive approach to design, but to software designers in the trenches of practice, it rang a clear and credible bell.
That summarizes the mostly good news I mentioned in the first paragraph of this column. But now here's where the bad news takes over.
As I mentioned, it was the expectation of Curtis and company that, once they learned the true nature of software design from their studies, they would then package some kind of design solution approach (be it process and/or tools) and pass it on to practitioners. In fact, that was the rationale given for the funding that allowed those wonderful research studies to be conducted in the first place. The MCC would be known, throughout the software engineering world, as the place to go for help in solving the problems of software design.
But it didn't work out. Remember that essence of design, the iterative process, I discussed earlier in this column? Well, all of it happened inside the mind, at the speed of human thought. Attempts to enhance the iterative process, such as by jotting down notes or even using computer-based tools, simply slowed the process. The mind could do things much faster than the hand could record its workings, and speed was of the essence in that highly iterative, somewhat complicated process.
I remarked at the time that what we needed was a mind amplifier, a computer-based tool that could record all those wonderful workings of the mind as it went through that iterative process, and convert what it recorded into the results the mind would eventually produce. Big HA! No such tool was available, even in the minds of the artificial intelligence scholars of the day.
My computist-in-training son even envisioned a solution, based on my imaginings, of a mainframe computer on wheels that would be hard-wired into the mind of the designer and would follow him around. Even bigger HA! The idea was as laughable then as it is now.
But wait! A recent issue of ACM TechNews included the headline "scientists use monkey's brain signals to control robot" [1]. The author of that article, and the scientists who had conducted the research, were excited about the prospect of using brain signals to control robots, so thatfor exampleparalyzed people might be able to use their thoughts to move their bodies.
And that's a hugely laudable application of such a technology. It could be life-enhancing in unimaginable ways to paralytic or severely motor-impaired individuals.
But I couldn't help but think back to the dreams of Curtis and Soloway, and mine, and even my son's, to provide computer support for the software design process. Like so many other wondrous applications of computers over the decades, we may at last be on the verge of finding a way to transfer those design discoveries of Curtis and Soloway into something the practitioner software designer can actually put to use.
I'm not holding my breath, but I find the prospect pretty exciting. Perhaps all that big HA stuff will not be so funny after all.
1. Gaudin, S. Scientists use monkey's brain signals to control robot. Computerworld Careers (online), Jan. 16, 2008; www.computerworld.com/action/article.do?command=view-ArticleBasic&articleid=9057319.
©2008 ACM 0001-0782/08/0600 $5.00
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee.
The Digital Library is published by the Association for Computing Machinery. Copyright © 2008 ACM, Inc.
No entries found