← Back to CoursesStemExpert
StemExpert
Expert · Handboek · 45. Systems engineering en het V-model
StemExpert · Brecht Corbeel · schoolium.me
StemExpert
E45. Systems engineering en het V-model
EExpert · deel E10 · Systems engineering

Handboek · hoofdstuk 45Systems engineering en het V-model

Eisen, architectuur en bewijs vormen samen één beheerde systeemversie

Het brein van Habitat verbindt warmte, energie, metingen en operator. Een goede component is nog geen goed geheel. Je maakt eisen meetbaar, verdeelt verantwoordelijkheden en ontwerpt het bewijs waarmee een systeemversie wordt aanvaard.

9× uitleg5× uitgewerkt voorbeeld1× naslag1× verhaal1× het geheel2× code9 opdrachten in het werkboek± 12 lestijden
Het systeemdoel verbindt eisen, verantwoordelijkheden en proefbewijs.
Het systeemdoel verbindt eisen, verantwoordelijkheden en proefbewijs.
Na dit hoofdstuk
Uitleg · 45.1

Van behoefte naar afgebakend systeem

1/19

Een gebruiker wil een bewoonbaar station met bruikbare plantproductie en weinig operatorwerk. Dat is nog geen eis voor één computer. Kies de systeemgrens: het stationsbrein omvat centrale planning en logging, gekoppeld aan lokale regelaars. De 12 V-module en het 48 V-stationsnet houden eigen actuatoren en energiebalansen.

Leg stakeholders, gebruiksomstandigheden en succescriteria vast. Een operator wil herstelbare storingen; een onderhoudsmedewerker wil versieherkomst; een gebruiker wil het bedoelde comfort. Een architectuur is een antwoord op die behoeften. Begin daarom niet met ‘koop een Pi’ als onbesproken oplossing. Maak aannamen zichtbaar en onderzoek wat bij een grenswijziging mee moet veranderen.

H0: bruikbaar stationsbreindoel, grens en bewijsF: dienstplannen, meten, loggenN: kwaliteittijd, bereik, herstelI: interfaceseigenaar, protocol, versieIeder blad-eis-ID krijgt ontwerpbesluit, toets-ID en status.
De boom is een voorbeeldstructuur. Een gerealiseerde eis kan meerdere ontwerpmodules en meerdere bewijsstukken nodig hebben.
Uitleg · 45.2

Een eis bevat gedrag, grens en toets

2/19

Een goede eis noemt onderwerp, meetbare prestatie, omstandigheden en acceptatiegrens. ‘Snel en betrouwbaar’ is niet toetsbaar. ‘De centrale logger markeert een telemetriemeting ouder dan 90 s als verouderd, gemeten aan het opgegeven meettijdstip’ heeft wel een concrete betekenis. Leeftijd en klokfout moeten daarbij afzonderlijk worden beheerd.

Houd iedere eis atomair genoeg om één status te kunnen geven. Vermijd een zin die zowel klimaatkwaliteit, energiebesparing als onderhoud regelt. Geef een uniek ID, bron, rationale, eigenaar en toetsmethode. Een gekozen grens is eerst een ontwerp- of proefcriterium; een groen vinkje vraagt daadwerkelijk bewijs op de bedoelde versie.

eisveldvoorbeeld
IDRN-01
gedragmarkeert verouderde telemetrie
grensleeftijd >90 s
conditiemeetklok geldig en herkomst bekend
bewijsgrensgevallen en klokfoutinjectie
Een getal maakt een eis niet vanzelf goed

Een reactietijd zonder startgebeurtenis, belasting en meetmethode blijft dubbelzinnig.

Uitgewerkt voorbeeld · 45.3

Een vage klimaatwens herschrijven

3/19
Wens: ‘Het brein houdt de temperatuur altijd goed en gebruikt weinig stroom.’
Gegeven
  • gebruiksscenario en lokale regeling bestaan
Gevraagd
  • scheid toetsbare eisen en aannamen
