Software Engineering. Grundlagen von Softwarearchitekturen



Ähnliche Dokumente
6 Architektur-Mittel (WOMIT)

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

Übungsklausur vom 7. Dez. 2007

SDD System Design Document

Probeklausur. Lenz Belzner. January 26, Lenz Belzner Probeklausur January 26, / 16

16 Architekturentwurf Einführung und Überblick

Was ist Software-Architektur?

Software-Engineering

Hochschule Darmstadt Fachbereich Informatik. Softwaretechnik II. 4.1 Darstellung der Architektur

Some Software Engineering Principles

Klausur Softwaretechnik Feb. 2008

SEP 114. Design by Contract

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

Typisierung des Replikationsplan Wirries, Denis Datenbankspezialist

Abschnitt 16: Objektorientiertes Design

«Eine Person ist funktional gesund, wenn sie möglichst kompetent mit einem möglichst gesunden Körper an möglichst normalisierten Lebensbereichen

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Fragebogen ISONORM 9241/110-S

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

Grundbegriffe der Wirtschaftsinformatik Informationssystem I

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

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Abschlussklausur Geschäftsprozessmodellierung und Workflowmanagement

Objektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt

Softwareentwicklungspraktikum Sommersemester Grobentwurf

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter

Inhaltsverzeichnis: Definitionen Informationssysteme als Kommunikationssystem Problemlösende Perspektiven Allgemeine System Annäherung Fazit

SWE12 Übungen Software-Engineering

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Bei der Focus Methode handelt es sich um eine Analyse-Methode die der Erkennung und Abstellung von Fehlerzuständen dient.

Softwaretechnik 3. Klausurnachbesprechung , Phillip Ghadir

4 Architektur-Perspektiven (WO)

Requirements Engineering für IT Systeme

Software Engineering. Sommersemester 2012, Dr. Andreas Metzger

Content Management System mit INTREXX 2002.

Agiles Design. Dr.-Ing. Uwe Doetzkies Gesellschaft für Informatik mail:

Berufsprüfung ICT-Applikationsentwicklung

Software Engineering. Organisation von Softwareentwicklungsprojekten


Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Architekturplanung und IS-Portfolio-

RUP Analyse und Design: Überblick

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

Java Enterprise Architekturen Willkommen in der Realität

Die Softwareentwicklungsphasen!

Objektorientiertes Software-Engineering

White Paper. Konfiguration und Verwendung des Auditlogs Winter Release

Use Cases. Use Cases

Wie bewerten. LehrerInnen & SchülerInnen. die MindMatters-Materialien?

Das Pflichtenheft. Dipl.- Ing. Dipl.-Informatiker Dieter Klapproth Ains A-Systemhaus GmbH Berlin

Systemanalyse. - Folien zur Vorlesung für AI3 im Sommersemester Teil 4 -

Mai Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln

Kulturobjekte der Donau Das ContentManagementSystem (CMS)

Data Mining-Projekte

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich. Softwaretechnik I

Workflow, Business Process Management, 4.Teil

Softwareentwicklungspraktikum Sommersemester Feinentwurf

Einführung und Motivation

Softwaretechnologie -Wintersemester 2013/ Dr. Günter Kniesel

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Überprüfung der Bildungsstandards in den Naturwissenschaften. Chemie Marcus Mössner

Objektorientierte Programmierung OOP

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

SWT II Projekt. Chat - Anwendung. Pflichtenheft 2000 SWT

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Informationswirtschaft II Rational Unified Process (RUP)

Informationswirtschaft II

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Lizenzierung von System Center 2012

Umsichtig planen, robust bauen

Powermanager Server- Client- Installation

SharePoint Demonstration

Netzwerkeinstellungen unter Mac OS X

SAFEYTEAMS-Newsletter Nr. 5

Architektur von SN. New Economy Architektur von SN Page 1

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

Fallbeispiel. Auswahl und Evaluierung eines Software- Lokalisierungstools. Tekom Herbsttagung 2004 Angelika Zerfaß

Langlebige Softwarearchitekturen

Software Engineering Klassendiagramme Assoziationen

7. Übung - Datenbanken

Karten-Freischaltung mit dem UNLOCK MANAGER

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

