Inhoud. Gelaagde Architecturen (4): Voorbeelden. Gelaagde Architecturen (4): Voorbeelden



Vergelijkbare documenten
Methods. Meer inzicht in een gelaagde architectuur. Het bepalen van het fysieke lagenmodel is een. Deel 3: Ontwerpen van een fysiek lagenmodel

Capita Selecta Design Patterns voor administratieve applicaties

Technisch ontwerp. Projectteam 6. Project "Web Essentials" 02 april Versie 2.1.0

Gebruik van cryptografie voor veilige jquery/rest webapplicaties. Frans van Buul Inter Access

Meer inzicht in een gelaagde architectuur

HDN DARTS WEB AUTHENTICATIE

Verantwoording van het Logica In Lagen referentiemodel

INFITT01 - Internettechnologie WEEK 8

Technisch Ontwerp W e b s i t e W O S I

De architect: in spagaat tussen mensen en technische details. Illustratie met een simpel voorbeeld

Technologie en Interactie 3.2: software architectuur

Object Oriented Programming

icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous

Dit voorbeeldproject beschrijft het gebruik van web services (open standaarden) voor de ontsluiting van kernregistraties bij de gemeente Den Haag.

Generiek framework voor administratieve toepassingen in een webgeörienteerde omgeving

Samengaan van Geo-informatie en Service Oriëntatie

Sparse columns in SQL server 2008

CEL. Bouwstenen voor een elektronische leeromgeving

Exercise assistant on-line

Een suite van web applicaties om geografische informatie in de organisatie te presenteren

emaxx Systeem eisen ManagementPortaal voor de ZakenMagazijn database

Responsive web applicaties op Oracle

Databases - Inleiding

Technisch Ontwerp VISSIM-PPA Koppeling

Kennis na het volgen van de training. Na het volgen van deze training bent u in staat:

Technisch ontwerp. Projectteam 6. Project "Web Essentials" 05 juni Versie 3.8.0

Applicatie-Architecturen

NHibernate als ORM oplossing

Portability, Interoperability of toch maar Connectivity Portability, Interoperability of toch maar Connectivity.

Oracle Application Server Portal Oracle Gebruikersgroep Holland Oktober 2003

Opdrachtformulering (pagina 3 van 7)

Applicatie-Architecturen

Inhoudsopgave. Hoofdstuk 1.Inleiding...3

Project plan. Erwin Hannaart Sander Tegelaar

Je gaat nu een Zend-Project maken in de map C:/wamp/www (de document root van de webserver) met behulp van Zend Tool..

TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise

Technisch ontwerp. Projectteam 6. Project "Web Essentials" 11 maart Versie 1.1.0

Software Design Document

Maximo Tips and Tricks

Stappenplannen MailPlus SOAP API

Copyright IBS Nieuwbouw. Vereenvoudigd en versnelt Java ontwikkeling. Huub Cleutjens

INHOUDSOPGAVE Het Boekenwinkeltje Registreer.aspx Opgaven... 97

Software Test Plan. Yannick Verschueren

DATAMODELLERING CRUD MATRIX

BRP-BZM Use Case Realisations Guidelines

Zelftest Java EE Architectuur

Onder de motorkap van Microsoft Azure Web Sites. Eelco Koster Software architect ORDINA

TECHNICAL DESIGN DOCUMENT

APEX en JasperReports

Is APEX a worthy substitute for Oracle Forms?

Kennissessie INSPIRE. Algemene vereisten & architectuur Metadata View Services Download Services Ondersteuning vanuit Geonovum.

Java op het Oracle 9i platform

SMART-Microsoft Software Factory

Enterprise. RESTful Webservices. serieus alternatief voor SOAP?

Gimme Five! Op weg naar TYPO3 5.0 'Phoenix'

A.C. Gijssen. 0.3 PHP en MySQL

GeoKey en Catalog Services

Software Factories. Toepassing van Domain Specific Languages. achtergrond

Technische architectuur Beschrijving

UML is een visuele taal om processen, software en systemen te kunnen modeleren.

i ll take off to the cloud

Cursus Software Architecture (T32311 en T32811)

Uitleg algemene structuur WTell

Auteur Arjaan den Ouden Datum 4 december 2013 Status Definitief Versie 1.0

Delft-FEWS & Web Services

Les 2 Eenvoudige queries

