Generiek framework voor administratieve toepassingen in een webgeörienteerde omgeving
Henk van de Ridder Stand van zaken 3 november 2007
Inhoud
Aanleiding Design Patterns XML en Webservices Keuze administratief framework Keuze technisch framework Hoe nu verder
3 nov 07
HvdR
2
Bedrijfsomgeving Administratieve applicaties Dienstverlenend 50 – 250 medew.
XML/Service
Interne Gebruikers
GUI Info
Te specifiek voor ERP 3 nov 07
Samengestelde producten
Financieel systeem
Web Service
Applicaties voor het Primaire bedrijfsproces
XML/Service Technische HvdR Systemen
Klant
Brief Service Brief Web
Leverancier
3
Flexibiliteit Design for ‘Change’
Parnas ‘78
Verandering in bedrijf Nieuwe producten Nieuwe werkprocessen Nieuwe regels
Flexibiliteit in de applicatie 3 nov 07
Gegevensstructuur Functionaliteit (User)interface Workflow HvdR
4
Oplossingsgebied – Software design Oplossing Hergebruik
?? 5 GL ??
3GL: Functie bibliotheken 4GL: Generatoren / Parametriseren
Oplossing Patterns en Practices Herhaalbare standaard oplossingen
Oplossing Generiek programmeren functie die identiek werkt op ‘alle’ datatypen De uitzondering programmeren Adaptief: gericht op verandering 3 nov 07
HvdR
5
Aanpak Capita Selecta: [Design] Patterns Wat is de basis voor het framework ?
Capita Selecta: XML en Webservices Wat moet er hiervan in het framework komen ?
Literatuurstudie: administratieve software, ERP systemen Workflow, O/R mapping, User Interfaces Patterns, Practices, Frameworks
Ontwerpen en Bouwen Prototype / voorbeeld applicatie 3 nov 07
HvdR
6
Capita selecta 1
Design Patterns Literatuur o.a.: - Design patterns (Gamma, etc) - Patterns of enterprise applications (Fowler) - Tutorials en manuals van .NET / J2EE / Ruby on rails 3 nov 07
HvdR
7
Design Patterns volgens GoF 1994: 23 design patterns Creational: hoe aanmaken objecten Structural: samenstelling van classes Behavioral: interactie en taakverdeling
Voor objectgeörienteerde software Basisgedachten Design to Interfaces Favor composition over inheritance Find what varies and encapsulate it 3 nov 07
HvdR
8
Patterns volgens Fowler 2002: 51 Enterprise Patterns
Layer enterprise application Organize domain logic Tie object to relatonal database Web based presentation
Voor enterprise applications (ERP..) Gebaseerd op praktijk in .NET (microsoft ontwikkelomgeving) J2EE (java enterprise ontwikkelingen) 3 nov 07
HvdR
9
Microsoft .NET Structuur Basis: CLR (taalonafh.) XML (XSD, SOAP) ADO.NET ASP.NET Lagen en Patterns: Client (MVC, Intern.) Business (Façade, Event) Data (Adapter) Systeemservices 3 nov 07
HvdR
10
3 nov 07
HvdR
J2EE GoF Patterns - Composite - Adapter - Façade - Builder - Factory - Strategy - Decorator - Template - Interator 11
Ruby On Rails Structuur Basis KIS(S)
Keep it Simple (S…) Less software Convention over configur.
DRY
Don’t Repeat Yourself Single definition (DataBase) Scaffolding - CRUD
Oplossing View – Controller – Model Object Relational Mapping 3 nov 07
HvdR
12
Conclusies Patterns&Practices MVC 3-Tier Façade, Adapter, ... Design for Change .NET ??? J2EE ??? RubyOnRails ??? 3 nov 07
Te onderzoeken J2EE Spring, Hibernate, Struts Aspect Oriented programming Object Relational Mapping Ingewikkeld XML of niet HvdR
13
Capita selecta 2
XML en Webservices Literatuur: - Service Oriented architecture (Erl) - Manuals/Tutorials Microsoft
3 nov 07
HvdR
14
Webservices Basis oplossing Processen: - Administratieve handelingen - Workflow
Servicebus: - Adapter, Façade - Berichtenuitwisseling
Services: - (Bestaande) applicaties - Functies en Data
3 nov 07
HvdR
15
Webservices standaards / protocollen
BPEL – electronic business framework
WSDL – service description
Service-aanroep: de ‘verpakking’ waarmee een functie van een service aangeroepen kan worden.
Service: Parameter en/of resultaat
Service-definitie: met welke functies, parameters en resultaatwaarde de service aangeroepen kan worden
SOAP – standard protocol
Workflow-definitie: welke services wanneer aanroepen
Meestal een compleet formulier in XML formaat, gedefinieerd met behulp van een XSD: XML - Schema
XML – XSD
3 nov 07
Basisformaat HvdR
16
Concusie: plaats van Webservices in het afstudeerframework Alleen voor koppelingen met andere interne en externe applicaties Leverancier-rol: invoerformulieren beschikbaar als service (in WSDL) Klant-rol: uitvoerformulieren genereren op basis van service-definitie (in WSDL) Administratie-rol: belastingaangiften, accountant-informatie, CPB-enquetes, nog te onderzoeken 3 nov 07
HvdR
17
Afstudeerwerk
Literatuurstudies Literatuur - Wetenschappelijke publicaties - Model driven design (Hruby) - Handleidingen / manuals van software pakketten 3 nov 07
HvdR
18
Literatuur studie 1 administratieve systemen Te bepalen wat is er generiek in bestaande oplossingen wat zijn practices, werkwijzen wat zijn eisen: administratieve organisatie
Onderscheid Niet-functioneel: Security, Logging, Menu, Printing, handleiding…
Functioneel: Invoer – Verwerking – Uitvoer Gegevens en Proces 3 nov 07
HvdR
19
McCarty 1982 Geerts 2000 Hruby 2004
Administratieve basis REA structuur model partij
Vandenbossche Verdaasdonk
Group
Contract
Type
Clausule particip.
Toezegging
reservering
Rules
fullfillment Agent
particip.
Event
Schedule
mutatie
Linkage Resource
Responsibility Custody
verantw. 3 nov 07
dualiteit
samenhang HvdR
20
Hruby
REA Structuur = ‘vast’ Definitie van generieke oplossingen die d.m.v. configuratie toegewezen worden op onderdelen van het basismodel (Aspect Oriented Programming)
Gedrag = Aspecten = ‘variabel’
3 nov 07
HvdR
21
Administratieve systemen architectuur
3 nov 07
HvdR
TU-Twente
Archimate
22
Administratieve systemen basisfuncties Administratieve software Menu, autorisatie, data-controle Workflow, taak-Interactieschermen, geagendeerde (long-tem) processen GUI: n-records lijst / 1-record CRUD Zoeken, (management-)rapportage Externe koppelingen: webservices, EDI Output: brief, email, etc. ?? XML ?? 3 nov 07
HvdR
23
Literatuurstudie 2 Software engineering – technieken Model Driven Development Het model levert de code Generatoren, Metaprogramming
Aspect, Subject Oriented Programming Functioneel / Verwerking / Security
Domain Driven Development Het domein bepaalt het applicatiekader
Configuration Driven Development Ontwikkelen = configureren (ERP implementeren = parameteriseren) 3 nov 07
HvdR
24
Model Driven Development CIM --- PIM --- PSM CIM
Computer independent model
In tekstvorm Eisen / wensen Bedrijf / structuur
PIM
Platform independent model
UML: statisch, dynamisc OCL: constraints ASL: semantiek / actions
handmatig
Extra info
tool
PSM
3 nov 07
Veel onderzoek naar deze tools Platform Specific model
Programma Code Interfaces Configuratiebestanden HvdR
25
Literatuurstudie 3 Bestaande frameworks .NET / J2EE (n)Hibernate (ORM), Struts (MVC) Apache: Cocoon, Velocity, Spring, … Eclipse: Modelling, Open architecture, …
PHP MVC-based: Radicore, … RubyOnRails implem.: Symfony, … ModelDriven: Metal, … 3 nov 07
HvdR
26
Bestaande Frameworks oude ‘tegenstelling’ data vs proces Bestaande frameworks veelal datagericht Nadelen: omslachtig gegevensbeheer geen procesondersteuning Structuur -Business Object -Gegevensgericht -Datamodel -Entiteit -Statisch
3 nov 07
Gedrag -Functionaliteit -Procesgericht -Workflow -Aspect -Dynamisch
HvdR
27
Selectie basis framework Moderne ontwikkelomgevingen Microsoft .NET omgeving => ‘wizards/generatoren’ Java / J2EE applicatieservers => ‘complexiteit’ “Ruby-on-Rails” => ‘bruikbaar’
Essentiele Patterns
Fowler MVC (Model View Controller) => Web GUI ORM (Object Relation Mapping) => Relationele database
Overige eisen Programmeertaal: PHP Open-source resp. Open-for-change Mature (volwassen en professioneel) 3 nov 07
HvdR
28
Selectie PHP basis framework Meer dan 40 frameworks beschikbaar Short list:
Zend framework (van de makers van PHP) Radicore (Workflow, XML/XSLT) CakePHP (Ruby on Rails in PHP) Symfony (Ruby on Rails ++ in PHP)
Keuze voor: Symfony mature (9 jaar, uitstekende documentatie) Veel basis functionaliteit MIT-licentie => dus commercieel inzetbaar
3 nov 07
HvdR
29
Symfony Web PHP Framework Fowler
Basis
MVC (GUI en Batch) en ORM PHP5, Object geörienteerd
Professioneel
Internationalisatie en localisatie Database onafhankelijk Instelbare caching (productie omgeving)
Gebruikersvriendelijk
GUI en Ajax interfaces
490 pag’s
Ontwikkelaar- vriendelijk 3 nov 07
Omgevingen (Ontwikkeling, Test, Productie) Code management (via Subversion) Uitbreidbaar (op diverse niveuaus) HvdR
30
Project Applicatie Module Controller
ORM 3 nov 07
Routing (URL) Filters Security Sessiebeheer
View
Functies Form beheer Valisaties Javascript + Ajax
Model
Data-schema geen directe SQL Internationalizat. Generators HvdR
Actie
Scafffolding => basis Administration 31 => module
Afstudeerwerk
Hoe nu verder
3 nov 07
HvdR
32
REA afbeelden op Symfony REA-structuur model Herkenning Resource, Event, Agent Basisfunctionaliteiten, bijv. dualiteit => openstaand
Gedrags-aspecten
Hruby
Aspecten: data-elementen en functionaliteit afbeelden op Resources, Events en Agents
Workflow
Van der Aalst
Activity-based (zie radicore framework)
Standaardfunctionaliteiten: menu-systeem (inclusief authorisatie) output-systeem(pdf, printing, mail-merge) Koppelingen Web- / SOA-services (WSDL, etc) 3 nov 07
HvdR
33
REA – model maken Het analyseren van het administratieve proces van het dienstverlenende bedrijf Het bepalen van de REA-entiteiten en REA-aspecten nodig voor dit administratieve proces
3 nov 07
HvdR
34
Symfony aanpassen Programmeren van extra modelleringsmogelijkheden binnen of boven het Symfony model Programmeren van de standaard REA functionaliteiten (bijv dualiteit) Programmeren van de voor het administratieve proces relevante aspectfunctionaliteit 3 nov 07
HvdR
35
En natuurlijk… Eindverslag met de hoofdstukken:
3 nov 07
Opdrachtbeschrijving Keuze administratieve basis (REA) Keuze basis framework Ontwerp administratief model Ontwerp/aanpassing in het framework Conclusies
HvdR
36