Oplossing
  1. 1
    Maak comfort een systeemdoel met temperatuurband, buitengebied, bezetting en meetplaats. Zonder dat domein kan ‘altijd’ niet worden beoordeeld.
  2. 2
    Maak energiebeheer een aparte eis met basislijn en vergelijkbaar proefweer. Maak een interface-eis die vastlegt dat centrale voorstellen door de lokale eigenaar worden begrensd.
  3. 3
    Voorbeeldcriterium RN-02: bij wegvallen van de centrale verbinding blijft de lokale klimaatlus gedurende een afgesproken proefduur uitvoeren, met gemelde gedegradeerde status. Tijdduur en prestatieband worden vooraf gekozen en daarna getoetst.
Antwoord
De wens wordt een set samenhangende eisen; de voorbeelden zijn nog geen behaalde stationseisen.
Uitleg · 45.4

Functioneel en niet-functioneel beïnvloeden elkaar

4/19

Een functionele eis vraagt wat gebeurt: plannen, loggen, alarmeren of een voorstel weigeren. Een niet-functionele eis beschrijft kwaliteit of beperking: tijd, nauwkeurigheid, beschikbaarheid, onderhoud, energie of beveiliging. Beide sturen architectuur. Een logfunctie met onbeperkte blokkerende schrijftijd kan een regelfunctie onbruikbaar maken.

Beschrijf eisen in waarneembare termen. Een percentile-eis voor rekentijd vraagt hardware, bestandsgrootte, belasting, meetduur en uitgesloten onderhoudsfasen. Een deterministische deadline vraagt een andere analyse dan een gemiddeld snelle uitvoering. Beveiligings- en privacyvoorwaarden kunnen harde selectiepoorten zijn.

voorbeeld-IDsoorttoets
RF-01: lever energieplanfunctioneelplanstructuur/horizon
RF-02: grens vermogenvoorstelfunctioneel/interfaceonder-, boven- en niet-eindige waarden
RN-03: voorstel maximaal 60 s geldigtijdkwaliteitvervalgrens en toekomstige tijd
RN-04: reproduceer versiebeheerkwaliteitmanifest terugbouwen
Uitleg · 45.5

Traceerbaarheid is tweerichtingsverkeer

5/19

Van iedere behoefte ga je naar systeem- en deeleisen, ontwerpbesluiten en bewijsstukken. Omgekeerd moet een implementatiedetail terug te voeren zijn op een behoefte of gemotiveerde technische keuze. Zo herken je een ontbrekende toets én een onnodige functie.

Een teststatus hoort bij versie, configuratie, testmethode en resultaat. ‘Getest’ zonder identiteit kan een oude interface betreffen. Eén eis kan analyse, inspectie en proef tegelijk nodig hebben. Een unit-test voor een berichtvalidator bewijst geen netwerkbeschikbaarheid of thermische prestatie van het volledige station.

behoefteeisontwerpbewijs
herstelbaar beheerRF-03 replay weigerenboot/ID en vervalT-03 + herstartproef
actuator begrensdRF-02lokale eigenaarT-02 + hardwaretest
bruikbaar klimaatH-CLIMmodel/lus/sensordag-nachtvalidatie
reproduceerbaarheidRN-04manifest en hashesrebuild/restore
Uitgewerkt voorbeeld · 45.6

Een trace die haar grens toont

6/19
RF-02 begrenst het stationsheater-voorstel tot 0–2000 W.
Gegeven
  • e39 vereenvoudigde stationsheater als contractvoorbeeld
Gevraagd
  • bewijs en ontbrekend bewijs
Oplossing
  1. 1
    Een unittest toetst −1,0,2000,2001 W en NaN. Daarmee is het softwarebereik aangetoond voor die validatorversie.
  2. 2
    Een integratietest controleert dat een afgekeurd voorstel niet via een tweede route de lokale eigenaar bereikt. Een hardwareproef controleert de daadwerkelijke vermogensbegrenzing en storingreactie.
  3. 3
    Een SSR die kortgesloten blijft is geen invoerbereikfout. Daarvoor is een afzonderlijk technisch beveiligingsontwerp en bewijs nodig. De 2000 W betreft het e39-voorbeeld, niet de 800 W-moduleconvector.
Antwoord
Traceerbaarheid maakt zichtbaar wat de unittest wel en nog niet bewijst.
Uitleg · 45.7

Architectuur verdeelt eigenaarschap

7/19

