Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

44
Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders Your Partner In eBusiness Solution Delivery

description

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? - PowerPoint PPT Presentation

Transcript of Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

Page 1: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

Functional Design Patterns

september 2006Universiteit Utrecht

Robert GuitinkJeroen Snijders

Your Partner In eBusiness Solution Delivery

Page 2: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

Welkom• Van harte welkom• Voorstellen• Functional Design Patterns• Ervaring met FO, TO, Frameworks, Java, J2EE?• Vragen en opmerkingen tussen oor zijn welkom

Page 3: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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?

Page 4: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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?

Page 5: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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

Page 6: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

Cijfers / Resultaten• Omzet 2005: > Euro 5.000.000

• Meer dan 70 klanten

• Maliebaan, Utrecht

Page 7: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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.

Page 8: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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

Page 9: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

Deel van onze klanten

                                                                            

Page 10: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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?

Page 11: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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

Page 12: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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?

Page 13: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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

Page 14: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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

Page 15: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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)

Page 16: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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?

Page 17: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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?

Page 18: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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

Page 19: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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?

Page 20: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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.

Page 21: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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

Page 22: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

Vastleggen van patronen

Domein:

Project:

Aandachtsgebied: Groeneontwerpboekjes

Blauweontwerpboekjes

Witteontwerpboekjes

Blijven internbinnen Quinity

Blijven internbinnen Quinity

Gaan externnaar de klant

Page 23: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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!

Page 24: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

Ontwerppatronen• Performancepatronen: beschrijven een bepaald

performance aspect op een zodanige manier dat dit aspect over meerdere projecten hergebruikt kan worden.

Page 25: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

Vastleggen van patronen

Domein:

Project:

Aandachtsgebied:

Groene ontwerpboekjes

Blauwe ontwerpboekjes

Witte ontwerpboekjes

Rode ontwerpboekjes

Page 26: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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?

Page 27: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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

Page 28: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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

Page 29: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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

Page 30: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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]

Page 31: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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

Page 32: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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?

Page 33: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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

Page 34: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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>

Page 35: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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.

Page 36: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

FDP Tijdafhankelijkheid• Productiegegevens:

Polis12345

PolisVersie 11/1/2006 – 1/6/2006

PolisVersie 2 2/6/2006 – 1/12/2006

PolisVersie 32/12/2006 –

Page 37: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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 –

Page 38: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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?

Page 39: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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

Page 40: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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

Page 41: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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!

Page 42: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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?

Page 43: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

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.

Page 44: Functional Design Patterns september 2006 Universiteit Utrecht Robert Guitink Jeroen Snijders

Vragen?