Post on 14-Jan-2016
description
Functional Design Patterns
september 2006Universiteit Utrecht
Robert GuitinkJeroen 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
0
10
20
30
40
50
60
70
2000 2001 2002 2003 2004 2005
Per jaar
Aantal medewerkers
0
1
2
3
4
5
6
2000 2001 2002 2003 2004 2005
In miljoen euro per jaar
Omzet
Series1
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 IT-beslissingen. 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 hierbinneno Informatie(deel)functieso Gebruikersinteractiepatroneno 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
Functioneelontwerppatroon
Technischontwerppatroon
Programmatuur
Functioneelontwerppatroon
Technischontwerppatroon
Programmatuur
Functioneelontwerp
Technischontwerp
Programmatuur
Domein
Project
Aandachtsgebied1 2 3
4 5 6
7 8 9
a a a
b b b
c c c
Vastleggen van patronen
Domein:
Project:
Aandachtsgebied: Groeneontwerpboekjes
Blauweontwerpboekjes
Witteontwerpboekjes
Blijven internbinnen Quinity
Blijven internbinnen Quinity
Gaan externnaar de klant
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
Domein:
Project:
Aandachtsgebied:
Groene ontwerpboekjes
Blauwe ontwerpboekjes
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
Gegevensmodel in Visio
DDL(Data DefinitionLanguage)
XML metGegegevensdefinities
12 XSLT sheetsvoor o.a. lijstschermen en detailschermen
Code generatie voor voorgaande patronen op aandachtsgebied vindt plaats op basis van datamodel.
Java classes en JSP paginasmet basispatronen
Aangepaste Java classes en JSP paginas
Database In combinatie met MVC framework
Implementatie: componenten
Klant 1
Standaard componenten:1. formulierencomponent2. rekencomponent3. afsprakencomponent4. integratiecomponent (met externe systemen)5. autorisatiecomponent6. rapportagecomponent7. synchronisatiecomponent8. content management systeem
Implementatie middel componenten en maatwerk.
Implementatie per klant middels:1. Parametriseren vd componenten2. Subclassing vd component3. Aanpassing Java classes en JSP
templates4. XSLT-sheets (interfaces en PDF)5. Aanvullend maatwerkKlant 2 Klant 3
Klant 4
FDP workflow – verzekeringsmijInvoerkanaal:
Intranet/Extranet
inbehandeling
geven
afwijzen
accepteren
verwerken
Verwerkt
verzenden
Te verwerkenTer beoordeling[acceptatieniveau]
[gewijzigd]
In behandeling[acceptatieverwerking]
Niet verwerken[reden]
annuleren
aanmakenaanvraag of
mutatieaanmaken offerte
annuleren
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
• Deelacties• Diagram
Ter beoordeling[acceptatieniveau]
[gewijzigd]
In behandeling[acceptatieverwerking]
[verzoeksoort]
wijzigen wijzigen
omzettenofferte inaanvraag
Aparte dimensies voor:
- Acceptatieverwerking
- Acceptatieniveau
FDP workflow – extra per klantExtra invoerkanalen:• SOAP• Internet
Ter accordering
aanbiedenter
accordering
afwijzendoor
consumentaccorderen
Niet verwerken[reden]
Invoerkanaal:Internet
aanmakenaanvraag
Ter beoordeling[acceptatieniveau]
[gewijzigd]
Te verwerken
afwijzen
annuleren
accepterenInvoerkanaal:
SOAP
Niet verwerken[reden]
Te verwerken
aanmakenaanvraag
Ter beoordeling[acceptatieniveau]
[gewijzigd]
Implementatie: componenten
Klant 1
Standaard componenten:• Productdefinitiecomponent
(gebaseerd op formulierencomponent)• Rekencomponent• Contractencomponent
(gebaseerd op afsprakencomponent)• Integratiecomponent
(koppeling met externe systemen)• Acceptatiesysteem• Workflowcomponent• Autorisatiecomponent• Rapportagecomponent
Implementatie middel componenten en maatwerk.
Implementatie per klant middels:1. Parametriseren vd componenten2. Subclassing vd component3. Aanpassing Java classes en JSP
templates4. XSLT-sheets (interfaces en PDF)5. Aanvullend maatwerk
Klant 2 Klant 3
Klant 4
• Synchronisatiecomponent• Intermediairadministratie• Polisinzage en mutatie• Polisadministratie• Klantenadministratie• Generieke Interface Manager
(GIM) Server• Back-office interface• Content management systeem
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
EntityentityIdexternalIdentifierdateUseStartdateUseEnd<tijdonafh. data>
EntityInstentityIdentityInstIddateStartdateEnd<tijdafh. data>
EntityInstentityIdentityInstIddateStartdateEnd<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:
Polis12345
PolisVersie 11/1/2006 – 1/6/2006
PolisVersie 2 2/6/2006 – 1/12/2006
PolisVersie 32/12/2006 –
FDP Tijdafhankelijkheid• Wijziging terugdraaien
-> versie ongeldig maken
Polis12345
PolisVersie 11/1/2006 – 1/6/2006
PolisVersie 2 2/6/2006 –
PolisVersie 3 X2/12/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 ontwerpfaseOpstellen van de offerte voor ontwerpfase
Opstellen van het requirements document (optioneel)
Opstellen van de offerte voor realisatiefase
Opstellen van deInformatiefuncties
(Functionele beschrijving,Use-cases)
- gebruik van FDPs en UIPs -
Opstellen van hetgegevensmodel
- gebruik van FDPs -Opstellen van het
Prototype
-gebruik van UIPs -
Tij
d
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 FDPsFunctional 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?