De centrale Pi plant en logt; lokale controllers voeren hun eigen snelle regel- en beveiligingsfuncties uit. Energievoorstellen gaan door een expliciete supervisorinterface. De bestaande Mega van de module, luchtknoop en energiecontrollers behouden hun bussen, adressen en pin-eigenaars.

Kies functies, datastromen, grenzen en foutverantwoordelijkheid vóór de fysische bekabeling. Een gedeelde logger mag geen deadline van de lokale regeling opeisen. De twee energienetten wisselen informatie en eventueel expliciet beschreven energie uit; hun verbruiken en bronnen worden niet dubbel geteld. Koppel een storing aan de functie die haar detecteert, begrenst en aan de operator verklaart.

functieeigenaarcontract
snelle klimaatluslokale controllereigen sensor/actuator
dagplanningcentrale predictor/plannervoorstel met horizon
toestemmingsupervisor en lokale eigenaarrol, tijd, modus, bereik
loggingcentrale loggerkwaliteit/versie, niet blokkeren
beveiligingonafhankelijk ontworpen padeigen storingbewijs
Uitleg · 45.8

Interfaces zijn meer dan stekkers

8/19

Een interfacecontract bevat fysische signalen, elektrische niveaus en eenheden, maar ook timing, eigenaarschap, foutstatus en versies. Een MQTT-bericht met temperatuur moet vertellen welke toestand en meetplaats bedoeld zijn. Een leeg meetveld is geen nul graden.

Definieer commando-ID, bron, boot-ID, meettijd, vervaltijd, modus en bevestiging. Een ontvangen bevestiging kan ontvangst of uitvoering betekenen; leg het verschil vast. Bij herstart moet replaybeleid niet vergeten worden: de kleine lesvalidator bewaart alleen een set in RAM en toont dus nog geen volledige herstartbeveiliging. Een productiecontract vraagt boot/sequence, duurzame toestand of een aantoonbaar nieuwe sessie.

onderdeelvoorbeeld
datatemp_C, meettijd, kwaliteit
voorstelid, rol, modus, vermogen, TTL
antwoordaanvaard/geweigerd met reden
foutverlopen, bereik, onbekende versie
fysiekbus, adres, niveau en actor-eigenaar
Code · 45.9

Eisen in een echt contractprogramma

9/19

De vijf tests refereren aan eis-ID's en toetsen grensgevallen met een expliciete klok. De uitkomst is een voorstelstatus, geen pinactie. Tijd is relatieve monotone tijd; logs krijgen daarnaast UTC+1. Een echt geïntegreerde versie vraagt lokale uitvoering, herstartcontract en fouttests. De canonieke config en SHA-256 identificeren deze configuratie; zij bewijzen geen inhoudelijke juistheid.

