Attribuut refactoring bij datamodellering

In de software ontwikkeling is een methode geintroduceerd, met name voor iteratieve trajecten, om op basis van allerlei patronen de opzet van programmatuur te optimaliseren. Denk bijvoorbeeld aaln een klasse met allerlei functies die je wilt uitsplitsen naar een gelaagde overervingsstructuur. In bijvoorbeeld Visual Studio zitten daar reeds allerlei hulpmiddelen in de tools. Iets dergelijks zou voor datamodelleurs ook heel handig zijn. Ik wil dat toelichten aan de hand van een heel eenvoudig scenario.

Refactoring in een datamodel

In dit voorbeeld beginnen we met een heel eenvoudig model, we willen medewerkers gaan modelleren en maken daarom het volgende klasse diagram

Met dit model kunnen we in eerste instantie goed uit de voeten maar in een tweede iteratie willen we het model gaan uitbreiden omdat we ook andere persoonsentiteiten willen gaan modelleren. Daarom is onze eerste opzet niet zo heel erg handig. Er is een overervingsstructuur nodig. Zie het tweede diagram, daarin is een persoon klasse toegevoegd en een medewerker overerft van deze persoon. Echter nu willen we graag dat de generieke attributen verplaatst worden naar de generieke persoonsentiteit. Helaas is dat nog niet zo eenvoudig met EA, je moet nuĀ ieder attribuut wat je wil verplaatsen overzetten.
Feitelijk willen we toe naar deze situatie waarbij de persoonsgegevens bij de klasse persoon staan en de medewerkers bij de medewerker klasse blijven. Dit is niet eenvoudig te realiseren in de basisopzet van EA.

In het kader van het IDEA project zoeken we naar mogelijkheden om voor dit soort datamodelleer uitdagingen iets te verzinnen. Voor dit refactoring probleem hebben we daarom een dll gemaakt waarin dit scherm zit. Je kunt in dit scherm per klasse aangeven welke attributen verplaatst of gekopieerd kunnen worden naar een andere klasse. Hiermee hebben we een mooie basis voor datamodelleer refactoring. Wellicht zijn er ook andere patronen mogelijk denk aan het omzetten van een overervingstructuur naar een aggregatie of omgekeerd of het terugmergen van een overerving naar een klasse. Zeker in combinatie met fysieke modellering zijn er voor refactoring in datamodellering mooie patronen te bedenken.