Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Softwarearchitektur undSoftwarebauelemente
Prof. Dr. Erika HornInstitut für Informatik
Professur Software Engineering
EngineeringEngineeringSoftwareSoftware
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
Viele Komponenten1 Die Probleme komplexer technischer Produkte
3
Viele Komponenten1 Die Probleme komplexer technischer Produkte
Technische Probleme Managementprobleme
Mensch und technisches Produkt4
Viele Komponenten Teilefertigung und Zulieferung
Komplexe Produktkonstruktion,-planung und Fertigung
Festlegung und Einhaltung von Standards
Viele Komponenten und Beziehungen
Technische Probleme
5
Viele Komponenten Arbeitsplanung und KoordinationArbeitsteilung und Teambildung
Managementprobleme
LogistikQualitätssicherung6
Viele Komponenten MarketingProduktergonomie
Preis/LeistungMode und Esthetik
Mensch und technisches Produkt
7
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
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
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
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
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
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
Interface
Implemen-tation
KonkretisierungAbstraktion
Softwarebauelement
14
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
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
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
Softwarearchitekturarten
➣ Schichtenarchitektur
➣ Pipe-Filter-Architektur
➣ Client-Server-Architektur
➣ Objektorientierte Architektur
➣ Agentenarchitektur
18
½ 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
Person
Torhüter
Datum
EnergieCottbus
Rolle
hat_rolle
Objektorientierte Struktur
20<Name> <Name>Klasse Instanz
Personengruppe
Fußballteam
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
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
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
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
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
Rechnernetz
Rechner
class1class2
class3
classn
...
Bytecode
classxmain() ... class1; classn; classx; ...
nachladen
Grundidee des Verarbeitungsmodells von Java
26
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
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
4 Mensch und Software
➣ Produkte sind zweckmäßig!
➣ Produkte entsprechen den technischen Möglichkeiten (Material, Werkzeuge)!
➣ Produkte entsprechen dem Zeitgeschmack!
➣ Produkte sind menschangepasst!
29
Mensch und Architektur
Architekturstile
Antike: GriechischerTempel
Romanik: FranzösischeKapelle
Moderne: Rathaus vonToronto
30
Mensch und Auto
1961 1975 2000
31
Mensch und Software
➣ Entwicklung von Benutzerschnittstellen - von der Kommandozeile zur multimedialen Kommunikation
➣ Software bildet menschliche Organisationsstrukturen nach
➣ Software ist ein intelligenter Kommunikationspartner
32
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
Winword 6.0 - 1993
Benutzerschnittstellen
34
Winword 97 - 1997
Benutzerschnittstellen
35
/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
➣ 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
Großer Mangel an ausgebildeten Softwareingenieuren
SoftwareEngineering
Mathematik
Informatik
Arbeits-wissenschaften
andere Ingenieurdisziplinen
•Elektrotechnik•Konstruktions- lehre ...Software
Engineering
Software Engineering ist interdisziplinär
38
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
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
����
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