Capita Selecta Design Patterns voor administratieve applicaties Bij afstudeerproject: Generiek framework voor administratieve toepassingen in een webgeörienteerde omgeving
Henk van de Ridder 26 augustus 2006
Probleemgebied Oplossingsgebied Design Patterns .NET J2EE Ruby On Rails Conclusie
Inhoud
Probleemgebied Oplossingsgebied Design Patterns .NET J2EE Ruby On Rails Conclusie
26 aug 06
HvdR
2
Probleemgebied Oplossingsgebied Design Patterns .NET J2EE Ruby On Rails Conclusie
Bedrijfsomgeving Administratieve applicaties Dienstverlenend
Financieel systeem
50 – 250 medew.
XML/Service
Interne Gebruikers
GUI
Applicaties voor het Primaire bedrijfsproces
XML/Service
26 aug 06
Web Service
Technische HvdR Systemen
Klant
Brief Service Brief Web
Leverancier
3
Flexibiliteit Design for ‘Change’
Probleemgebied Oplossingsgebied Design Patterns .NET J2EE Ruby On Rails Conclusie
Verandering in bedrijf Nieuwe producten, nieuwe werkprocessen, nieuwe inzichten, …
Flexibiliteit in de applicatie Gegevensvelden / productspecificaties Workflow/taken vs. afdelingen/functies
Software Engineering Q: Maintainability, Flexibility, Reuseability D: “Manage Complexity” , “Change” 26 aug 06
HvdR
4
Probleemgebied Oplossingsgebied Design Patterns .NET J2EE Ruby On Rails Conclusie
Uitwerking
“Generiek framework voor administratieve toepassingen in een webgeörienteerde omgeving” Programmeertaal: PHP – Hypertext Processor Ontwikkelaar: http://www.zend.com/ Ondersteunt door: IBM, Oracle, .NET (Phalanger)
Frameworks Design Patterns Standaard structuur 4GL of programmageneratoren 26 aug 06
HvdR
5
Probleemgebied Oplossingsgebied Design Patterns .NET J2EE Ruby On Rails Conclusie
Aanpak Voorstudie Design Patterns Voorstudie XML en Webservices Literatuurstudie:
Patterns en Practices .NET, J2EE, OpenSource administratieve software, ERP systemen
Ontwerpen en Bouwen Prototype / voorbeeld applicatie 26 aug 06
HvdR
6
Design Patterns volgens GoF
Probleemgebied Oplossingsgebied Design Patterns .NET J2EE Ruby On Rails Conclusie
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 26 aug 06
HvdR
7
Probleemgebied Oplossingsgebied Design Patterns .NET J2EE Ruby On Rails Conclusie
Voorbeeld GoF Bridge / Adapter Afdruksyst.
Recordhand. Open() Schrijf() Print()
Print()
Recordhand. Open() Schrijf() Print()
Opslagsyst. Open() Schrijf()
Recordhand. Open() Schrijf() Print()
Design to Interfaces Favor composition over inheritance Find what varies and encapsulate Coupling and Cohesion it 26 aug 06
HvdR
RDBMS Open() Schrijf()
Sequentieel Open() Schrijf()
SQL server OPEN() INSERT()
Linuxbestand open() write()
8
Patterns volgens Fowler
Probleemgebied Oplossingsgebied Design Patterns .NET J2EE Ruby On Rails Conclusie
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 J2EE .NET 26 aug 06
HvdR
9
Probleemgebied Oplossingsgebied Design Patterns .NET J2EE Ruby On Rails Conclusie
Voorbeeld Fowler Table inheritance - Single - Concrete - Class
26 aug 06
HvdR
10
Probleemgebied Oplossingsgebied Design Patterns .NET J2EE Ruby On Rails Conclusie
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 26 aug 06
HvdR
11
Probleemgebied Oplossingsgebied Design Patterns .NET J2EE Ruby On Rails Conclusie
Microsoft .NET Specifiek
Editable datagrid Master – Detail Webservices !!! Visual Studio Veel wizards Veel code generatie
26 aug 06
HvdR
12
J2EE – Java, Sun Structuur
Probleemgebied Oplossingsgebied Design Patterns .NET J2EE Ruby On Rails Conclusie
Basis: Java everywhere Definitie applicatieserver eigenschappen Lagen: Client = Java en Web Business = applicatieserver EIS = Database, Connection, Webservice
26 aug 06
HvdR
13
Probleemgebied Oplossingsgebied Design Patterns .NET J2EE Ruby On Rails Conclusie
26 aug 06
HvdR
J2EE GoF Patterns - Composite - Adapter - Façade - Builder - Factory - Strategy - Decorator - Template - Interator 14
J2EE Java Sun Voorbeeld MVC + Patterns
26 aug 06
HvdR
Probleemgebied Oplossingsgebied Design Patterns .NET J2EE Ruby On Rails Conclusie
15
Probleemgebied Oplossingsgebied Design Patterns .NET J2EE Ruby On Rails Conclusie
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 ORM 26 aug 06
HvdR
16
Probleemgebied Oplossingsgebied Design Patterns .NET J2EE Ruby On Rails Conclusie
Frameworks Binnen PHP Ruby-On-Rails Zend Framework Symfony Biscuit Etc, etc
Overige Radicore Praktijk Role-bases access Workflow
PHP-MVC J2EE – Struts
26 aug 06
HvdR
17
Probleemgebied Oplossingsgebied Design Patterns .NET J2EE Ruby On Rails Conclusie
Conclusies Patterns&Practices MVC 3-Tier Façade, Adapter, ... Design for Change .NET ??? J2EE ??? RubyOnRails ??? 26 aug 06
Te onderzoeken J2EE Spring, Hibernate, Struts Aspect Oriented programming Object Relational Mapping Ingewikkeld XML of niet HvdR
18