Test-Driven Development

From Open Source Ecology
(Redirected from Iterative Design)
Jump to: navigation, search

Intro

Test-Driven Development (TDD) is design based on a rapid ability to iterate by designing partial implementations of a final product to test various assumptions and working principles. This appears to be synonymous with Concurrent Engineering.

Note that TDD typically to product design/development. However, OSE expands the scope also to the design and build of infrastructures and institutions of civilization.

As a historical note, OSE picked up the thread of TDD in 2012 after visiting with Joe Justice of Team Wikispeed. Joe Justice is a pioneer in applying TDD to hardware development, and as such he and Marcin Jakubowski coined the term Extreme Manufacturing in 2012.

The essence of TDD is removing uncertainty from the design by parallel testing, such that design paths are tested earlier, thereby removing design flaws earlier on, to allow for rapid and parallel integration. This is similar to the Second Toyota Paradox, with emphasis on earlier testing.

Test driven design refers to a design process that performs tests, validations, proofs, Calculations, verifications, assessments and rapid prototypes on an early and ongoing basis - prior to an actual build. The purpose is to speed up development by avoiding unworkable paths that have already been demonstrated by others; to discover various insights that inform further design; and to reduce costs by doing as much analysis and calculation as possible to find out those things that a physical prototype would show -prior to using more expensive materials and build processes to build an actual prototype.

Another effective way to engage test driven design is to build partial prototypes of smaller subsections of a build to validate various details, prior to the whole build.

This can be done in various ways:

  1. Subject Matter Expert review
  2. Review via a social network
  3. Partial Prototypes - Building out small components at a time instead of a whole machine at a time.
  4. Module Based Design - Breaking artifict into smaller modules and prototyping individual modules
  5. Scale models - this may be done by wood, paper, or other models - such as 3D printing, laser cutting for folded (LifeTrac tubing) or stacked (architecture) paper pieces, or many other models
  6. Doing extra calculations or simulations in software or in Hardware-in-Loop systems
  7. Visualizations, 3D renderings, motion analysis

See analogue in software - http://en.wikipedia.org/wiki/Test-driven_development

Test-Driven Development

Test-Driven Development is design based on a rapid ability to iterate by designing partial implementations of a final product to test various assumptions and working principles.


Test Driven Iterations

Concept: Rapid prototyping involves testing various components of a system throughout the design-build process. At any time, the following test driven steps can be defined and iterated:


edit

SpaceX as an example

  • GRANTED they have some errors/waste + sketchy labor reccord, BUT
  • They are masters of modularity/efficiency, and test driven design
  • Their "starship" project is an example of this
  • Some waste in it due to the simple errors like uninspected welds, done in the open, for high pressure aerospace componets(suprise suprise they blew up...), but they seem to be getting to a proper level of "professional" (they now have semi-permanent "onion tents" and inspect welds with x-ray etc)
  • They are nearly constantly building + testing
  • Will be intresting to see where they are going
  • One other thing to consider they have lots of money to burn (spacex + tesla + elon musk's personal wealth etc) and thus can have more risk and/or recklessness

Links