2. Softwarearchitectuur 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
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
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
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
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 interface interface interface
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
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
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
10. Programmeertalen en modulariteit 1 e generatie machine 2 e generatie assembler 3 e generatie gestructureerd 4 e generatie abstract 5 e generatie functioneel Modulair Object- georiënteerd Component- gebaseerd Service- georiënteerd C++ Java Visual Basic C# COBOL C Oracle forms SQL LISP Prolog J2EE .Net
13. Gedistribueerde drie- en meerlaagse softwarearchitectuur Presentatie Businesslogica Data Presentatie Processervices Data Samengestelde services Basisservices
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
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
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
17. Andere benadering m.b.t. softwarearchitectuur 4+1 View model (Kruchten, UML) Design patterns Model Driven Architecture
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
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’
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)
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 mapping
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 [email_address] www.twynstragudde.nl