Codegenerator

Hoe MetaFactory de systeemarchitect ondersteunt

[object Object]
Tony Koeleman
31 mei 2021
metafactory java codegenerator

Je hebt software nodig

Je wilt bijvoorbeeld het klantcontacten-proces verbeteren of je interne processen stroomlijnen en daar heb je software voor nodig. Dan kan je een aantal alternatieven overwegen: je kan een standaard systeem aanschaffen en implementeren; je kan een low code oplossing bouwen; of je kiest voor maatwerk. Als je kiest voor maatwerk software dan heb je de zekerheid dat je in staat bent om jouw processen maximaal te ondersteunen. Je doet namelijk geen concessies aan de beperkingen die standaard software, of low code oplossingen je opleggen.

Systeemarchitectuur, als je kiest voor maatwerk software

Als je kiest voor maatwerk software, dan loont het om na te denken over de gewenste systeemarchitectuur. Zeker als je vaker kiest voor maatwerk en als systemen langere tijd mee moeten. In je systeemarchitectuur leg je vast hoe en waarin je data opslaat, welke talen en frameworks je gebruikt, hoe je gegevens ontsluit voor de gebruikers, hoe interfaces werken, hoe je de software test en documenteert, hoe je omgaat met nieuwe versies van de tools, software en frameworks et cetera.

Systeemarchitectuur is dus iets anders dan enterprise-architectuur, informatie-architectuur, of applicatie-architectuur. Deze laatste begrippen richten zich meer op de verhouding business-IT en op het functionele en de (meta-)data. Zie verder wikipedia. Systeemarchitectuur gaat over de ontwerpbeslissingen rond de software zelf. Ook kom je in plaats van systeemarchitectuur de term software-architectuur tegen.

Kies systeemarchitectuur oplossingen die modern zijn, maar bewezen, die populair zijn en waarom niet: die goedkoop zijn. Dat kan open source zijn, maar hoeft zeker niet. Door je keuzes expliciet te maken krijg je grip op je beveiliging, je productiviteit van het software ontwikkelproces en bevorder je de overdraagbaarheid.

Hoe beheers je de systeemarchitectuur?

Hoe beheers je de systeemarchitectuur? Wat je hiervoor nodig hebt is een systeemarchitect. Die rol kan vervuld worden door een lead software developer, een dedicated functionaris of zelfs een compleet software architectteam. Je hebt procedures, voorbeeld-programma’s, standaard componenten, handboeken en werkwijzen nodig om de systeemarchitectuur te beschrijven en over te dragen aan onder andere de software ontwikkelaars, testers en database beheerders. Je moet voortdurend zorgen dat niet iedere keer het wiel, net even anders, wordt uitgevonden en je na je eerste project al een systeem hebt zonder solide technische basis. De investering in het definiëren, toepassen en bewaken van een systeemarchitectuur betaalt zich op termijn dubbel en dwars uit.

Een gekozen systeemarchitectuur is echter niet in beton gegoten. Software ontwikkelaars doen nieuwe inzichten op. Nieuwe talen, frameworks en tools worden ontwikkeld en bestaande verbeteren. Gebruikers komen met eisen en wensen die moeilijk met de gekozen systeemarchitectuur gerealiseerd kunnen worden. Hier ontstaat dus een spanningsveld:

Om de software ontwikkeling beheersbaar te houden, om grip te houden op beveiliging, productiviteit, onderhoudbaarheid en overdraagbaarheid ontstaat de wens om software te bouwen conform een gekozen systeemarchitectuur enerzijds. Maar anderzijds wil en moet je ook moderniseren en aan technisch onderhoud doen. Je systeemarchitectuur krijgt dus een update, of een nieuw versienummer als je wilt. Nieuwe software kan je dan ontwikkelen conform de laatste versie van je systeemarchitectuur. Maar wat doe je met je al gebouwde software, die functioneel doet wat het moet doen en gebouwd is conform een vorige versie van je systeemarchitectuur, of nog erger zonder systeemarchitectuur? Is er budget, tijd en capaciteit om aan technisch onderhoud te doen? Een bij veel bedrijven nadrukkelijk gevoelde nu-straks klem. Als je technisch onderhoud verwaarloost gaan de totale IT kosten uiteindelijk fors stijgen waardoor je minder nieuwe functionaliteit kan realiseren. De boel wordt op termijn onbeheersbaar.

Hoe leg je de systeemarchitectuur vast en hoe draag je het over?

Hoe werkt het bouwen van software onder systeemarchitectuur in de praktijk?

  1. Hoe leg je de systeemarchitectuur vast?
  2. Hoe draag je kennis rond de systeemarchitectuur over aan bouwteams?
  3. Hoe faciliteer je bouwteams om conform de systeemarchitectuur software te ontwikkelen?
  4. Hoe leg je verbetersuggesties vanuit de bouwteams voor de systeemarchitectuur vast?
  5. Hoe integreer je verbeteringen aan de systeemarchitectuur in reeds gebouwde software?

Systeemarchitectuur wordt nu veelal vastgelegd in kookboeken, wiki’s en voorbeeld programma’s. Het charisma en natuurlijk leiderschap van de systeemarchitect dragen bij aan de acceptatie van de systeemarchitectuur. Tech sessies worden georganiseerd om de systeemarchitectuur over te dragen. Collega’s helpen elkaar bij de implementatie. Verbetersuggesties worden geïnventariseerd, besproken, geprioriteerd of afgewezen. De kookboeken, wiki’s en voorbeeld programma’s worden bijgewerkt. En we beginnen weer van voor af aan. Een ambachtelijke werkwijze, die veel discipline vergt van alle betrokkenen.