Toepassingen van webservices. Hans Janssen, SaNS-Expertisecentrum

Zope. Een technische introductie. Martijn Pieters Antraciet BV V september 1999

Weblogic 10.3 vs IAS

Naam project Lost And Found Animals Lokaal gehost Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50%

Cursus Analyse voor Web Applicaties 1. Webdesign / Web Programmeren Analyse voor web applicaties SDM methode + Basis UML

Koppeling met een database

Kies File>New>Blank Page>PHP. Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site

Technische implementatie De infrastructuur rondom Transit kent de volgende rollen:

Vraag 1. Vraag 1a TERUGKOPPELING PROEFTENTAMEN. Software architecture

Inhoud. Introductie tot de cursus

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

Generiek framework voor administratieve toepassingen in een webgeörienteerde omgeving

B.Sc. Informatica Module 4: Data & Informatie

..over. Geoportalen. en: Interoperabiliteit, Open Standaarden en WebService Architecturen. Presentatie GIN 17 november 2004 Theo Thewessen Geodan IT

2BA Deeplink Gebruiksbeschrijving

Ontsluiten iprova via Internet Voorbeeld methoden

XAMPP Web Development omgeving opzetten onder Windows.

SOA Security. en de rol van de auditor... ISACA Roundtable 2 juni Arthur Donkers, 1Secure BV arthur@1secure.nl

Technologieverkenning

ECTS fiche. Module info. Evaluatie. Gespreide evaluatie OPLEIDING. Handelswetenschappen en bedrijfskunde HBO Informatica

Hoe bouw ik een component? Drs. Arjan Burger

Program overview. Year 2013/2014 Electrical Engineering, Mathematics and Computer Science

Zelftest OOAD/UML. Document: N0767Test.fm 30/08/2010. ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium

Vergelijking Oracle certificering voor Java en het CPP Gecertificeerd Javaprogrammeur van de Open Universiteit

Base24 database suite

Aansluiten op VPI. (VolmachtBeheer Producten Interface)

Whitepaper. Connected Android Apps. Inleiding

Transcriptie:

Gelaagde Architecturen (4): Voorbeelden Voorbeelden bij de artikelen Gelaagde architecturen -3 van Leo Pruijt en Wiebe Wiersema, Hogeschool Utrecht. De artikelen beschrijven het Logica In Lagen -referentiemodel en de stappen om tot een Logisch en Fysiek Lagenmodel te komen. De artikelen zijn gepubliceerd in Release - Vakblad voor de Software Architect, vanaf december 200. En in Optimize Onafhankelijk vakblad voor de Oracle professional, vanaf februari 20. Inhoud. CASUS: AANWEZIGHEIDSREGISTRATIESYSTEEM... 2 2. LOGISCH LAGENMODEL... 3 STAP : BEPAAL DE KWALITEITSDOELEN... 3 STAP 2: ONDERKEN LOGISCHE LAGEN... 4 STAP 3: BEPAAL DE COMMUNICATIEREGELS TUSSEN DE LAGEN... 5 STAP 4: TOETS DE GESCHIKTHEID VAN HET LAGENMODEL... 6 STAP 5: DOCUMENTEER HET LAGENMODEL... 7 3. FYSIEK LAGENMODEL: PHP IMPLEMENTATIE... 8 STAP 6: EVALUEER DE KWALITEITSDOELEN EN KIES DE TECHNOLOGIE... 8 STAP 7: ONDERKEN EN ONTWERP DE FYSIEKE LAGEN... 9 STAP 8: ONTWERP DE COMMUNICATIE TUSSEN DE LAGEN... 0 STAP 9: TOETS DE GESCHIKTHEID VAN HET LAGENMODEL... STAP 0: DOCUMENTEER HET LAGENMODEL... 4. FYSIEKLAGENMODEL: RUBY ON RAILS IMPLEMENTATIE... 2 STAP 6: EVALUEER DE KWALITEITSDOELEN EN KIES DE TECHNOLOGIE... 2 STAP 7: ONDERKEN EN ONTWERP DE FYSIEKE LAGEN... 3 STAP 8: ONTWERP DE COMMUNICATIE TUSSEN DE LAGEN... 5 STAP 9: TOETS DE GESCHIKTHEID VAN HET LAGENMODEL... 6 STAP 0: DOCUMENTEER HET LAGENMODEL... 6 Hogeschool Utrecht/Leo Pruijt en Wiebe Wiersema

