Softwarearchitektur und...

41
Softwarearchitektur und Softwarebauelemente Prof. Dr. Erika Horn Institut für Informatik Professur Software Engineering Engineering Engineering Software Software

Transcript of Softwarearchitektur und...

Page 1: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Softwarearchitektur undSoftwarebauelemente

Prof. Dr. Erika HornInstitut für Informatik

Professur Software Engineering

EngineeringEngineeringSoftwareSoftware

Page 2: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

1 Die Probleme komplexer technischer Produkte

2 Software als technisches Produkt

3 Softwarearchitektur und Softwarebauelemente

4 Mensch und Software

5 Software Engineering - eine Ingenieurdisziplin

Inhalt der Vorlesung

2

Page 3: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Viele Komponenten1 Die Probleme komplexer technischer Produkte

3

Page 4: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Viele Komponenten1 Die Probleme komplexer technischer Produkte

Technische Probleme Managementprobleme

Mensch und technisches Produkt4

Page 5: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Viele Komponenten Teilefertigung und Zulieferung

Komplexe Produktkonstruktion,-planung und Fertigung

Festlegung und Einhaltung von Standards

Viele Komponenten und Beziehungen

Technische Probleme

5

Page 6: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Viele Komponenten Arbeitsplanung und KoordinationArbeitsteilung und Teambildung

Managementprobleme

LogistikQualitätssicherung6

Page 7: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Viele Komponenten MarketingProduktergonomie

Preis/LeistungMode und Esthetik

Mensch und technisches Produkt

7

Page 8: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

AnwendungsbeispielKreditangebotssuche

Kunden-DB Produkte-DB Produkte -DBSicherheits-DB

Bank A - Hausbank Bank B

Produkte-DBBank C

Rechnernetz

➣ Spezielle kundenspezifische Angaben zur Kreditsuche➣ Befragung der Hausbank und anderer Banken➣ Bewertung der eingegangenen Angebote nach Kriterien➣ Verhandlung mit einer Bank über deren Angebot

DB-Datenbank

. . .

2 Software als technisches Produkt

8

Page 9: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

SoftwareSoftware ist eine Menge von Programmen, Daten und zugehörigen Dokumentationen. Software macht ein Rechnersystem für die Lösungeiner Klasse von Anwendungsproblemen nutzbar.

Eigenschaften von Software als technisches Produkt

� Software ist abstrakt (Zugang nur über Dokumentation und Modelle).

� Software - dominierender Anteil an schöpferischer Arbeit.

� Software ist extrem komplex. Die Komplexität ist schwer durchschaubar.

� Software ist "weich", d.h. vermeintlich leicht änderbar.

� Software altert nicht physisch und verschleißt nicht.

� Software hat wie andere technische Produkte auch eine Teilsystem- bzw. Bauelementestruktur. 9

Page 10: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Softwareprodukt

� System von Teilsystemen und Bauelementen, die miteinander inBeziehung stehen

� Entwicklungs-, Verkaufs-, Wartungspaket

� Spezifische Qualitätsmerkmale

20

100

80

60

40

1955 1970 1990 2000

Hardware

Software

Kosten-anteil %

Jahr

10

Page 11: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Softwareprodukt aus Sicht der Entwicklung und Wartung

B11

B15

B12

B14

B13

B1n

B21

B24

B22 B13

B2m

B31

B34

B32

B33

B3n

Teilsystem 2Teilsystem k

Teilsystem 1

Benutzungs-beziehungen

...

......

Teamleiter

Gruppek

Gruppe1

Gruppe2

11

Page 12: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

3 Softwarearchitektur und Softwarebauelemente

Architektur - SoftwarearchitekturEine Architektur beschreibt, aus welchen Komponenten ein technischesProdukt besteht und welche Verbindungen zwischen ihnen existieren.

Bauelemente - SoftwarebauelementeSoftwarebauelemente sind Komponenten, die aus Sicht des Produktauf-baus und der Konstruktion und Fertigung nicht weiter in Teile zerlegtwerden.

12

Page 13: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Softwarebauelement

½ Einheit der Fertigung (Entwerfen, Programmieren, Testen)

