Quasar. Seminar "Beiträge zum Software Engineering" Freie Universität t Berlin. von Tichomir Jabarski

Ähnliche Dokumente
Moderne Softwarearchitektur

11. Komponenten Grundlagen der Programmierung 1 (Java)

Hauptseminar Management von Softwaresystemen

7. Komponenten Advanced Programming Techniques. Wintersemester 2009 / 2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

Software- /Systemarchitektur

Auf einen Blick. 1 Einleitung Die Basis der Objektorientierung Die Prinzipien des objektorientierten Entwurfs...

Objektorientierte Programmierung OOP

Systemübergreifende Software-Architektur: Erfahrungen und Thesen

systems landscape engineering - übung -

1.4! Einführung. Systemmodellierung. Methoden und Werkzeuge

Objektorientierte Programmierung

5. Dokumentieren und Testen Advanced Programming Techniques. Wintersemester 2009 / 2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

Software Engineering. 5. Architektur

Potentiale modellgetriebener Softwareentwicklung

2. Programmieren gegen Schnittstellen Advanced Programming Techniques

Klausur zum BM Einführung in die Wirtschaftsinformatik SS 2014 Schriftlicher Teil

SOLID für.net und JavaScript

6. Design-Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

7. Zusammenfassung (1)

Eine Normalform für Services Serviceorientierte Architektur konkret

Inhaltsverzeichnis 1. Objektorientierung: Ein Einstieg 2. Objekte, Klassen, Kapselung

Ziele und Tätigkeiten von Architekten

Praxis der Softwareentwicklung

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

7. Klassenmethoden Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Vorlesung am Systemkonstruktion. Dr. F. Sarre Wintersemester 2008 / Folie 57

Sprechen Sie Java? Hanspeter Mössenböck. Tm\ dpunkt.verlag. Eine Einführung in das systematische Programmieren

Praxisbuch Objektorientierung

Software Design basierend auf dem Plug-In Konzept

Einführung: Verteilte Systeme - Remote Method Invocation -

Objektorientierte Programmierung

Softwaretest von verteilten Echtzeitsystemen im Automobil anhand von Kundenspezifikationen

Mathematik Seminar WS 2003: Simulation und Bildanalyse mit Java. Software-Architektur basierend auf dem Plug-in-Konzept

Übung 11: Klausurvorbereitung. Übung 11. Prüfungsvorbereitung Software Engineering WS16/17 Philipp Seltmann

3. Dokumentieren und Testen Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen

PHP OOP, Design Patterns und UML. Marco Skulschus

Software EMEA Performance Tour Berlin, Germany June

Programmiermethodik Vorlesung und Praktikum SS 2001

Entwurfsmuster. Tao Zhang Technische Universität München Lehrstuhl für Angewandete Softwaretechnik

Objektorientierung. Klassen und Objekte. Dr. Beatrice Amrhein

Model-View-Controller

Was kennzeichnet qualitativ hochwertige Software Systeme? Wie kann hohe Software Qualität erreicht werden?

Vorlesung Datenstrukturen

Praxis der Softwareentwicklung

Softwaretechnik Strukturen und Muster

Überblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio

Objektorientierte Programmierung II

Softwarearchitektur mit dem Quasar- Architekturstil

Geheimnisprinzip: (information hiding principle, Parnas 1972)

Modellgetriebene Entwicklung von Pervasive Games

Kernprozess zur System- und Softwareentwicklung. Logische Systemarchitektur f 1. f 2 f 3. f 4 Funktion. Technische Systemarchitektur SG 1 SG 2 SG 3

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Software Engineering

Entwurfsmuster Martin Fesser 00IN

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 2. Spezifikation Schrittweise Verfeinerung

Inhalt. TEIL I Grundlagen. Einleitung 15

Objektorientiertes Programmieren

Überblick. Modellbildung in der Entwicklung mit Schwerpunkt Architekturen Schnittstellen. Schnittstelle. Schnittstelle

Schichtenarchitekturen und ihre Auswirkungen auf die objektorientierte Modellierung

Software-Engineering

Aus Sicht der funktionalen Anforderungen ist der Entwurf eines Systems beliebig wählbar

