En presentation om mina erfarenheter från att utveckla ett ramverk för story driven development i Erlang.
Talare är Måns Sandström från Adaptiv Sthlm AB
1. 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
25. 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
Editor's Notes
För ca två år sedan började jag kolla lite på erlang.
Det som sades om erlang då:
Går bara att göra rena och eleganta lösningar
Bara en liten elit av hjärnor är skapta för att skriva erlang.
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
Så jag satte igång...
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.
Men jag hittade eunit för enhetstester. Lite old-school men fungerade riktigt bra.
Fann att de dynamiska egenskaperna hos erlang tillåter isolerade tester.
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.
Så jag bestämde mig för att göra något liknande cucumber för erlang.
Givetvis råkade jag genast på svårigheter.
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.
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.
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.
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å?
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.
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.
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.
Om man vill ta en titt genom staketet in till byggröran och kanske, rentav, hjälpa mig komma till rätta med den.