Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders Your Partner In eBusiness Solution Delivery Welkom • • • • • Van harte welkom Voorstellen Functional Design Patterns Ervaring met FO, TO, Frameworks, Java, J2EE? Vragen en opmerkingen tussen oor zijn welkom Agenda • • • • • • • • • Even voorstellen De toepassingen die wij bouwen De problematiek daarbij FDPs - onze aanpak FDPs - werkwijze FDPs - voorbeelden Case FDPs in onze projectfasering Hoe verder? Agenda • • • • • • • • • Even voorstellen De toepassingen die wij bouwen De problematiek daarbij FDPs - onze aanpak FDPs - werkwijze FDPs - voorbeelden Case FDPs in onze projectfasering Hoe verder? Organisatie • Oprichting maart 2000 • Gestart met 5 personen • Per heden: ruim 70 medewerkers • Minimale overhead • Gecontroleerde groei Aantal medewerkers 70 60 50 40 30 20 10 0 2000 2001 2002 2003 2004 2005 Per jaar Omzet 6 5 4 3 Series1 2 1 0 2000 2001 2002 2003 In miljoen euro per jaar 2004 2005 Cijfers / Resultaten • Omzet 2005: > Euro 5.000.000 • Meer dan 70 klanten • Maliebaan, Utrecht Werkzaamheden • Wij voeren volledige maatwerkprojecten uit van begin tot eind. Wij verzorgen: – – – – – – – – – business consultancy, technical consultancy, projectmanagement, informatieanalyse en functioneel ontwerp, technisch ontwerp en programmering, infrastructuurontwerp, organisatorische invoering, migratie en conversie, onderhoud, opleidingen. Technologie • Wij werken met Java technologie (J2EE) op de volgende platformen: – Linux (open source), Windows 2000/XP, Unix varianten van IBM, SUN, HP, AS/400, OS/390; – Tomcat (open source), IBM Websphere, Borland AppServer; – PostgresSQL (open source), IBM DB2, Oracle, MS SQL Server, MySQL (open source) • Ontwikkelomgeving: – – – – – IBM WSAD (Eclipse), OptimalJ, Borland Jbuilder CVS MS Visio MS Word Diverse tools, o.a. performancetesttools, HTTP sniffers Deel van onze klanten Agenda • • • • • • • • • Even voorstellen De toepassingen die wij bouwen De problematiek daarbij FDPs - onze aanpak FDPs - werkwijze FDPs - voorbeelden Case FDPs in onze projectfasering Hoe verder? Kenmerken • Veel van de toepassingen die wij bouwen bevatten complexe functionaliteit. Kenmerken: – – – – – Complexe en omvangrijke gegevensstructuren Tijdafhankelijkheid v.w.b. gegevens en functionaliteit Complexe (actuariele) rekenregels Complexe interfaces en uitvoer Voortdurende functionele wijzigingen Agenda • • • • • • • • • Even voorstellen De toepassingen die wij bouwen De problematiek daarbij FDPs - onze aanpak FDPs - werkwijze FDPs - voorbeelden Case FDPs in onze projectfasering Hoe verder? Problemen • Standaarden voor beschrijven van de functionaliteit ontbreken • Standaarden voor het vertalen van functioneel ontwerp naar technisch ontwerp ontbreken • Programmatuur is weinig inzichtelijk en slecht onderhoudbaar (geen vast pad van functionaliteit naar programmaregels en vice versa) • Programmatuur is instabiel door grote complexiteit -> hoge kosten voor testen en debuggen • Manieren om herbruikbare oplossingen generiek vast te leggen ontbreken -> Programmatuur is klant- en projectspecifiek Internet technologie • Het gebruik van Internet technologie versterkt de problematiek: – – – – – – Technische complexiteit applicatieservers Vereiste schaalbaarheid Performance en responsetijd Interactie tussen browser en server Beveiliging Interface requirements worden net zo belangrijk als functionele requirements In de pers • “Bedrijven in West-Europa hebben vorig jaar gezamenlijk bijna 160 miljard euro over de balk gesmeten als gevolg van verkeerde ITbeslissingen. Dit blijkt uit onderzoek van Gartner. Gartner schat dat bedrijven wereldwijd ongeveer 567 miljard euro voor niets uitgeven.” (Infoworld) • “Slechts een op de vijftig computertoepassingen in bedrijven werkt goed. De rest kan de toets der kritiek niet doorstaan. Alleen al in de VS lijdt de economie een schade van 60 miljard dollar als gevolg van slechte software. Forrester acht besparingen mogelijk van 22 miljard dollar per jaar.” (Accountingweb.nl) • “Uitkeringsinstantie UWV heeft de afgelopen jaren honderden miljoen euro's uitgegeven aan ICT-projecten. Ondanks de expertise van vele externe ICT-adviseurs slaagt nog geen dertig procent van die projecten. De ICT-verspilling over de afgelopen jaren wordt op honderden miljoenen euro’s geschat.” (De Telegraaf) Consequenties • Extreme overschrijdingen van tijd en budget • Veel projecten worden gestopt • Als er iets wordt opgeleverd, is dit niet onderhoudbaar tegen aanvaardbare kosten • Kapitaalvernietiging op grote schaal • Waarom hebben wij daar geen last van? Agenda • • • • • • • • • Even voorstellen De toepassingen die wij bouwen De problematiek daarbij FDPs - onze aanpak FDPs - werkwijze FDPs - voorbeelden Case FDPs in onze projectfasering Hoe verder? Onze aanpak • Functional Design Patterns – Herbruikbare patronen in functionaliteit • User Interface Patterns – Herbruikbare patronen in gebruikersinteractie • Technical Design Patterns – Herbruikbare patronen in class structuren en gedrag – Deels bekend (GOF patterns, J2EE patterns; bv MVC) • Performance patterns – Herbruikbare patronen voor performance en capaciteit Agenda • • • • • • • • • Even voorstellen De toepassingen die wij bouwen De problematiek daarbij FDPs - onze aanpak FDPs - werkwijze FDPs - voorbeelden Case FDPs in onze projectfasering Hoe verder? Ontwerppatronen • Functionele ontwerp patronen: beschrijven herbruikbare functionele onderdelen van toepassingen. We gebruiken hierbinnen o Informatie(deel)functies o Gebruikersinteractiepatronen o Gegevenspatronen • Technische ontwerppatronen: beschrijven een bepaalde technische implementatie op een zodanige manier dat deze implementatie over meerdere domeinen cq meerdere projecten hergebruikt kan worden. Wijze van werken Aandachtsgebied Functioneel 1 ontwerppatroon a Technisch 2 ontwerppatroon a c Domein Functioneel 4 ontwerppatroon b Project Functioneel ontwerp a c Technisch 5 ontwerppatroon b 7 3 Programmatuur Technisch ontwerp c Programmatuur 6 b 8 Programmatuur 9 Vastleggen van patronen Groene ontwerpboekjes Blijven intern binnen Quinity Domein: Blauwe ontwerpboekjes Blijven intern binnen Quinity Project: Witte ontwerpboekjes Gaan extern naar de klant Aandachtsgebied: Ontdekkingen / uitzoekpunten • Soms doe je een functionele of technische ontdekking. Voorzie die van een lampje! • Soms is het niet duidelijk wat de beste oplossing is. Voorzie verder uitzoek te zoeken punten van een microscoopje! Ontwerppatronen • Performancepatronen: beschrijven een bepaald performance aspect op een zodanige manier dat dit aspect over meerdere projecten hergebruikt kan worden. Vastleggen van patronen Aandachtsgebied: Groene ontwerpboekjes Domein: Blauwe ontwerpboekjes Project: Witte ontwerpboekjes Rode ontwerpboekjes Agenda • • • • • • • • • Even voorstellen De toepassingen die wij bouwen De problematiek daarbij FDPs - onze aanpak FDPs - werkwijze FDPs - voorbeelden Case FDPs in onze projectfasering Hoe verder? Implementatie: code generatie Code generatie voor voorgaande patronen op aandachtsgebied vindt plaats op basis van datamodel. 12 XSLT sheets voor o.a. lijstschermen en detailschermen Gegevensmodel in Visio DDL (Data Definition Language) Database XML met Gegegevens definities Java classes en JSP paginas met basispatronen Aangepaste Java classes en JSP paginas In combinatie met MVC framework Implementatie: componenten Implementatie middel componenten en maatwerk. Standaard componenten: 1. formulierencomponent 2. rekencomponent 3. afsprakencomponent 4. integratiecomponent (met externe systemen) 5. autorisatiecomponent 6. rapportagecomponent 7. synchronisatiecomponent 8. content management systeem Klant 1 Klant 4 Klant 2 Klant 3 Implementatie per klant middels: 1. Parametriseren vd componenten 2. Subclassing vd component 3. Aanpassing Java classes en JSP templates 4. XSLT-sheets (interfaces en PDF) 5. Aanvullend maatwerk FDP workflow – verzekeringsmij Workflow bestaat uit: • Statussen • Informatiefuncties • Dimensies: • Reizen mee van status naar status • Bepalen of informatiefunctie uitgevoerd kan worden • Bepalen keuze in informatiefunctie mbt volgende status • Laten zien hoe een status is bereikt als er meerdere paden naar toe lopen Te verwerken • Deelacties • Diagram Invoerkanaal: Intranet/Extranet aanmaken aanvraag of mutatie aanmaken offerte In behandeling [acceptatieverwerking] verzenden in behandeling geven annuleren Ter beoordeling [acceptatieniveau] [gewijzigd] Niet verwerken [reden] afwijzen accepteren annuleren verwerken wijzigen wijzigen In behandeling [acceptatieverwerking] [verzoeksoort] omzetten offerte in aanvraag Ter beoordeling [acceptatieniveau] [gewijzigd] Verwerkt Aparte dimensies voor: - Acceptatieverwerking - Acceptatieniveau FDP workflow – extra per klant Extra invoerkanalen: • SOAP • Internet Invoerkanaal: Internet aanmaken aanvraag Ter beoordeling [acceptatieniveau] [gewijzigd] afwijzen accepteren Invoerkanaal: SOAP aanbieden ter accordering annuleren aanmaken aanvraag Ter accordering accorderen Te verwerken Ter beoordeling [acceptatieniveau] [gewijzigd] Niet verwerken [reden] Te verwerken afwijzen door consument Niet verwerken [reden] Implementatie: componenten Implementatie middel componenten en maatwerk. Standaard componenten: • Productdefinitiecomponent (gebaseerd op formulierencomponent) • Rekencomponent • Contractencomponent (gebaseerd op afsprakencomponent) • Integratiecomponent (koppeling met externe systemen) • Acceptatiesysteem • Workflowcomponent • Autorisatiecomponent • Rapportagecomponent • • • • • • • • Klant 1 Synchronisatiecomponent Intermediairadministratie Polisinzage en mutatie Polisadministratie Klantenadministratie Generieke Interface Manager (GIM) Server Back-office interface Content management systeem Klant 4 Klant 2 Klant 3 Implementatie per klant middels: 1. Parametriseren vd componenten 2. Subclassing vd component 3. Aanpassing Java classes en JSP templates 4. XSLT-sheets (interfaces en PDF) 5. Aanvullend maatwerk Agenda • • • • • • • • • Even voorstellen De toepassingen die wij bouwen De problematiek daarbij FDPs - onze aanpak FDPs - werkwijze FDPs - voorbeelden Case FDPs in onze projectfasering Hoe verder? Tijdafhankelijkheid • Een entiteit kan tijdafhankelijke gegevens bevatten. In dat geval moeten we: – op basis van datum de waarde kunnen bepalen, – historie bijhouden van gegevens • Voorbeelden: – – – – Premietabellen Producten en Prijzen Adresgegevens Polissen • Onderscheid tussen: – Stamgegevens – Productiegegevens FDP Tijdafhankelijkheid • Entiteit – Identificatie – Begin/Eindkoppelingsdatum • EntiteitInstanties – Tijdafhankelijke gegevens – Begin/Einddatum • Einddatums altijd ‘tot en met’ • Twee peildatums: – Koppelingspeildatum – Gegevenspeildatum Entity entityId externalIdentifier dateUseStart dateUseEnd <tijdonafh. data> EntityInst EntityInst entityId entityId entityInstId entityInstId dateStart dateStart dateEnd dateEnd <tijdafh. data> <tijdafh. data> FDP Tijdafhankelijkheid • Niet meer dan één instantie per datum geldig. • Geen directe referenties van buitenaf naar instanties. • 0dagen geldig als einddatum vóór begindatum. • Instanties niet aanpassen als ze gebruikt worden (obv gegevenspeildatum) • Instanties aanmaken op basis van hoogste instantie of geheel nieuwe instantie. FDP Tijdafhankelijkheid • Productiegegevens: PolisVersie 3 Polis 12345 2/12/2006 – PolisVersie 2 2/6/2006 – 1/12/2006 PolisVersie 1 1/1/2006 – 1/6/2006 FDP Tijdafhankelijkheid • Wijziging terugdraaien -> versie ongeldig maken PolisVersie 3 X Polis 12345 2/12/2006 – PolisVersie 2 2/6/2006 – PolisVersie 1 1/1/2006 – 1/6/2006 Agenda • • • • • • • • • Even voorstellen De toepassingen die wij bouwen De problematiek daarbij FDPs - onze aanpak FDPs - werkwijze FDPs - voorbeelden Case FDPs in onze projectfasering Hoe verder? Onze projectfasering • Projectmanagement met een duidelijke fasering: – Functioneel Ontwerp – Technisch Ontwerp en Realisatie – Acceptatietest – Invoering • Klant heeft remote (via Internet) toegang tot het systeem in wording Producten in de ontwerpfase Opstellen van de offerte voor ontwerpfase Opstellen van het requirements document (optioneel) Tijd Opstellen van het gegevensmodel Opstellen van de Informatiefuncties (Functionele beschrijving, Use-cases) - gebruik van FDPs - - gebruik van FDPs en UIPs - Opstellen van het Prototype -gebruik van UIPs - Opstellen van de offerte voor realisatiefase Technisch ontwerp • We hebben al technische ontwerppatronen voor de functionaliteit die uit een FDP voortkomt – technische documentatie bij de standaard componenten – technische documentatie bij de standaard constructies • We hebben al technische documentatie van het framework – technische documentatie van de superclasses , libraries, stylesheets etcetera – technische documentatie van de gegenereerde onderdelen • We maken dus alleen een technisch ontwerp voor de projectspecifieke uitzonderingen! Agenda • • • • • • • • • Even voorstellen De toepassingen die wij bouwen De problematiek daarbij FDPs - onze aanpak FDPs - werkwijze FDPs - voorbeelden Case FDPs in onze projectfasering Hoe verder? Verder met FDPs Functional Design Patterns (met name op aandachtsgebied) vormen de basis voor ons succes tot nu toe (100% geslaagde projecten). Wij zullen op steeds grotere schaal gebruik gaan maken van domein specifieke FDPs in complexe administratieve omgevingen. Vervolgstappen: • Uitwerken theorie – Literatuurstudie – Uitwisselen ervaringen met universiteiten/onderzoeksinstellingen • Uitwerken praktijk – Voorbereiden generieke patterns op basis van kennis van probleemgebieden – Harvesten binnen reeds uitgevoerde projecten • Stageplaatsen zijn hierbij een belangrijk middel. Vragen?