1. Erläutern Sie am Beispiel einer 3-schichtigen Client-Server-Architektur die Prinzipien einer guten Architektur. Dialogsteuerun

Erzeugungsmuster. Kapselung der Objekt-Erzeugung

Unified Modelling Language

Softwaretechnik 2015/2016

Praxis der Softwareentwicklung WS 2015/16

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Programmierparadigmen

Web Engineering-Seminar Methoden zur Web Modellierung: Object-oriented Hypermedia Method (OO-H)

3-Tier-Architecture und J2EE

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

Modellierung verteilter Systeme Grundlagen der Programm und Systementwicklung

Programmierparadigmen A01 OOP. Programmierparadigmen

Entwicklung einer Autorenumgebung zur Erstellung von elearning-kursen aus Wiki-Inhalten

Vorwort zur zweiten Auflage 1. Vorwort zur ersten Auflage 2

Techniken der Projektentwicklungen

UML (Unified Modelling Language) von Christian Bartl

Universität Karlsruhe (TH)

VHDL Einleitung. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2010

Analyse der logischen Systemarchitektur und Spezifikation der technischen Systemarchitektur. Kernprozess zur System- und Software- Entwicklung

Prinzipien der objektorientierten Programmierung (OOP)

Kapitel 2 - Die Definitionsphase

Software-Wartung eine Taxonomie

Pflichtlektüre hierzu: Kosten und Nutzen von UML in der Wartung. Kontrolliertes Experiment zu UML. Warum UML?

1 Motivation. 1 Motivation. Standard Middleware für objektorientierte Anwendungen. Motivation. Fragmentierte Objektmodel. Java RMI

Modellgetriebene Softwareentwicklung: Zusammenfassung und Ausblick. 7. Februar 2013

Design Patterns II. Der Design Muster Katalog. Prof. Dr. Nikolaus Wulff

VOM PROBLEM ZUM PROGRAMM

Pendenzen Management

Testen mit Use Cases. Chris Rupp Dr. Stefan Queins

Bundling auf Softwaremärkten Eine technische Sicht

SPI - Software Process Improvement mit CMMI, PSP/TSP und ISO 15504

Langlebige Softwarearchitekturen

COPE COuPled Evolution of metamodels and models

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4

Behutsame Modernisierung

Erläuterungen zu Darstellung des DLQ-Datenportals

Transkript:

Quasar von Tichomir Jabarski Seminar "Beiträge zum Software Engineering" Freie Universität t Berlin 1

Inhaltsverzeichnis Quasar Schnittstellen Komponenten Softwarekategorien Zusammenfassung 2

1.Quasar 3

Quasar I! Schlechte Qualität! SOFTWARE t! 4

Software-Projekte: Quasar II! Schlechte Qualität! Dauern zu lange Kosten zu viel Scheitern oft t! Was ist der Grund und hat es etwas mit Architektur zu tun? 5

Was ist Quasar? QUASAR = Qualitätssoftwarearchitektur tssoftwarearchitektur Definiert Verständnis für f r Software-Qualit Qualität Beschreibt wichtige Regeln und Mechanismen der Software- technik als Standard Quasar auf vier Ebenen: Ideen & Konzepte Begriffe Standardarchitektur & Standardschnittstellen Standardkomponenten 6

Basiert auf jahrelange Erfahrung Warum Quasar? Definiert konkrete Praktiken in der Softwareentwicklung Garantiert eine tragende Architektur für f r das Produkt Garantiert bessere Qualität Architektonische Einfachkeit Wiederverwendbarkeit Entwicklungseffizienz Änderbarkeit Reduziert Kosten!!! 7

Das Buch Johannes, Siedersleben: Moderne Softwarearchitektur. Umsichtig planen, robust bauen mit Quasar dpunkt.verlag 1 Auflage 2004 ISBN:3-89864 89864-292-5 8

2. Schnittstellen 9

Was ist eine Schnittstelle? Schnittstellen verbinden, schneiden nicht durch! Die Schnittstelle formalisiert die intuitive Vorstellung wie man eine Komponente benutzt System verständlicher Abhängigkeiten Reduzieren Arbeit sparen durch Wiederverwendung Schnittstellen sind die Träger der Architektur Viele Muster sind ein Spezialfall des Schnittstellen-Gedankens Brücke, Strategie, Fabrik, Iterator 1 0