Pythoneisen_contract.py47 regelsDownload
from dataclasses import dataclassimport math,unittest,json,hashlib,io@dataclass(frozen=True)class Voorstel:    id: str    tijd_s: float    modus: str    vermogen_W: float    ttl_s: float=60.class Supervisor:    # Contractvoorbeeld voor de e39-stationsheater, geen pinbesturing.    def __init__(self): self.gezien=set()    def beoordeel(self,p,nu,modus):        if not isinstance(p,Voorstel): return False,"schema"        if not isinstance(p.id,str) or not p.id: return False,"id"        if not all(not isinstance(v,bool) and isinstance(v,(int,float)) and math.isfinite(v)                   for v in (p.tijd_s,p.vermogen_W,p.ttl_s,nu)): return False,"niet-eindig"        if not 0<p.ttl_s<=60: return False,"ttl"        if not 0<=nu-p.tijd_s<=p.ttl_s: return False,"tijd"        if p.modus not in ("DAG","NACHT") or p.modus!=modus: return False,"modus"        if not 0<=p.vermogen_W<=2000: return False,"bereik"        if p.id in self.gezien: return False,"dubbel"        self.gezien.add(p.id)        return True,"voorstel-goedgekeurd"class Eisen(unittest.TestCase):    def test_RF02_grenzen(self):        for w,ok in [(-1,False),(0,True),(2000,True),(2001,False)]:            self.assertEqual(Supervisor().beoordeel(Voorstel("a",10,"DAG",w),10,"DAG")[0],ok)    def test_RN03_tijd(self):        for tijd,ok in [(9,False),(10,True),(70,True),(70.001,False)]:            self.assertEqual(Supervisor().beoordeel(Voorstel("a",10,"DAG",500),tijd,"DAG")[0],ok)    def test_RF03_replay(self):        s=Supervisor(); p=Voorstel("a",10,"DAG",500)        self.assertTrue(s.beoordeel(p,11,"DAG")[0])        self.assertEqual(s.beoordeel(p,12,"DAG"),(False,"dubbel"))    def test_RF04_modus(self):        self.assertEqual(Supervisor().beoordeel(Voorstel("a",10,"NACHT",500),11,"DAG"),(False,"modus"))    def test_RF02_niet_eindig(self):        for v in (float("nan"),float("inf")):            self.assertFalse(Supervisor().beoordeel(Voorstel("a",10,"DAG",v),11,"DAG")[0])res=unittest.TextTestRunner(stream=io.StringIO()).run(unittest.defaultTestLoader.loadTestsFromTestCase(Eisen))print("contracttests",res.testsRun,"fouten",len(res.errors)+len(res.failures))config={"telemetrie_s":60,"leeftijd_s":90,"voorstel_ttl_s":60,"eigenaar":"lokale-regelaar"}canon=json.dumps(config,sort_keys=True,separators=(",",":"))print("config",canon)print("configsha256",hashlib.sha256(canon.encode()).hexdigest())assert res.wasSuccessful()
contracttests 5 fouten 0
config {"eigenaar":"lokale-regelaar","leeftijd_s":90,"telemetrie_s":60,"voorstel_ttl_s":60}
configsha256 a1af993a3928302047806313be9d7061030b8f7358dfd8f0fb42a2f3b0756988
Uitleg · 45.10

Het V-model koppelt ontwerp aan bewijs

10/19

Links specificeer en ontwerp je van gebruikersdoel naar systeem, interfaces en componenten. Onderin realiseer je de onderdelen. Rechts toets je componenten, integreer je interfaces, verifieer je systeemeisen en valideer je het beoogde gebruik. De lijnen over de V verbinden de bronvraag met passend bewijs.

Een testontwerp begint bij het schrijven van de eis. Daardoor kunnen proefopstelling, meetbereik en instrumenten tijdig worden voorzien. Iteratie blijft mogelijk: een integratiefout kan de interface terug naar review sturen. Het model ordent bewijsniveaus en is geen verplicht lineair tijdschema.

Gebruikersdoelbeoogde dienstSysteemeisenmeetbaar contractArchitectuur/interfacesverantwoordelijkhedenImplementatiegeconfigureerde versieIntegratietestinterfaces en functiesSysteemverificatietegen eisenValidatietegen gebruiksdoelbedoeld gebruikeis ↔ bewijsinterface
Reviews en testontwerp beginnen links, niet pas na implementatie. Iteraties kunnen op ieder niveau teruggaan; de V is geen verbod op iteratief ontwikkelen.
Uitgewerkt voorbeeld · 45.11

Verificatie is niet hetzelfde als validatie

11/19
Een planner voldoet exact aan de gespecificeerde temperatuurband, maar de gekozen band past niet bij de onderzochte teelt.
Gegeven
  • de softwaretoets en sensorproef zijn geslaagd
Gevraagd
  • welke vraag blijft open?
Oplossing
  1. 1
    Verificatie kan geslaagd zijn: de gespecificeerde band is uitgevoerd. Validatie kan toch falen: de functie ondersteunt het echte teeltdoel onvoldoende.
  2. 2
    Ga terug naar behoefte en randvoorwaarden, niet alleen naar een softwarebug. Onderzoek teelt, meetplaats en het bedoelde dag/nachtregime met passende referentie.
  3. 3
    Een eiswijziging krijgt rationale, impactanalyse en nieuwe toetsen. Het oude groene resultaat geldt uitsluitend voor de oude eis/configuratie.
Antwoord
Een correct gebouwde functie kan nog de verkeerde functie voor het gebruik zijn.
Uitleg · 45.12

Een trade-off begint met harde voorwaarden

12/19

