Business- en factory classes implementeren de applicatiespecifieke bedrijfslogica. Hiervoor putten deze klassen uit de onderliggende database of de aan te roepen services van componenten. De business- en factory classes schermen zo als facade de proceslogica van de tasks af van de functionaliteit aan de achterkant van de applicatie, in componenten of database. De business- en factory classes leunen daarom sterk op het onderliggende framework en maken in de regel gebruik van een veelheid aan services classes, bijvoorbeeld voor het benaderen van message queues of de database. Omdat het implementeren van dergelijke classes tamelijk complex kan zijn, is het dan ook aan te bevelen tijdens de constructie van deze classes met pair programming te werken. Bovendien worden voor de business- en factory classes test classes ontwikkeld. DoelDe applicatiespecifieke bedrijfslogica wordt gecodeerd op business- en factory classes. Deze klassen worden op hun beurt gebruikt door tasks om het stappenplan van de use case te verwezenlijken. Business- en factory classes vormen de facade naar de services van de componenten. Stappen- Aanmaken business- en factory classesVoor iedere business- en factory class in het business class diagram van de applicatie wordt een klasse aangemaakt (of gegenereerd vanuit een CASE-tool). Maak ook de attributen voor deze klassen aan. Implementeer bovendien alvast de signature van ieder van de methoden die de business- en factory classes bevatten. Voor deze methoden wordt nu eerst de bijbehorende test class ontwikkeld of uitgebreid.
- Ontwikkel de test class en de functionaliteitHet ontwikkelen van de test classes en de daadwerkelijke functionaliteit gaat om-en-om. Begin met het schrijven van de tests voor de aan te roepen methode. Zet vervolgens de basale versie van de functionaliteit neer. Draai de test class. Meestal leidt dit tot voortschrijdend inzicht betreffende de implementatie van de methode. Voeg nu nieuwe tests hiervoor toe en implementeer vervolgens deze functionaliteit. Herhaal deze cyclus totdat de tests naar tevredenheid draaien en alle noodzakelijke functionaliteit is gerealiseerd.
- Koppelen met databasesOntwikkel de eventuele koppeling met een tabel uit een database. De technische applicatiearchitectuur schrijft meestal het hiervoor te gebruiken mechanisme voor. Is dit niet het geval probeer dan toch in alle gevallen een zoveel mogelijk gelijksoortige techniek. Isoleer dit mechanisme in een of meerdere utility classes. Ontwikkel de nieuwe tests om ook deze koppeling te testen en test deze totdat ze een positief resultaat geven.
- Gebruikmaken van services van componentenWaar gebruik gemaakt dient te worden van services van componenten, implementeer deze. Ook hiervoor dient de technische applicatiearchitectuur een mechanisme voor te schrijven. Dit kan bijvoorbeeld gebruik maken van message queues of van een interface in een DLL. Indien dit niet het geval is, geldt hetzelfde als bij de koppeling met de database. Zorg ervoor dat de business- en factory classes onafhankelijk zijn van de technische aspecten van de communicatie. Gebruik hiervoor bijvoorbeeld helper classes of het adapter design pattern. Ontwikkel test cases voor het testen van de nieuwe functionaliteit en test deze totdat ze een positief resultaat geven.
- Aanpassen technische applicatiearchitectuurKoppel wijzigingen, die ontstaan doordat de realisatie noodgedwongen afwijkt van de gemodelleerde situatie, terug in het business class diagram en eventueel in de technische applicatiearchitectuur.
RichtlijnenVaak vergt de interface met een bestaande service van een component nog een transformatie. De door de component geboden functionaliteit is zelden of nooit direct de gevraagde functionaliteit. Eventuele mismatching wordt opgelost binnen de business- en factory classes.Deze scheiding kenmerkt zich door het verschil tussen applicatiespecifieke functionaliteit en organisatiegenerieke functionaliteit, die in aanmerking komt voor hergebruik binnen het domein. Let bij het ontwikkelen van tests voor de koppeling met een database op wijzigingen die door het uitvoeren van de tests op de data in de tabel plaatsvinden. Het uitvoeren van de tests dient herhaalbaar te zijn. Dit betekent dat na uitvoering de tabel weer in de oorspronkelijke staat voor de test moet worden teruggebracht. |