Hoe valideer ik een ontwerp?

Een technisch ontwerp is uiteindelijk niet alleen voor jou, als programmeur. Het is voor je team, en ook wel eens voor een persoon of groep waar je zelf niet samen mee werkt.

Dat betekend dat je ontwerp duidelijk moet zijn.

Maar hoe weten we dat? Natuurlijk kan je het ontwerp zelf al eens gebouwd hebben om aan te tonen dat het werkt, maar is dat betrouwbaar? Een top chef in de beste keuken van de wereld kan beweren dat al het eten makkelijk te koken is omdat zijzelf dat al eens gemaakt heeft, maar zou je datzelfde kunnen doen met alleen een geschreven recept waar de termen onduidelijk zijn en je geen hulp krijgt?

Voor technisch ontwerpen kunnen we een aantal vragen stellen aan onszelf over het ontwerp. Als er aan de hand van deze vragen al onduidelijkheden komen of de antwoorden zijn niet direct aantoonbaar, dan betekend het dat het ontwerp een grote kans heeft niet duidelijk te zijn voor een ander.

De vragen zijn als volgt:

<aside> 📋

Technisch Ontwerp Onderdelen

Waar moet het systeem aan voldoen?

Je wilt vooral weten, wat zijn de benodigheden zodat dit een succes word? Hoe weet je dat het werkt? Bied het nieuwe functionaliteit aan het project, of zorgt het juist voor dat een groter geheel (zoals een gameplay loop) beter werkt?

Wat moet de uitkomst zijn van het systeem?

Het ontwerp wat je maakt leid ergens naartoe; er komt een feature uit, een systeem of functionaliteit. Het doel van het ontwerp, dus.

Welke data heb ik nodig om het systeem te maken?

Hier wil je er heel technisch naar kijken. Wat voor data, uit je project zal dit ontwerp nodig hebben. Wellicht heb je animation states nodig, of een Quaternion for rotaties. Misschien zijn een aantal Vector3’s wel voldoende. Maar dit kan ook een ander systeem zijn die al gebouwd is, een scriptable object, class of andere structuur.

Welke typen hebben die data?

Voor deze vraag moet je, met behulp van de vorige, kunnen aangeven welke exacte data types dit dan zijn. In het vorige vraagstuk hadden we het over Quaternions voor rotaties. Hier zouden we kunnen zeggen dat het type wat je nodig hebt dus een Quaternion is. Zolang je wel hebt uitgelegd waar deze data voor nodig is!

Welke data komt er uit het systeem als resultaat?

Uit het ontwerp verwacht je een resultaat. Dit kan een nieuwe staat zijn van een gedraags patroon, een spawner systeem voor monsters of misschien komt er een procedurele wereld uit.

In welke vorm komt het er uit? (Datatypen / structuren)

Net zoals dat beschreven is wat voor types in het ontwerp gaan, kunnen we ook beschrijven in welke vorm ze er weer uit komen. Dit is data wat uitgedrukt kan zijn in GameObjects of een array van Vector3’s, bijvoorbeeld. Wat zijn de structuren waarin ze hier uitkomen? Als er geen duidelijk data of structuur type uit komt, dan beschrijf je hier ook duidelijk wat het dan wel berekend heeft.

Welke stappen moeten er gebeuren om van input → output te komen?