Kapitel 1 Applikations-Architektur VI

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Softwareanforderungsanalyse

Educase. Release Notes 1.7: Neue Funktionen und Verbesserungen. Base-Net Informatik AG Wassergrabe 14 CH-6210 Sursee

IT-Unternehmensarchitektur Übung 01: IT-Strategie

How to do? Projekte - Zeiterfassung

Die Lernumgebung des Projekts Informationskompetenz

Taxonomy of Evolution and Dependability. Integration Engineering SS 2009 Andreas Landerer

Das System sollte den Benutzer immer auf dem Laufenden halten, indem es angemessenes Feedback in einer angemessenen Zeit liefert.

GRS SIGNUM Product-Lifecycle-Management

GDPdU Export. Modulbeschreibung. GDPdU Export. Software-Lösungen. Stand: Seite 1

Datenbanken I - Übung 1

Die Inhalte der Vorlesung wurden primär auf Basis der Vorlesung Software Engineering von Prof. Dr. Faustmann (FHW Berlin Fachbereich II) erstellt.

Client/Server-Systeme

Übungen zur Softwaretechnik

Zukunft der Call-Center mitbestimmen

Transkript:

Software Engineering Grundlagen von Softwarearchitekturen Die Inhalte der Vorlesung wurden primär auf Basis der jeweils angegebenen Literatur erstellt. Darüber hinaus finden sich ausgewählte Beispiele zur Softwareentwicklung aus dem Bereich der Telekommunikation. 08.10.2013 Prof. Dr. Andreas Schmietendorf 1

Inhaltsübersicht Definitionen zur Softwarearchitektur Architekturmerkmale Qualitätsattribute einer Architektur Entwurfsprinzipien einer Architektur 08.10.2013 Prof. Dr. Andreas Schmietendorf 2

Definitionen zur Softwarearchitektur 08.10.2013 Prof. Dr. Andreas Schmietendorf 3

Definition 1 Grundlage kann eine Definition der IEEE sein, die Architektur als Komponenten und deren Interaktion definiert, sowie Entwurfsregeln und Veränderungen beinhaltet: Architecture is defined by the remommended practice as the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution. Quelle: [ANSI/IEEE Std 1471-2000] 08.10.2013 Prof. Dr. Andreas Schmietendorf 4

