Was ist Software-Architektur?



Ähnliche Dokumente
Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Some Software Engineering Principles

Was meinen die Leute eigentlich mit: Grexit?

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

Objektorientierte Programmierung OOP

SDD System Design Document

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Vgl. Kapitel 5 aus Systematisches Requirements Engineering, Christoph Ebert

SharePoint Demonstration

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

16 Architekturentwurf Einführung und Überblick

Auswahl alter Klausuraufgaben aus einer ähnlichen Vorlesung Maßgeblich für die Prüfung sind die Vorlesungsinhalte!

Konzentration auf das. Wesentliche.

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Geld Verdienen im Internet leicht gemacht

Step by Step Remotedesktopfreigabe unter Windows Server von Christian Bartl

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08

Einführung und Motivation

Speicher in der Cloud

Arbeiten mit UMLed und Delphi

1 Mathematische Grundlagen

ISA Server 2004 Erstellen eines neuen Netzwerkes - Von Marc Grote

How to do? Projekte - Zeiterfassung

Professionelle Seminare im Bereich MS-Office

Info-Veranstaltung zur Erstellung von Zertifikaten

Der Zwei-Quadrate-Satz von Fermat

Was ist clevere Altersvorsorge?

Einrichten von -postfächern mit Outlook und Outlook Express

Softwareentwicklungspraktikum Sommersemester Grobentwurf

ICS-Addin. Benutzerhandbuch. Version: 1.0

Konzepte der Informatik

Objektorientierte Programmierung für Anfänger am Beispiel PHP

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Softwaretechnologie Wintersemester 2009/2010 Dr. Günter Kniesel, Pascal Bihler

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

THREAD ARCS: An Thread Visualization

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Integration verteilter Datenquellen in GIS-Datenbanken

Step by Step Webserver unter Windows Server von Christian Bartl

Eine Anwendung mit InstantRails 1.7

SWT II Projekt. Chat - Anwendung. Pflichtenheft 2000 SWT

Anhand des bereits hergeleiteten Models erstellen wir nun mit der Formel

Tipps und Tricks zu Netop Vision und Vision Pro

Requirements Engineering für IT Systeme

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Studie über Umfassendes Qualitätsmanagement ( TQM ) und Verbindung zum EFQM Excellence Modell

Informationswirtschaft II Rational Unified Process (RUP)

Informationswirtschaft II

SEP 114. Design by Contract

Spiel und Spaß im Freien. Arbeitsblat. Arbeitsblatt 1. Zeichnung: Gisela Specht. Diese Vorlage darf für den Unterricht fotokopiert werden.

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Einfache kryptographische Verfahren

Fragebogen: Abschlussbefragung

Anwendungsbeispiele. Neuerungen in den s. Webling ist ein Produkt der Firma:

pro4controlling - Whitepaper [DEU] Whitepaper zur CfMD-Lösung pro4controlling Seite 1 von 9

Multicheck Schülerumfrage 2013

Urlaubsregel in David

POP -Konto auf iphone mit ios 6 einrichten

C++11 C++14 Kapitel Doppelseite Übungen Musterlösungen Anhang

0, v 6 = , v 4 = span(v 1, v 5, v 6 ) = span(v 1, v 2, v 3, v 4, v 5, v 6 ) 4. span(v 1, v 2, v 4 ) = span(v 2, v 3, v 5, v 6 )

Dokumentation von Ük Modul 302

(1) Mit dem Administrator Modul werden die Datenbank, Gruppen, Benutzer, Projekte und sonstige Aufgaben verwaltet.

Lizenzierung von SharePoint Server 2013

Einbindung einer ACT!12-16 Datenbank als Datenquelle für den Bulkmailer 2012

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Java Enterprise Architekturen Willkommen in der Realität

Version Deutsch In diesem HOWTO wird beschrieben wie Sie Ihr vorhandenes PMS-System mit der IAC-BOX verbinden und konfigurieren.

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Qualitätsbedingungen schulischer Inklusion für Kinder und Jugendliche mit dem Förderschwerpunkt Körperliche und motorische Entwicklung

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

HTML5. Wie funktioniert HTML5? Tags: Attribute:

Kurzfassung der Studienarbeit

Lizenzierung von SharePoint Server 2013

8 Design Patterns. Events

Bedienungsanleitung KSG-Forum

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Outlook Vorlagen/Templates

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Grundbegriffe der Informatik

START - SYSTEMSTEUERUNG - SYSTEM - REMOTE

Thema: Microsoft Project online Welche Version benötigen Sie?

BlueEvidence Services in Elexis

Reporting Services und SharePoint 2010 Teil 1

Schärfere Haftung in Sachen Umwelt.

Kulturelle Evolution 12

7. Übung - Datenbanken

