D3D Design Methodology: Difference between revisions
(Created page with "==Overview== All creative work can be seen as searching or navigating the space of all thinkable outcomes (See for example [https://youtu.be/fThhbt23SGM?t=14m8s Mike Bostock p...") |
No edit summary |
||
Line 78: | Line 78: | ||
#Start Stepwise Definition at the highest possible level | #Start Stepwise Definition at the highest possible level | ||
#Keep a log of how you traverse the different steps | #Keep a log of how you traverse the different steps | ||
=References= | |||
{{#tag:ref|FELLEISEN, Matthias. [http://www.ccs.neu.edu/home/matthias/HtDP2e/ How to Design Programs]: an introduction to programming and computing. MIT Press, 2001.|name="htdp"}} |
Revision as of 22:55, 7 January 2016
Overview
All creative work can be seen as searching or navigating the space of all thinkable outcomes (See for example Mike Bostock presentation for more on this statement). The methodology described here is meant to have modular mechanical designs as its outcome.
Before Starting a Design Process
The designer should know how the quality of the machine will be measured. This is the designer's compass in the vast space of thinkable designs.
Functional requirements and goals are good, a firm understanding of intended usage is better, direct feedback from actual usage is best.
The design process consists of exploring all thinkable designs, only prototype candidates need to also be buildable. Knowledge gathering and design progress is made by traversing a decision tree while testing outcomes and estimating future rewards in every node.
The space of thinkable designs is limited by
- Choice of which inputs to handle
- Choice of which primitive design elements to use
- Choice of language, concepts and higher order design elements
- Designer's cognitive ability
The decision nodes are of the following basic types
- ...
The Search Algorithm/Design Procedure
Our search will use three sub-procedures:
Stepwise Definition: | Heavily inspired by DE's six steps[1]. Used to describe how we've understood the design (sub)problem at hand. |
Input Decision: | Used shrink design space by narrowing the range of accepted inputs. |
Concept Creation: | Designing things that might be useful for whatever reason. Used to define paths named through design space. |
These will be applied to modules and sub-modules recursively, searching the design space in a best-first manner. That is, when we find a promising sub-design, we continue working on that sub-design and its sub-sub-designs until either it is complete or until we meet difficulties.
The calling process is always re-entered at an earlier point than where
Stepwise Definition
1. | Problem Analysis: | Give the thing we're going to design and build a name and describe the types of input and output (a "signature" or "contract"). |
2. | Purpose Statement: | Reformulate eventual problem statements into a couple of sentences explaining the purpose of the thing we're designing. |
3. | Examples: | Illustrate the purpose statement by listing some example usages of the soon-to-be designed thing. Serve as criteria of success and are used as tests later. |
4. | Sketches: | Some basic shape and logic of the design is already given at this stage. Write it down. |
5. | Being creative: | Put together parts in ways that will solve the problem. If there's need for further specification of input go to Input Decision. sub-modules. |
6. | Testing: | The creation of a test suite from examples ensuring small inputs work as expected. |
Input Decision
- List available choices (that we can think of and express, and in reasonable detail)
- If list seems unfinished: Go into Concept Creation
- Explicitly reason around what's known, what's unknown and general pros and cons related to all the different choices
- Make a decision
- Be very explicit about how this limits the design space
- Validate that the chosen limitation doesn't violate requirements in any obvious way.
Concept Creation
Whenever language gets too formal, or design progress is so slow that we loose track it can be a good idea to jump out of the loop and define some higher order concepts to build upon later. If the defined concept aren't readily definable/manufacturable from already known concepts in a single step, then the design becomes "abstract" or "lazy" and might prove to be impossible to manufacture.
1. | Dive into the space of potentially useful (for whatever reason) concepts. Define them with the Stepwise Definition procedure to define them. |
2. | Do basic validation that the concept should be completely definable/manufacturable. Actually defining/manufacturing it is recommended. |
3. | Review previous design process and re-enter it from where you estimate the best overall probability to arrive at a good design. The re-entrance is what makes the algorithm best-first. |
Design Algorithm
- Start Stepwise Definition at the highest possible level
- Keep a log of how you traverse the different steps
References
- ↑ 1.0 1.1 FELLEISEN, Matthias. How to Design Programs: an introduction to programming and computing. MIT Press, 2001.