Definition 2 Eine andere Definition einer relevanten Publikation nennt Abstraktion und verschiedene Sichten als wichtige Konzepte: The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them. Quelle: [Bass, Klements, Kazman, Software Architecture in Practice, 2nd ed., Addison Wesley, 2003] Das Software Engineering Institute verwaltet eine Liste von Definitionen für Software-Architektur (http://www.sei.cmu.edu/architecture/definitions.html). 08.10.2013 Prof. Dr. Andreas Schmietendorf 5

Architekturmerkmale 08.10.2013 Prof. Dr. Andreas Schmietendorf 6

Architektur definiert Struktur Software-Architekt unterteilt ein System in Teile - Komponenten bzw. Module, - Objekte bzw. Dienste/Services, Diese Unterteilung muss bestimmten Anforderungen genügen. Beispiele für solche Anforderungen sind: - Funktions- und Datenverteilung - Internetbasierte Zugriffskanäle Komponenten des Systems erhalten Verantwortlichkeiten Ziel: Verringerung der Abhängigkeiten zwischen Komponenten. 08.10.2013 Prof. Dr. Andreas Schmietendorf 7

Architektur beschreibt Kommunikation Komponenten kommunizieren miteinander, sie tauschen Daten und Kontrollinformationen aus. Vielfältige Möglichkeiten zur Kommunikation wie z.b.: - Gleicher Adressraum via Methodenaufrufe - Middleware (CORBA, RMI, SOAP/WSDL, JSON, ) - REST basierter Architekturstil Design- und Architekturmuster (engl. Pattern) beschreiben erfolgreiche Strukturen, die verschiedene Arten der Komponentenkommunikation unterstützen. Beispiele sind das Proxy- und das Publisher-Subscriber-Muster. 08.10.2013 Prof. Dr. Andreas Schmietendorf 8

Proxy- & Publisher-Subscriber-Muster Unter Verwendung von: Faustmann, G.: Vorlesung Software Engineering, FHW Berlin Fachbereich II 08.10.2013 Prof. Dr. Andreas Schmietendorf 9

Architektur adressiert NFA Nichtfunktionale Anforderungen sind durch UC nicht abgedeckt Bereiche nichtfunktionaler Eigenschaften: - Technische Bedingungen, z.b. Programmiersprache, Datenbank, OS - Geschäftsbedingungen, z.b. Schnittstellen zu Business-Systemen, - Qualitätsattribute, z.b. Skalierbarkeit, Verfügbarkeit. Während die ersten beiden Bereiche in den meisten Fällen durch die Kundenwünsche feststehen, werden Qualitätsattribute durch viele Beteiligte festgelegt (z.b. Nutzer, Projektteam, Geldgeber). Unter Verwendung von: Faustmann, G.: Vorlesung Software Engineering, FHW Berlin Fachbereich II 08.10.2013 Prof. Dr. Andreas Schmietendorf 10

Architektur ist Abstraktion Hierarchische Dekomposition ist ein hilfreicher Mechanismus zur Beschreibung von SW-Architekturen. So können z.b. Komponenten auf verschiedenen Abstraktionsebenen beschrieben werden. Verfeinerungen entstehen durch Anforderungen, z.b. ein vorhandener Server muss eingesetzt werden. Unter Verwendung von: Faustmann, G.: Vorlesung Software Engineering, FHW Berlin Fachbereich II 08.10.2013 Prof. Dr. Andreas Schmietendorf 11

Architektursichten nach Kruchten Kruchten schlägt vier Perspektiven vor: - Logische Sicht der Architektur z.b. durch Klassendiagramme. - Prozesssicht beschreibt Kommunikationsmechanismen. - Physische Sicht beschreibt die Verteilung der Komponenten. - Entwicklungssicht beschreibt die interne Organisation der Komponenten z.b. in Pakete. Quelle: P. Kruchten: Architectural Blueprints, IEEE Software, 12(6) Nov. 1995 08.10.2013 Prof. Dr. Andreas Schmietendorf 12

Architektursichten nach SEI Das Software Engineering Institute (SEI) schlägt in seinem Views and Beyond -Ansatz drei Sichten auf SW-Architektur vor: - Module: Strukturelle Sicht, für Klassen, Pakete und Subsysteme - Komponenten und Konnektoren: Diese Sicht beschreibt den Verhaltensaspekt. Komponenten können Objekte sein, die z.b. über Sockets als Konnektoren kommunizieren. - Allokation: Diese Sicht beschreibt die Abbildung auf Hardware und die Kommunikation über Netzwerke/ DBS. Quelle: Clements, P.; Bachmann, F.; Bass, L.; Garlan, D.; Ivers, J.; Little, R.: Documenting Software Architectures: Views and Beyond, SEI Series in Software Engineering 08.10.2013 Prof. Dr. Andreas Schmietendorf 13

Übung 11-1 1. Versuchen Sie die Ihnen jetzt bekannten Perspektiven auf eine SW- Architektur in eine umfassende Definition zu bringen. 2. Wie könnte man die erwähnten Sichten auf eine SW-Architektur mit Ihnen bekannten Mitteln beschreiben? 3. Nennen Sie Beispiele für nichtfunktionale Anforderungen. Das SEI bietet unter http://www.sei.cmu.edu/architecture/definitions.html die Möglichkeit, eigene Definitionen für SW-Architektur anzugeben. 08.10.2013 Prof. Dr. Andreas Schmietendorf 14

Qualitätsattribute einer Architektur 08.10.2013 Prof. Dr. Andreas Schmietendorf 15

Qualitätsattribute Qualitätsattribute einer SW-Anwendung sind Teil ihrer NFA Sie müssen exakt formuliert sein ( muss schnell sein ) Für viele Attribute gibt es verschiedene Perspektiven wie z.b.: - Anzahl der simultanen Nutzerverbindungen, - steigendes Datenvolumen, - Eine größere Nutzerbasis. Meist sind Anforderungen nichtfunktionaler Art schwer testbar Es existieren sehr viele allgemeine Qualitätsattribute. Unter Verwendung von: Faustmann, G.: Vorlesung Software Engineering, FHW Berlin Fachbereich II 08.10.2013 Prof. Dr. Andreas Schmietendorf 16

Qualitätsattribute Zeit- und ressourcenbezogene Effizienz (Performance) Skalierbarkeit Änderbarkeit Sicherheit Verfügbarkeit Möglichkeiten zur Daten- und Funktionsintegration Portabilität Test- und Wartbarkeit Unter Verwendung von: Faustmann, G.: Vorlesung Software Engineering, FHW Berlin Fachbereich II 08.10.2013 Prof. Dr. Andreas Schmietendorf 17

Übung 11-2 In welcher Weise sollten die dargestellten Qualitätsattribute (vorherige Folie) während der Analysephase eines neuen Softwaresystems berücksichtigt werden. Identifizieren Sie entsprechende Spezifikationsansätze. Auswahl von jeweils 2 Qualitätsattribute je Laborgruppe Überlegen Sie sich methodische und werkzeugbezogene Ansätze zum Erreichen der vorgestellten Qualitätsattribute. 08.10.2013 Prof. Dr. Andreas Schmietendorf 18

Entwurfsprinzipien einer Architektur 08.10.2013 Prof. Dr. Andreas Schmietendorf 19

Übersicht - Entwurfsprinzipien SW-Architekturen erfüllen Anforderungen mehr oder weniger gut. Jedoch existieren allgemeine Prinzipien, die beim Entwurf einer Architektur beachtet werden sollten. Eine erkennbare Missachtung dieser Prinzipien kann als Warnsignal bei der Beurteilung einer Architektur gesehen werden. Die Hauptansätze der Prinzipien sind: - Reduktion der Komplexität und - Erhöhung der Flexibilität/ Änderbarkeit Unter Verwendung von: Faustmann, G.: Vorlesung Software Engineering, FHW Berlin Fachbereich II 08.10.2013 Prof. Dr. Andreas Schmietendorf 20

Lose Kopplung Kopplung ist die Beziehung von Bausteinen in einer Architektur. Betrachtet man z.b. Klassen in OO-Systemen, so kann die Anzahl der Verbindungen gezählt und deren Stärke beurteilt werden. Die Kopplung in einer Architektur sollte möglichst gering gehalten werden. (Lesbarkeit und Änderbarkeit) Teilprinzipien der losen Kopplung sind: - Law of Demeter: Ein Systembaustein sollte nur eng verwandte Bausteine benutzen ( Sprich nicht mit Fremden! ). - Vermeidung zirkulärer Abhängigkeiten: Ursache vieler Probleme (Deadlocks, schwierige Änderbarkeit) arbeitsteilige Entwicklung nahezu ausgeschlossen. Unter Verwendung von: Faustmann, G.: Vorlesung Software Engineering, FHW Berlin Fachbereich II 08.10.2013 Prof. Dr. Andreas Schmietendorf 21

Hohe Kohäsion/ Bindung Kohäsion Abhängigkeiten innerhalb eines Systembausteins. Kopplung und Kohäsion stehen in einer Wechselbeziehung: Je höher die Kopplung, desto geringer die Kohäsion. So sollten z.b. ähnliche Anforderungen Teil desselben Systembausteins sein, da sie sonst zu hohem Kommunikationsbedarf tendieren. Unter Verwendung von: Faustmann, G.: Vorlesung Software Engineering, FHW Berlin Fachbereich II 08.10.2013 Prof. Dr. Andreas Schmietendorf 22

Entwurf für Veränderung Architektonisches Vorausplanen vorhersehbarer Änderungen - Berücksichtigung weitergehender Anforderungen, - Unklarheiten in Anforderungsspezifikationen, - spätere Weiterentwicklungen (z.b. aus Kostengründen), - häufige Änderungen/Anpassungen dieses Systemtyps Probleme: - Zusätzliche Zeit für den weitergehenden Entwurf notwendig - Ggfs. höherer Ressourcenverbrauch Beispiele für Instrumente: - Aufrufschnittstellen in Middleware-Systemen - Verwendung von Konfigurationsdateien Unter Verwendung von: Faustmann, G.: Vorlesung Software Engineering, FHW Berlin Fachbereich II 08.10.2013 Prof. Dr. Andreas Schmietendorf 23

Separation of Concerns Prinzip: Aspekte eines Problems voneinander trennen und jedes Teilproblem für sich behandeln ( Teile und herrsche ) Reduktion der Komplexität und arbeitsteilige Bearbeitung Möglichkeiten sind die Zerlegung - des Systems in Systembausteine ( Modularisierung ), - der Anforderungen, - in Sichten, - in organisatorische Verantwortlichkeiten, - der Erstellungsprozess in Teilprozesse. Grundsätzlich erfolgt Trennung in fachliche und technische Teile Weiter geht ein multidimensionales Separation of Concerns Unter Verwendung von: Faustmann, G.: Vorlesung Software Engineering, FHW Berlin Fachbereich II 08.10.2013 Prof. Dr. Andreas Schmietendorf 24

Information Hiding Nur der für eine Aufgabe notwendige Teil von Informationen wird nach außen gezeigt. Von hoher Bedeutung für die Verständlichkeit einer Architektur. Öffentliche Schnittstellen verbergen Implementierungen und verwendete Daten innerhalb eines Systembausteins. Information Hiding ist auch Strukturierungsprinzip für größere Systemstrukturen: Facade-Entwurfsmuster Unter Verwendung von: Faustmann, G.: Vorlesung Software Engineering, FHW Berlin Fachbereich II 08.10.2013 Prof. Dr. Andreas Schmietendorf 25

Abstraktion Wichtige Aspekte identifizieren und unwichtige Details vernachlässigen Beispiele zur Schnittstellenabstraktion: - Trennung von Schnittstelle und Implementierung - Design-by-Contract (Vor- und Nachbedingungen) - Explizite Schnittstellen Bekanntgabe eigener und verwendeter SSt. - Schnittstellenunterstützung im Entwurf und in der Implementierung - Schnittstellen-Segregationsprinzip (nur benötigte SSt. Integrieren) - Liskov-Substitutionsprinzip (Syntaktische und semantische korrekte Weitergabe von Schnittstellen an abgeleitete Klassen Unter Verwendung von: Faustmann, G.: Vorlesung Software Engineering, FHW Berlin Fachbereich II 08.10.2013 Prof. Dr. Andreas Schmietendorf 26

Modularität Klare Abgrenzung der funktionalen Verantwortlichkeit von Systembausteinen. Kombination der Prinzipien Abstraktion, Separation of Concerns und Information Hiding. Meyer fordert die Kriterien: - Modulare Dekomposition des Problems: Zerlegung in Teilprobleme - Modulare Komposition: Freies Zusammensetzen der Teillösungen - Modulare Verstehbarkeit: Jeder Baustein für sich ist verstehbar - Modulare Kontinuität: Kleine Änderungen betreffen nur einen Baustein - Modulare Protektion: Fehler bleiben auf einen Baustein begrenzt Unter Verwendung von: Faustmann, G.: Vorlesung Software Engineering, FHW Berlin Fachbereich II 08.10.2013 Prof. Dr. Andreas Schmietendorf 27

Übung 11-3 Beschreiben Sie, welche der dargestellten Abstraktionsprinzipien von der Programmiersprache Java direkt oder indirekt unterstützt werden. Gehen Sie dabei auf folgende Sichten ein: - Notationssicht - Architektursicht Wählen Sie jeweils ein Struktur-, Verhaltens-und Erzeugungsmuster (siehe umseitige Beispiele) und gehen Sie dabei auf folgende Aspekte (Name, Problem, Lösung UML/Java, Bewertung, Einsatzgebiete) ein. 08.10.2013 Prof. Dr. Andreas Schmietendorf 28

Entwurfsmuster Beispiele Strukturmuster statische Struktur von Klassen und Objekten - Adapter - Fassade Verhaltensmuster Zusammenwirken von Objekten - Beobachter - Vermittler Erzeugungsmuster Erzeugen von Objekten - Fabrikmethode - Singleton 08.10.2013 Prof. Dr. Andreas Schmietendorf 29