Professionelle Seminare im Bereich MS-Office

COMPUTER MULTIMEDIA SERVICE

Erstellen von x-y-diagrammen in OpenOffice.calc

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

15 Optimales Kodieren

Ebenenmasken Grundlagen

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X

Transkript:

Was ist Software-Architektur? Stephan Schulze Martin Knobloch 28.04.2004 Seminar: Software-Architektur Humboldt Universität zu Berlin sschulze knobloch@informatik.hu-berlin.de

Gliederung Begriffsbestimmung Aufbau einer Software-Architektur Warum ist Software-Architektur wichtig? Strukturen und Views von Software- Architekturen Zusammenfassung Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 2

Begriffsbestimmung Was ist Software-Architektur? Kontrollprozess MODST MODBL MODUS Ist das eine Software-Architektur? Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 3

Was ist Software-Architektur? Welche Informationen liefert das Diagramm? Können wir das System jetzt implementieren? Welche Informationen liefert das Diagramm nicht? ergo: Diagramm ist nur ein Diagramm, aber zumindest ein Anfang Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 4

Definition (nach Bass, Clements, Kazman) Die Software-Architektur eines Programms oder Computersystems ist die Struktur oder die Strukturen des Systems, das alle Software-Elemente, die sichtbaren Eigenschaften sowie die Beziehungen der Elemente untereinander genau beschreibt. Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 5

Was heißt das also? (1) Software-Architektur (SA) definiert die Elemente des Software-Systems information-hiding-prinzip Nur Interfaces Keine Implementationsdetails SA ist also eine Abstraktion des Systems Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 6

Was heißt das also? (2) Eine SA kann mehr als nur eine Struktur enthalten Später mehr... Das Verhalten eines jeden Elements des Systems ist Teil der Architektur... das alle SW-Elemente (...) genau beschreibt Forderung von Vollständigkeit Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 7

Was heißt das also? (3) Jedes System hat implizit eine Architektur Muss nicht dokumentiert sein Muss niemand kennen => sollte aber! ZIEL: Eine solche Beschreibung des Systems zu erstellen, so dass möglichst keine Fragen offen bleiben. Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 8

Andere Definitionen SA ist eine Menge aus Elementen: Prozess- Elemente, Daten-Elemente und verbindende Elemente Perry/Wolf, 1992 SA ist die Gesamtstruktur eines Systems; high-level-design von Komponenten und deren Interaktion Drehen sich alle ums gleiche: Strukturen, deren Elemente und die Beziehungen der Elemente untereinander Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 9

Gliederung Begriffsbestimmung Aufbau einer Software-Architektur Warum ist Software-Architektur wichtig? Strukturen und Views von Software- Architekturen Zusammenfassung Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 10

Aufbau einer Software Architektur erfolgt in mehreren Schritten 1. Auswahl von "Architectural Patterns" 2. Erstellung Referenzmodell 3. Erstellung Referenzarchitektur 4. Ableitung der Software Architektur Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 11

Architectural Patterns Wörtlich: "Architektur Muster" "Komponenten mit bestimmten Eigenschaften und Relationen die gewissen Anforderungen genügen..." Beispiel: Client-Server ist typisches Pattern Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 12

Warum gerade dieses Pattern? sehr frühe Entscheidung, daher auch sehr wichtig Pattern erfüllen "Quality Attributes" Entscheidung für jenes, welches am besten zum System passt Wichtig: Pattern an sich sind keine Software-Architekturen Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 13

Reference Model "Schaubild einer Teilfunktionalität mit Darstellung des Datenflusses innerhalb dieser Funktionalität" Beispiel: Compiler Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 14

Reference Architecture Abbildung eines Reference Model auf die Software Elemente des Systems und Darstellung des Datenflusses zwischen diesen Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 15

Zusammenfassung "Architectural Pattern" und "Reference Models" werden benutzt um "Reference Architecture" zu erzeugen Keines der drei Teile ist schon eine Software Architektur, nur Teilschritte auf dem Weg dahin Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 16

Gliederung Begriffsbestimmung Aufbau einer Software-Architektur Warum ist Software-Architektur wichtig? Strukturen und Views von Software- Architekturen Zusammenfassung Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 17

Warum ist Software- Architektur wichtig? Einführungsvortrag: ABC (Architecture Business Cycle) Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 18

Warum ist Software- Architektur wichtig? SA ermöglicht zielgerichtete Kommunikation zwischen den Beteiligten SA fällt schon früh wichtige Design- Entscheidungen SA ermöglicht ihre Wiederverwendung in späteren Projekten Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 19

Kommunikation? Kunde, Nutzer, Projektleiter, Programmierer und Tester als Beteiligte Beteiligte können selbst herausfinden, ob das System ihren Ansprüchen genügt (und dies Kommunizieren) Gemeinsame Sprache reduziert Fehler und erhöht Effizienz Konzentration auf das eigentliche Problem Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 20