½ Einheit der Wiederverwendung Nutzung in einem anderen Kontext, als in dem der Entwicklung

½ Einheit der Abstraktion Der Entwickler eines Bauelements kennt den inneren Aufbau. Der Nutzer kennt nur die für die Benutzung relevanten Merkmale.

½ Der Nutzer des Bauelements muss davon ausgehen, dass das Bauelement zuverlässig ist und seine Funktionsweise garantiert wird (Qualitätsgarantie).

½ Ein Softwarebauelement hat eine Schnittstelle (Interface), die sein äußeres Verhalten beschreibt. Die Kenntnis der Schnittstelle ist für die Benutzung ausreichend.

13

Page 14: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Interface

Implemen-tation

KonkretisierungAbstraktion

Softwarebauelement

14

Page 15: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

unit mdatum;

interfacetype TTag = 1..31;

TMonat = 1..12;TJahr = 0..99;

TDatum = record Tag: TTag;

Monat: TMonat; Jahr: TJahr; end;procedure InitDatum(var pdat: TDatum; pta: TTag;

pmon: TMonat; pja: TJahr);(*Initialisiert ein Datum, prüft Zulässigkeit der Werte*)

function Gleich(pdat1, pdat2: TDatum): boolean;(*Überprüft die Datumsgleichheit, liefert true bei Gleichheit*)

function LiefereTag(pdat: TDatum): TTag;(*Liefert den Tag des Datums*)

function LiefereMonat (pdat: TDatum): TMonat;(*Liefert den Monat des Datums*)...implementation...end.

Datumsmodul

15

Page 16: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Bauelementearten

Bauelementearten

Lokale Verarbeitung Verteilte Verarbeitung

Moduln Objekte Verteilte Objekte Verteilter Code Mobiler Code

Lokale Verarbeitung Erzeugung der Bauelemente und Bauelementestrukturen auf einem lokalen Rechner (Separate Compilation der Bauelemente, Linken, Laden).

Verteilte Verarbeitung Erzeugung der Bauelemente auf verschiedenen Rechnern und heterogenen Plattformen. Beziehungen zwischen Bauelementen werden über Rechnergrenzen hinweg realisiert.

16

Page 17: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

A. Zendler

Architektur

Architektur in der Baukunst

• Bauelemente (Wände, Decken, Fenster, Türen, u.a.)• Verbindungsmittel - konstruktiv (Schrauben, Nägel, Anker, u.a.) - nicht konstruktiv (Verschweißen, Verkleben) Gebäudetypen (Wohnhäuser, Hotels, Flughäfen, u.a.)

Architekturstile

• Antike: Griechischer Tempel

• Romanik: Französische Kapelle

• Moderne: Rathaus von Toronto

17

Page 18: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Softwarearchitekturarten

➣ Schichtenarchitektur

➣ Pipe-Filter-Architektur

➣ Client-Server-Architektur

➣ Objektorientierte Architektur

➣ Agentenarchitektur

18

Page 19: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

½ Vererbungsbeziehungen (

½ Benutztbeziehungen (

½ Teil_von_Beziehung (

½ Semantische Relation (

½ Instantiierungsbeziehung (

½ Nachrichtenaustauschbeziehung ( )

)

)

)

class Interface

Aufbau einer Klasse

<Instanzvariablendeklaration><Methodendeklaration>

class implementation

<Realisierung der Methoden>

Beziehungen zwischen Klassen

)relator

)

message

class <classname>

Objektorientierte Architektur

class definiert einen Typ

19

Page 20: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Person

Torhüter

Datum

EnergieCottbus

Rolle

hat_rolle

Objektorientierte Struktur

20<Name> <Name>Klasse Instanz

Personengruppe

Fußballteam

Page 21: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Schichtenarchitektur

Applikation

Applikation

...

Datenhaltung

Präsentation

Steuerung

...

Allg

emei

ne F

unkt

ione

n

Bas

ism

asch

inen

anpa

ssun

g

Datenhaltung

Datenverwaltung

Datenhaltung

...

21

Page 22: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Verteilte Objekte

