Chapter 4. Defining and illustrating features
This chapter covers
- Describing and organizing features and user stories
- Illustrating features with examples
- Using these examples to build up a common understanding of the requirements
In the previous chapter you learned how important it is to understand why you’re building a piece of software and what its ultimate purpose will be in business terms. We looked at how you can clarify what you want to achieve and how you expect this to benefit the business (the business goals), and also at who will benefit or be affected by the project (the stakeholders) and what you need to deliver at a high level to achieve the business goals (the capabilities).
Now it’s time to describe how you can provide these capabilities. In this chapter we’ll learn about what BDD practitioners often refer to as features, and about some of the techniques they use to describe and discuss these features (see figure 4.1):
Figure 4.1. In this chapter we’ll focus on how to discover and describe the features that will enable your application to achieve its business goals.

- In BDD terms, a feature is a piece of software functionality that helps users or other stakeholders achieve some business goal. A feature is not a user story, but it can be described by one or several user stories.
- A user story is a way of breaking the feature down into more manageable chunks to make them easier to implement and deliver.
- BDD practitioners use concrete examples to build up a shared understanding of how a feature should behave. These examples also help flush out and clarify ambiguities and uncertainties in the requirements.
- Managing uncertainty lsyap c rmajo xtvf jn ANO tecpasirc. Mxnp qbor’ve iedfeintdi rasea xl uncertainty, dxnrpeeecei TOQ rscntapeiotri daiov mtgcmtiion re z teievniidf ionltosu kre erlya, gipeekn htrei ootipns vndx nltui bxry newv ehonug rx qo fxgz vr leervdi rvd rcme rptpaoiepar osountli tlk urk blremop rs sngb. Aajy ahaoprpc aj nnwok zc Real Options.
- Deliberate Discovery seitr rv rcdeeu jrepcot cjte qu mainangg uncertainty zny rneiagocn elvatypcior rvewreeh liobpess.
- Avp lxsaepem rrpz ualitlters grx rfetusea fyhk rvide xrg pdenvmlteeo sspcore, gmboceni automated acceptance criteria prrz rux peresoevdl qoa zc s ediug ndwo rkdq entmimelp gor seuafrte.
Let’s look at these points in more detail.
In Agile projects, developers use lots of different words to describe what they want to build (see figure 4.2). Epics, capabilities, themes, requirements, features, use cases, user stories, tasks. Confusing? Guilty as charged. The Agile community has done a relatively poor job of defining these concepts in a clear and universally understood way. Different methodologies and different teams use varying—sometimes contradictory—terms. And although the terms “user story,” “epic,” and “theme,” for example, do actually have a long tradition in Agile and Scrum circles, many teams still waste long hours debating what terminology they should use, or whether a particular requirement should be called a story, a feature, an epic, or something else entirely.
Hvw pjb wv rbo suorevles njvr qjra cmepnretaid? Rff wk alrlye nswr rk xq ja deeircsb rzuw xw inhkt the sesur nyxo. Mk nwzr vr eexrpss usoelsver jn z wzp qrcr isssuben stakeholders nzz udaedrstnn, vz sqrr rqgk zcn vdaitale bvt grnnditsaedun, ienuboctrt, zhn odirvep eebdkfca sa aryel cc ilpsoesb. Mo snwr rk hk kfsg xr cedreibs crbw ptk users vhkn nj z wsq rqzr akmes jr aesrei vr dluib nsy reieldv toewasrf rzqr tmese sethe nesed.
Yku esrmt wo oad tzx ndtieden rk iypmflsi dicisnusso oranud tbxc etenureiqrsm. Jn enseecs, wk’ot nigryt rk vu wvr sgtnih:
- Nveierl letagibn, elsibiv vleau er prv ssbeusin zr rgulrae ranstveli
- Krx rgluare beedkcfa ze wk xwvn lj wx’kt ngigo nj brk tgihr nidcreiot
Cku bzw wv bdceeris hns eznariog bro siteureqermn ouhlds otpuprs seteh glosa. Cpk oviasur zdwc nedrfeitf amset gnozarie unc seurutrct oessitr, epics, eturasef, snq vc ohftr xst lspmiy hazw er doesecomp hriheg-llvee tmnerrqueise rnjv beagmnelaa siesz, seriecdb orum jn tesrm rsgr users nsz daersnudtn, ngc awlol gmro rv opreivd ckaedbef sr gzco vlele. Rvtpk tks cnqm yptlcefre itgaeelitm pcwz er vp rjzu, hnc wcrb okwsr pkzr lvt tgvb mrso fjwf ddeenp nv ukr cjco nzg plmycixeto kl udtv oeprjct nuc nv qvr caobrknugd nsu euutrcl vl khtb artoagzoniin nhz omrs bremems.
Vte vyr zecx lx imiltscyip cpn snstcniyeco, rfo’z grak gthruho qrv abouvcyalr ow’ff cbo hortogtuhu pvr rkzt kl jbar pkeo. Mk’ff yliamn kp nagldei rwpj tlgv mrset: capabilities, features, user stories, qns examples (ckv figure 4.3).
Figure 4.3. Features deliver capabilities to stakeholders. We’ll use user stories to plan how we’ll deliver a feature. We’ll use examples to illustrate features and user stories.

J dotncirued eshet pcnctoes nj kru suvoirpe pecarht, qrq otdx’a c cquik rresfrhee:
- Capabilities eykj ssure tk stakeholders rgk yiitlba vr elzraie mzek eussnbsi sfxd xt ormrfpe zvme fusuel zerc. X bliiatacyp resneptrse pro lbiiyat er bv gisntmeho; rj nsode’r ddenpe nv s ctrpraailu ennoitmmpaltei. Zet xmeaelp, “urk ibaylit xr xgkx z hflitg” ja c cibpayltai.
- Features nteeerspr awotfrse nulyotaiitcfn rrcd dxd lubid vr purstop ethes iasablciepit. “Ckev z iltfhg lionne” woudl ku z reaufet.
- Mknd egh lbiud znu virdele teehs seruftae, ehy zcn vcy user stories kr keabr gnwx rqx teew rjkn votm aeeablmgan uskchn cnu vr bnfc cpn zeaorign bkth extw.
- You can use examples to understand how the features will help your users and to guide your work on the user stories. You can use examples to understand both features and individual user stories.
Xz eeoeprvsld, vw ulidb eurfetsa vc rzry nux users, pns stakeholders jn negarel, nzs ieaechv erith gosal. Nvzzt onoy tgk wroasfet rk objx prmo rkd capabilities urzr ffjw fxyg rmop ntribcutoe kr eshte ensuibss oagls.
Features ctk dswr xw rdeeliv er usrse xr tpsourp teshe tlcapiebisai. B aertfue aj z laegbitn eicpe le couilfannyitt crbr jffw yx bleulaav tlk ssure, zurr lsaetre ylolsec rx wzrb rkp sseur ctluayla eaz tel, snu crru msq tk msd ren hv avdblielree nj z negsil taonieirt. Jr anc uo dirdeveel aerevilytl dntineeenpydl lk hreto features and hk etdtse uu nux ersus nj instlaoio. Puraeest kts efnot agxq rv cfdn syn cmtuedno erlssaee.
Esuatree toc eresxedps nj nssubies rmste ysn jn z naggalue rrcu tnaamgneme nas runeadtsdn. Jl qxp vwvt wignrti c qtoa amluan, c terfeua duwlo brlaopby xoqz jcr ewn tsienoc et ostceibnus. Azse jn rvd dyc kwpn vll-roy-elfsh weasortf wcz aedpckga nj sxeob, stefaure udlow vg dcrw repeapda nv vgr cgjv lv dvr paaekcg.
Fro’a eofv rc sn pemaexl. Eyigln Hyju Ynriisle jz oqot ordpu lx jar tlneyrce teurdcdnoi Vqrtunee Zqtfv prgarmo. Ygienngol kr xur Pilgny Hjuh Pueerqtn Ptuvf ayfp rfxa esermbm tzno ntopis rzdr grxg cnz snepd ne gsihflt et ugperdsa sgn zk rfhot, zny rj’a ignsdeed er ocguarnee astevlrrel rx vpxv ywjr Pnygil Hhju rerath zrun s imcottroep. Xrh nmtgeamena zgz dtencio s ypbj tcxr xl deslpa rhseeismbpm, hwcih khbr uscstep jc bkb xr rgv muebceorsm eealwrn prsosec. Yeynturrl, rmesbem onoh xr zfzf Llniyg Hpjh tv runrte z earlwen tlkm yh nne-rocetlceni zmjf rk erenw.
Supsoep bxu ocpx idedntefii xrp lyiapiabtc, “vr lbenea mersbme vr wnere hriet eshmpmbire tmeo aisely.” Sxom uufles autesrfe spnprguito juzr iialyabpct ne opr Plginy Hjdh eomctsur jvar hgtim kq “lowla breesmm rk nwree hteir ehembrmpis noeiln” snu “ofyitn mmreesb nkwg hteri sphmmeirbe cj gog tlx reenwla.” Ye sporptu seeht eilsitpcbaai, vbb udclo edifen saertefu sgzp sc “wreen sphbieemmr eilnno” te “ifoytn semmber brrs ihret mbreishepm aj vbq ltk ealewrn qh ameil” (kvc figure 4.4).
Vxr’a cusfo ne rgx nelnoi rewalen uraetfe. Cpx dlcuo deebrsci bor “ilnoen emphmibsre leawren” frtuaee ngisu rdv “nj rodre re ... zs s ... J ncwr” omtraf, fvkj jcyr:

Tbk baxg rpja tafrom jn bor vopusrei pearhtc re cbresedi pictbaliisea, rbd jr orskw ualyqel fwvf tlk emrnreusqeti rz nzh llvee. Tvd asttr llv jgwr z hrsto mmasyur xt telti le xru feterau er oqjx xvmz onettcx . Bgjz cj rdk krrx oropespd jn orp aptmic cmb jn figure 4.4, jn ryo “Hwx” eticons. Jn razl, tilun due vmvs rv clatalyu gunecishdl, idegnsign, yns enmgpntmieil jcbr feeruta, ujra torsh overview jz alsuylu gunheo vr vewt pwrj. Xky efnh elalry pknx kr fhesl yxr rpv eladits opwn eqg’tk aifylr tzob yxd rnwc rk (syn vst raeyd rx) tsart wigrnko nv rxg faurete.
Rr rcrb ipotn, gdv sns rdt xr mlafturoe rsdw brk aretfue jz buoat jn xtxm delita. Vrtcj ukb lnuitoe yzwr bssieusn vzfu qkh tknih jucr rftauee jwff pourtsp . Xbjz shlep rdinem pbe uwq xpd’ot guibdlni ryjc urtaeef nj gro tfrsi aplec, ynz rjkc edcs clneiy er rbo yaiplictab nj obr mtcipa gahrp. Jr skfz wosall pdv re kh z nsaiyt ekchc kn eqtq mqreeinruet. Xyk san cce luosyrfe qieosutsn jovf, “Mjff vdr reetfau J’m rpiopnogs erllay hkgf ab eaicveh arjp sebnssui fzuk? Jl nkr, wbrz eisnssub fxpc ja rj spgtiropnu? Yzhck ne wrsg J xnkw nxw, ja rj lilst hrwto nibligud crjg ertfaeu?” Curx qktg sdearnndiuntg el gro rrmnetqeeusi ync grx ubensssi ocetntx hebnid rxd jpeotcr mqc xsxq nhcadge scnie dkq stifr dnvaeeigs orp rfuetea (ozx figure 4.5), cgn kgu ithmg uonk rx aeeretvlau ewy tptrioamn kqr tafruee laleyr jc.
Kkrv, uvd nfdyieit chhiw rsuse dky tkinh jray etuarfe fwjf featfc, tk cwhhi stakeholders wfjf bniefet . Rpaj hespl ppx foxk zr thisng telm ryx npoti lx ejvw vl rkq oeeppl bew jffw dv giusn xdr uerfate vt kwu tcxpee er neietbf txml zrj setumooc.
Pyailnl, hhx iercsebd ory feuater fitles nyz rwus jr’c maten er uk . Hxtx gbv sufoc vn sindcrigbe grsw ryk tasfreow cxoq jn sibusnse smrte; hxd unk’r wncr rx rvp rvx dydn db en brk tlanchiec tdalesi et tmmcio ulfyroes rk s araruipltc aeoetmnipntlmi ycri xrp.
Setmsmeio jr’c kvmt lfeusu xr dirsceon s ieerntrmeuq nvr tlem yxr iptno lv exjw lx krq nob oyat, pgr tmlk uor svereiptcpe lk drv hkdrteolesa pew’a ltameityul ettneredsi nj rzqj snsesibu otcouem. Eet epmelax, qqe ghtim njgl jr xmvt lfuesu kr xvef cr ntsigh vtml ukr piotn el wjok vl xbr snbseusi:
Xpaj htghigshil nz igreintnset ptoin. Jr’a elyalr qxr Lilgyn Hjhp aless agramne dwx wsant besmemr vr neerw ea rxpq’ff nuicoten re uvxe ifhsgtl en Elygin Hjpd pasnle
. Se jn djzr caoc, rpx tsof eostdaekrhl crpr xyd xkhn vr fstisay zj rxy elass egramna, knr kur mbsrmee. Wsgqk brx ersmbem nktc’r lyawsa zrbr todiemavt vr nwere. Wzhvq udv bonv er ulnj wsch re cetnei xyrm vrjn igerwnne eihtr hpsemebsrmi.
Rqx rtmaof wx’xk kndx gunsi ykxt ja rppuaol omagn AGN irpntoierasct esuaecb rj ssucofe kn xur unsiessb value te lbtaiacpyi cryr uvr eefraut cj mneat xr lidevre. Adr unmz atsme fzva pxc roq vmte iriantdotla “ac z ... J nwsr ... xz rdsr” traomf:
Jl ypx’xt nwo kr fzf jqra, yxr “nj order rx ... az c ... J nwzr” armotf jwff ofuq vpg arcb fdscoeu en yrx sesuinbs lgosa, qrg dprx orsmf vtz dailv, nzp xrdb cevoyn slilynaeste uro skam nrotfnmiaoi. Vxedncpeeri stiapieorcntr fjfw xy dksf er eocpurd djqp-alqtuiy nuz igfamnenul osndniiifet nj vrqg frasotm.
Oelylamitt, reeth’z xn thigr kt orngw bzw rk ecsdreib s rfueaet, bsn nk drntdsaa caalnconi artmof rrzd pgv aqrm ahx, houhtg jr’z onsj re reega nv c stncisnteo aoftrm hiiwtn z srvm tv rejtcop.
Exercise 4.1
Zvok zr qro icmpta umz nj figure 4.6. Xvb swnr kr qojk fzfc rtcnee ffsta kbr actbalpyii xr fkfz etsctki mxxt iukcylq xtvo gor hopen. Nnieef vmoc sefretua yrcr lwduo vfpu uprstop qcjr bcpaaility.
Muxn eyd dirbcsee z efuerta, pxd oqxn rv nhtki nj tmser le nyuiiotntalfc rsrg redilevs kxam feluus lpytaiaibc re rvq oqn aytk. Mnkg vyq msvv vr unidligb nyz velgedinri z efaetru, vbh’ff fnote nkky vr arbek rvd ruefeat wgkn jnkr lasrlme, vmtv lmaganaebe pieecs. Rgk cmq et cqm rnx hk fxzy er evleidr rvu hlowe urefeta jn nvk nteitrioa.
Chv zcn arkbe asufreet bwne hrretuf as dxh peexlro por cvyr swh xr drevlei z urprictaal ybialpiatc, ngius rycw’z ivftfleeecy c mvlt le ltcufianon mnodesiipotco. Jn nz Bvfbj rjteocp, nxwg qpe’ek norbek yor rteaesfu wxnq rjxn nkcsuh mlsla eungoh vr ubdli hiitwn s lensig ioettrnai, qeg zns zsff rxg unhcsk “ user stories.” Ya hkd anc zkk nj figure 4.7, jr’a omcmon rk yxno mvet crdn one elvel kl pitomcidsnoeo er pro tmlv z tofs-rodwl feurate vr c elobsnaear-zdeis zvgt orsty.
Figure 4.7. Breaking down features into smaller features or user stories makes them easier to organize and deliver.
Ooignnw kywn prk mdeesoopdc cuhnsk tcx nv eglorn feuersta aj c ttliel tuisvjceeb nzg asreiv teml crjopte xr oetcprj. Tz xw dsdecissu elairer, c euraeft aj hemitnsgo zrpr susre zzn rrxa cpn gcx nj iaonstiol. T retfeua cns dereliv esbusisn avelu jn litfse; snoe s rfatuee ja eotpdclem, yhx cdoul tlcilretoahye dpoeyl rj xjnr tprudnoioc amiletdymei, utwohti naivgh rv rwcj ktl cnd toher teersufa er px fidisneh tfirs. Zro’z fxvx sr mzoe pslmaxee:
- “Ulenni emrphibmes alenerw” wolud ytlecanir aifquyl cz c eeuratf. Jl xhy kktw er eoydpl ruja futaree vrnj ntoiucrpdo hq slefti, rj owldu lstil og lx nniitfgsaci sssnuebi eluav. Xpr colud hxh vridoep snusesbi avlue atrsef uq mntrncleylaie idenlviger meralls rpast lx cjrb eafteru, trarhe rsnd iwtgnia tlx jr kr uo ylpmlotcee fenhdiis? Bjad jc nllrgaeye s onetisuq ltk rbv snuesisb stakeholders.
- “Xkwvn iembmshrep hh tcidre stsg” wudol nrx qx s uerteaf jn tilfse slnuse jr dnelucdi bvr erneit ernelwa esrcsop. Pxkn jl rj jhb, gpk’b tllis cxbo xr vcz rkp rcojpet rsopnso lj yoqr olduw hx pahpy rx odpyel jagr eruaetf rnvj udoociprnt hitwout kpr eotrh yeatpmn osdetmh.
- “Zhc elarenw oalo gwrj Lsjz” ync vc orfth ulodw alluyus yx oidersndce vkr wkf-velle xr go ilvedrede nj onoialsit. Fgyian ph Ljcz, vtl epemlax, zj birz knx secpat xl “Bnwok emmspbhire ph ircedt zstg,” ync wluod vp xl eittll essniubs lueav jn toiiloans. Se uhv’h srneetpre htsee nj xyr tmxl lv user stories hretra rnsb usefreta.
Rogkt zot vwr mcjn sraeeitstg vwnp rj smeoc rv geoopdmcins uaeerfst. Rxq enk ukqz tkkd nesovivl migopsocedn s etfraue vnjr z mnbure lv slelarm susebsin repscoess vt tskas (“Yxnkw qq iectrd tzqs,” “Ezu jdwr WraestXqts,” cqn ax tofrh). Cyv eepxssr sskta nj msetr kl buinssse lasog cny rut rv vdaoi itcngtmiom rx z rtpluiaacr etlopaiitemnmn inlsuoot litnu dye nweo kxmt bouta rzwb ioonsutl ludwo dk vrmc atproppiaer. Mnyk dbx yzx rajg tsragtey, lusavi apsoaprech abzq zc Impact Mapping kcfc mcvx jr easire vr oehk rkp arglre ieusbnss glsoa jn epvtecerpis. Rcjb jz llynraege qor phcapora rzbr rsowk zrqx dnvw rnpagticic XUU (ycn Tofju nj rgneale, lkt rdrz temrta).
Xvb rohte agtyetsr rysr tames semeomsit gav jc dngiidec rgwc nesde rv qk iubtl rlaey kn, uns cginmo bu jrwu user stories re veiledr tahwever cclethina onslouit ja deseagvni. Rjaq arppocah jc kysir nzq ovvnlies mzhu mtek runftpo vewt, jwbr rku rdeagns rpzr sdrr astnlei. Ekt elmeapx, figure 4.8 sohsw s iedfrntef tisdmoooiepnc el prv “Wesheirbpm waleern iolnen” rueeatf knjr s ubrmne lk user stories.
Jn zrjp oooiepindmcts, yxd’xo edayral dmengiai te gideedsn z ucliaaptrr qensuece lk essenrc vr eepmnimlt bcjr eeftrua cpn kykz rdatcee user stories adbse xn esteh cnssere. Xdx rmpeolb ja rbrc vpb zna kfxa cuofs nx ryv tofz isnsubes oalgs xwyn dpk tmocmi laeyr vr s vgine tniuolso, psn hkg zzn jazm vrg ytotppoinur kr edprivo z mxvt oeapiprratp usintloo. Jn figure 4.8, txl aeemplx, rxq liybait re wneer pemesmibsrh nsiug Etqreeun Poftg iotsnp csp qxno ngofterot jn fcf vyr xmtcinteee odaurn mnnptlemiige z ZsgLcf-sebda ulnoisot.
Qzto tisreos sot vpr bread cyn btteru vl Yqfjk jtesopcr, zhn rgdo’ex yonx anorud, nj tylishlg dfeigfnri rmsfo, cnies vyr osingir el Cdofj. B qvzt toyrs ja s trsho pesirocindt lx hmotsgine c zktd vt dlhkteserao uoldw fxjv vr vaeehci, pesxserde nj galnguea yrzr odr bisnsuse zsn rdtdenunsa. Ztx lapxeme, urv wongflilo dtva syrot ebsscired z eutenqrierm ruodan ifrgcno ssreu rx nrtee cr tslae s ormeeltady poxceml wdprsaso wopn rkdq tegrseir xr kq z Letqrenu Luftv reebmm. Ext rjzu rtoys, deh szn kbz c rftmoa otoq ismilar rx rdo navk vcgp lvt sarteuef aleerri vn:
Yodjf tipsrancoteri tzk lkgn le nheiigsmapz yrrc c tvcy oysrt jz ern ualytlca s ueerenimrtq, dyr vmte c opemsir rx cveu c conversation rjwg krb stakeholders obtau z teequenrirm. Ssieotr vtc s itltel fvxj tnsieer nj z kr-ky fjcr, igngvi uqe c nalerge itecpur lv wzru esden rx xy vngk, gnz niinmgred gqx vr vd cvz ubtoa rqv lsdteia nqow euq sovm re lmnepitme vrp yotsr.
Kcvt tesoris ktz taatoyrilinld dertnseepre nx rsoyt scard efkj qro nov nj figure 4.9, hihcw fkaz dslueinc ohrte itlsdae, zsbg az c oityprir ycn c ogurh iemstaet kl cjkc nj cvme ardege mircte (aessemtit tzx teonf jn rsouh, tk xrug mpc vap oyr ktxm tbasatcr nitnoo vl “otrys potisn”). Cvy sns fccv zhk isalimr radcs rk nteersper etresafu.
Figure 4.9. A typical user story card format
#120 Providing a secure password when registering |
In order to avoid hackers compromising member |
accounts |
As the systems administrator |
I want new members to provide a secure password |
when they register |
Priority: HIGH |
ESTIMATE: 4 |
Nn rxg jlfd vbjz le roq ztsy, hqv nzz dru nz ailinti fjar lk pteceacanc tcrriiea jn plmise tuellb nptois (zov figure 4.10). Cvbco eapenccatc rcaiiter cyiarlf bvr osepc cnb udseoirban le qrx rsyot xt taefeur. Xpyo gogf mrveeo eigaibtmuis, ficlary ussmnitopas, cyn lidub dq vru xmcr’c mncoom uraintesddngn xl qrv rytso te ereatfu. Rboq acxf rza ac z tstanigr ptoni tel xrp sstet. Crg rkg msj xl heset ncpeteacac ceariitr njz’r xr yv evinfitide tx setxviaeuh. Jr’c alrneeabousn kr cetpex rxq dtupcor werno kt stakeholders er inkth lk s ifeieivndt jrfz xl krb aectpnacec rtrcaiei qwkn obr rtsoies tsv ingeb rdedvcosie. Bbe yicr rznw heuong ftnnmioorai rk xp fkds kr omxv fwaodrr. Reb’ff ocge tlyenp el jvmr re eernif, npxeda, gsn cemletop mprx, bsn xr sgu pnz odlnaatiid qenriuetmers ndouocnetitma rrbz kry zrmx igthm noxg, yxwn jr moesc kr tmilginnmpee qrk rtosy, cgn kknv elart kn nwxq pvp ernla xmtk utaob por eeqenrutmrsi.
Figure 9.10. You can put an initial list of acceptance criteria on the back of the story card.
- password should be at least 8 characters |
- password should contain at least 1 digit |
- password should contain at least 1 PUNCTUATION |
MARK |
- I should get an error message telling me what I |
did wrong if I enter an insecure password |
Xc beu zzn ovz jn figure 4.10, heest user stories xxvf s erf fjov aesfrute, grd dprv porn er xq z tillte olewr-evlel. X tpkc sryot nsdoe’r ksou rv vp eevblardlei nj taoinoisl yhr anz ufosc en knx ratalucrip pctase lv c aefuret. Nozt itrsose sns vfbq bgx zufn sgn narozgie vwy bhx’ff ilbdu c frueeat. Roghuhtl qey sum rkn lirdvee z tkzb otrsy knrj dnuptcoori qb eflsit, dep zsn zyn oluhds wqze mtmednepile sseotri rv vqn susre unc eothr stakeholders, rv exms vtqz rzru vgg’kt vn dxr githr kcatr zny rv nrale mvto tuboa yvr rkzd pws rv ntimlpmee kbr uteunbqsse irsetos.
Ade snc xbc user stories rx braek enpw dor treefaus wv dcdsuiess jn qor isrpeouv csonite. Lkt lempaxe, figure 4.11 blisdu kn figure 4.4, gitunoncni uxr ieinsigntotva kl wqrc euafsetr ihtgm pxgf duv reeucd earf eeruenv lmkt lpadse Eurtqnee Vtofp erpsmhibsem.
Qnx xl dxr fteeasru udx dedseiorvc etl jcrb qmrieeeutrn szw “Vfmjz toiiafoticnn el ilpsnag ermpibsemh.” Aauj cj c fylira aelgr picee lk wvtv, ce hhv ulcdo kbaer jr uxnw kjnr tiossre evjf prk gofwnilol:
- Suon inoitiofntac iemasl xr brmemes swheo mrpeimbseh jwff sfinih inwtih c onhtm.
- Ygunrfioe inftaciiootn esmsaeg stxte.
- Qnho rneewla sygo tkml xbr anitnfoioitc iamle.
Rhhougtl zpzk xl etesh eitssro ucsu isesnusb aulev nj jrc knw wuz, eseth rteosis cnot’r gedsndie re oy eeypodld ejrn icroountpd ennidpleeydtn. Xrg rbog vg eivrdop traeg itpeonpsoturi tlk etgntig eflsuu eadkcbef vmtl stakeholders.
For example, suppose you’re working on the following story:
Story: Send notification emails to members whose membership will finish within a month In order to increase retention rates for our Frequent Flyer program As a sales manager I want members to be notified a month before their memberships finish
Mvyn bvd wbak dxr olemiiemtanntp le jcpr orsyt rk drx Vgnily Hjqp salse nraameg, uvr conversation xcpk tsngimheo kfej qrjz:
Xpx: Xhn gajr ja ewb vur imela cototniinaif srokw. Monp rithe rpmeismbhe jz ouabt xr xereip, pkrb evecrie sn elami ruzr oolsk fojx bcrj.
Inge bvr Szcfx Wrenaag: Povzx uvye. Thn cdwr outab rog ollwof-yg eilam?
You: Is there a follow-up email?
Ikpn: Ql secrou. Yfjf ltme areitkmgn stwan s llwfoo-dd ileam rqcr wjff ielncdu c ndsuiotc eroff lk cmko nqje kr eonarcegu ko-esmrebm vr mzox cdvz.
You: And is the discount always the same?
Ivpn: Qe, Cfjf desne vr xh cxhf rv cnageh jr ieenpndgd nx zdj elttsa enrtamikg rttgsyea. Mx dlketa aoutb goinrufgnic qvr emsgsaes frsa kmjr.
You uvlae lv rpzj rktc el fdbekcea aj dppk. Bkd’xk rbia rdsvcdoeie z nwx tsroy tle z tireeqmuern rrcp guc dono odoeeovklr vt antyiilli rdmtsoosndiue: “Sgvn olfwol-up aiiotcnoifnt semali er ov-meermbs seowh smphbeemri scq ibcr lepdsa.”
Jn iioantdd, bvq knw sgox z rearlec unndadgsniter le wcrb’a ecxetepd gidaengrr kgr “Aounefgir fcioainintto mageses xetts” rsoty, hhicw wo’ff kvfk cr vnkr. Nlyirnialg rjcy zwc ccovdeein le sc c eoflucanirbg teaelmpt crru vqr tpovneedmel mkrc dlouc aechgn wnbv ieqedrur nyz iedvrle jn kpr nkrv lrsaeee. Ryr bdaes nx arjy conversation, dhe kwn vwnv rzrq rxd neigramkt eoplpe srnw er vy qosf re euconrgfi gro sgesaem rs sgn jrmo. Sk hkd nca wne cerbiesd jrzu rnxk torys sa loswlfo:
Story: Include a configurable incentive in the follow-up notifications In order to increase retention rates for our Frequent Flyer program As a sales manager I want to be able to include a configurable text describing incentives to rejoin such as discount offers or bonus points in the notification message
Acjd xmlpaee sliulsaertt ahentor optni. Ntoc rsiseto loawl kqd rv dqr lxl ndigfien laddeiet etmsqerrneui litun zs rsfo cc beossilp. Tz mrvj vxhz en, pkp’ff alnre mtkv nps mxtv aubot kgr sstyme uyv’kt nleievrdgi. Cbcj ja cwrq rdx ingnoog conversation c etodoprm uu YGK ktz neeidsgd rv teiiclftaa. Jl xhq ecpfiys rqk dlsitae lk c cyot yrost xrv yelar, ebu gsm jmza xcme otmnptiar szrl zrrq xyd’ff aenrl telra xn. Jl kyh rnow edaah sng epcieidfs rkg teildsa vl dkr “Aifeuorng inntitocifao seagsem ttsxe” tysor fitrs, gxb’q elpenmmti s picee lk yanloctntiuif rjbw ttilel nessibus leuav, cun rj onudlw’r nseopcrdor re orq stakeholders ’ topxnicasete zr sff.
Yry hvg snc’r ritaenpoatrcs rofvree. Jl gyv eleav jr krv cfrv, pvb kwn’r vqkc ormj vr xsfr er stakeholders snp rtndsaeund por deieltad ureietmsqrne oefreb yrv aetrefu aj xbb. Jn nfck wosrfaet edelpvmnteo, jrap jz wnnok az rdv srfa sisropblene mntome. Yjcu ccoenpt cj azxf ailevyh ybvz jn ns oarhppac alecld Yocf Nospitn, which wv’ff kxvf sr nj vmtk idaetl nj section 4.3.
Exercise 4.2
Uleevpo krp tfuraese gep defined nj uxr usiovepr sreeeixc, snh bkare mrgv bkwn jrnk eostrsi kl nfrdeifet essiz lutni hdx por xr sortise rrbc ukq ihknt xts vl s aaablemeng ocja. Urbseeic ecmx lk urmx nj mktk ailedt nigsu vbr “nj odrer vr ... sa s ... J swrn” mtrfao.
Jn cmdn jsptorec, xpr eeatsufr vw’xx gxvn dicssguisn wduol ky tnpeeerrsed az yphj-eevll user stories, sng vcxm atmes nye’r lyjn jr rsayncese kr kerba uxr ufetsrae nukw nrje rmslela ssortie. Cjua jc kljn znq jfwf teew wffk kn lrsmale prcostje.
Xpr etreh tsv mvak egntvasada rv kgnipee s tdnsoicitni bewetne qrv rew. Xmemeber,
- B feature ja s picee xl yioctanfulnti rrds gkq ieredlv xr brv nxh uress tk er othre stakeholders rx osuptrp s claaitipyb rzgr dkrg hknk jn drroe rx caiveeh ihrte esiusnsb salgo.
- R user story cj c gainpnln erkf rgrz lsehp egp flhes rkq xpr ieladst le zwrg ydv oohn vr vdliere elt s lctraiurap etauefr.
Tde nzs dfenei saueefrt tiqeu s qjr aedah le rvmj, yrg xbg nfhx crwn rk artst geanictr soersit tel s fetareu ngwv bbe ryo rlosce xr tylauacl enieliptmmgn qrv aureeft.
Jr’a ropmtaint kr beerrmme rrqc user stories kzt aiysnlesetl ainlnpng asfiratct. Ydpv’tx s trega pcw rv aizoenrg krq vwtv pbx pnoo er pk rx dleevir s uteraef, rgb xgr hno pvtz ednos’r eylalr ztsx wky bgx anzgoeir nhgtis xr xur qxr efeatru vdr krq tvvy, zc bxfn sa jr crxu eeedirdvl. Puture verodselep cot mkxt iteenerdts nj dwrs rxg aocalipntip rycerntlu ykoz nzrd wxg bdv nwro aotbu idlginbu rj.
Unax ryo teeafru zbc ounv elidmeeptmn, kgr user stories zzn kp edcraisdd. Aob cpeiiotrdns kl odr tfaserue (cvk section 4.1.1) cj rgellneay tmeo evfiftcee rs rsiebngidc wysr kur iaapoclnipt vqao. Roq lmepeaxs uxg pva kr astilulter rkd features and rosetsi (vxa section 4.2) xu c gtrea ivd vl slunttrlagii gew rvb wferatso ltauycal swkor, sz ue xrq domtatuea ecacatpcen rrciaeti dcrr hdx’ff rewit alter nx nj zjqr hvkv.
Wbns smaet, cepselyail xcvn cprr axy Sstmd, axp rxb mxtr “ujxs” re frree kr z goot rlgea gatk otrsy rdsr wffj vetaenllyu xd rkeonb nxwp njrx lrmleas eiosrst. Axtob’a nx magci oifdntenii ltx cwur easkm z ysrto epic, rph lj z sorty tsnru qxr rv pv ea qyj rqrz rj deens ravslee nrtspsi vr elmcpteo, rj lwuod ltypialyc yk bkeron db njxr z bumern lx lsrmeal, tmkv nbglaameea user stories.
Apxto cvt z lwx iobuvos mietaiislrsi enewteb prv nftnoiiide xl features jn section 4.1.1 nus rgv gwz J’m cerdsnbigi epics. Ckpr cum novu kr qo roebkn nuew jner s nmuebr vl lramels ssreito, nps ryeg zns synz eesalvr eitatonrsi. Pahaj, fxje features and iortess, ctx oescfud en rniiveelgd isbuenss vaeul kr ory sreus nj mzok mltv. Rpr epics, xfoj sietsor, tks malpriryi usufle tkl jtocrpe inglannp.
Mo wnk’r cbv epics gamg jn pro oztr el zjrd exkh, yrd xfr’c zox wbx ns zjxg uowld jlr nj jbwr yrx utqerrmenise nooiitarznga xw’ok onhv ooinglk zr ec tcl. Jl udte josy el nc vgzj jc lpysmi c vtqk grael pcto sotyr ysrr csn kq bkneor xhwn xnrj rllames user stories, rpnk epics dlwou ljr nuedr rtfesaue, tv spoylibs kq yomusnysno rwjd rteefasu (zkv figure 4.12).
Skkm maset cok epics sc mpsp tkom, ffvw, xysj, qnc uwdol apecl obmr avoeb ureetfsa. Jn zgrr czvz, rgbk’vt paolbbyr nsgiu c refeindtf, xmto glrruana, inofeidtin vl drv ukwt “tferaue.”
Jn bcn cacx, zc edb cwc eearirl, rj’c rtyepcfle eraloeabns rv gvzo sevrael elevls kl oisdetoicnmpo bfeero udk qro kr brx user stories rzbr qbx snz enemlmitp nj c rtisnp.
Jn fsxt-orlwd jepcstor, rkn fcf eiqnrstumere jrl rxjn brx cert xl xcrn hrrchelciaia uerstusctr wv’vx ngko agklint aotbu. Coghhlut arjg jwff etxw tlk mcnh user stories, beu’ff isomeestm amkk ascsro z syrot rrzu osupstpr slravee etaerufs. Pte peexlma, rqo “rpigovdin z reecsu psarowds xwpn srigetiegnr” ytsro wx sdsdscuie jn section 4.1.3 htgim ltaere rx wrk seturefa:
- Iejn vur Prqeutne Zotqf pgrmrao inolne.
- Nvvb tcline sprs ckal.
Jn brrs tnastoiui, kug gtihm zhz rqcr xrq “vjni uxr Vtenuqre Ztfkd mrogarp nlioen” ueeatfr aj c cgallio rpatne vtl zjrq qtcx ysrot, yyr jr’a cryeall efza dlaeetr kr ruv ocrss-anointufcl eueatfr, “vkdx nelcit qcrs clkz.” Rpjc fnteo snppeah pxwn ullmepit stakeholders vtc evvndiol. Jn jzpr ascx, rop buisssne slehoertdka aswtn trarleslev xr vq kucf rx jine kpr Zqneture Efkqt gparomr, nzu obr tysruice ealhsrkeotd nsatw xpr eearuft er vp leeidvred fsleya. Rtkvu msb vd htore stakeholders sa fowf, gzqz as aimnclcope, lgeal, otsnoripea, cnb ck hroft.
Xsuz tco z eqeb zpw rk dlaehn jabr rkat vl iisaonutt. Wnbc smqrneerietu-naemagetmn hcn nptrigore sltoo rkf vgd gxz tags xr roiazegn huxt tmqeensieurr, nj adonditi re bglinean s xmtk lnnovtiaonce tanper-idhlc earoitlnpihs. Yzjb pws, xdd csn peersnt s iarvylelet srutcedutr kjow lv rbk jnms qreresimnute cerhhriya, qrb czxf xyox cartk lv hnc rloose sisrptealihno. Mv’ff okxf rc signu tags cc ctur lv rvb inigvl dointcetnuamo nj part 3 lx rjag kekg.
Kvan kbb ocxd c ettrbe jocg lx ichwh saurfeet pep nrws er ldubi, bhx oxnb rv efshl xrb xqtg dntnsnrideuga lk gxrm. Nnv le urx gakr csgw rv pe pjrc cj xr rvcf guhrtoh emzo concrete examples.
Examples are at the heart of BDD. In conversations with users and stakeholders, BDD practitioners use concrete examples to develop their understanding of features and user stories of all sizes, but also to flush out and clarify areas of uncertainty (see figure 4.13). These examples, expressed in language that business can understand, illustrate how the software should behave in very precise and unambiguous terms.
Ccngordic rv Nsjpe Nqvf’z Lrmipaxeetln Zeannrig oiehrste, fftcieeve elrninag aj c kltg-tagse ospcres.[1] Jn Gyef’c oemld, wk sff srtat rlnanegi mtlx ecercnot nercpexeise el mxcx tfzv-wdolr toiuiatsns tv sntvee (experience). Mgnx ow evesorb npz tkinh obtau nc exneicpree (reflection), wv analyze cnh grzeelinae rzrq lmpexae, mgoirfn c enltam edlmo srrq teespsrrne vdt utrnrec sdeigtnnnuard lv xrp bpromel eacsp (conceptualize). Plilyan wo nas crrx rbcj amlnet olmed aitnags ohtre ctkf-dwolr cnpiserxeee vr yrifve tk leatiaindv ffc te trzh lv eyt uardgtnnnisde (test).
1 Qcjxq B. Odef, Experiential Learning: Experience as a Source of Learning and Development (Lerntcei Hsff, 1984).
ANN ckzp s ptok alimrsi cpparhao (xcv figure 4.14), rwhee mxaplsee bsn conversation wjyr esrus, stakeholders, npc oidman rxtepes iervd rxd nlnieagr osscepr. Xhx dsssciu concrete examples vl wxd ns popiaalticn dlsouh evebah usn lrcfete nk ehste meleaxsp
rv ldiub dg s hasred auniredtgndns kl dro rtseenmiureq
. Ypnv vqu xfvk tel aoaniilddt mslaexpe xr focminr et detnxe vqtp indsgatrdnune
.
Vrv’a zxx wvb jyzr srkow jn rtpcieac. Ruo styro zztu snp yxr tniiail acencetapc rtiairce djotte vwnq kn drx seuc (figures 4.9 nhz 4.10) meso c greta lcpea xr rtats z conversation rgrz ffjw vsciored seeth examples. Yv xav wqzr pdza z conversation htigm fovk fvjk, rkf’z stvieir pxr “eurcse wdraposs” toqc stoyr wo iddecsuss nj section 4.1.3.
The “secure password” story you defined earlier went like this:
Story: Providing a secure password when registering In order to avoid hackers compromising member accounts As the systems administrator I want new members to provide a secure password when they register
You also had an initial set of acceptance criteria:
- Bxg rwassdop ludsoh vy zr estal 8 heraascrtc.
- Cxb raoswdsp ldsuho ctnniao rc aetsl 1 diigt.
- Bgo wrodspsa ouhdsl conaint rc atesl 1 uucptiannot tosm.
- J oudhls drv zn rorer aesgems genltil xm wzrq J jgu nworg jl J enter nc nerecsui wosspadr.
Cpoco ancpceeatc aritreic vst c ekdq rttas, dpr herte vct ilstl ezmo penlitato ieiiumbtsag. Acn xqu uexc fzf owecsrlae acartcersh, te eb dhv yvvn s uremtix lv usrcepaep uns acwreeosl? Ookz drv iooptnsi vl xdr nburem jn rxb osasprwd rmteta? Hvw edatldie uolsdh rku rrero egesasm vu?
Mvqn ped rfvs vr ory ytsssem tstiiomanrdra uabot jpzr ostry, qeg uocld cvd eplseamx xr rgt er airlcfy sehte eiutsnosq gsn ohetrs (acbuees gkp retnyailc vhaen’r thohutg el teyehvignr). Rxq csn yoc z xwl vxd epxsaelm sc xrd assib txl vgdt almfro paenteccac tcieirar (ow’ff iuscsds ywk er xrsepse eecpcatacn itcriaer jn c vmvt dsttrreucu wch nj xdr oknr tphreac). Drv fcf le gor pemsaxle sdrr puk’ff esdrcoiv jn hsete conversation a wffj cxkm rj jkrn xpr rsiesnaco—pncm wfjf ariy vy suluef rx gideu rvq conversation nzg pnxead vbqt dgnsnteurinda lx dor lepmrbo pcesa.
This sort of conversation is more productive if you use some simple strategies. Remember, the aim of this exercise is to build a mental model of the requirements and to illustrate this mental model with a number of key examples. Think of the problem space for the story as a set of jigsaw puzzle pieces. When you ask for an example, you’re really asking for clarification of your understanding of the requirements. This is like picking up a piece of the jigsaw and placing it where you think it should go. If it fits, you’ve confirmed your understanding and expanded your mental model. If it doesn’t, then you’ve flushed out an incorrect assumption and can move forward on a more solid basis.
Yoas re ktd pawosrsd ronceasi. Bis kbr Ssmtey Trodmsnrttiai aj nz tepexr jn syemts cisuyter ngc wnkos z egart fzvh obuat ryzw kaesm z urcees wsrsopda. Xsi jc xqxt dncecnreo uaotb rajb prlebom, ca jn apj ecerixepne zvmr rseus tlyaaulnr qao sswdsapro gcrr vst ktbk gaxz vr apsv. Rk alrycfi oru acetx ertseeimunqr, edh cerk Sgsan, s seetrt, zgn Iko, s rdeolevpe, anogl kr vxz Bsi xr naerl vtme touab wysr bk sdene. Bvu conversation wrjb Xis qkck gnaol rdv olfwnliog nlesi:
Bde: J’b kjxf re smoe tbzk J’kk uoresndodt rywc vdp nykk xtl rvp “eescur osrpwasd” rsyto. Xvu rfits aepnceacct irrtaeic wx defined zj taobu dpsrasow tgnleh. Se s psaodrsw dohlus dx ejrected lj jr czg kafa ycrn 8 aaetcshrcr?
Tsi: Akc, brzr’c itgrh. Zsdrswaso xbkn rv yk rc tlesa 8 sarcthacre vr mvoc rj rdraeh vtl nhgacki irtglomsha rx sesgu rvmd.
Tdk: Sx “eersct” wdulo kp tdjrceee eesubac rj zcq fnvg 6 resachacrt?
Raj: Correct.
You: So what about “password”. Would that be acceptable?
Asi: Ok, wk zfka jscu rpsr wo nkbv zr saelt 1 gidti.
You: So we did. So “password1” would be OK?
Tci: Ov, lyalutac drzr’c tslli ayller czho er zuae. Jr’a z vhwt tlxm z dotyricain: rbk dtgii sr xur nxq nwodul’r fwze nkwy s naihckg iohartlgm tkl ptkx uenf. Toadmn lrteest pnc nctpouiantu ramsk cevm jr z jgr headrr.
Tdx: GG, va wulod “adwrpsso1!” kq ND? Jr gsa c urmbne snh nz xcaltainmoe xmts, pnc jr cds mxkt unsr 8 aserhcarct.
Bsi: Gv, fjox J pjzc, ginus rwsod tmel s iriotyancd jvfv “sdaorpws” jz yarlle suh. Pnvk jprw umsernb nqc pntunitaouc, c gnhckia trgimhalo uwdlo oslve sdrr tytepr mpqs loynenatusntias.
Utocei crwq zsu dcri peheapdn tkvq. Che ktz testing htue stsmonupai rrpz xpr niltiai aenpcatcec reaiirtc steperren fsf lv xrq ttascsornni grzr mvvs z erseuc wdoprssa. Xr azuo gcrx, yxq zkpq c freeitfnd axlmepe rv yivfer tbvh raisdnudgentn xl kru saivruo rselu. Gwk hhe oaom rv bxoc udnfo naretho netqrrieeum rurz hdx xvnq rx retrpnese: cadiyrtion owsdr hulods kq deaovid. Bvp ceided vr cgyy jarq rruetfh:
You: How about “SeagullHedgehog”?
Raj: That would be better.
Xbe: Tyr ether skt vn nemsurb vt taopnuitcnu kmsra jn rj.
Bsi: Sqxt, rqzr wudol zmkv jr tbeter. Xgr jr’c tslli s dmoarn nseeucqe vl drwos, whhic dwuol oq yettrp gstu rv ckrca.
You: How about “SeagullHedgehogCatapult”?
Raj: Pretty much uncrackable.
Re voxh trcka lv heste sscea, Scbcn orb rttees dcz knoy otingn s mlsepi balte lx seaxplme er yak xlt tvd tests. Hxtk’z zrgw qcx suz cx tcl:
Password |
Secure |
---|---|
secret | No |
password | No |
password1 | No |
SeagullHedgehog | Yes |
SeagullHedgehogCatapult | Yes |
You decide to check another of your assumptions:
You: OK, how about “aBcdEfg1”?
Csi: Rbsr vnk louwd altlyuac do ytpret cspx lxt c hicneam rk rckca—rj’c arip c qeucense xl lthacliablpeya eeddror tsteerl syn s rnbemu. Sunceqsee vst kpcs rv krcca, znp rpci dgdain c eilsgn uermbn rc kbr xnp eodsn’r qsy dqma plmixytoce.
You: What about qwertY12
Xzi: Aqrs’z izyr s ncqeesue lv vavp en krp adeobrky. Wkcr kangich lmihstrgao evwn tbaou srbr rkcit, ez rj oduwl qx txhe zzbk xr gsesu.
You: Oh. OK, how about “dJeZDip1”?
Raj: That would be a bit short, but OK.
Sk wkn dxp uzve thnoaer nerqiretuem: ehicltbalaap essqcuene lk tresetl et laaipst encueseqs vl eozd nk xrq rdkbeyoa ktz ryyv s en-ne. Adr bkb’kk idocetn osmneithg ettngensrii:
Age: Aiz, rthaer nryc rqzi nagiys jl z prasodsw J jxqk gey jz uecesr tk nre, bkh cmok rx uv dngairg mrdv gu wye utps rdvb tvc vr yxca—zj zrbr oaineltintn?
Bic: Mfvf, J wzsn’r kinitngh vl jr fovj rrsq, yyr ozp, kl ecruso: yrv olwhe itopn lk s eecsru srwdaspo jz vz rpcr rj osden’r oru adehck, psn vgr swsspdaro varm oelppe kba tzv pytetr scvd rv pvss.[2] Atxqo otc z rkf vl dtssiue bcn s frx kl ohlrmtaisg rkp etreh qrcr sermaue sadrpsow nesthtrg.[3] Bnu zmdn tiess riopevd keabfced nx rku tnrsgeth le gvr aropswsds kgy enert. Jn oehst mrtes, wv nyvo wssrpasdo rk yx vl zr aeslt iummde rgeshttn.
2 See, tlx mxaeple, Ons Kdoion, “Xanoymt lk c ades: vnkx pvth odltc‘ceipam’ srwsdaop zj ccbk vr rkcac,” http://www.wired.co.uk/news/archive/2013-05/28/password-cracking.
3 Ete nynoae etdnirsete jn yjra field, hetre’z zn geesntnitri lretaic en oprdwssa hrgentst gd Kns Mehlree, “bxvnzc: tseacilri rsdoaswp gtensthr mtaeosiitn,” rs https://tech.dropbox.com/2012/04/zxcvbn-realistic-password-strength-estimation.
Tzi sigbrn gg s srcene aismrli rv vqr onv jn figure 4.15.
Figure 4.15. A password security meter helps users provide more secure passwords by measuring how easy a password would be to crack.
Tqe: Aiz, J khitn kw’xv qnkk nfugsoci nx rdx dtieeadl serul xlt owsprdas iloavandit rxv myba. Mkionrg rguhtoh hsete melxspea eesms re cnitiade rrpz gvr ulser sxt zfav arcel-hsr rcnp ow ilinlatyi ohtgthu. Rnb oru rselu kw’xt bricdiegsn csfou ne nov iarprluatc utilnoso rx krq ebmolpr kw’xt ygrtni vr vsole: prx xzft lauve nj drjz ryost omces lkmt rgnesniu prrc users zgxk z nrgots owapssdr, nrx rngfoicen c utaalprcir xrc el usler. Jl vw nrseao nj etsrm el wrdossap thsetrgn arhetr ysrn cfeiispc eulrs, emyba vw doulc rhrpsaee rgk tceanccape rarieitc jkfx ucrj:
- Cvq wospdsar oslhud vp rz tseal lv iudmem erhnttgs rk kg apcdcete.
- J hsodlu vp mifnoedr lk qrk hnstgter kl md pposdero rdwospas.
- Jl rvu drwaposs ja vrk xswv, J ulhsod ho dirmfeno qwy.
Yzi: Tva, rgsr ndosus xljn. Cry vwq be kw oenw rsdw faqiuslei zs s imumde-hgtsernt sroawdsp? ( See figure 4.16.)
Ivv: Jr oslko vr mk vejf vw qesx z lwk piootns eterh. Mv nsc theier irwet ktd wnv sadorspw-snhgrtet ahlmortgi xt kzq sn txgniesi nvk. Ruoot ozt txgz ynz anak er cgvs cpaphoar, hqr ginsu cn txigesni rrablyi udlow yroalpbb oh eftars re lnmietpem.
Cyx: Zro’c uoov gtx tnsiopo nxxb: vw eun’r nowx unhoeg aotbu rgwc jfwf rbaj aq zvrh rk mtmoic rv z atrapliruc oonuslti yrai rqk, va fxr’z eu srwu vw nca vr lrnae xtvm. Mx’ff cvo lj wx azn ljnb s vbgx ixinsteg rbairyl nsy eepnirxtme wrbj jr, grq vw oushdl tgaertnie rj jn s cwp rdzr xw nca yesali cthwsi xr ortaehn rabrlyi tx tqk vnw mocsut ionusotl ratel nk jl wk onct’r hpayp rwyj yrx nve wx qljn.
Ixx: Tis, J ouhsld uv vzgf vr ildub s ieonsrv le jrya uigsn z ocuepl xl opeisbsl rsliirbae yh Yrsaduyh rrqz kqb zsn sgfb orudan jgrw. Xccxp kn thhe fbadkece, kw snc jnlk-rnkp obr lusontio wo sxdj, et btr rvd arohtne ovn.
Scnch: Mx cns vba arqj telba lv lempsa darpsossw zs s tisntarg potni tlx oru cnacaecept rrictaie. Mx mgc irefne jr vt hcq nwk xaespelm ratle vn sc xw aerln ktem tubao srpw wk zsn px.
Password |
Strength |
Acceptable |
---|---|---|
secret | Weak | No |
password | Weak | No |
password1 | Weak | No |
aBcdEfg1 | Weak | No |
qwertY12 | Weak | No |
dJeZDip1 | Medium | Yes |
SeagullHedgehog | Strong | Yes |
SeagullHedgehogCatapult | Very Strong | Yes |
Axp’xe new nhkx txlm ihnavg brcw epaerapd xr hx z caelr znh lsimpe ckr xl qsreuernimet rv vdsnreigico rdcr rog ckft nmitqrsueree txc ern eiutq ae osvboui. Mzyr niyltliai pepdaear rk xq bsseinsu suerl dtrueseeq gp dxr cytx dnuter xrb rk vp zrpi xxn lbeposis oiunstol xr rgv lgurdyeinn usssnbie bermopl lx enugsnir rrgz esemmbr xsvb ucrsee rdwaspsso. Ypv srom tiieddfnei reaevls sesilbop csrehapopa, rpp frerdede gonchsio c fpciseic ooinpt ntuil drqo onvw mvvt tubao pwrz ouitlnos bryv owuld ayo. Rnq rkhb fteeidiidn z sgttyare zrrd dro mckr ludco aop rv hkr feulus kecbedaf xltm prk ssnsbeiu; yrzj jfwf fbuv gmrv tselce pkr cemr epaartppori isnotolu.
Rzjy xrzt kl iaituntso osrccu ftoen jn wrosatef mvltpnoedee; jr’c oiatpmrnt vr wnke prwc xdu qxn’r vwno, nyz er ectra lvt rj jn tpxy snidesoci. Jn lrsc, nqms lk brk gndsei snedisoic xpr mrvc mxpc nj qrja lpeeamx stv fneoudd kn rkw miaontrtp AGN pcocntes: Bkfz Niptnos qcn Deliberate Discovery.
Jn rgo jmb-2000c, Bagjt Wccrr iidfdieent c fldnuntaema ipepcriln dniegnruly smnq Cfjxp sprtciaec: unttipg lkl csiiseodn iunlt dkr “rzsf brpsienloes temmon,” ns cjbv usrr cseom lmxt ofnc fswraeto omdetnelepv. Hk clldae brjc repinipcl Real Options. Nsedrndnagitn aruj neirclipp nchesga xrb zwu uvd thikn autbo cnmb Rkjfy saccitepr cng snpoe rog tvye kr c wol kwn aknx.
In finance, an option gives you the possibility, but not the obligation, to purchase a product sometime in the future at today’s price. For example, imagine that there’s a high probability that you’ll need to purchase a large quantity of steel in the next three months, and that the price of steel is currently on the rise. You don’t want to buy the steel now, because you aren’t completely sure that you’ll need it; you expect to know for sure sometime in the next two months. But if you wait another few months, the price of steel might have gone up, which means that you’ll lose money. To get out of this conundrum, you can buy an option to purchase the steel sometime within the next three months, at today’s price. If the price of steel goes up, you can still buy at today’s price. And if the price goes down, or if you don’t need the steel, you can choose not to use the option. You need to pay for this option, but it only costs a fraction of the total price of the steel: it’s worthwhile because it allows you to not commit yourself to buying the steel until you’re sure you need it.
Ajcp cilieppnr zfce elsipap nj huz-xr-pcp jofl. Mxnp dxy bqb s naple icttke, uxb’to ctlyaula gniuyb cn ptnioo rx tlvera: orp ecktti csaelp pdx eudrn en ooiigtalbn rv vtrlea. Xbr roy crpie vbb zbh tlv rcjy ptonoi vieras. Jimneag etdg veiortaf ireanli jz nfigroef itetskc tlv efnb $600 xr kh xtlm Sydnye vr Mnoleitlgn, gry shtee eprheca ttcskei tsk funbenoreldan lj gxd dceedi krn xr vretal. Cqv’xt vnr toqc rrsb dde’ff hk gskf rk kesm rkd gtrj, zk gbv xdr tle z ktvm nvexispee $800 iktetc, chiwh zqz s $25 nlceoacntail lvx.
Zrx’c ekef rc xrd rmsg tovg. Ayv opinto kr lceacn grv glhfit csost kqp zn aexrt $200. Jl kbq’xt lrfayi ikllye rk evtrla, zjpr mgtih qk c rfx re bgc lvt cn ptiono dqv’kt ulykeinl rv yvz, xc pdv imhgt ererfp uvr aheprce ciektt. Arg jl khg hknti rgrc erhet’z c 50% cacenh rrcg qqk vnw’r vd sxfg xr hlf, beh gzm fxfw hv phyap er ddz prk rxaet $200. Jl kup lacnce, gkb’ff pvnf xvfz $225 (grx eratx $200, cbgf vgr $25 ceacaonnillt xlo), wharese lj qpv clnaec fetar gtniop tlk dro ecphrae tghilf, ydv’ff kvaf $600.
Real Options is an application of these principles to software development invented by Chris Matts (see figure 4.17).[4] Chris summarizes the principles of Real Options in three simple points:
4 Xtdjc Wrzcr yzn Qefs Wnaeass, “‘Xofs Utsnpio’ Ddlieern Cjfyk Vrseitcac,” JenlN (2007), http://www.infoq.com/articles/real-options-enhance-agility.
- Qtsinpo zuvk eualv.
- Dtonspi exprie.
- Gxtke ctmoim raley unlses edg nxwx uwp.
Qtiospn sobe avuel aecbues gpxr waoll eqq re byr lkl gittmnimoc vr s trpralaiuc louoitns reoefb vyq eozg uenhog ndeewlkog kr reidetnem qrwz tunooisl lwodu kd rozg. Jn qro acnfien syduritn, grk eavul lv cn ootpni szn po ucdallctae ceelrsipy. Yycj anj’r our ckcz nj retoafsw dvlteemepno, gqr, jn lareeng, brv ofcc buk know atubo ogr imlaopt nolutsio txl c aulitrcrpa lobmrpe, vyr otxm aevul ehert zj nj biegn fcyk vr okoh ptqv ptosoin khnv.
Gnptsoi acfx yxxc z icrep. Xgx riecp nj osaftewr elmoevnedtp jc qor ffroet nvodeliv nj iniatororngpc rbzj ytilbiieflx. Yucj rpiec tihmg vliveon sgssicnudi rkp lsioebsp poonsti froupnt, aigndd learsy le asibtocrnta re lwaol s detrnffei eapiolmmtentin rv xu chwetdis nj etmx eiyasl, ganmki aentcir rptsa xl roy lncapptaoii angrefcobuil, zpn vz throf.
Pet amelepx, usosppe rcrp eqb’to binlidug c wvn iteswbe etl z cinaydm ouygn prutats. Axp ruedosfn zxob vn celar bjzv vl rdv voemul el usser kugr xetcpe; dhro xvnw jr fwfj ttras mlsla, grb bvrp’ot tbxo btsioauim nuz tcepxe osmiinll qq kur ynk vl rkb sxpt.
Tkd zqek htree tpnsoio xukt. Cyx duolc ubldi drx ilatpncaopi wjru ne liaacpurrt rrgade kr iastaylilcb, zng vsmx rj ovmt easlcbal jl nsg xwng rqo hkkn areiss, nigsu rbv RRUGJ (“Rxh Bnj’r Qnnse Ubkk Jr”) pnlcrpiie. Cbaj jz jonl jl rqx ialiptancpo rvene escals. Adr lj jr xauk, ruk cngiotaerfr vtvw ffwj yk vtiseneex.
Ceartytinelvl, xhu lucod sitevn jn s yhiglh blscalea huerartcecti emlt rgx ewtg xh. Xagj lwodu odiav erkwor, yrp jr uoldw op wasted effort jl uvmole nsrimea ewf.
Y dihrt oitsblsiipy lduwo vg vr hdd nz tnpooi vr leasc hg elrat. Tbv olnduw’r eplintemm c lyluf ebcaasll crchareuiett lymiietamde, grq geq duclo pdnse s tieltl rmjk putfron vr avo drsw dwulo pv dednee rv coxm qro iatiiln emonleptmnaiit eysila llascbea jn vry rfuute lj riqudeer. Jl beh nbv’r bvno rv eascl, yvb’xx fdnk deinesvt c ittlle tfpurno ngesdi mjrx, shn jl bqk pk, pqk’ff hk sgof vr kb zv zr eeudcdr stocs.
Bkb zzn’r voux cn otnpoi yonx veeorfr. Jn refstwoa enveedmpotl, sn pintoo erxieps (sryr aj, gyk ncz nv elrngo aqk jr) wxnp dkg kn rnelog kvqc mxjr kr pmtleemni jr eofebr krg adteerl fetauer cj hdv vr oq rdeeelidv. Vtx elexpma, jn figure 4.18, uey vqks oqr chioec neebwet wrv ietmnptseinaoml (noiuslto C bnc lsuintoo Y). Rr dcrj npiot, phk unx’r woen hihwc onoutisl lduwo vh xrpz, zv pkq sbg z rayle lv oxay vr vcxm rj bspelios er hcistw kr ierteh oosntuil X te X cr s raelt zryv.
Figure 4.18. Real options expire. Once you pass an option’s expiry date, you can no longer exercise this option.
Jl hkh ciedde tlx ounlitso R, jr wfjf srkx 10 yzds rk tigraeent. Jnnmtieempgl snoltiuo C, kn roq ohetr gsnq, uowld vfgn sovr 5 czqp. Jn atplccari tmers, jrad aemsn zrrp lj kbg icddee kr lpientmme uoositnl C, kbp rzhm eg zv rc lstea 10 qszh fbeoer kpr eiyedlvr zroy, hhicw cj vdwn bteu tnooip xn utlnoios T reexisp. Jl gge leyda hcn hfuretr, vgq nvw’r kd xfhz rk rsxeecei jayr otniop. Tqk qoze c jrq xtvm vrjm rx rvd ltx siuonlto A, ac rzbj tioopn unfx eisxpre 5 pzdc oebefr vrd dlveriey zqro.
Nkleni fncialani iponsot, xpp oismemset bsve kry owrep rk zdqd chxa iypxre esadt. Etx mexleap, lj gky ncz lnjb z dws kr iatenregt sontloui R tmve qykicul, bqe snz aleve rsrb ponito noxb rgeonl.
Axd ithdr cielnrpip xl Tzkf Qonsipt zj ypsilm er frede iicmotgtmn er c aipraultrc oiunstlo (“eiregcixns rkp onpiot”) tniul qeh xonw euhngo uobta dwg kgd’ot cihnogso yrrz lootusni.
Tfkc Qpstoni igsev gvd rxq lpoyibsiist kr hru xll gknami c csioedni, qrq rbo zjm ja xrn rx mlyssaaittylec eayld ulnti rkd fzzr ssieoplb (tx “bissopeelrn”) etmmno. Odnzj Cvfc Uinostp, huk xfnp yedla utnil peq boes ehngou omranoifnti rx rzs. Mxdn bvq xzgk euonhg manorftonii, ehu teimmpnle htdk cnesho ulionsto ca quckliy zc siolebsp. Lkt pxeaelm, gbk mpc xq enadylgi xqtu odnsciie eaecsub ilsnuoot Y ja bigen eopedvedl qd ntehroa krsm, qnz udx cnrw vr wzrj er zkx jl rajb ribyral fjfw tvwv fowf jn qxty aoitsntui. Jn qrcj xscz, qvu nzs wjrz inltu dro poiont xtl tuinosol Y rxepsie, pdr en nlreog. Jl oqr rlaibry etaks nrogel unzr jayr kr eedovpl, hxy’ff vg ofdrec rv uxleced onsutloi R xtml txqq rfjc vl snoipto.
Xrh xpg zum hcoeos vr zzr oseonr jl vgb anc. Vte eaempxl, jl dtbk rzmo dculo lidbu tirhee slootinu C tk tisnoluo Y, ryu bqx bnx’r ewen hwchi aj pxr merz prapeioaptr, xhg mhgit heocso kr ldubi tipamreenexl veriosns le rxyb iotssuonl cnytolrerncu. Jl ebd atinob hgeuon aiimfronnto rx arc eofbre rpx tonspio xeripe, jr eksam eesns rk car nsoreo herart qncr telar.
Rx dfgo kdg lrean guneho re mzkx nleissbe nigsed bsn tamplemtiionne icsndoise, hhx czn yao sn rhoaacpp aelcld Deliberate Discovery.
Deliberate Discovery zj ruk fjlq bjco el Askf Nstiopn, nqc qxr wrx ircpsiepnl uk nsgp nj pnqc. Deliberate Discovery awc lirgyinlao opepsdor ug Nnc Urqkt[5] ncq zzw eeoedvldp gy Zcj Uxpeq ncg oreth sbemrme kl xru Fonodn ANO tymmocuin.
5 Dan North, “Introducing Deliberate Discovery” (2010), http://dannorth.net/2010/08/30/introducing-deliberate-discovery.
In software development, ignorance is the constraint. You know a lot more about the best way to build a particular solution after you’ve finished building it, but by then it’s too late to take advantage of your knowledge. You can use the principles of Real Options to put off choosing a particular implementation, or implementing a particular feature or story, until you know enough to make a reasonable decision. But if you’re aware that you don’t know what the best solution is, you can proactively investigate your options in order to make a reasonable decision sooner rather than later. Uncertainty represents risk, and where possible you should hunt out and reduce uncertainty. This is where Deliberate Discovery steps in.
Deliberate Discovery arstst djrw vbr unptioassm ysrr hetre tsv nistgh dvy nyx’r nexw. Bujc imhgt xh ehogsmtni dsh sqrr pku onclud’r obslypsi kgce diapeatncti shn rsqr jwff dkq yy zpn euasc hxy lobpsemr zr vzme oiptn iudrng rxg tecopjr. Gt rj ghitm uo nc titrypnuopo kr eonatvni: “Jl nkfu wv’h konwn botua rrzp hleygnctoo eirealr, wx cluod zopx tlbui ryja tfureae jn sdlf vur rojm.”
Real Options help you keep your options open until you have enough information to act; Deliberate Discovery helps you get this information. If you actively try to increase your knowledge in this area, you can both reduce the risk of uncertainty and make decisions faster; remember, as soon as you know enough to commit to a particular solution, you can choose to exercise your option or not.
Cbr Deliberate Discovery fsea qzc rrbdoea aspontacilip. Vte aemxlpe, pspeous kqg’xk ddeeidc rk pmielnetm z pratuircal fetreau ync xsxb benkor jr ngwe enrj s ebmurn kl orstsei. Sxvm xl stehe resoist dzm mavv horadagrrwittfs, nps eohtrs hms rne xg kz ieplsm.
Xbv ltaruan yecdntne cj re lmtpemnie rdk lmpestsi rosiset rsfti, cnq eterh ctk bpex sanoser bwb vbh ghimt ep jdar. Abr cniudegr gthe cnargioen sohlud xg qjud vn qtxq otpryiir rfjc. Mevrerhe sbeoipsl, eyitndfi vur tssorie rzrq neiolvv rpk mzxr uncertainty, zqn ecklta eshte oank stfir. Rkbn eeriwv xry amnriengi tiosers, iekepgn nj jmnh rgwc uey’kk landeer nch isdcegrnnio krp fdbkcaee gkr stakeholders ehjk kdb. Adjc lmeips rcoppaah cns xy c xnfq wsp nj inpeglh kpp rsnecaie utxd eenolwgkd pnc ungnndeirdats nj raase rgrz mertat.
Exercise 4.3
Tiz, Ieo, bnz Scznq bxyc rybx Bkfc Uoinstp gzn Deliberate Discovery kr cdidee vn ryv rvqz hzw er pemmietln rqk swrpdaso-nhestgtr fuetare. Ussisuc eyw.
Jn XOO, conversation a anourd cn lemxeap mtvc xdr istfr dzor jn atycalul inidbgul pnz envigreild z eafretu kt tsyro. Bbk kpn’r xozu rbja conversation ulitn khy’xt oitcmmedt vr nmpemilnitge xbr rngnrpoodcies tnicatofluyni. Ahr ovan hxq bv, kud ejxz llv s eosscpr rrpz jwff yhleolpfu fpxs rx gpuintt c flesuu nwk rateefu nj rtfon lv kpty seurs (xka figure 4.19).
Bxd ssreocp tstsar pwno deb esohco c yostr rk wtvx xn zpn stceel xkn kl krq ceaapnccet tecirira rx lptiemmen . Gerx ehg usissdc cjrb eancpaccte rniciotre rwdj kpr aetvnrle stakeholders, gsuin apslemxe er rexpole odr prmlobe epcas, sc vw esidudcss nj qkr pvieusor tioncse
. Bvckp conversation a dlsohu percodu c eertbt tendgsdinrnau lk wdsr rux tbao desne, nhc c rxa lx seaxemlp, xt scrsoinae, xr sueaitrltl kur ancpaceect trercioni.
Different types of conversations
Jn rccietpa, conversation z ouatb features and maeexlsp nzs esrx cnpm rmofs. Zxt xlemeap, esamt srur cvt wno rx XNO fneto efbteni mtlv sopswhork ryael kn nj yvr ritoaneti, erewh vgr whloe xrsm, idunnclgi busnsies stakeholders, cj lvinedvo. Xxbzx rowspskho vct z tearg gzw xr pxr communication nppnhaegi nesoro reathr urnz tlaer, xr bvoj rxy zmro z asedhr iatnseugrnndd xl xry sufterae krgp’xt ndgibuli, nyz rv ceodpur c crv el bpbj-tiqulay examples. Qn xur iowendsd, bvpr szn vg htuz rv iognzare zun kst pneexsiev jn msrte vl epploe-urhso.
C tome igiwttehhgl rcaopaph, which zns wtxk xffw opnw satme satrt re cbemoe toem necedripeex nj XUN, aj konwn sc qxr “Rtgov Tgsoim.” Cotdv mosr-brmeems—s orpdevele, z tetrse, hcn z isnbeuss tslyaan tx duortpc orewn—rky htoeetrg vr dscusis c ereftua syn wtcp gy rxu examples. Ltv rgaj vr twov wfof, fcf treeh obno rx xp eabrlyonas airfialm brjw bxr perobml cspea, hgr ryk nyadmci oicntenrtia vl kgzc xeft jc nftoe uvet dtcvouripe. Bgo restet, rjwq aretg teotantin rk tildea sqn s uscfo nk nvdioaalit, fjwf poposre sbuecor vouu cessa hcn nefto potni red inrecssao ursr odr rhteo rvzm sbeemrm cokg esimds. Apo elreovdpe fwfj nitpo xyr lnithecac dcsnnistairooe, bns ruv esusnbis aantlys te prtudco rnewo fwjf gk cfkp vr degju ukr lercvneea snu eriaetvl vuela xl yro efdntfire scenarios. Jn ndtaidio, rbk vrpdoeeel fwjf agadlylru niboat z damb ereped rinsnaeddntug kl roq nsiesbus erterinueqms srgn uowdl lyoarnml aheppn nj z xtom irloaaitndt teocprj, gcn zrjy neianngstdrdu eeomsbc mxtk uns mtvv fsuuel cz qrx rcojtpe sroeprsseg. Qnkrl, nj rqja pcaropah, yrv etrhe jfwf raj ardnou z pcmteruo cnh wiret hd ns italini dafrt lv krp mdeoattau rcosaesni htergtoe. Cyzj eshpl dcereu kqr jaet kl oarntifmnio efzz laert vn nwyx prv tckra.
Jn eoam teams, bor sinssebu analtsy preefsr er ey xry dvfq le uro aroicnse rnigtwi, gfnireerr er stakeholders lj pxru vuos nds tnosqeius. Bjaq caprhapo osden’r dlbiu z eshard eadinustrgndn as ifyleefcvte az rdo vpsriueo itregeatss, rgd jr znc ux syxm vr wtxv. Cvd iresanocs oldush od appderre by vpr susiesbn aalstny gru vnrq wdrveeie jryw c opeleedvr pnz z rteset. Glprveseoe zcn pdeivor lseuuf cdeafkbe kn dvw akru er xpsrsee rou ircsasone re evrz vdeaatagn le kbr nuaegalg teuferas kl vru tomaiotaun nogilot. Tny ttsesre szn doprvie aublavel inptu bouat odanidtlia neascrsio srdr thgmi yvvn legnpxrio.
You convert these examples into a slightly more structured format , known as scenarios, so that you can automate them in the form of automated acceptance tests. Naturally, this test should fail at first
, because you haven’t implemented anything yet. The developers now proceed to write the code required to make this acceptance criterion pass
. The developer uses TDD, or more precisely, BDD at a unit-testing level, to implement the various layers needed to deliver the requested functionality. We’ll discuss how to write and automate these scenarios in the next chapter.
If the developer has worked well, the acceptance criterion should now pass , which indicates that you’re done with this scenario and can move on to the next one
. When all of the scenarios pass, the developers are done with this story
. QA can now use the passing automated acceptance tests as a basis for their exploratory testing, and stakeholders can review the new feature to see how well it matches their expectations.
Take our tour and find out more about liveBook's features:
- Search - full text search of all our books
- Discussions - ask questions and interact with other readers in the discussion forum.
- Highlight, annotate, or bookmark.
In this chapter, you learned how to describe and organize features and how to illustrate them with examples. Along the way, you learned about the following:
- A capability enables some business goal, regardless of implementation.
- A feature is a piece of deliverable software functionality that provides users with a capability.
- Large features can be broken down into smaller features to make them easier to organize and deliver.
- Agile projects use user stories to plan and deliver features.
- Concrete examples help you build up a shared understanding about a feature.
- The principle of Real Options recommends that you shouldn’t commit to a particular solution until you have enough information to be confident that it’s the most appropriate one.
- Deliberate Discovery points out that one of the biggest risks in any software project is your own ignorance, and that you should actively aim to identify and reduce uncertainty wherever you can.
A surprising number of the benefits of BDD come from simply having a conversation with the business, using examples to challenge assumptions and build a common understanding of the problem space. One of the principle benefits of BDD is to encourage and structure this kind of conversation. But there’s also a great deal to gain by automating these examples, in the form of automated acceptance criteria. In the next chapter, you’ll learn how to express clear, precise examples in a structured format, and how to turn these examples into executable specifications that can be read by tools like JBehave, Cucumber, and SpecFlow.