. Casus: Aanwezigheidsregistratiesysteem Een Regionaal Opleiding Centrum is wettelijk verplicht de aan- en afwezigheid van een deelnemer aan een van de (vele) opleidingen te registreren. Het betreffende ROC is voortgekomen uit fusies van verschillende instituten die zeer verschillend omgingen met de aanwezigheidsregistratie. Eén uniform bedrijfsproces, ondersteunt door een nieuw informatiesysteem, moet eenheid brengen en een aanzet geven tot een goede registratie van de aan- en afwezigheid. Significante use cases (onder de 26 use cases) Aanwezigheid registreren per klas Docent Overzicht aanwezigheid per student Ziekmelding deelnemer registreren Administratief medewerker Activiteiten beheren Belangrijke domeinklassen Location * * Education Department Institute * * Classroom Course Participant Class * Activity -starttime -endtime Teacher 0.. Presence -presence : bool -reason : string ActivityType Hogeschool Utrecht/Leo Pruijt en Wiebe Wiersema 2

2. Logisch Lagenmodel Leo Pruijt Stap : Bepaal de kwaliteitsdoelen Kwaliteitsdoel De informatie die wordt vastgelegd moet absoluut betrouwbaar zijn. Vereiste kwaliteiten:. Alle gegevens die worden vastgelegd, moeten gecontroleerd zijn. Het systeem moet eenvoudig en tegen lage kosten aangepast en uitgebreid kunnen worden, omdat het een lange tijd gebruikt zal gaan worden. Vereiste kwaliteiten: 2. Goede analyseerbaarheid van het systeem. 3. Domeingenerieke logica wordt slechts op één plek vastgelegd en van daaruit hergebruikt. 4. De applicaties zijn zoveel mogelijk onafhankelijkheid van wijzigingen in de database-structuur. 5. DBMS, applicatieserver, randapparatuur, et cetera moeten eenvoudig vervangen kunnen worden. De mogelijkheid tot fraude met de aanwezigheidsregistratie moet voorkomen worden. Vereiste kwaliteiten: 6. Het systeem moet op alle toegangsniveaus beveiligd zijn. De beheerkosten van het systeem moeten laag zijn en ook bij groeiend gebruik (meer opleidingen, ook toegang voor studenten) zal een hoge responsiesnelheid gegarandeerd moeten worden. 7. Goede schaalbaarheid. 8. Responsiesnelheid gemiddeld max sec (rapportages uitgezonderd). Het systeem moet eenvoudig met andere applicaties (zoals Schoolplan) en hun opvolgers/vervangers kunnen communiceren. 9. Open standaard voor communicatie. ISO 9 26 Quality Attribute Accuracy Maintainability: Analysability, Changeability, Stability Portability: Adaptability Security Efficiency: Resource utilasation, Time behaviour Interoperability Hogeschool Utrecht/Leo Pruijt en Wiebe Wiersema 3

Stap 2: Onderken logische lagen 2. Bepaal welke lagen nodig zijn om de kwaliteitsdoelen te realiseren In onderstaande tabel staat aangegeven welke lagen (uit het LIL-referentiemodel) onderscheiden zijn om de kwaliteitsdoelen uit de vorige stap te behalen. Kwaliteitsdoel Benodigde lagen. Alle gegevens die worden vastgelegd, moeten gecontroleerd zijn. Domeingeneriek 2. Goede analyseerbaarheid van het systeem. Presentatie Taakspecifiek, Domeingeneriek Infrastructuur abstractie 3. Domeingenerieke logica wordt slechts op één plek vastgelegd en van daaruit hergebruikt. Presentatie/Taakspecifiek, Domeingeneriek 4. De applicaties zijn zoveel mogelijk onafhankelijkheid van wijzigingen in de database-structuur. Infrastructuur abstractie, Infrastructuur 5. DBMS, applicatieserver, randapparatuur, et cetera moeten eenvoudig vervangen kunnen worden. Infrastructuur abstractie, Infrastructuur 6. Het systeem moet op alle toegangsniveaus beveiligd zijn. Infrastructuur 7. Goede schaalbaarheid. - 8. Responsiesnelheid gemiddeld max sec (rapportages uitgezonderd). - 9. Open standaard voor communicatie. - 2.2 Orden de lagen en definieer ze Taak Domein InfrastructuurAbstractie Infrastructuur Laag Taak Domein Infrastructuurabstractie Infrastructuur Bevat de logica (conform het LIL-referentiemodel) Presentatie en Taakspecifieke logica Domeingenerieke logica Infrastructuurabstractie Infrastructuur Hogeschool Utrecht/Leo Pruijt en Wiebe Wiersema 4

