Requirements in gestructureerde natuurlijke taal stroomlijnen ontwikkeling

Reading time: 4 minutes

Author:

Martin Keesen werkt als consultant technische software bij Logica.

Door producteisen gestructureerd vast te leggen in natuurlijke taal, ontstaat een eenduidige basis voor zowel marketing en R&D als de klant. Martin Keesen deelt zijn ervaringen met de Urequire-tool.

Productontwikkeling is soms net bellen blazen: de bel die de behoeftes van de klant omvat, proberen we te laten overlappen door de bel die de requirements beschrijft. En dan maar hopen dat de uiteindelijke productbel enigszins hierboven zweeft. De ervaring leert echter dat slechts een deel van het product zowel de klantwens als de opgestelde requirements afdekt.

Er zijn verschillende tactieken om met deze situatie om te gaan. Een daarvan is om als ontwikkelaar er alles aan te doen om de requirements zo nauwgezet mogelijk te implementeren. Daarbij is de vooronderstelling dat de marketingafdeling de wensen van de klant perfect aanvoelt en deze keurig vastlegt in bijvoorbeeld een customer requirements specification.

Met ASD van Verum zijn in ieder geval de bellen van de requirements en het eindproduct vrijwel naadloos op elkaar te laten vallen. Het te volgen proces is daarbij: de requirements in zogeheten Sequence-Based Specifications vastleggen, deze set van SBS‘en (formeel) verifiëren en er vervolgens code uit genereren. Deze methode werkt goed voor het implementeren van bijvoorbeeld het stategedrag van machinebesturingen. Door daarnaast Matlab te gebruiken voor het rekenkundige deel is een technisch softwaresysteem volledig af te dekken.

Zodra we de requirements volgens deze standaard gestructureerd hebben ingevoerd, wordt de tekst door Urequire geanalyseerd en voorzien van kleurcodes: namen en termen worden groen en onderstreept (unieke namen dubbel), feittypen blauw en grammaticale woorden rood. Wat zwart blijft, moeten we in principe verder uitwerken. Zo koppelt de tool direct terug welke elementen van een requirement nog onvoldoende bekend zijn. We kunnen stoppen als we beland zijn bij triviale begrippen, zoals ’customer‘ en ’name‘ in Tabel 1.

Deze werkwijze leert om de juiste vragen te stellen, met als einddoel het wegnemen van alle onduidelijkheden in het wensenplaatje van de klant. Deze hoeft zich daarbij niet in allerlei bochten te wringen; de voertaal blijft Nederlands of Engels. Dat dit de kwaliteit van het eindproduct verhoogt en tegelijkertijd de projectrisico‘s verlaagt, moge duidelijk zijn. Hiermee wordt het echt haalbaar om alle bellen netjes over elkaar te laten vallen.

Punt blijft wat we nu precies in de SBS moeten vastleggen. Wat moet het eindproduct doen om de klant gelukkig te maken? Dit is wederom een kwestie van bellen blazen tussen marketing en ontwikkeling. Het is dus zaak om een brug te slaan tussen deze twee afdelingen.

Bekijken we de talen die we gebruiken bij de verschillende bellen, dan valt op dat de striktheid toeneemt richting eindproduct. De klant beschrijft zijn wensen breedsprakig in gewone, natuurlijke taal, met dubbele interpretaties en allerlei andere problemen als gevolg voor R&D. De requirementsengineer en de architect leggen de productarchitectuur vast met het al veel meer gestandaardiseerde UML. De software-engineer gebruikt uiteindelijk een strikt gedefinieerde programmeertaal om de processor duidelijk te maken wat die precies moet doen.

Doel Voorbeeld
Introductie van een naam ASML is the name of the leading litography systems provider
Introductie van een term

There is a wafer inspection system

There are wafers

Verbanden leggen

Wafer fab instructs wafer inspection system

A track is a conveyor belt that transports wafers

Synoniem Foup is short for Front Opening Universal Pod
Beschrijving van een regel

If the wafer is rejected, the stage must be moved to the Foup

When the Foup is full the Foup loadport must hold the wafer until the Foup has been emptied

Naadloos inpassen

Met Urequire Studio van het Nederlandse bedrijf Usoft is het mogelijk de requirements in natuurlijke taal te beschrijven. De tool controleert de naar keuze Nederlandse of Engelstalige zinnen op correctheid, compleetheid en consistentie. Urequire is te zien als een soort static analyser voor teksten geschreven in natuurlijke taal. Net als bij een static analyser voor bijvoorbeeld C moet de input wel een taalstandaard volgen. Urequire gebruikt hiervoor de open standaard SBVR (Semantics for Business Vocabulary and Rules), dat verschillende constructies definieert om een tekst in natuurlijke taal te ’ontleden‘ (zie Tabel 1).

Zodra we de requirements volgens deze standaard gestructureerd hebben ingevoerd, wordt de tekst door Urequire geanalyseerd en voorzien van kleurcodes: namen en termen worden groen en onderstreept (unieke namen dubbel), feittypen blauw en grammaticale woorden rood. Wat zwart blijft, moeten we in principe verder uitwerken. Zo koppelt de tool direct terug welke elementen van een requirement nog onvoldoende bekend zijn. We kunnen stoppen als we beland zijn bij triviale begrippen, zoals ’customer‘ en ’name‘ in Tabel 1.

Deze werkwijze leert om de juiste vragen te stellen, met als einddoel het wegnemen van alle onduidelijkheden in het wensenplaatje van de klant. Deze hoeft zich daarbij niet in allerlei bochten te wringen; de voertaal blijft Nederlands of Engels. Dat dit de kwaliteit van het eindproduct verhoogt en tegelijkertijd de projectrisico‘s verlaagt, moge duidelijk zijn. Hiermee wordt het echt haalbaar om alle bellen netjes over elkaar te laten vallen.

Urequire is opgezet als een webgebaseerd product. Usoft levert het als Saas (Software as a Service). Het is een onderdeel van een pakket dat van oorsprong is gericht op de specificatie en realisatie van administratieve software. Door de vele import- en exportfaciliteiten is Urequire echter naadloos in te passen in de toolketens die we gebruiken in de technische-softwareontwikkeling. Er zijn bijvoorbeeld al integraties met Jira, Subversion en Version One. Andere koppelingen maakt de leverancier op verzoek, maar dankzij de uitgebreide ondersteuning van XML kunnen we de tool ook gemakkelijk zelf in de eigen workflow hangen.