Typen von Schnittstellen Standard-SS SS Allgemein akzeptiert Gut dokumentiert Gut getestet java.lang.*, JDBC, u.s.w Angebotene-SS Implementierung existiert Importeur für f r die SS gebaut Enge Kopplung Adapter Angeforderte-SS SS wird an den Importeur angepasst Lose Kopplung 1 1

Verfeinerung von Schnittstellen Syntax (Rückgabewerte, Argumente, in/out, Typen) Semantik (Was bedeutet die Methode) Formell OCL, JML, VDM, Z, QSL Informell z.b JavaDoc Protokoll (z.b synchron, asynchron) Nicht funktionale Eigenschaften (Performance, Robustheit, Verfügbarkeit) 1 2

Semantik von Schnittstellen 2 Arten von Methoden: Kommandos ändern den Zustand des Systems Abfragen lassen das System unverändert ndert Semantik: Einfache Abfragen Abgeleitete Abfragen Was bewirken die Kommandos Was bedeuten die Abfragen! Die meisten Schnittstellen sind komplizierter als sie aussehen! 1 3

Schnittstellen und Entwicklungsprozess Wer muss was wissen? SS, die alle Entwickler sehen, müssen m sehr einfach sein komplexe SS sollen nur für f r wenige Entwickler sichtbar sein Die Schnittstellen-Architektur beeinflusst den Entwicklungsprozess sehr: Parallelisierung der Entwicklung Verteilung des Knowhow innerhalb des Teams Rollenzuweisung im Team 1 4

3. Komponenten 1 5

Was ist eine Komponente? Der einzige Weg Systeme zu entwerfen und zu verstehen Teile und herrsche Prinzip Merkmale: Exportiert mind. 1 SS Importiert andere SS Versteckt Implementierung Minimale Annahmen über die Umgebung Komponenten lassen sich komponieren 1 6

Komponenten & Objektorientierung I? Klasse = Komponente Klasse als Entwurfseinheit zu klein Man kann ohne OO hervorragende Komponenten bauen Mit OO können k auch sehr schlechte monolithische Architekturen entstehen Naive Objektorientierung führt f oft zu unwartbaren Systemen, in denen tausende Klassen wahllos miteinander kommunizieren Datenkapselung erreicht man durch Verstecken von Klassen und nicht durch Verstecken von Feldern 1 7

Komponenten & Objektorientierung II Strikte Kontrolle der Importanweisungen: wichtigste Maßnahme beim Entwurf Zyklen strikt vermeiden OO nur innerhalb Komponenten Komponenten kommunizieren ausschließlich lich über SS Vererbung über Komponentengrenzen strikt verboten Anwendungsbeziehungen nur beschränkt mit Objektreferenzen implementierbar 1 8

Konfiguration Wer verbindet Benutzer und Implementierung? Importeur und Exporteur kennen sich nicht Die Konfiguration verbindet die beiden Legt die konkrete Implementierung fest Zur Compilezeit Zur Laufzeit Möglichkeiten für f r Konfiguration Konstruktor Fabrik Namensdienst! Konfiguration nur an bestimmten Stellen! 1 9

Kompositionsmanager Stellt eine geeignete Umgebung für f r die Komponente Konfiguration Ausnahmebehandlung Bereitstellung von Ressourcen (Threads, Sockets, u.s.w), Aufbau von Verbindungen, Transaktionskontrolle Liefert eine Komposition Kompositionsmanager Exportiert eine Teilmenge aller importierten SS Fassade für f r die exportierten SS R S Cx U Cy V Konfiguration schränkt Freiheitsgrade ein T T Cz W 2 0

Wie findet man Komponenten? Entwurf der Schnittstellen Validieren der Schnittstellen Implementieren der Komponente Validieren der Implementation Komponente verbinden durch Konfiguration 2 1

Wie beschreibt man Komponenten? Beschreibung von außen nach innen: Übersicht: : Idee hinter der Komponente, ein bis zwei Seiten Außensicht ensicht: : alle Informationen für f r den Benutzer Innensicht: : inneren Aufbau der Komponente für f r die Entwickler Variabilitätsanalyse tsanalyse: : Anwendungsfälle für f r evtl. Änderbarkeit Häufige Fehler : gar keine Beschreibung unsystematisch zu detailliert 2 2

