Waarom Softwareontwerp en Architectuur een Bedrijf Kunnen Maken of Breken
May 05, 2023Introductie: De Fatale Softwarefout die Knight Capital Group Miljoenen Kostte
Een noodlottige maandagochtend
Het was maandagochtend, 7:00 uur, toen Tom Joyce, de CEO van Knight Capital Group, de telefoon opnam, in de verwachting van een routinegesprek. In plaats daarvan hoorde hij de paniekerige stem van het hoofd van de technologieafdeling, die hem dringend vroeg naar kantoor te komen. "Al onze lijnen zijn rood en de telefoons blijven maar rinkelen," zei hij.
De nasleep van een mislukte software-update
Toen Joyce op kantoor aankwam, zag hij zijn werknemers met ontzetting naar hun computerschermen staren. Op de schermen waren transacties te zien die volledig uit de hand liepen. Een van de transacties die fout ging, betrof een aandeel dat normaal gesproken tegen een prijs van $20 werd verhandeld. Het aandeel echter voor slechts $0,01 gekocht en vervolgens voor $20 verkocht. In een ander geval had een transactie moeten uitgevoerd moeten worden met een beperkt aantal aandelen, maar in plaats daarvan werden duizenden extra aandelen gekocht, waardoor de prijs van het aandeel kunstmatig werd opgedreven.
De chaos op de handelsvloer was enorm. Handelaren en technici werkten koortsachtig om de fouten te identificeren en te herstellen, terwijl het verlies gestaag toenam. De paniek was voelbaar, aangezien niemand precies wist wat er misging of hoe ze het konden stoppen.
Het bleek dat een recent uitgevoerde software-update vreselijk fout was gegaan. Binnen enkele minuten had het bedrijf onbedoeld miljoenen verkeerde transacties uitgevoerd, wat leidde tot een verlies van maar liefst $440 miljoen. Deze catastrofale gebeurtenis werd later toegeschreven aan een combinatie van ontoereikend softwareontwerp, slechte architectuurkeuzes en onvoldoende tests. De ramp had voorkomen kunnen worden als er meer aandacht was besteed aan de kwaliteit van het softwareontwerp en de implementatie van de update.
De schade was niet alleen financieel. Knight Capital Group, ooit een toonaangevend wereldwijd financieel dienstverleningsbedrijf, werd het symbool van de gevaren van ontspoorde softwareontwikkeling. De reputatie van het bedrijf werd ernstig beschadigd en uiteindelijk moest het bedrijf fuseren met een ander bedrijf, Getco, om te overleven.
Dit waarschuwende verhaal onderstreept het belang van het investeren in goed softwareontwerp, architectuurkeuzes en domeingedreven ontwerp, evenals het gebruik van hulpmiddelen zoals event-storming om financiele rampen te voorkomen en concurrend te blijven in de zakelijke markt.
Het belang van goed softwareontwerp en architectuurkeuzes
In het geval van Knight Capital Group leidde het ontbreken van goed softwareontwerp en architectuur tot een catastrofale gebeurtenis die het bedrijf niet alleen miljoenen dollars kostte, maar ook zijn reputatie in de sector aantastte. Dit voorbeeld uit het echte leven illustreert het belang van het investeren in solide softwareontwerp, architectuurkeuzes, domeingedreven ontwerp en event-storming om soortgelijke rampen te voorkomen en succes te garanderen in het huidige competitieve zakelijke landschap.
Goed ontworpen software en architectuur vormen de basis van elk succesvol softwareproject. Ze bieden een duidelijke routekaart voor ontwikkelingsteams om te volgen, zodat het eindproduct efficiënt, schaalbaar en onderhoudbaar is. Goed softwareontwerp en architectuur kunnen veelvoorkomende problemen voorkomen, zoals spaghetti-code en technical debt, die kostbaar en tijdrovend kunnen zijn om op te lossen.
Domain Driven Design: softwareontwikkeling afstemmen op bedrijfsbehoeften
Domain Driven Design (DDD) is een benadering van softwareontwikkeling die zich richt op het bouwen van software rond de kernconcepten en processen van het bedrijf, in plaats van op technische vereisten. Door softwareontwikkeling af te stemmen op het onderliggende bedrijfsdomein, zorgt DDD ervoor dat de software beter aansluit op de behoeften van eindgebruikers en belanghebbenden.
DDD implementeren houdt verschillende belangrijke praktijken in:
- Ubiquitous Language: Een gemeenschappelijke taal die door zowel ontwikkelaars als domeinexperts wordt gebruikt en begrepen. Knight Capital Group had een heldere communicatie kunnen bevorderen door deze gemeenschappelijke taal te implementeren, zoals bijvoorbeeld dezelfde termen te laten gebruiken voor handelstransacties door de softwareengineers als de beurshandelaren. Hierdoor zouden misverstanden en tegenstrijdigheden in de softwarecode worden voorkomen.
- Bounded Context: Het afbakenen van verschillende bedrijfsgebieden, zodat elk gebied op zichzelf kan worden begrepen. Door de grenzen tussen subdomeinen, zoals orderbeheer en risicobeheer, vast te stellen had Knight Capital Group kunnen zorgen voor een beter georganiseerd softwareontwerp . Dit zou hebben geholpen om verantwoordelijkheden en afhankelijkheden tussen deze subdomeinen duidelijk te maken.
- Aggregates:(groeperingen): Het identificeren van samenhangende groepen objecten die samenwerken om een specifieke bedrijfsregel of -proces te voltooien. Knight Capital Group had de complexiteit kunnen verminderen door dergelijke groepen binnen hun software te definiëren. Bijvoorbeeld, door een 'Order' aggregate te creëren met daarin alle relevante informatie en logica voor het beheren van een enkele order. Dit zou de code beter georganiseerd en begrijpelijker hebben gemaakt voor zowel ontwikkelaars als domeinexperts.
- Repositories: Het loskoppelen van de manier waarop gegevens worden opgeslagen van het bedrijfsdomein, wat de flexibiliteit vergroot. Het systeem van Knight Capital Group had beter schaalbaar en aanpasbaar gemaakt kunnen worden door repositories te gebruiken. Door een 'OrderRepository' te implementeren, bijvoorbeeld, zouden ze de opslag van ordergegevens kunnen centraliseren en loskoppelen van de bedrijfslogica. Dit maakt het eenvoudiger om toekomstige wijzigingen in opslagmechanismen door te voeren zonder de bedrijfslogica te beïnvloeden.
Event-storming: een samenwerkingsbenadering om complexe domeinen te begrijpen
Event-storming is een interactieve, samenwerkingsgerichte techniek die wordt gebruikt om complexe bedrijfsdomeinen te verkennen en gebeurtenissen, opdrachten en aggregaten te identificeren. Het helpt domeinexperts en ontwikkelingsteams bijeen te brengen om kennis te delen, de belangrijkste componenten van het domein te identificeren en de relaties daartussen te definiëren. Het proces omvat doorgaans:
- Domeinexperts en ontwikkelingsteams bijeenbrengen: Event-storming vereist input van zowel de zakelijke als de technische kant van de organisatie.
- Bedrijfsprocessen in kaart brengen: Met behulp van plaknotities identificeren deelnemers en brengen de volgorde van gebeurtenissen, opdrachten en aggregaten die de bedrijfsprocessen vormen in kaart.
- Inconsistenties en verbeterpunten identificeren: Door de resultaten van de event-storming te onderzoeken, kunnen deelnemers gebieden identificeren waar het huidige domeinmodel tekortschiet of waar mogelijkheden voor verbetering bestaan.
- Het domeinmodel verfijnen: De inzichten die zijn opgedaan door event-storming kunnen worden gebruikt om het domeinmodel te verfijnen, zodat het nauwkeurig de bedrijfsprocessen en vereisten weergeeft.
Knight Capital Group had baat kunnen hebben bij het gebruik van event-storming om hun bedrijfsdomein beter te begrijpen en de juiste architectuurkeuzes te maken. Door nauw samen te werken met domeinexperts, hadden de ontwikkelaars de unieke behoeften van het bedrijf beter kunnen doorgronden en een softwareoplossing kunnen creëren die beter aansluit bij de werkelijke vereisten.
Conclusie: Softwareontwerp is essentieel voor zakelijk succes
De foutieve software-update die Knight Capital Group $440 miljoen kostte, benadrukt het belang van het nadenken over een goed softwareontwerp en architectuurkeuzes, Domain Driven Design en technieken zoals event-storming zijn hierbij uitstekende hulpmiddelen. In de snel veranderende business van vandaag helpen deze methodes ervoor te zorgen dat de softwareprojecten efficiënt, schaalbaar en onderhoudbaar zijn, waardoor het risico op kostbare fouten effectief wordt verminderd en het aanpassingsvermogen van de organisatie wordt vergroot. En het zorgt ervoor dat jouw bedrijf niet het volgende symbool wordt van een ontspoord softwareontwikkelingstraject.
Ben je benieuwd wat NForza voor je kan betekenen om meer grip te krijgen op je software ontwikkeling?