Stap 3: Bepaal de communicatieregels tussen de lagen 3. Bepaal welke standaardregels gelden en waarom De regels, 2, 3 en 5 in de onderstaande tabel zijn afgeleid van de standaardregels. Het gerelateerde kwaliteitsdoel vormt de motivatie voor de regel. 3.2 Bepaal welke uitzonderingsregels gelden en waarom Regel 4 en 6 vormen uitzonderingsregels. Regel 7 ondervangt een nadeel van regel 6. Regel. Bij verwijdering, wijziging of invoer (DUC-acties) van gegevens mag de domeinlaag niet worden overgeslagen. 2. Geen aanroepen van de Domeinlaag naar de Taaklaag die ten koste gaan van de herbruikbaarheid. Dit wordt bereikt met regel 3 en 7. 3. De infrastructuurabstractielaag mag nooit worden overgeslagen. 4. Aanroep vanuit alle lagen naar de security component in de Infrastructuurlaag is toegestaan (via de infrastructuurabstractielaag). Kwaliteitsdoel. Alle gegevens die worden vastgelegd, moeten gecontroleerd zijn. 2. Goede analyseerbaarheid van het systeem. 3. Domeingenerieke logica wordt slechts op één plek vastgelegd en van daaruit hergebruikt. 4. De applicaties zijn zoveel mogelijk onafhankelijkheid van wijzigingen in de database-structuur. 5. DBMS, applicatieserver, randapparatuur, et cetera moeten eenvoudig vervangen kunnen worden. 6. Het systeem moet op alle toegangsniveaus beveiligd zijn. 5. 7. Goede schaalbaarheid. 6. Bij read-only acties mag de domeinlaag worden overgeslagen 7. Read-only acties, waarbij de domeinlaag wordt overgeslagen moeten via een databasestructuurabstractie mechanisme werken. 8. Responsiesnelheid gemiddeld max sec (rapportages uitgezonderd). 8. 9. Open standaard voor communicatie. Grafische weergave van het lagenmodel op hoofdlijnen NB De details van de regels zijn niet zichtbaar! Taak Domein InfrastructuurAbstractie Infrastructuur Hogeschool Utrecht/Leo Pruijt en Wiebe Wiersema 5

Stap 4: Toets de geschiktheid van het lagenmodel De significante use case Aanwezigheid registreren is hiervoor uitgekozen, omdat die de kern van de systeemfunctionaliteit representeert. In het sequence diagram op analyseniveau is te zien welke functionaliteit nodig is om de use case af te handelen. In het sequence diagram op designniveau is te zien hoe de use case kan worden afgehandeld, rekening houdend met het lagenmodel. Ook is te zien waar de functionaliteit dan (logisch) terecht komt, zonder dat er al voor een specifieke implementatietechniek gekozen is. Aanwezigheid registreren Docent Sequence diagram op analyse-niveau voor de use case: Aanwezigheid registreren Teacher getallclasses() :Class :Activity :Participant :Presence getactivities() getdetails() getparticipants() getdetails() createpresence() create() Hogeschool Utrecht/Leo Pruijt en Wiebe Wiersema 6

Sequence diagram op design-niveau voor de use case: Aanwezigheid registreren Taaklaag Domeinlaag Infrastructuur Abstractielaag :RegPresenceUI :RegPresenceController :Class :Activity :Participant :Presence DbFacade Teacher initialise() initialise() getallclasses() getallclassdata() selectclass() selectclass() getactivities() getdetails() getactivitydata() selectactivity() selectactivity() getparticipants() getdetails() getparticipantdata() setpresence() setpresence() createpresence() create() InsertPresenceData() Stap 5: Documenteer het lagenmodel De resultaten van de stappen -3 vormen de kern van de documentatie. In het artikel Gelaagde architecturen(): Introductie wordt behandeld wat in de documentatie van een lagenmodel duidelijk gemaakt moet worden, zodat de systeemontwikkelaars er goed mee aan het werk kunnen gaan. Hogeschool Utrecht/Leo Pruijt en Wiebe Wiersema 7