4. Softwarekategorien 2 3

Was ist Softwarekategorie? Softwarekategorien Sachgebiete menschlichen Wissens Software kann & weiß etwas Softwareblutgruppe Softwarekategorie Komponenten finden ist schwierig Kategorien finden ist einfacher Analysieren der Kategorien Zerlegung in Komponenten Zuordnung von Schnittstellen und Komponenten zu Kategorien 2 4

Typen von Softwarekategorien Hauptkategorien: 0-Kategorie: allgemein bekannte Komponenten & Schnittstellen A-Kategorie: Anwendungssoftware frei von technischen Aspekten T-Kategorie: technische Komponenten & Schnittstellen R-Kategorie: Adapter zwischen Kategorien AT: Vermischung von Anwendung und Technik 2 5

Beispiel für f r Softwarekategorien Skat-Kartenspiel 0-Kat A-Kat T-Kat Kartenspiel Swing Deteisystem Skat Kartenspiel-GUI Skatstrategie Kartenspiel-GUI Swing 2 6

Beispiel für f r Softwarekategorien Kartenspielinf o Präsentation Kartenspielverwaltung Präsentation B Realer Spieler Präsentatio n C Kartenspiel - verwaltung Realer Spieler D KartenspielGUI Kartenspiel - steuerung E Kartenspiel Skat A F Kartenspiel - info Virtueller Spieler Skatstrategie G H Skatregeln Skatstrateg ie 2 7

Kommunikation zwischen Komponenten 0-Kat darf von allen verwendet werden Komponente verschiedener Kategorien kommunizieren nur über den ersten gemeinsamen Vorfahren im Konfigurationsgraphen Komponenten können k kommunizieren sobald sie eine gemeinsame Gesprächsebene besitzen und zwar in Form einer Schnittstelle der passenden Kategorie Eine Komponente der Kategorie X darf eine Schnittstelle XY der Kategorie Y genau dann importieren oder exportieren wenn X eine Verfeinerung von Y ist!vermischung von Anwendung und Technik führt f zu unwartbaren Systemen! 2 8

Komplexitätsma tsmaß Reine Kategorie: im Kategoriegraphen gibt es nur einen Weg zur 0-Kat0 Unreine Kategorie: : vermengt zwei oder mehrere Kategorien Komplexitätsma tsmaß: Rein: Anzahl der Vorfahren im Graphen Unrein: Summe der Komplexität t aller oberen Kategorien Modul: Komplexität t der Kategorie zu der es gehört Komponente: Gewichtete Mittel der Komplexitäten ten aller Subkomponenten 2 9

A- und T-T Revolution oder Selbstverständlichkeit? Trennung von Anwendung und Technik ist allgemein akzeptiert Fachlogik und Technologien haben verschiedene Lebenszyklen Software, die sich unterschiedlich schnell ändert, sollte in verschiedene Module untergebracht werden [Parnas 72]. Kritik am Konzept der Softwarekategorien: kostet Performance Gewinn an Flexibilität Aufwand beim Entwurf einfacher bei der Entwicklung Überflüssig bessere Änderbarkeit und Stabilität 3 0

5. Zusammenfassung 3 1

Was sollte man vom Vortrag mitnehmen? Softwarearchitektur ist der wichtigste Erfolgsfaktor einer Software Schnittstellen als Träger der Architektur Typen von Schnittstellen Information in der Schnittstelle Komponenten Komponentenorientierung und OO nicht verwechseln Konfiguration und Kompositionsmanager verwenden Beschreibung der Komponenten Softwarekategorien Schubladen zum Kategorisieren des Knowhos der Software Typen von Softwarekategorien Halten die Abhängigkeiten konstant 3 2

Weitere Themen Fehler & Ausnahmen Spezifikation von Schnittstellen Softwarearchitekturen Anwendungskomponenten & Anwendungskern 3 3

Quasar Ende Vielen Dank fürs f Zuhören! und lesen Sie das Buch! Es ist wirklich empfehlenswert! 3 4