In this last post, I discussed where the initial hypothesis comes from in the generate-and-test cycle. In this post, I will begin discussing the test phase.
The test phase of generate and test subjects the current design hypothesis to a variety of tests and uses the results of these tests to inform the generation of the next design hypothesis. Before we discuss the tests that are applied in this phase, we will discuss three other questions: when are we done, how are the tests applied, and what are the outputs of the tests?
Generation of the initial design hypothesis
In the last post, I laid out the generate-and-test philosophy as a basis for choosing which decisions are to be made. In this post, I discuss where the initial design hypothesis comes from.
The goal in choosing an initial design hypothesis is to try to find a design as close as possible to a satisfactory design. The closer the initial design hypothesis is to the final design, the fewer iterations will be needed through the generate-next-design-hypothesis phase.
Service-oriented architecture (SOA) has become an increasingly popular mechanism for achieving interoperability among systems. To help organizations adopt SOA, the SEI developed SMART—the SOA Migration, Adoption, and Reuse Technique—in 2005. To learn more about how this technique has evolved through practical application, read this just-published article on the SEI website or listen to a podcast by the SEI’s Grace Lewis.
This is one of a series of essays that reflect my current thinking about the design process. I begin by comparing two different design philosophies—design as a process of making decisions and design as generate and test—and describing how these two philosophies are complementary.
Design as a process of making decisions
When generating a design in any field—software architecture or art—one makes decisions. In software architecture, the decisions may be about which tactic to apply in a particular context, and in art the decisions may be about background and perspective; but in every case, one could view the finished product as a sequence of decisions. Decision 1 is followed by decision 2 and so forth. Recreating the design from its description as a sequence of decisions is a matter of repeating the consequences of each decision. The earliest description of this philosophy that I am aware of dates from the 1940s.