3. Fysiek Lagenmodel: PHP implementatie Leo Pruijt Met dank aan de studententeams van de Informatica-opleiding van de Hogeschool Utrecht voor hun inbreng, onderzoek en toepassingen op het gebied van PHP: Ruben Mijwaart, Onno Dijkstra, Bili Xiahilil, Ismaël sadkaoui; Martijn Gastkemper, Redmar Stienstra, Tom Zitter. Stap 6: Evalueer de kwaliteitsdoelen en kies de technologie 6. Evalueer de kwaliteitsdoelen De in stap geïnventariseerde kwaliteitsdoelen dekken ook de gangbare technologische risico s af. Er worden geen nieuwe kwaliteitsdoelen onderkend. Wel wordt als extra, technische maatregel vastgesteld dat het MVC-pattern zal worden toegepast in verband met het kwaliteitsdoel Goede analyseerbaarheid van het systeem. 6.2 Kies de technologie die bij die doelen past Met Doctrine.2 kunnen de kwaliteitsdoelen, 2, 3, 4, 5, 6 en 7 gehaald worden. Met Zend en Smarty kan met name kwaliteitsdoel 2 gehaald worden. Met Zend-ACL kan kwaliteitsdoel 6 (deels) gehaald worden, met de beperking dat de beveiliging alleen op controllerniveau geïmplementeerd wordt. Met XML/SOAP voor externe communicatie kan kwaliteitsdoel 8 gehaald worden. Met JQuery kan de interactie dynamisch gemaakt worden. NB Een meer complete verantwoording van de technologie keuzen vormt onderdeel van het Architecture Notebook/SAD. Hogeschool Utrecht/Leo Pruijt en Wiebe Wiersema 8

Stap 7: Onderken en ontwerp de fysieke lagen 7. Onderken de fysieke lagen 7.. Tier model Een 3-tier deployment model combineert een goede performance met een (voor dit systeem) afdoend niveau van beveiliging. Client Tier Web Tier EIS Tier Apache/PHP server: Browser HTML Smarty Zend Framework Oracle Database JavaScript ondersteund door jquery Doctrine 7..2 Lagenmodel Het logische lagenmodel en het technische raamwerk uit stap 5 moeten gecombineerd worden tot een fysiek lagenmodel, waardoor goed werkende applicaties kunnen worden ontwikkeld die voldoen aan de gestelde kwaliteitseisen. Taak (View & Controller: Zend, Smarty, JQuery) Domein (Model: Doctrine) InfrastructuurAbstractie (Doctrine) Infrastructuur 7.2 Ontwerp de fysieke implementatie van de lagen Onder 7. is al aangegeven welke technologie per laag gebruikt zal worden. Hogeschool Utrecht/Leo Pruijt en Wiebe Wiersema 9

