MENU

Waarom is MetaFactory ontwikkeld

Reply

De ontwikkeling van een moderne software applicatie die werkt met een database is over het algemeen zeer tijdrovend. De hoeveelheid werk en dus tijd neemt vaak exponentieel toe met het aantal tabellen in de database (het aantal entiteiten in het logisch datamodel). Immers, voor elke entiteit moeten er verschillende zaken ontwikkeld worden: een model class, een dao class, een service, 1 of meer schermen enz.

Nu zijn er gelukkig heel veel goede frameworks waardoor de hoeveelheid code enigzins beperkt blijft. Bij webapplicaties wordt bijvoorbeeld veel gebruik gemaakt van Spring, Hibernate/JPA, Wicket, Seam/JSF of Angular. Deze frameworks leveren de componenten waarmee de applicatie gebouwd kan worden: validators, transaction management, gui componenten enz. De ontwikkelaar die een dergelijk framework gebruikt weet hoe hij deze componenten moet inzetten om uiteindelijk tot een werkende applicatie te komen.

Meestal bepaalt iemand die de architecten rol heeft welk framework (meestal meerdere frameworks) gebruikt gaat worden en hoe de code opgebouwd gaat worden. Echter, de hoeveelheid codeerwerk blijft vaak dusdanig groot dat een team met meerdere ontwikkelaars vaak maanden bezig is om iets te produceren. Een software project van meer dan 5000 uur is eerder regel dan uitzondering.

De hoeveelheid uren zorgt er voor dat (maatwerk) software kostbaar is en dat alleen grote bedrijven (banken, verzekeraars enz.) dit kunnen laten ontwikkelen. De kosten van een project kunnen uiteraard naar beneden gebracht worden door de bouw van het project uit te besteden naar landen met een lager uurloon. Meestal krijg je dan heel veel andere problemen terug, maar daar gaat dit artikel niet over.

Een andere manier om de kosten voor maatwerk software terug te brengen is door er voor te zorgen dat er minder uren nodig zijn.

Als klein software ontwikkelingsbedrijf beseften we ook dat het ontwikkelen van goede, stabiele en veilige software zeer tijdrovend is. We zagen echter ook dat software vol met patronen zit, die vrijwel niet benut (kunnen) worden door de software bouwers. Met deze constateringen is MetaFactory ontstaan. Er waren daarbij een aantal belangrijke eisen opgesteld:

  • Er mag uitsluitend code geproduceerd worden die de ontwikkelaar anders met de hand geschreven zou hebben
  • Er moet geproduceerd worden totdat het project af is (dus geen “quick start” en daarna handmatig verder)
  • De ontwikkelaar mag nooit last hebben van het feit dat de code gegenereerd is
  • Stukjes handmatig geschreven code moet zeer makkelijk geïntegreerd kunnen worden met de geproduceerde code
  • Het mag geen invloed hebben op het eindproduct, dus geen code in het resultaat die met de manier van bouwen te maken heeft (annotations bijvoorbeeld)
  • Geen invloed op deployment

Met bovenstaande uitgangspunten in gedachte is MetaFactory ontwikkeld. In 2004 is de ontwikkeling gestart en vanaf 2009 is de verkoop aan software bedrijven begonnen. Inmiddels wordt MetaFactory door verschillende bedrijven gebruikt en zijn er zeer veel software ontwikkelings projecten waarbij MetaFactory gebruikt is. MetaFactory is o.a. gebruikt bij projecten waar de volgende technieken gebruikt werden:

  • Spring-Hibernate applicatie voor een verzekeringsmaatschappij
  • JEE6 applicatie voor uitgever waarbij o.a. JPA2, Seam, CDI, JSF en PrimeFaces gebruikt worden
  • Eclipse Rich Client Platform (RCP) maatwerk applicatie t.b.v. registreren van contact gegevens.
  • RCP Uren Administratie
  • JBoss Seam (2) leden adminstratie voor sportclub

Aan de diversiteit van deze projecten kan je zien dat MetaFactory voor verschillende soorten software ingezet kan worden en dat het dus niet uitsluitend voor web applicaties of uitsluitend voor desktop applicaties bedoeld is. Als je zelf begint te ontwikkelen dan wordt vanzelf duidelijk hoe dit komt: De ontwikkelaar bestuurt MetaFactory en specificeert wat er geproduceerd moet worden. Het werken met MetaFactory is dan ook bedoeld voor (Senior) ontwikkelaars en architecten.



Laat een reactie achter