Verteilte Objekte werden häufig als Komponenten (Component) bezeichnet. Sie könnenin einem Rechnernetz verteil erzeugt werden. Auf Basis verteilter Objekte können Client/Server-Architekturen hergestellt werden.

ServerEin Server ist ein Diensteanbieter. Ein Dienst ist eine Menge von Funktionen. Server können auf verteilten Rechnern installiert werden.

ClientEin Client ist ein Dienstenutzer. Clients können ebenfalls im Rechnernetz verteilt sein.

MiddlewareDie Beziehungen zwischen Client und Server vermittelt eine Middleware.

CORBA - Common Object Request Broker Architecture

22

Page 23: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Grundstruktur einer Komponente

Component Interface (geschrieben in IDL)

I1 I2 I3

Interfaceteil der Componentimplementation

Implementationsteil der Componentimplementation

Componentimplementation

Abbildung

Interface Definition Language (IDL) ist die Komponentensprache

Herkömmliches Software-bauelement in einerunterstützten Sprache(Abbildungsvorschrift)

23

Page 24: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Sicherheits-DB

Bank A - Hausbank

Produkte-DB Produkte-DB

Bank C

Produkte-DB

Bank B

Kunden-DB

Produkt-Server

Sicherheits-Server

Kunden-Server

Produkt-Server

...

...

Kreditangebots-Server

Kreditsuch-Client

...

Produkt-Server

CORBA

Kreditsuch-Client

Kreditangebots-Server

Client/Server-Architektur des Anwendungsbeispiels

24

Page 25: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Verteilter Code am Beispiel Java

½ Allgemeiner Klassenaufbau wie bei der objektorientierten Programmierung

½ Anderes Verarbeitungsmodell

Õ Lokale Compilation Aus dem Programmcode einer Java-Klasse wird ein Bytecode in einem definierten Format erzeugt und lokal gespeichert.

Õ Verteilte Verarbeitung Bei der Abarbeitung eines Java-Programmes auf einem Rechner (main()-Routine) wird der Bytecode der benutzten Klassen gegebenenfalls auf den Verarbeitungsrechner während der Laufzeit nachgeladen.

Õ Lokale Interpretation Die Interpretation des Bytecodes erfolgt auf dem lokalen Verarbeitungsrechner.

25

Page 26: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Rechnernetz

Rechner

class1class2

class3

classn

...

Bytecode

classxmain() ... class1; classn; classx; ...

nachladen

Grundidee des Verarbeitungsmodells von Java

26

Page 27: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Mobiler Code

Die Grundidee des Bauelementetyps Mobiler Code basiert auf Softwareagenten.

SoftwareagentEin Softwareagent ist ein Computerprogramm mit folgenden Eigenschaften:

½ Ein Agent kann autonom und zielgerichtet im Namen einer Person oder Organisation (Autorität-Authority) arbeitet.

½ Ein Agent hat ein eigenes Ausführungsprofil.

½ Ein Agent kann während seines Lebenszyklusses Aufgaben auf eigene Initiative und in Kooperation mit anderen Agenten ausführen.

½ Ein Agent hat eine Eigenschaft, die festlegt, wer zu seiner Benutzung autorisiert ist.

½ Ein Agent kann mobil sein, d.h. seinen Ausführungsort ändern.

Softwareagentensystem

Ein Softwareagentensystem besteht aus miteinander kommunizierenden Agenten.Agenten kommunizieren über Konnektoren.

27

Page 28: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Kunden-DB Produkte-DB Produkte-DBSicherheits-DBBank A - Hausbank Bank B

Produkte-DBBank C

DB-Agent

Kreditangebots-suche

IdentifikationAuthentisierung

Informations-manager

Kreditberatungs-assistent

DB-Agent DB-Agent DB-Agent DB-Agent

Kreditangebots-suche

Mobile Agenten

Agentenarchitektur

28

Page 29: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

4 Mensch und Software

➣ Produkte sind zweckmäßig!

➣ Produkte entsprechen den technischen Möglichkeiten (Material, Werkzeuge)!

➣ Produkte entsprechen dem Zeitgeschmack!

➣ Produkte sind menschangepasst!

29