Vergelijk haalbare alternatieven op dezelfde functie en systeemgrens. Harde voorwaarden zoals lokale actuatorbeheersing worden eerst gecontroleerd. Een alternatief dat daar niet aan voldoet wordt geen winnaar door een goedkope prijs.

Gebruik daarna criteria met een gedocumenteerde schaal en gewichten. Scores zijn beoordelingen, geen nauwkeurige fysische kansen. Vermijd dubbeltellen van hetzelfde voordeel onder meerdere namen. Noteer bronnen, onzekerheid en gevoeligheid. Een robuuste keuze verandert niet bij iedere kleine aannamenwijziging.

alternatiefsterk puntbelangrijk onderzoek
A Pi + lokale MCUfuncties verdeeldinterfaces en terugval
B alleen Pieenvoudige centrale doosfaalt lokale eigenaarseis
C twee Pi + lokale MCUcentrale reservegemeenschappelijke oorzaak, extra beheer
Code · 45.13

Scores en gevoeligheid uitrekenen

13/19

De scores 0–5 zijn expliciete fictieve ontwerpbeoordelingen. B wordt door een harde eis uitgesloten. De gevoeligheidsproef verhoogt alleen het gewicht van betrouwbaarheid en houdt overige verhoudingen vast. Zij toont wanneer een andere prioriteit A en C gelijkwaardig maakt.

Pythonarchitectuur_tradeoff.py11 regelsDownload
import numpy as npcriteria=["betrouwbaarheid","onderhoud","kosten","energie","reactie"]w=np.array([.30,.25,.20,.15,.10])scores=np.array([[4,4,4,4,3],[2,3,5,5,5],[5,3,2,2,4]],float)namen=["A Pi+lokaleMCU","B alleenPi","C tweePi+lokaleMCU"]for n,v in zip(namen,scores@w): print(n,"score",round(v,3))restA=scores[0,1:]@w[1:]/.7restC=scores[2,1:]@w[1:]/.7grens=(restA-restC)/(scores[2,0]-scores[0,0]+restA-restC)print("A/C gelijk bij gewicht betrouwbaarheid",round(grens,6))print("B voldoet niet aan harde eis lokale actuator-eigenaar")
A Pi+lokaleMCU score 3.9
B alleenPi score 3.6
C tweePi+lokaleMCU score 3.35
A/C gelijk bij gewicht betrouwbaarheid 0.548387
B voldoet niet aan harde eis lokale actuator-eigenaar
0,00,20,40,60,81,0012345gewicht betrouwbaarheid (—)gewogen beoordelingsscore (—)AC
Scores zijn expliciete ontwerpbeoordelingen, geen gemeten betrouwbaarheidskansen. Overige gewichten blijven onderling in dezelfde verhouding.
Uitgewerkt voorbeeld · 45.14

Een keuze met een breekpunt

14/19
A heeft score 3,90; C 3,35 bij betrouwbaarheidgewicht 0,30.
Gegeven
  • overige gewichten proportioneel
Gevraagd
  • besluit en gevoeligheid
Oplossing
  1. 1
    De resterende gewogen gemiddelden zijn A=3,857143 en C=2,642857. Gelijkheid geeft 4r+3,857143(1−r)=5r+2,642857(1−r).
  2. 2
    Oplossen geeft r=0,548387. Bij r=0,55 wordt C nipt beter volgens deze scores.
  3. 3
    Onderzoek of zo'n gewichtsverandering werkelijk past bij de gebruiksbehoefte. Extra centrale computers delen mogelijk voeding, software of netwerk; de score 5 is geen bewezen onafhankelijke redundantie.
Antwoord
A is de transparante voorbeeldkeuze bij de huidige aannamen, geen universeel hardwareadvies.
Uitleg · 45.15

Configuratiebeheer bewaart het geheel

15/19

Een systeemversie omvat software, firmware, schema, pin/adreslijst, kalibratie, modelparameters, datasets en eisen. Een Git-commit alleen is onvoldoende als de dataset of ingestelde sensorcorrectie buiten het repository verandert. Bewaar een manifest met identifiers, hashes, toolversies en verantwoordelijke.

