SlideShare a Scribd company logo
1 of 25
In o rder to re
       meone unr  egistered
As so                     webpage
    ant to sig nup on the
 Iw

Scenario  :                   nregister ed visitor
      n I am a p  reviously u
 Give
              ister as an attendant
  W hen I reg             is saved
  Then my i  nformation
     d a uid is  generated
  An
     Story driven
  And I   see a confirmat  ion page
                  an email w  ith an un ique link
   An d I receive
 development i Erlang
               Måns Sandström
My future is so bright
I got to wear shades...
TDD - omöjligt!
Huh!?
Cloudberry
Given
Hoho!
Given-When-Then är ett
sidoeffektsorienterat sätt att
   utveckla programvara.
Det var han som
    började!
Dessutom finns det
sidoeffekter i Erlang
Därför finns inga nyckelord i
        Cloudberry
Vilket också gör den
 oberoende av i18n
git://github.com/msa/cloudberry.git
S cenario:            ad jag vill
  Här sk  river jag v             arameter’
          ed och sk  ickar en ‘p
   H är m              h - spelar   ingen roll.
   Svenska   or Englis



     Story driven
 development i Erlang
                 Måns Sandström

More Related Content

Viewers also liked

Vart tog tekniken vägen?
Vart tog tekniken vägen?Vart tog tekniken vägen?
Vart tog tekniken vägen?Agila Sverige
 
Testdrivning med automatiska acceptanstester – praktiska erfarenheter
Testdrivning med automatiska acceptanstester – praktiska erfarenheterTestdrivning med automatiska acceptanstester – praktiska erfarenheter
Testdrivning med automatiska acceptanstester – praktiska erfarenheterAgila Sverige
 
Empiri på riktigt - en tilluxad agil utvecklingsmodell
Empiri på riktigt - en tilluxad agil utvecklingsmodellEmpiri på riktigt - en tilluxad agil utvecklingsmodell
Empiri på riktigt - en tilluxad agil utvecklingsmodellAgila Sverige
 

Viewers also liked (8)

Tajmboxat tänkande
Tajmboxat tänkandeTajmboxat tänkande
Tajmboxat tänkande
 
Vart tog tekniken vägen?
Vart tog tekniken vägen?Vart tog tekniken vägen?
Vart tog tekniken vägen?
 
Code Reviews
Code ReviewsCode Reviews
Code Reviews
 
Lean arkitektur
Lean arkitekturLean arkitektur
Lean arkitektur
 
Testdrivning med automatiska acceptanstester – praktiska erfarenheter
Testdrivning med automatiska acceptanstester – praktiska erfarenheterTestdrivning med automatiska acceptanstester – praktiska erfarenheter
Testdrivning med automatiska acceptanstester – praktiska erfarenheter
 
Empiri på riktigt - en tilluxad agil utvecklingsmodell
Empiri på riktigt - en tilluxad agil utvecklingsmodellEmpiri på riktigt - en tilluxad agil utvecklingsmodell
Empiri på riktigt - en tilluxad agil utvecklingsmodell
 
Det agila språket
Det agila språketDet agila språket
Det agila språket
 
Älska det du gör
Älska det du görÄlska det du gör
Älska det du gör
 

More from Agila Sverige

Kasta ut experterna och fokusera på helheten
Kasta ut experterna och fokusera på helhetenKasta ut experterna och fokusera på helheten
Kasta ut experterna och fokusera på helhetenAgila Sverige
 
Visst kan vi självorganisera... vi ska bara fråga chefen först.
Visst kan vi självorganisera... vi ska bara fråga chefen först.Visst kan vi självorganisera... vi ska bara fråga chefen först.
Visst kan vi självorganisera... vi ska bara fråga chefen först.Agila Sverige
 
Hantera felhantering
Hantera felhanteringHantera felhantering
Hantera felhanteringAgila Sverige
 
Är det Agilt som gäller, eller?
Är det Agilt som gäller, eller?Är det Agilt som gäller, eller?
Är det Agilt som gäller, eller?Agila Sverige
 
Vad kan vi arkitekter lära oss av Agile?
Vad kan vi arkitekter lära oss av Agile?Vad kan vi arkitekter lära oss av Agile?
Vad kan vi arkitekter lära oss av Agile?Agila Sverige
 
When Worlds Collide II – Den kubistiska organisationens intåg?
When Worlds Collide II – Den kubistiska organisationens intåg?When Worlds Collide II – Den kubistiska organisationens intåg?
When Worlds Collide II – Den kubistiska organisationens intåg?Agila Sverige
 
Olika typer av test doubles (mock/stub-objekt) och hur de kan implementeras
Olika typer av test doubles (mock/stub-objekt) och hur de kan implementerasOlika typer av test doubles (mock/stub-objekt) och hur de kan implementeras
Olika typer av test doubles (mock/stub-objekt) och hur de kan implementerasAgila Sverige
 
Praktiskt ledarskap i tavelmötet
Praktiskt ledarskap i tavelmötetPraktiskt ledarskap i tavelmötet
Praktiskt ledarskap i tavelmötetAgila Sverige
 
Det STORA missförståndet
Det STORA missförståndetDet STORA missförståndet
Det STORA missförståndetAgila Sverige
 
En agilare Säljgrupp
En agilare SäljgruppEn agilare Säljgrupp
En agilare SäljgruppAgila Sverige
 
Agil utan förändringar
Agil utan förändringarAgil utan förändringar
Agil utan förändringarAgila Sverige
 
Låt hjärtat va' me'...
Låt hjärtat va' me'...Låt hjärtat va' me'...
Låt hjärtat va' me'...Agila Sverige
 
BDD - så knyter vi ihop säcken!
BDD - så knyter vi ihop säcken!BDD - så knyter vi ihop säcken!
BDD - så knyter vi ihop säcken!Agila Sverige
 
Edison eller Columbus?
Edison eller Columbus?Edison eller Columbus?
Edison eller Columbus?Agila Sverige
 

More from Agila Sverige (17)

Kasta ut experterna och fokusera på helheten
Kasta ut experterna och fokusera på helhetenKasta ut experterna och fokusera på helheten
Kasta ut experterna och fokusera på helheten
 
Visst kan vi självorganisera... vi ska bara fråga chefen först.
Visst kan vi självorganisera... vi ska bara fråga chefen först.Visst kan vi självorganisera... vi ska bara fråga chefen först.
Visst kan vi självorganisera... vi ska bara fråga chefen först.
 
Hantera felhantering
Hantera felhanteringHantera felhantering
Hantera felhantering
 
Är det Agilt som gäller, eller?
Är det Agilt som gäller, eller?Är det Agilt som gäller, eller?
Är det Agilt som gäller, eller?
 
Vad kan vi arkitekter lära oss av Agile?
Vad kan vi arkitekter lära oss av Agile?Vad kan vi arkitekter lära oss av Agile?
Vad kan vi arkitekter lära oss av Agile?
 
When Worlds Collide II – Den kubistiska organisationens intåg?
When Worlds Collide II – Den kubistiska organisationens intåg?When Worlds Collide II – Den kubistiska organisationens intåg?
When Worlds Collide II – Den kubistiska organisationens intåg?
 
Olika typer av test doubles (mock/stub-objekt) och hur de kan implementeras
Olika typer av test doubles (mock/stub-objekt) och hur de kan implementerasOlika typer av test doubles (mock/stub-objekt) och hur de kan implementeras
Olika typer av test doubles (mock/stub-objekt) och hur de kan implementeras
 
Praktiskt ledarskap i tavelmötet
Praktiskt ledarskap i tavelmötetPraktiskt ledarskap i tavelmötet
Praktiskt ledarskap i tavelmötet
 