Om verbeteringen aan de  systeemarchitectuur in te kunnen bouwen in reeds opgeleverde software heb je bijzondere product owners nodig. En budget. De roep om nieuwe functionaliteit en het credo if it ain’t broke, don’t fix it leiden vaak tot systemen waarbij je technisch voortschrijdend inzicht terug ziet in verschillende oplossingen voor vergelijkbare problemen. En dat vergroot op termijn weer de complexiteit en vermindert de onderhoudbaarheid van systemen.

Hoe kan MetaFactory de systeemarchitect helpen?

MetaFactory assisteert bij het vastleggen en aanpassen van je systeemarchitectuur èn MetaFactory maakt broncode gebaseerd op deze systeemarchitectuur. Het resultaat is dat het hierboven beschreven ambachtelijke proces ondersteund wordt met een geautomatiseerd systeem:

  • De systeemarchitectuur wordt vastgelegd in MetaFactory. Dit kan een systeemarchitect met een bouwteam doen, of als gewerkt wordt conform SAFe® door het New technology initiative Dev Team
  • Maak – nog steeds – een kookboek hoe bouwteams de systeemarchitectuur, vastgelegd in MetaFactory, kunnen gebruiken
  • Bouwteams ontwikkelen software met behulp van MetaFactory en het kookboek
  • Als bouwteams aanpassingen verrichten aan de systeemarchitectuur vastgelegd in MetaFactory ziet de systeemarchitect dat automatisch in bijvoorbeeld Git.
  • De systeemarchitect kan de systeemarchitectuur wijzigingen accepteren of verwerpen.
  • En last but not least … reeds gebouwde software kan opnieuw gegenereerd worden conform de nieuwste systeemarchitectuur, wat de complexiteit vermindert en de onderhoudbaarheid en kwaliteit van het systeem vergroot.

Kortom een geautomatiseerd proces van het vastleggen, gebruiken en verbeteren van je systeemarchitectuur!

Wanneer is het lonend om je systeemarchitectuur vast te leggen in MetaFactory?

Kortgezegd: vanaf 100.000 regels broncode. Hoe groter het systeem, hoe meer profijt je van MetaFactory gaat hebben. MetaFactory werkt ook uitstekend als er meerdere systemen gebouwd moeten worden conform dezelfde systeemarchitectuur. In deze blog gaan we nader in op de keuze tussen een standaard low code pakket, handmatige software ontwikkeling en MetaFactory.

Emergent design of een planned design?

Wil je vóór aanvang van je project je gehele systeemarchitectuur vastleggen: planned design? Of start je op een agile/scrum-achtige aanpak en laat je de systeemarchitectuur zich al werkende weg vormen: emergent design? Het maakt voor MetaFactory niet uit. Zowel emergent design als planned design lenen zich uitstekend voor MetaFactory. Bij een planned design leg je eerst je systeemarchitectuur vast in MetaFactory voordat je met MetaFactory applicaties gaat bouwen. Bij een emergent design leg je je systeemarchitectuur beetje bij beetje vast in MetaFactory. Het is nooit te laat om MetaFactory te introduceren in je softwareproject. Want ook als je klaar bent, komt vroeg of laat de behoefte aan technisch onderhoud.

Overigens is het ook bij een planned design aan te raden om eerst delen van de applicatie met de hand te bouwen en op basis daarvan de systeemarchitectuur te beschrijven en vast te leggen in MetaFactory. Dat werkt naar onze ervaring het beste.

Hoe leg je de systeemarchitectuur vast in MetaFactory en hoe maak je er vervolgens een werkend systeem van?

Hoe leg je de systeemarchitectuur vast in MetaFactory:

  1. Bedenk een technisch gewenste oplossing
  2. Probeer deze uit door hiervoor handmatig een stuk software te schrijven. Ben je tevreden over de werking van je code?
  3. Vertaal je handmatig geschreven software dan naar MetaFactory code instructies. We hebben tools die je hierbij assisteren
  4. Genereer de software met behulp van MetaFactory en de door jou gemaakt MetaFactory code instructies. Is de gegenereerde software hetzelfde als je handmatig geschreven software?
  5. Gefeliciteerd, dan werken de MetaFactory code instructies goed en heb je je systeemarchitectuur in MetaFactory vastgelegd!
  6. Nu kan je MetaFactory gebruiken om de gewenste technische oplossing steeds opnieuw toe te passen
  7. En heb je voortschrijdend inzicht? Pas de MetaFactory code instructies aan en genereer alle reeds gemaakte broncode opnieuw. Jouw nieuwste inzichten zijn overal eenduidig vastgelegd. Technisch achterstallig onderhoud is hierdoor verleden tijd.

De beste resultaten verkrijgen we als senior software developers van MetaFactory enige tijd assisteren bij het opzetten van de gewenste systeemarchitectuur in MetaFactory. Zij ondersteunen de systeemarchitect en de bouwteams bij het gebruik van MetaFactory. Zie deze blog en kijk eens naar deze video.

Interesse? Neem nu contact met ons op.

Ook interessant

Codegenerator
Hoe bouw je een eigen low code platform?
Codegenerator
Copy, paste, adjust, repeat
High Performance Code Lab aanvragen
Contact