Als aanvulling daarop worden de volgende implementatiekeuzen gemaakt: Taak-laag View-functionaliteit en Controller functionaliteit (conform het MVC pattern) worden gescheiden in aparte klassen. View en Controller klassen worden niet gescheiden in aparte packages of directories, maar samenhangende combinaties van view- en controllerklassen worden juist bij elkaar geplaatst. Domein-laag: Alle domeingenerieke logica (validaties, berekeningen, ) wordt herbruikbaar gemaakt door deze in (OO)entities op te nemen. Daarmee wordt het Domain Model pattern [Fowler03] gevolgd voor DUC-acties. De domeinfunctionaliteit zal in logische componenten worden ingedeeld. Infrastructuurabstractie-laag Doctrine bevat een Object Relational Mapper (ORM) die de vertaalslag tussen de objectgeörienteerde klassen (entities) en de database tabellen regelt. Daarmee wordt het Data Mapper pattern [Fowler03] gevolgd. Er zal gebruik gemaakt worden (juist ook voor de R- en zoekacties) van de Doctrine Query language (DQL), die Doctrine automatisch vertaald naar DBMS-specifieke SQL. Daarmee wordt het Data Mapper pattern [Fowler03] gevolgd. Stap 8: Ontwerp de communicatie tussen de lagen 8. Evalueer de communicatieregels gedefinieerd op logisch niveau. De regels van logisch model kunnen gehandhaafd blijven, met de volgende beperkingen: Regel 4 is overbodig, omdat er geen aparte security component komen. Voor deze applicatie wordt een afdoende niveau van beveiliging bereikt met Zend-ACL, maar daarbij wordt de beveiliging alleen op controllerniveau geïmplementeerd. Doctrine is een framework dat een deel van de infrastructuurabstractielaag invult m.b.t. database benadering. Maar Doctrine wordt ook gebruikt voor de implementatie van de domein functionaliteit. Dit gebeurt op zo n manier dat Doctrine niet eenvoudige manier vervangen kan worden door een ander framework of ORM-mapper. 8.2 Ontwerp de fysieke communicatie tussen de lagen De koppeling tussen taaklaag en domeinlaag wordt op de volgende wijze geminimaliseerd. De domeinfunctionaliteit (verdeeld over logische componenten zal alleen via een Facade benaderbaar zijn. Aanroepen vanuit de Taaklaag naar de Infrastructuurabstractielaag mag alleen Read-acties betreffen en mogen alleen in DQL. Aanroepen vanuit de Domeinlaag naar de Infrastructuurabstractielaag mag alle soorten acties betreffen, maar mag alleen in DQL. Er worden geen domeinobjecten geretourneerd van domein- naar taaklaag, maar er wordt gebruik gemaakt van het Data Transfer Objects pattern [Fowler03] of van arrays. In dit specifieke geval zullen de facade methodes van de domeinlaag multidimensionale PHP arrays retourneren. Hogeschool Utrecht/Leo Pruijt en Wiebe Wiersema 0

Stap 9: Toets de geschiktheid van het lagenmodel Op fysiek niveau ziet de afhandeling van een use case er modelmatig als volgt uit: Taaklaag Domeinlaag Infrastr. abstr.laag Infrastruct. laag :View :Controller :Facade :Domain :Domain2 :Doctrine-ORM :DBMS Teacher read() update() Verder verdient het aanbeveling om door middel van een prototype aan te tonen dat de gemaakte keuzen leiden tot een werkende applicatie die aan de diverse niet-functionele eisen voldoet. Stap 0: Documenteer het lagenmodel De resultaten van de stappen -3 en 6-8 vormen de kern van de documentatie. In het eerste artikel over de Gelaagde Architecturen wordt behandeld wat in de documentatie van een lagenmodel duidelijk gemaakt moet worden, zodat de systeemontwikkelaars er goed mee aan het werk kunnen gaan. Hogeschool Utrecht/Leo Pruijt en Wiebe Wiersema

4. FysiekLagenmodel: Ruby on Rails Implementatie Wiebe Wiersema Stap 6: Evalueer de kwaliteitsdoelen en kies de technologie Het gekozen raamwerk is Ruby on Rails (RoR), Rails is een open-source framework dat is bedoeld om webapplicaties in korte tijd te bouwen met behoud van goed onderhoudbare applicatie code. http://rubyonrails.org/ RoRvolgt het MVC principe voor de indeling van de applicatielogica en is technologie onafhankelijk opgezet. RoR kan zowel op Windows als op de Unix familie van operating systemen ontwikkeld en gehost worden en kan gebruik maken van de meeste populaire databases zoals Oracle, MySql, SqlServer etc. Daarnaast heeft RoR het convention over configuration principe waardoor heel veel zaken standaard ingevuld zijn zonder dat daarvoor extra instellingen nodig zijn. Evalueer de kwaliteitsdoelen De kwaliteitsdoelen zijn haalbaar, met als kanttekening dat de doelen 5,6,7 zorgvuldig met de opdrachtgever afgestemd moeten worden of ze door de te kiezen technologie afgedekt zijn. Kies de technologie die bij die doelen past Kwaliteitsdoel 0. Alle gegevens die worden vastgelegd, moeten gecontroleerd zijn.. Goede analyseerbaarheid van het systeem. 2. Domeingenerieke logica wordt slechts op één plek vastgelegd en van daaruit hergebruikt. 3. De applicaties zijnzoveel mogelijk onafhankelijkheid van wijzigingen in de database-structuur. 4. DBMS, applicatieserver, randapparatuur, et cetera moeten eenvoudig vervangen kunnen worden. 6. Het systeem moet op alle toegangsniveaus beveiligd zijn. 7. Goede schaalbaarheid. 8. Responsiesnelheid gemiddeld max sec (rapportages uitgezonderd). Invulling. Dit doel wordt ingevuld door alle domein generieke logica in de Model classes onder te brengen en in de overige classes (View, Controller) geen gegevens logica onder te brengen. 2. Door een indeling van de applicatie in model, view en controller classes is de opbouw overzichtelijk 3. De model classes dwingen dit af 4. Wijzigingen in de database structuur werken door in de Model classes. De view classes wijzigen alleen als dit nodig is vanwege wijzigingen in de te tonen informatie. 5. RoR is technologie onafhankelijk opgezet. Wijzigingen in infrastructuur worden verborgen door de configuratie en de infrastructuur abstractie logica. 6. Functie beveiliging in Ruby vindt plaats in de controller classes. Hiervoor dient een zogenaamd filter ingesteld te worden die valideert of de toegang tot een functie geautoriseerd is (bijv. met behulp van de gem declarative_authorization). Het beperken van gegevens toegang is geen standaard ondersteuning voor, hiervoor dient in de model classes extra logica geprogrammeerd te worden.toegang naar de database is met een wachtwoord beveiligd. 7. RoR is een stateless applicatie. Dit type applicaties kenmerkt zich door een goede schaalbaarheid. RoR is op dit vak geen uitzondering maar vraagt wel meer resources (RAM en CPU) dan een bijvoorbeeld een Java, PHP of.net applicatie. Door gebruik te maken van software zoals Passenger wordt het gebruik van RAM beperkt. 8. Lijkt realistisch gegeven de performance van RoR websites op dit moment. Is wel een punt van aandacht. 9. Open standaard voor communicatie. 0. RoR communiceert met XML en REST webservices door middel van de ActiveResource component en kan XML/SOAP gebruiken middels het SOAP4R component. Hogeschool Utrecht/Leo Pruijt en Wiebe Wiersema 2

Stap 7: Onderken en ontwerp de fysieke lagen 7. Onderken de fysieke lagen 7..Tier model Een 3-tier deployment model combineert een goede performance met een (voor dit systeem) afdoend niveau van beveiliging. Rails is een stateless architectuur. Dit betekent dat deze heel goed horizontaal te schalen is, mits de database snel genoeg kan blijven reageren gedurende piekbelasting. Het product Phusion Passenger werkt als loadbalancer door verscheidene Rails instances op te starten en aanvragen over deze instances te verdelen. 7..2 Lagenmodel Het logische lagenmodel en het technische raamwerk uit stap 5 moeten gecombineerd worden tot een fysiek lagenmodel, waardoor goed werkende applicaties kunnen worden ontwikkeld die voldoen aan de gestelde kwaliteitseisen. Hogeschool Utrecht/Leo Pruijt en Wiebe Wiersema 3

7.2 Ontwerp de fysieke implementatie van de lagen Onder 7. is al aangegeven welke technologie per laag gebruikt zal worden. Het onderstaande figuur gaat dieper in op de componenten die een Ruby on Rails applicatie bevat. Browser or Web Enabled Application HTTP, RSS, ATOM Apache, Nginx Requests Webserver Forwards Runs forked rails instances XML XHTML, XML, CSS, JS, Images Passenger Responds Responds Loadbalances RAILS Action Webservice Action View Dispatcher Renders Starts Delegates Action Controller Action View Redirects Instantiates Models Delivers Instantiates Models Active Record Action Mailer Active Resource Queries Data Mails Mail Server Requests Replies RESTfull Service HTTP, XHTML Database Elementen van de Ruby on Rails architectuur:. Dispatcher De webserver (bijv. apache) geeft aanroepen door aan de Dispatcher. De Dispatcher start de afhandeling van de aanroep door een controller class (kind van Action Controller) te instantierenen een eenmethod aan te roepen op basis van de routing regels die ingesteld zijn in de routing configuratie. Hiermee worden aanroepen gekoppeld aan de logica die de aanroep kan afhandelen. 2. Controller De controller class bevat de logica rondom het verloop en de afhandeling van een aanroep. De meeste methods in een controller class zijn de volgende twee smaken: a. Presentatie voorbereidend Als een gebruiker een object opvraagt met een zogenaamde get, dan instantieert de controller de juiste model classes en geeft deze door aan de view die gebruikt wordt om het gevraagde object te tonen. b. Actie verwerkend Als een gebruiker een bewerking van een object wil uitvoeren (bijv. post of delete) dan instantieert de controller de juiste model classes, verwerkt de gevraagde verandering en vraagt de model classes om zichzelf te valideren en op te slaan. 3. Active Record Alle model classes erven van Activerecord. De logica om de database te benaderen is veilig geabstraheerd achter de methods van ActiveRecord. In een model class wordt gegevens specifieke logica, berekeningen en veld validaties opgenomen. Hogeschool Utrecht/Leo Pruijt en Wiebe Wiersema 4

4. Action View Action laadt templates op basis van de aangeroepen method op de controller en converteert deze naar html, xml etc. naar gelang de behoefte van de aanroeper. 5. Action Webservice Deze class is bedoeld om op makkelijke wijze SOAP XML Services en de bijbehorende WSDL te publiceren. Door deze class te overerven met een zogenaamde api class en in deze api class de interface te specificeren kan vrij eenvoudig een webservice worden opgebouwd en gepubliceerd. 6. Action Mailer Actionmailer wordt gebruikt om mails vanuit de Rails applicatie te versturen. Het opbouwen van de inhoud van de mail gebeurt op dezelfde wijze als de inhoud van webpagina s alleen worden nu templates gebruikt die mailinhoud genereren. 7. Active Resource Activeresource is bedoeld om eenvoudig restfull services aan te roepen en het resultaat van de aanroep als een model class terug te geven. Het stelt wel specifieke eisen aan hoe gegevens worden opengesteld door de leverende partij. Een alternatief hiervoor is het gebruik van SOAP4R. Door het volgen van de standaard Ruby on Rails architectuur zijn de volgende implementatiekeuzen gemaakt: Taak-laag View-functionaliteit en Controller functionaliteit (conform het MVC pattern)worden gescheiden in aparte klassen Controllers en Views. Models worden geïnstantieerd als kinderen van Active Resource of Active Record. Model, View en Controller klassen worden gescheiden in aparte directories geplaatst conform de rails conventies. Domein-laag: Alle domeingenerieke logica (validaties, berekeningen, ) wordt herbruikbaar gemaakt door deze in de model classes op te nemen. Daarmee wordt het Domain Model pattern [Fowler03] gevolgd. Alle benadering van de database gaan via een Model class die erft van ActiveRecord. Infrastructuurabstractie-laag ActiveRecord verzorgt de vertaalslag tussen de objectgeörienteerde klassen (entities) en de database tabellen. Daarmee wordt het Data Mapperpattern[Fowler03] gevolgd. Het systeem gebruikt (juist ook voor de R- en zoekacties) de ActiveRecordQuery interface, die ActiveRecordautomatisch vertaald naar DBMS-specifieke SQL. Daarmee wordt het Data Mapperpattern[Fowler03] gevolgd. Het systeem volgt voor het benaderen van externe webservices dezelfde aanpak de externe services worden achter modellen verborgen en daarmee zijn deze op het juiste abstractie niveau vanuit de de controller classes te gebruiken. Stap 8: Ontwerp de communicatie tussen de lagen 8. Evalueer de communicatieregels gedefinieerd op logisch niveau. De regels van logisch model kunnen gehandhaafd blijven zonder beperkingen. 8.2 Ontwerp de fysieke communicatie tussen de lagen Dekoppeling tussen taaklaag en domeinlaag wordt op de volgende wijze geminimaliseerd. De taaklaag maakt alleen gebruik van de interfaces zoals aangeboden door de methods en getters/setters van de Model classes. Hogeschool Utrecht/Leo Pruijt en Wiebe Wiersema 5

Stap 9: Toets de geschiktheid van het lagenmodel Op fysiek niveau ziet de afhandeling van een use case er modelmatig als volgt uit: Stap 0: Documenteer het lagenmodel De resultaten van de stappen -3 en 6-8 vormen de kern van de documentatie. In het artikel Gelaagde architecturen(): Introductie wordt behandeld wat in de documentatie van een lagenmodel duidelijk gemaakt moet worden, zodat de systeemontwikkelaars er goed mee aan het werk kunnen gaan. Hogeschool Utrecht/Leo Pruijt en Wiebe Wiersema 6