Agile Manager
Agile ManagerAgile Manager
Agile Manager
 
Det STORA missförståndet
Det STORA missförståndetDet STORA missförståndet
Det STORA missförståndet
 
En agilare Säljgrupp
En agilare SäljgruppEn agilare Säljgrupp
En agilare Säljgrupp
 
Agil utan förändringar
Agil utan förändringarAgil utan förändringar
Agil utan förändringar
 
Management by Scrum
Management by ScrumManagement by Scrum
Management by Scrum
 
Låt hjärtat va' me'...
Låt hjärtat va' me'...Låt hjärtat va' me'...
Låt hjärtat va' me'...
 
BDD - så knyter vi ihop säcken!
BDD - så knyter vi ihop säcken!BDD - så knyter vi ihop säcken!
BDD - så knyter vi ihop säcken!
 
Flight of the Agile
Flight of the AgileFlight of the Agile
Flight of the Agile
 
Edison eller Columbus?
Edison eller Columbus?Edison eller Columbus?
Edison eller Columbus?
 

Story driven development i Erlang

Editor's Notes

  1. För ca två år sedan började jag kolla lite på erlang. Det som sades om erlang då:
  2. Framtidens språk för flerkärniga processorer
  3. Går bara att göra rena och eleganta lösningar
  4. Bara en liten elit av hjärnor är skapta för att skriva erlang.
  5. Alla dessa utsagorna triggade mig. Jag vill vara med i framtiden Jag gillar eleganta lösningar Provocerad av tanken på att IQ skulle ha med saken att göra Provocerad av tanken på att behöva ge upp TDD i framtiden
  6. Så jag satte igång...
  7. Och visst var det en lite stökig väg till en god förståelse. Jag var inte helt förtjust i dekonstruktion med hjälp av bitsyntaxen som återfinns på sid 95 i boken.
  8. Men jag hittade eunit för enhetstester. Lite old-school men fungerade riktigt bra.
  9. Fann att de dynamiska egenskaperna hos erlang tillåter isolerade tester.
  10. Däremot verkade det inte finnas något cucumberliknande verktyg för story driven development. Det fanns en lite ogenomtänkt plugin till FitNesse, men den verkade inte förvaltas aktivt.
  11. Så jag bestämde mig för att göra något liknande cucumber för erlang.
  12. Givetvis råkade jag genast på svårigheter.
  13. I vårt kära Given-When-Then mönster så fungerar Given som skedet då systemet prepareras med data lite så som man pryder en julgran.
  14. Erlang använder inte sådana julgranar, istället har de skorstenar. Den data man skickar till en erlang process försvinner bara ner i ett svart hål för en betraktares synvinkel. Det är liksom hela tanken med att programmera utan sidoeffekter. Vilket fick mig att tänka.
  15. Vi har lutat oss så tungt mot rådande paradigmer att vi har bestämt att våra kunder ska uttrycka sig om vår programvara som att det är åtråvärt att den är full av sidoeffekter. Oops.
  16. Så frågan är väl om man ska lära kunderna att se system som rena funktioner eller som objekt med sidoeffekter? Eller är den frågan ställd på fel nivå?
  17. Min utgångspunkt är att det är kunderna har inte drivit fram Given-When-Then-konceptet. Det är vi nördar som gjort det och kunder blir inte upprörda över lite frihetsgrader på den punkten.
  18. Filer, databaser, och processer. Så jag vill ju inte skapa ett system som helt naivt bortser från att utvecklare vill använda sig av den möjligheten.
  19. Jag vet alltför väl att mina ordval inte kommer att vara de bästa därför låter jag det vara helt öppet i Cloudberry. Den enda konventionen just nu är att varje rad i ett scenario ger upphov till ett anrop mot en steps-modul.
  20. Om man vill ta en titt genom staketet in till byggröran och kanske, rentav, hjälpa mig komma till rätta med den.