Object Oriented Design & Development

Object oriented design is meer dan een modekreet of hype. Het gaat al weer heel wat jaren mee, en is here to stay. Het is een manier van denken. Verantwoordelijkheden van en relaties tussen subsystemen duidelijk vastleggen. Dit in combinatie met interface based ontwikkelen, en het gebruik van design patterns waar van toepassing. Deze manier van denken is voor mij een 2e natuur geworden, voor mensen die er net mee beginnen is dit vaak lastig. Het duurt enige tijd voordat dit een automatisme wordt. De verleiding om terug te vallen op de oude werkwijze is daarbij groot. Begeleiding en training van een ervaren profesional onsite is hierbij een goede methode om snel te leren, zonder daarbij eerst de fouten te hoeven maken. De toegevoegde waarde van deze methodes komt het sterkst naar voren als ze consequent worden toegepast, dit vereist een mate van disipline en overtuiging. Om dit goed te kunnen doen, en daarbij alle huidige en toekomstige consequenties te kunnen overzien, is een uitgebreide ervaring noodzakelijk.

Redesign
Bovengenoemde eigenschappen zijn precies wat in legacy ("oude") software vaak ver te zoeken is. Deze software wordt vaak onderhouden door enkele mensen die vooral niet onder een bus moeten lopen. Soms is het zelfs een kwestie van "Niet aankomen want nu werkt het". Dit soort situaties ben ik vaak tegengekomen, en zijn candidaat voor redesign & her-implementatie. Een dergelijk redesign is de aangewezen gelegenheid om de oorspronkelijke requirements nog eens tegen het licht te houden, of als deze volledig ontbreken, ze duidelijk op te stellen. Nieuwe technieken en platforms (denk aan Windows-CE) introduceren is op dit punt ook mogelijk. Het product kan ontdaan worden van alle features die na verloop van jaren niet meer supported hoeven te worden. Voeg daarbij een goed design, en het eindproduct is een helder, efficient stuk software waar elke software engineer mee overweg kan. De keuze voor een redesign & implementatie is een vrij drastische, zeker ook qua kosten. Maar er komt soms een punt dat onderhoud van oude problematische software duurder is. Soms is de wens voor een upgrade van een systeem ingegeven door de beschikbare techniek. De moderne hardware en OS-en bieden zoveel meer mogelijkheden qua connectivity en pocessing-power dat een dergelijke stap al snel interessant wordt.

Om een redesign traject te trekken, is een sterke persoonlijkheid in combinatie met diepgaande know-how nodig. Reverse-engineering van oude projecten, requirement-gathering, design-kennis, om kunnen gaan met weerstand vanuit de organisatie, het zijn een aantal aspecten waar je mee te maken krijgt. Aangezien het pareren van kritiek, en het (technisch) beargumenteren van keuzes hierbij aan de orde van de dag is, is een sterk, kundig persoon nodig.

Ik ben die persoon, en doe dit graag samen met u.