Design-Entscheidungen? Entscheidung über Pattern Qualitätseigenschaften des Systems SA gibt also Implementationsbedingungen an Design-Entscheidung diktiert Organisationsstruktur und Kommunikationsweg Bessere Kosten- und Zeitplan-Analyse Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 21

Wiederverwendbarkeit? Eines der Hauptanliegen Gute SA kann als Grundlage für Produktlinie dienen Kann als Vorlage für Modelle und Architekturen dienen Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 22

Gliederung Begriffsbestimmung Aufbau einer Software-Architektur Warum ist Software-Architektur wichtig? Strukturen und Views von Software- Architekturen Zusammenfassung Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 23

Strukturen in Software- Architekturen Beispiel Hausbau: Außenarchitekt Statiker Klempner Fassade tragende Teile Wasserversorgung jeder sieht Gebäude aus ganz bestimmter Sicht jeder interessiert sich nur für die Teile die ihn betreffen Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 24

Arten von Strukturen Module Structures Elemente als Module Component-Connector-Structure Laufzeitkomponenten und deren Verbindung Allocation Structure Beziehungen zwischen Software Elementen und äußerer Umgebung Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 25

Modul Structure Views Decomposition Zerlegung des Systems in kleine Sub-Module Uses Darstellung als Module und Interfaces von Modulen und deren Abhängigkeiten untereinander Layered Aufteilung der Module in Schichten Class Objekt-Orientierte Sicht Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 26

Component-Connector- Structure - Views Process Aufteilung in Prozesse und Threads Concurrency Aufteilung in Komponenten die durch"logische Threads" verbunden sind Shared Data Komponenten die langlebige Daten verwalten Client-Server Unterteilung in Clients und Server die durch Protokolle verbunden sind Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 27

Allocation Structure - Views Deployment Beziehungen zwischen Software und Hardwarekomponenten Implementation Zuordnung von Software Elementen auf eine Dateistruktur Work-Assignment Zuordnung von Software Elementen zu Entwicklerteams Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 28

Zwischenstand Strukturen bieten eine jeweils andere Sicht auf das Software System Strukturen sind nicht unabhängig voneinander nicht jede Struktur ist für jedes Projekt geeignet Welche werden denn nun genommen? Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 29

Ansätze zur Auswahl von Strukturen 1995 Veröffentlichung eines Paper von Philippe Kruchten zu diesem Thema Empfehlung: "Konzentration auf vier Strukturen" "Four Plus One" Ansatz wurde sehr populär Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 30

Kruchten's vier Sichten Logical View Objektorientierte Sicht Module View Process View Gleichzeitigkeit und Verteilung der Funktionalität Component-and-Connector View Development View Organisation der Module in der Entwicklungsumgebung Allocation View Physical View Zuordnung Elemente auf Prozesse Allocation View Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 31

"Plus One"? Benutzung eines kleines Satzes der wichtigsten Szenarios (aus Use-Cases abgeleitet) um zu zeigen, dass alle Elemente aus den vier vorhergehenden Views nahtlos zusammenarbeiten. Diese Sicht, die alle anderen zusammenfügt ist "Plus One" View Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 32

Zusammenfassung wir wissen: Software-Architekturen beschreiben Elemente und Strukturen eines Systems sowie die Zusammenhänge untereinander warum Software-Architekturen wichtig sind woraus man Software-Architekturen zusammensetzen kann Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 33

Quellen Bass, Clements, Kazman: Software Architecture in Practice http://www.bredemeyer.com http://www.sei.cmu.edu/publications/documents/00.reports/00sr004/00sr004chap01.html http://www.sei.cmu.edu/ata/ata_init.html http://www.wwisa.org/wwisamain/role.htm http://www2.umassd.edu/secenter/saresources.html http://www.isr.uci.edu/architecture/publications.html http://www.cgl.uwaterloo.ca/~rnkazman/sa-sites.html http://en.wikipedia.org/wiki/software_architecture http://www-2.cs.cmu.edu/afs/cs/project/able/www/paper_abstracts/intro_softarch.html http://www.cmcrossroads.com/bradapp/links/sw-arch-links.html http://www.santafe.edu/sfi/publications/wpabstract/200307044 http://www-rocq.inria.fr/arles/doc/ps00/mdw.pdf http://www.sei.cmu.edu/architecture/definitions.html http://www.iturls.com/english/softwareengineering/se_sa.asp http://www.nr.no/~jason/research/publications/apsec98.pdf http://www.dcs.shef.ac.uk/~dita/biblio/keyword/software-architecture.html Stephan Schulze & Martin Knobloch: Was ist Software-Architektur? 34