Page 30: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Mensch und Architektur

Architekturstile

Antike: GriechischerTempel

Romanik: FranzösischeKapelle

Moderne: Rathaus vonToronto

30

Page 31: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Mensch und Auto

1961 1975 2000

31

Page 32: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Mensch und Software

➣ Entwicklung von Benutzerschnittstellen - von der Kommandozeile zur multimedialen Kommunikation

➣ Software bildet menschliche Organisationsstrukturen nach

➣ Software ist ein intelligenter Kommunikationspartner

32

Page 33: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

WordPerfect 5.1 - 1988

textorientierte Oberfläche, 80*25 ZeichenTrennung Text-Bereich - Steuerzeichen-BereichSteuerzeichen für Textstile, Fonts, Zeilenumbrüche, Fußnoten, Verzeichnisse, Abbildungen, ...Menüzeile normalerweise ausgeblendetschnelle Bedienung komplett über FunktionstastenStatuszeile mit Dateiname und Position im TextDruckseitenvorschau extra aufrufen (Shift+F7, 6)

Benutzerschnittstellen

33

Page 34: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Winword 6.0 - 1993

Benutzerschnittstellen

34

Page 35: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Winword 97 - 1997

Benutzerschnittstellen

35

Page 36: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

/a# dmesg | grep "Memory"

WIMP- Windows- Icons- Menus- Pointers

IPUI- Intelligent- Perceptual- User Interface

Paradigmenwechsel in der Mensch-Maschine-Interaktion

MI- Manuelle Eingabe unter - Wissen über Befehlsumfang - Wissen über Softwaresysteme

Manuelle Eingabe Benutzerassistenz Wahrnehmungsvermögen36

Page 37: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

➣ komplexe Softwareprodukte (Millionen von Codezeilen)

➣ arbeitsteilige Entwicklung, Fertigung, Anwendung (Tausende von Menschen)

➣ menschangepasste (ergonomische) Gestaltung von Software

➣ hohe Qualität (Langlebigkeit, Zuverlässigkeit, Vertrauenswürdigkeit,...)

➣ umfassende Kommunikation, Kooperation, Verantwortungsteilung

5 Software Engineering - eine Ingenieurdisziplin

37

Page 38: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Großer Mangel an ausgebildeten Softwareingenieuren

SoftwareEngineering

Mathematik

Informatik

Arbeits-wissenschaften

andere Ingenieurdisziplinen

•Elektrotechnik•Konstruktions- lehre ...Software

Engineering

Software Engineering ist interdisziplinär

38

Page 39: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Eigene Studiengänge "Software Engineering"

Initiale Ausbildung Projektarbeit Berufspraktikum Professionelle Entwicklung

Ingenieur im Praktikum

Kontinuierliche Weiterbildung

Universität

Unternehmen

Internationaler Standard - Software Engineering Body of Knowledge(SWEBOK) http://www.swebok/org

International evaluierte Studiengänge mit Qualitätskontrolle

Ingenieurausbildung an Universitäten und in Unternehmen

39

Page 40: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

Lehrveranstaltungen des Teams Softwareengineering

Softwarebauelement und Bauelementestrukturen

ArbeitsteiligeSoftwareentwicklung

Management bei derSoftwareentwicklung

Grundlagen derSoftwareentwicklung

Softwarekonstruktion

Softwareprojekt

Softwareagenten

Softwaresicherheit

Softwaremanagement

Techniken und Werkzeuge der Softwareentwicklung

6 Abschlussbemerkungen

Schwerpunktthemen desSoftwareengineering

40

Page 41: Softwarearchitektur und Softwarebauelementeddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/Horn.pdf•Konstruktions-lehre Software ... Engineering Software Engineering ist interdisziplinär

����

Folien: http://www.cs.uni-potsdam.de/soft/lehre/courses/ws00_01/softarch_l.pdfemail: [email protected]

Softwareengineering-TeamHaus 2, 1. Etage

Erika Horn Wolfgang Schubert Thomas Reinke

Horst Voigt Dirk Glöde Wolfgang Jansen

und viele Studenten

41

EngineeringEngineeringSoftwareSoftware