Een baseline bevriest een samenhangende referentie. Een wijzigingsverzoek beschrijft trigger, betrokken eisen/interfaces, risico, toetsimpact en terugrol. Maak de testomgeving reproduceerbaar en vergelijk werkelijk gebruikte configuratie met het manifest. Een hash toont identiteit; hij zegt niet dat een bestand goed of bevoegd is.

manifestvelddoel
commit/firmwareimplementatie
eisen/interfaceversiebetekenis
kalibratie/modelrekenwaarden
dataset en hashproefherkomst
test-ID/resultaatbewijs
terugrolbaselineherstel
Uitgewerkt voorbeeld · 45.16

Een kleine sensorwijziging heeft systeemimpact

16/19
Een temperatuurprobe krijgt een nieuwe ijkoffset van −0,3 K.
Gegeven
  • hardwareplaats gelijk
  • lokale regeling en centralelog gebruiken de waarde
Gevraagd
  • wijzigingsroute
Oplossing
  1. 1
    Leg referentiemeting, onzekerheid, datum en kalibratieversie vast. Bepaal welke regel-, alarm- en modeltests door de offset veranderen.
  2. 2
    Pas precies één aangewezen correctielaag aan: dubbele correctie lokaal én centraal verschuift −0,6 K. Toets ruwe en gecorrigeerde logvelden en interfacebetekenis.
  3. 3
    Voer relevante acceptatietoetsen opnieuw uit en koppel hun resultaten aan de nieuwe baseline. Bewaar terugrol en controleer wat historische dataherberekening vraagt.
Antwoord
Een numeriek kleine wijziging kan alarm- en energiegedrag veranderen.
Verhaal · 45.17

Systems engineering houdt verschillende experts samen

17/19

Een fictieve review van Habitat vindt geen groot algoritmeprobleem, maar een interfacefout: de planner noemt elektrisch vermogen, terwijl de warmtebalans thermisch vermogen verwacht. Beide teams hebben hun eigen component correct getest. De systeemreview legt een COP- en eenhedencontract vast en verlangt een integratieproef.

Deze manier van werken is ook zichtbaar in het primaire NASA Systems Engineering Handbook: systeemontwerp, productrealisatie en technisch beheer worden met elkaar verbonden. De les past die gedachte op een klein station toe en claimt geen NASA-procescertificering. Geraadpleegd 30-09-2026.

lokale waarheidsysteemvraag
vermogen kloptwelke grens en eenheid?
sensor klopttijd, meetplaats en ijking?
softwaretest groenwelke versie en interface?
score hoogbedoeld gebruik echt geholpen?
Naslag · 45.18

Het bewijsregister

18/19
bewijssoortkan aantonengrens
inspectieschema/manifest overeenstemminggeen dynamische prestatie
analysebalans/timing onder aannamenaannamen toetsen
testgedrag in proefgebiedgeen onbeperkt altijd
demonstratiebruikbaarheid in scenarioaanvullende meetgrenzen
Het geheel · 45.19

Het stationsbrein wordt een toetsbare versie

19/19

Eisen bepalen hoe algoritmen, lokale controllers en operator samenwerken. De integratieproef gebruikt één samenhangende baseline en houdt beide energienetten herkenbaar.

Contracten en verantwoordelijkheden.

Tijd, berichten en lokale eigenaar.

Storingseisen en onafhankelijkheid.

Habitat

Habitat krijgt een eisenboom met unieke ID's, architectuur/interfaces, testmatrix en versiebeheer. Voorbeeldcriteria worden pas behaalde eisen na centrale simulatie- en hardwareproef; er wordt geen veiligheidscertificaat uit de lescode afgeleid.

Samenvatting

In het kort

Begrippen

Wat je nu kent

functionele eis
Een beschreven dienst of handeling die het systeem moet leveren.
niet-functionele eis
Een kwaliteit, beperking of randvoorwaarde van die dienst.
verificatie
Aantonen dat de gerealiseerde versie aan de gespecificeerde eisen voldoet.
validatie
Aantonen dat het systeem voor het beoogde gebruik geschikt is.
baseline
Een vastgelegde samenhangende versie als referentie voor bouwen en beoordelen.
Aan de slag in het werkboek9 opdrachten, van oefenen tot uitdagen