MODEL GEDREVEN ONTWIKKELEN bij CENTRIC
Edwig Huisman Corné Versteegh 4 juni 2009
MODEL DRIVEN EXPERIENCE 2009
Eerst even kennismaken... Edwig Huisman ∟ …Technisch Product Manager: Woningcorporaties
Corné Versteegh ∟ ...Software Architect : Werk Inkomen Zorg
CENTRIC ∟ ..de grootste niet-beursgenoteerde IT organisatie van Nederland
In het nieuws
Kerncijfers II: aantal medewerkers (gem.) 8000 7000 6000 5000 4000 3000 2000 1000 0 93 94 95 96 97 98 99 00 01 02 03 04 05 06 07 ICT Dienstverlening
totale Centric-organisatie
Een aantal strategische branches Lokale en centrale overheid / WIZ Financiële dienstverlening Woningcorporaties/commercieel vastgoed Groothandel Retail Reiswereld Zorg Techniek
Centric-vestigingen Centric is actief in: ∟ Benelux ∟ Duitsland ∟ Noorwegen ∟ Roemenië ∟ Verenigd Koninkrijk ∟ Zweden ∟ Zwitserland
Programma Wie / Wat is Centric (zie hiervoor) M_twize : Hoe werkt dat
BRE4all : Hoe werkt dat Ervaringen met model gedreven ontwikkelen
Waarom 2 MDA omgevingen bij Centric Historisch gegroeid ∟ BRE4all / WOCAS4all kwam van “Kramers Automatisering” ∟ m_twize uit de “Gemeentelijke Overheid” tak (CIOB, Siemens Nixdorf)
Binnen Centric bestaat een grote autonomie van onderdelen M_twize is begonnen als standaardisatie project voor GWS4all
M_TWIZE
<m_twize> Twee keer M: Model en Module < >: XML, XSLT WIZ: Werk inkomen en Zorg
GWS4all Geïntegreerd Welzijns Systeem In gebruik bij een kleine 350 Sociale Diensten Voor het grootste deel geschreven in Uniface (4GL) Ontwikkeling begonnen in 1989 (als SDMS) ∟ 20 modules ∟ ongeveer 1400 entiteiten ∟ meer dan 6300 componenten
Na 15 jaar doorontwikkelen: Organische (maar soms stormachtige) ontwikkeling, zonder strakke standaarden en richtlijnen Verschillende ontwikkelstijlen en „cultuurlagen‟ Slecht gedocumenteerd Steeds moeilijker te onderhouden
ZO KAN HET NIET LANGER!!!
Doel: Opnieuw bouwen van de onderhoudsschermen uit GWS4all Op een gestructureerde manier
Met een consequente, moderne gebruikersinterface
Middel: Een functioneel model ∟ Zo declaratief mogelijk
Transformaties ∟ van model naar code ∟ van model naar documentatie en rapportages
Een generieke machine ∟ waarbinnen de gegenereerde code kan draaien
Model Model beschrijving beschrijving
De m_twize-flow
Model repository (XML)
Technische documentatie
Functionele documentatie
Uniface Model
(datamodel en business rules)
.NET Object-model
Generieke code
Componenten Componenten
Uniface componenten
Grotendeels genereren
ASPX.NET
Het ontwikkelproces Modelleren Parsen van model Codegeneratie op basis van model Painten Uniface-schermen Programmeren resterende code (5%)
Assemblage: Samenvoegen van alle onderdelen
Het m_twize-model Twee hoofdaanzichten: ∟ Gegevensmodel & Bedrijfslogica
∟ Gebruikersinterface & Programmasturing
Model: Een willekeurige validatie
Module: een willekeurig deelscherm
Het eindresultaat:
Toekomst Generatie van een ASPX.NET front-end in de nieuwe Centric stijl Op de langere termijn: generatie van bedrijfslogica in .NET Research: project Oslo
GWS4all in de nieuwe Centric stijl
BRE4all
BRE4all BRE4all : Business Rules Editor 4all : Omdat alle strategische producten van Centric “4all” heten WOCAS4all : WOningCorporatie Adminstratie Systeem
De omvang van WOCAS4all Iedereen verkijkt zich op de omvang (net China) WOCO functionaliteit is 10.000+ aan functiepunten Vele integraties met pakketten van andere ISV‟s ∟ 90+ koppelingen
Bestrijkt drie niet overlappende vakgebieden ∟ Aannemerij ∟ Verhuur ∟ Financiële administratie
BRE4all
Meta-Model
PRONTO
WOCAS4all
Model PRONTO
Data Database
Abstractie van het model METAMODEL BRE4all
SCHERM
PARAMETER
CONCEPT
RETURN
SCHERM SC
BEPERKING
VERVOLG KEUZE
HOOFD SCHERM
INFO VENSTER METHODE
QUERY
DEEL SCHERM
MUTATIE
FRAME
LIJST
BP
TABLAD
GBP
VRIJ
EVENT BEPERKINGSDEEL
SCHERMONDERDEEL SO
BPD
VELD EIGEN SCHAP
VELD
INFO
TEXT
KNOP
VERW
SELECTIE
EXPRESSIE
DEEL SCHERM
MEMO
OLE/OCX
WAARDE
Alle aspecten van een applicatie worden ondersteund
Datamodellering Interfaces (vensters) Business logica Server functies Rapportages Brieven Taakverwerker Autorisatie Externe interfacing
Historische opslag 2D (D)Com en Active/X Gemodelleerde legacy conversie Koppelingen SOAP-XML Webservices Versiebeheer Releases, patches
Efficiency van het model Géén screen painter = Veel snelheidswinst Programmeren in het Nederlands met Nederlandse commando‟s TO (Technisch Ontwerp) wordt gegenereerd in HTML / CHM Rapportages en impact analyses lopen via het model
Alle applicatie functionaliteit is er in opgeslagen HET MODEL = DE APPLICATIE
Toekomst van BRE4all Twee Hoofddoelen: 1) Eigen programmeertaal aanvullen met C# scripting ∟ Sluit meer aan bij de „CV‟-drang van menig programmeur
2) Een AJAX enabled WEB interface ∟ Sluit aan bij de nieuwe Centric Styleguide voor applicaties
GEDEELDE ERVARINGEN
MDA : Het voordeel van een model Hier trekken we conclusies uit de vergelijking van m_twize en BRE4all op basis van de MDA ervaringen Voordelen Nadelen Doorlooptijden Verschillen en overeenkomsten
Vergelijking BRE4all en m_twize Aspect
BRE4all
m_twize
Begonnen in
1995
2005
Eerste toepassing
WOCAS4all
GWS4all
Soort bouw
Nieuwbouw
Vernieuwing
Beslaat gehele pakket
Ja
Nee
Verdere toepassingen
LEASE4all, ITIL4all
Nog niet
Taal v.h. model
5 GL
Functioneel model
Onderhoud model
BRE4all IDE
Gestandaardiseerde Word-documenten
Opslag model
Database
XML
Runnen/Codegeneratie
Runnen
Codegeneratie
Gebruikte technieken
C++ / ODBC
Xslt, Uniface, .NET
VOORDELEN Snelheidswinst ∟ BRE4all: 2 a 4 uur per FPA ∟ M_twize: niet gemeten, maar wel bewezen
Betrouwbaarheid ∟ M_twize: Door structuur is code overal gelijk ∟ BRE4all: Er is maar één stuk code (Pronto)
Beheersbaarheid ∟ BRE4all en m_twize: Vrijheidsgraden zijn sterk afgenomen ∟ BRE4all en m_twize: Alles heeft dezelfde structuur
NADELEN Eigen tools kosten tijd en geld Er onstaat een tweede productielijn binnen de organisatie Investeringen in het tool worden als een last op het commerciële product gezien en moeten daarom daarop terugverdiend worden Rigiditeit wordt soms/vaak als een belemmering gezien Niet alle klant wensen zijn in te willigen Klantwensen moeten 2 versies vooruit ingepland worden
DOORLOOPTIJDEN De totale doorlooptijd van een ontwikkeltraject van een onderdeel van de applicatie is afgenomen door de grotere controle op de structuur. De voorspelbaarheid is toegenomen. Daardoor is een betere releaseplanning vooraf af te geven. (SLA „s!) Let op: Doorlooptijden kunnen dus verhoogd worden als een ontwikkeling de generator „raakt‟!
DOORLOOPTIJDEN (2) Scheiding van functionaliteit en techniek: Applicatie programmeurs kunnen /moeten zich geheel en al toeleggen op de te bouwen functionaliteit (applicatie logica voor de business) Uitstapjes naar de techniek zijn voorbehouden aan de mensen die de ontwikkelstraat onderhouden. (4 ½ bij BRE4all / 2 bij m_twize)
Nog een paar praktische voordelen Rapportage over het model zijn mogelijk Impact analyse a.d.h.v. het model is mogelijk Generatie van een TO is mogelijk BRE4all: Eventuele (zeer) grote aanpassingen toch doorvoerbaar door centralisatie van generieke functionaliteit. ∟ Overgang naar andere database (Informix -> Oracle) ∟ Single – multi company overgang
Lessons learned M_twize is gebouwd „Met de winkel open‟ , WOCAS4alll / BRE4all is als R&D omgeving gebouwd, zonder directe commerciële binding. Investering bij BRE4all is derhalve ook groter geweest. Voor beide omgevingen geldt dat de „cost gaet voor den baet‟ . Oftewel: de ontwikkel omgeving moet voorlopen en er moet geld in gestopt worden om later hiermee applicaties te kunnen bouwen die aan de klanteisen voldoen. Intern moeten mensen bewust gemaakt worden van het feit dat bij wensen en eisen die niet direct in de generator structuur passen er minimaal 2 versies overheen gaan voordat een nieuwe feature uitleverbaar wordt. Opleiding van nieuwe medewerkers moet altijd intern geregeld worden. Medwerkers kunnen niet van een uitzendbureau betrokken worden. Kosten hiervan zijn ook niet laag. Oplossen van tijdelijke pieken in de productiecapaciteit kan dus ook niet altijd met inhuur geregeld worden.
Wanneer met MDA te beginnen? De wil tot investeren in tools Breed gedragen binnen de gehele organisatie
Bereidheid om het ontwikkelproces er op in te richten Nadruk op kwaliteit die het oplevert boven flexibiliteit
MODEL GEDREVEN ONTWIKKELEN BIJ CENTRIC
Als u vragen heeft, kunt u ze nu stellen.
[email protected] [email protected]