Bas Kruiswijk Amersfoort 2 november 2011 Softwarearchitectuur
© Twynstra Gudde | Universiteit Leiden Softwarearchitectuur 2 Enterprise- architectuur Software- architectuur Service- georiënteerde architectuur Individuele systeemscope Gericht op ontwerp, realisaties en specificatie Organisatiebrede scope Gericht op strategie en communicatie Conceptuele basis
© Twynstra Gudde | Universiteit Leiden Softwarearchitectuur 3 Softwarearchitectuur begint met software engineering –Software engineering is in de informatica het vakgebied dat zich bezighoudt met (de totstandkoming van) ‘goede’ software (qua product en proces) –Wat is ‘goede’ software eigenlijk? –Correct, betrouwbaar, robuust –Performance –Gebruikersvriendelijk –Verifieerbaar –Onderhoudbaar –Herbruikbaar –Portable –Begrijpelijk –Interoperabiliteit –Productiviteit
© Twynstra Gudde | Universiteit Leiden Softwarearchitectuur 4 Software engineering principes Top 3 (?) –Separation of concerns –Vanwege de inherente complexiteit van softwaresystemen zorgen dat verschillende aspecten gescheiden kunnen worden aangepakt (bijvoorbeeld functionaliteit en performance) –Modulariteit –Reduceer de complexiteit door het totaal op te delen in kleinere, relatief zelfstandige delen die zelfstandig kunnen worden ontworpen, ontwikkeld en geïmplementeerd –Modules hebben een hoge interne cohesie en een lage externe koppelingsgraad –Anticiperen op veranderingen –In het ontwerp, de ontwikkeling en de implementatie van software rekening houden met waarschijnlijke veranderingen
© Twynstra Gudde | Universiteit Leiden Softwarearchitectuur 5 Modules en objectoriëntatie –Modules –Groepering van functionaliteit en gegevensverzamelingen –Hoger abstractieniveau dan functies, eenheid van (overigens beperkt) hergebruik –Min of meer zelfstandig realiseerbaar en implementeerbaar –Objectoriëntatie –Eigenlijk een programmeerconcept –Objecten zijn een directere representatie van objecten in de reële wereld –Objecten combineren structuur (statische aspect) en gedrag (dynamische aspect) in een ontwerp- en programmeerconcept –Scheiding van interface en implementatie
© Twynstra Gudde | Universiteit Leiden Softwarearchitectuur 6 Objectoriëntatie Scheiding van interface en implementatie implementatie van het object De van buitenaf zichtbare beschrijving van de functie van het object en hoe deze te gebruiken De van buitenaf niet-zichtbare interne realisatie van het object middels werkende software interface
© Twynstra Gudde | Universiteit Leiden Softwarearchitectuur 7 Componenten –Gebaseerd op de concepten van objectoriëntatie –Gericht op het samenstellen van applicaties uit componenten: component based developement –Componenten hebben vergeleken met objecten enkele extra eigenschappen –Distribueerbaar (platformonafhankelijk, koppelbaar aan middleware) –Op run-time te (de)activeren (disconnectable) –Bruikbaar (herkenbaar, inspecteerbaar, configureerbaar) door ontwikkeltools om applicaties te assembleren
© Twynstra Gudde | Universiteit Leiden Softwarearchitectuur 8 Services –In technische zin een doorontwikkeling van object- en componenttechnologie –Brede adoptie van (internet)standaarden voor webservices –Platformonafhankelijk –Basisconcept van (bijna) alle ontwikkelplatforms –Diensten aan gebruikers staan centraal –Niet (alleen) de softwareconstructie staat centraal, maar de dienst die geleverd wordt –Niet (alleen) relevant voor ontwikkelaars, maar ook voor gebruikers / organisaties –Applicaties worden minder relevant – het gaat om services
© Twynstra Gudde | Universiteit Leiden Softwarearchitectuur 9 Service Dienstinhoud (implementatie) Dienstaanvraag (request) Dienstbeschrijving (interface) Dienstresultaat (respons) De van buitenaf zichtbare beschrijving van dienst De interne realisatie van de dienst middels werkende software request respons
© Twynstra Gudde | Universiteit Leiden Softwarearchitectuur 10 Programmeertalen en modulariteit 1 e generatie machine 2 e generatie assembler 3 e generatie gestructureerd 4 e generatie abstract 5 e generatie functioneel ModulairObject- georiënteerd Component- gebaseerd Service- georiënteerd C++ Java Visual Basic C# COBOL C Oracle forms SQL LISP Prolog J2EE.Net
© Twynstra Gudde | Universiteit Leiden Softwarearchitectuur 11 Monolitische en modulaire softwarearchitectuur
© Twynstra Gudde | Universiteit Leiden Softwarearchitectuur 12 Client/Server architectuur Client Server Client Centraal Decentraal
© Twynstra Gudde | Universiteit Leiden Softwarearchitectuur 13 Gedistribueerde drie- en meerlaagse softwarearchitectuur Presentatie Businesslogica Data Presentatie Processervices Data Samengestelde services Basisservices
© Twynstra Gudde | Universiteit Leiden Softwarearchitectuur 14 Integratie van applicatie ontwikkelingen in de tijd geplaatst (1) Applicatie 1 Applicatie 2 Applicatie 3 Applicatie 4 Client Server Client Server Client Server Generieke faciliteiten Doorgaans bulkuitwisseling Corporate databases 1:1 Interfaces Gemeenschappelijke databases specifiek generiek
© Twynstra Gudde | Universiteit Leiden Softwarearchitectuur 15 Integratie van applicatie ontwikkelingen in de tijd geplaatst (2) Business- logica Generieke middleware Synchroon (services) Asynchroon (berichten) Presentatie Data Business- logica Presentatie Data Business- logica Presentatie Data Middleware (generieke servicebus) Business- logica Middleware Presentatie Data Business- logica Presentatie Data Webservices (technologie neutraal) Middleware Berichtuitwisseling gebaseerd op webservice- standaarden (SOAP) Technologische of organisatorische grens specifiek generiek
© Twynstra Gudde | Universiteit Leiden Softwarearchitectuur 16 Integratie van applicatie ontwikkelingen in de tijd geplaatst (3) Business- logica Presentatie Data Business- logica Data Business- logica Data Portaal voor geïntegreerde werkprocesondersteuning Orkestratie Business- logica Presentatie Data Business- logica Presentatie Data Business- logica Presentatie Data Portaal voor geïntegreerde toegang en authenticatie Portaal Authenticatie, single sign-on personalisatie look-and-feel Portaal Authenticatie, single sign-on Personalisatie specifiek generiek
© Twynstra Gudde | Universiteit Leiden Softwarearchitectuur 17 Andere benadering m.b.t. softwarearchitectuur –4+1 View model (Kruchten, UML) –Design patterns –Model Driven Architecture
© Twynstra Gudde | Universiteit Leiden Softwarearchitectuur 18 Het 4+1 View-model –In het 4+1 View-model worden vier views onderkend die samen de architectuur van een systeem beschrijven. Elke view geeft daarbij weer wat, bezien vanuit het perspectief van een bepaalde belanghebbende, fundamenteel is. Logical view Process view Component view Physical view Use cases
© Twynstra Gudde | Universiteit Leiden Softwarearchitectuur 19 The 4+1 Views –Logical view –Logische opbouw van het systeem –Objecten en hun onderlinge relaties –Component view –Wijze waarop de objecten (in de logical view) zijn samengesteld tot componenten of zijn gecombineerd tot services –Process view –De ‘runtime’-componenten, de ‘executables’ –De onderdelen waaruit de te implementeren applicatie bestaat –Physical view –De benodigde hardware en andere fysieke componenten om het systeem daadwerkelijk te kunnen laten werken –De vijfde view (de +1-view) –Illustreert de samenhang vanuit de invalshoek van het beoogde gebruik van het systeem in de vorm van ‘use cases’
© Twynstra Gudde | Universiteit Leiden Softwarearchitectuur 20 Design patterns –Geïntroduceerd door ‘The gang of four’: Gamma, Helms, Johnson,’ Vlissides, in ‘Design Patterns, Elements of Reusable Object- Oriented Software’ –Herbruikbare oplossingen, templates voor ontwerpproblemen –Ervaring en kennis van ‘goede’ architectuuroplossingen herbruikbaar gemaakt –Goed gedocumenteerd –Doel, wanneer gebruiken, voorbeeld van gebruik etc. –Bijvoorbeeld –Scheiding van presentatie, interactie en logica (model-view-controller of Observer pattern) –Verbergen van een verzameling interfaces (Facade pattern)
© Twynstra Gudde | Universiteit Leiden Softwarearchitectuur 21 Model Driven Architecture –Architectuurbenadering gericht op interoperabiliteit –Genereren van model tot implementatie (Extreme Non- Programming) –Platform Independent Model –Modelleert functionaliteit en gedrag, zonder technologische beperkingen –Gebruikmakend van gangbare middleware features –Extra details toegevoegd om vertaling naar Platform Specific Model mogelijk te maken –Platform Specific Model –Toepassing van een profile op het Platform Independent Model, om dit sterk geautomatiseerd te kunnen vertalen naar Platform Specific Model –Uiteindelijk automatisch genereren van software uit het model Computation Independent Model Platform Independent Model Platform Specific Model mapping
© Twynstra Gudde | Universiteit Leiden Softwarearchitectuur 22 Alle intellectuele eigendomsrechten met betrekking tot deze presentatie berusten bij Twynstra Gudde. Niets uit deze presentatie mag worden verveelvoudigd of openbaar gemaakt zonder schriftelijke toestemming van Twynstra Gudde. Bas Kruiswijk