Specification by Example (SbE) on koostööl põhinev lähenemine tarkvaranõuete ja äriliste testide määratlemiseks. Selle asemel, et kirjutada abstraktseid spetsifikatsioone, kasutatakse konkreetseid näiteid, et luua ühine arusaam arendajate, testijate ja äripoole vahel.
SbE protsess ei ole rangelt lineaarne, vaid pigem tsükliline. Gojko Adzici järgi on peamised sammud:
SbE on pigem metoodika või praktika kui täiemahuline arendusmudel (nagu Waterfall või Scrum), kuid see integreerub tihedalt Agile protsessidega. See on osa laiemast perekonnast:
Kuna SbE on tsükliline protsess, võib seda visualiseerida järgmise ahelana, mis kordub iga uue funktsionaalsusega:
Joonise keskne idee on see, et spetsifikatsioon ja test on üks ja seesama asi.
Miks? Traditsioonilises arenduses vananeb paberil (või Wikis) olev dokumentatsioon kohe, kui kood muutub. SbE puhul on dokumentatsiooniks automatiseeritud testid. Kui kood muutub ja testid enam ei läbi, siis "dokumentatsioon" karjub punaselt. See tagab, et dokumentatsioon on alati tõene ja sünkroonis tegeliku süsteemiga (Single Source of Truth).
| Omadus | Plussid (Head) | Miinused (Vead) |
|---|---|---|
| Kommunikatsioon | Vähendab drastiliselt arusaamatusi äri ja IT vahel. Kõik räägivad "sama keelt". | Nõuab suurt kultuurilist muutust ja aktiivset osalust äripoolelt (mis võib olla raske). |
| Kvaliteet | Vähem vigu (bugisid), kuna nõuded on algusest peale selged ja testitud. | Esialgne ajakulu on suurem, kuna analüüs on põhjalikum enne koodi kirjutamist. |
| Hooldatavus | Tekib "Elav dokumentatsioon", mis on alati ajakohane. | Testide (näidete) haldamine võib muutuda koormavaks, kui neid on tuhandeid ja neid ei refaktoreerita. |
| Selgus | Konkreetsed näited välistavad mitmeti mõistetavuse (nt "kiire" vs "vastab 200ms"). | Liiga keeruliste ärireeglite puhul võib näidete arv muutuda liiga suureks ja raskesti loetavaks. |
Alljärgnevalt lingid usaldusväärsetesse allikatesse, kust info pärineb:
Wikipedia - SbE Martin Fowler - SbE