Document

advertisement
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?
Download