Een onderwerp wat vaak terugkomt bij discussies over bedrijfsregels management, decision management maar ook smart contract management is verificatie. Ook is het een onderwerp waar vaak discussie over ontstaat. Vragen die hierbij aan de orde komen zijn: “Wat is verificatie?”, “Is er een checklist om verificatie uit te voeren?” en “Wat zijn punten waarop beslissingen, bedrijfsregels en smart contracts geverifieerd dienen te worden?”
Om deze laatste vraag te beantwoorden brengen wij een zesdelige serie (dit is deel 1) over verificatietoetsen voor decision requirements diagramen, bedrijfsregels en feittype uit (de onderdelen waar ook een smart contract uit bestaat). In deze reeks miniartikelen worden de verschillende typen verificatietoetsen omschreven. Elke omschrijving bestaat uit de daadwerkelijk toets waarmee een verificatiefout wordt gecontroleerd en één of meerdere voorbeelden. De voorbeelden zijn gebaseerd op een casus uit de medische wereld met betrekking tot het bepalen van het ondervoedingsrisico voor een patient, zie figuur 0.
Figuur 0. Bepaal risico op ondervoeding – lopend voorbeeld om de toetsen te illustreren
In de totaal zes artikelen worden er 24 verificatietoetsen behandeld. Deze 24 verificatie toetsen zijn:
- conclusie-toets;
- conditie-toets;
- ongebruikte beslissings-toets;
- ontbrekende bedrijfslogica-toets;
- niet-gekoppelde feitwaarde-toets;
- circulariteit-toets;
- transitieve afhankelijkheid-toets;
- conflicterende conclusie-toets.
- identieke bedrijfsregel-toets;
- equivalente bedrijfsregel-toets;
- ondergeschikte bedrijfsregel-toets;
- overbodige conditiefeit-toets;
- overlappende feitwaarde-toets;
- feitwaarde gebaseerde bedrijfsregel reductie-toets;
- feitwaardevrije label-toets;
- ongebruikte feittype-toets;
- feitwaarde notatie overschrijdings-toets;
- incomplete feitwaarde-toets;
- lexicale-toets;
- definitie-toets;
- conformiteit met standaard-toets;
- declarativiteit-toets;
- omissie-toets;
- atomaire-toets.
In dit artikel worden de volgende verificatie-toetsen behandeld:
- conclusie-toets;
- conditie-toets;
- ongebruikte beslissings-toets;
- ontbrekende bedrijfslogica-toets.
Verificatietoets #1: Conclusie-toets
De conclusie-toets controleert of een conclusie-feit van een individuele beslissing wordt gebruikt als conditiefeit in één of meerdere andere beslissingen in een decision requirements diagram (DRD), zie figuur 1.
Figuur 1. Situatie waar een ontbrekende conclusie is geidentificeerd
Een negatief resultaat op deze toets kan in een DRD één keer voorkomen, namelijk bij de ‘top-level’ beslissing, de zogenaamde beslisservice. In het voorbeeld, in figuur 1, is beslissing A de beslisservice. Dit betekent dat de conclusie van beslissing A niet verder hoeft te verwijzen naar een andere beslissing. Wanneer dezelfde situatie nogmaals voorkomt wijst dit op een fout in de DRD. Om een dergelijke fout te illustreren kijken we naar de beslissingen: “E: Beoordeel Body Mass Index” en“F: Beoordeel Body Mass Index”, zie figuur 1 en 2.
Figuur 2. Situatie waarin de ontbrekende conclusie is toegevoegd
Het conditiefeit “BMI” van de beslissing“Beoordeel Body Mass Index” dient te worden aangeleverd door een onderliggende beslissing. In dit geval de beslissing ”Bereken Body Mass Index”. De beslissing ”Bereken Body Mass Index” concludeert alleen niet “BMI” maar “Body Mass Index”. Daarmee ontstaat er een fout en hangt de beslissing “bereken body mass index” ‘los’, zie figuur 1. Om dit op te lossen dient het conclusie feittype in de beslissing “Body Mass Index” aangepast te worden, zie figuur 3. Nu matchen het conclusie feittype en conditie feittype van “Bereken Body Mass Index” en “Beoordeel Body Mass Index”. In dit specifieke voorbeeld werd het probleem opgelost door het veranderen van de naam van het feittype. In andere situaties kan het ook voorkomen dat een feittype wel wordt gebruikt om tot een conclusiefeit te komen maar niet wordt afgeleid in een onderliggende beslissing.
Figuur 3. Situatie waarin een ontbrekende conclusie is geidentificeerd
Verificatietoets #2: Conditie-toets
De conditie-toets is een omgedraaide conclusie-toets. De conditie-toets controleert of een conditiefeit een grondfeit of een afgeleid feit is, zie Figuur 4. Als het conditie-feit een afgeleid feit is dan controleert de toets of het conditiefeit voorkomt als een conclusiefeit in een andere beslissing.
Figuur 4. Situatie waarin een ontbrekende conditie is geidentificeerd
Het verschil tussen de conclusie-toets en conditie-toets is dat de conditie-toets topdown plaatsvindt terwijl de conclusie-toets bottom-up plaatsvindt. Hierbij heeft de conditie-toets een meerwaarde ten opzichte van een conclusietoets, indien je weet dat het conditiefeit niet een grondfeit is. Als het conditiefeit nog niet is uitgewerkt als conclusiefeit, dan wordt de fout door de conclusietoets niet gevonden.
Figuur 5. Situatie waarin de ontbrekende conditie is toegevoegd
Figuur 6. Situatie waarin de ontbrekende conditie is geidentificeerd
Verificatietoets #3: Ongebruikte beslissings-toets
De ongebruikte beslissings-toets controleert of het conclusiefeit van de onderliggende beslissing daadwerkelijk wordt gebruikt als conditiefeit in de bovenliggende beslissing, zie Figuur 7.
Figuur 7. Situatie waarin een ongebruikte input is geidentificeerd
Waar de conclusie-toets en de conditie-toets controleren of er conditie(s) en/of conclusies ontbreken, controleert de ongebruikte input-toets of er overbodige beslissingen zijn toegevoegd aan de DRD, zie figuur 7 en 8.
Figuur 8. Situatie waarin ongebruikte input is gedetecteerd
De beslissing “C: Beoordeel Gewichtsverloop” heeft twee verbonden beslissingen: “I: Beoordeel Gewichtspatroon” en “D: Bereken Gewichtsverlies”. Alleen het conclusiefeit van de laatstgenoemde beslissing wordt daadwerkelijk toegepast, zie figuur 8. Het conclusiefeit van de beslissing “I: Beoordeel Gewichtspatroon” is daarmee een overbodige beslissing en dient verwijderd te worden, zie figuur 9.
Figuur 9. Situatie waarin de ongebruikte input is verwijderd
Verificatietoets #4: ontbrekende bedrijfslogica-toets
De ontbrekende bedrijfslogica-toets controleert of de benodigde bedrijfslogica aanwezig is in de onderliggende beslissing(en).
Bij deze toets wordt er niet gekeken of de bedrijfslogica correct is, maar of de logica uberhaupt aanwezig is, zie figuur 10 en 11. In figuur 10 worden de beslissingen: “C – Beoordeel gewichtsverlies” en “D – Bereken gewichtsverlies” weergeven. In de huidige situatie is er geen bedrijfslogica gespecificeerd voor beslissing D.
Figuur 10 – Situatie waarin de bedrijfslogica ontbreekt
Om het probleem op te lossen dient bij beslissing bedrijfslogica te worden aangemaakt zoals weergegeven bij beslissing “I – Bereken gewichtsverlies”, zie figuur 11.
Figuur 11 – Situatie waarin de bedrijfslogica aanwezig is
Dit was deel 1, in deel 2 van Decision Management – Verificatie Toetsen worden de volgende toetsen behandeld: ontbrekende bedrijfslogica-toets, niet-gekoppelde feitwaarde-toets, circulariteit-toets en de transitieve afhankelijkheid-toets.
Auteurs:
Mocht u al vragen of interesse hebben, neem dan contact op via: info@martijnzoet.com of bekijk de cursus: “Verificatie van beslissingen en bedrijfsregels”, waarin elk van deze onderdelen wordt behandeld: