Published on June 9, 2013
How do you design software?
Waystodesignsoftware● Sketch a diagram (hopefully not UML)● Think about the problem● Write code (prototype)● Review with other people, or work together
Why do we design software?
What is design?
Designis...“Conceiving and givingform to artifacts thatsolve problems.”Karl Ulrichhttp://www.ulrichbook.org/
Designis...Conceiving and giving form to artifacts thatsolve problemswithin constraints.The primary constraint for software is need forquick change.
ExploringDesignAlternativesSource: Apollo Paul Paredes
Software design:What are the artifacts?
OOPArtifacts● Classes– List of methods● Methods– Names– Parameter lists● Collaboration between objects => contracts
Do you explore design alternatives?How?
ExploringDesignAlternatives● On paper● By writing code
Whats this got to do with TDD?
TDDis...A way of doing incremental design(design while writing code)
IncrementalDesignDefine examples of inputs – outputsImplementparticular casesExtract abstractionsaka generalize solutionaka design
Design is creation of artifacts that solve problemsSoftware design is the creation of classes,methods etc. that solve a problemExploring design alternatives is part of the designprocessOne way to explore an alternative is to build itTDD is a method to design software while writingcode
How about using TDD as way to explore designalternatives?
Turns out, Ive seen a lot of exploration with TDD
Coderetreat● One day● 6 sessions, 45● Pair program, TDD● Delete code, changepair after session● Use constraintsCode Retreat #1 in EuropeAttended / facilitated: ~30 code retreats
Inoticedatcoderetreatsthat...How you start and the constraints you set maychange the final design.
How to start?
Vary:numberofdesignentitiesTDD As If you meant it → 0 entities...n entities
Startfromexistingentities● Must have a certain class● Cant modify a certain class
Use different constraints
Constraints● Pure functions● Dont use data structures● Use only events to communicate betweenobjects
Paradigm● Only OOP● Only Functional Programming
ConclusionTDD can be used to explore design alternatives.
Thankyou!Alexandru BolboacaCoach and Trainer at MozaicWorksContact me:@firstname.lastname@example.orgRemote pair with meCome at code and beer!
Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...
In this presentation we will describe our experience developing with a highly dyna...
Presentation to the LITA Forum 7th November 2014 Albuquerque, NM
Un recorrido por los cambios que nos generará el wearabletech en el futuro
Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...
Aki participates to I TAKE unconference to learn more about himself, ... Exploring design alternatives using TDD . Summary
z2013 Session Incubation. Chris Jeffery edited this page May 30, 2014 · 1 revision Pages 66. Home; Arrivals; Arriving by motorbike or bicycle; ...