Softwarearchitektur und Softwarebauelemente - Prof. Dr. Erika Horn Institut für Informatik Professur Software Engineering - SOFTARCH
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Software Engineering Softwarearchitektur und Softwarebauelemente Prof. Dr. Erika Horn Institut für Informatik Professur Software Engineering
Inhalt der Vorlesung 1 Die Probleme komplexer technischer Produkte 2 Software als technisches Produkt 3 Softwarearchitektur und Softwarebauelemente 4 Mensch und Software 5 Software Engineering - eine Ingenieurdisziplin 2
1 Die Probleme komplexer technischer Produkte Viele Komponenten 3
1 Die Probleme komplexer technischer Produkte Viele Komponenten Technische Probleme Managementprobleme Mensch und technisches Produkt 4
Technische Probleme Viele VieleKomponenten Komponenten und Beziehungen Teilefertigung und Zulieferung Komplexe Produktkonstruktion, Festlegung und Einhaltung -planung und Fertigung von Standards 5
Managementprobleme Viele Komponenten Arbeitsteilung und Teambildung Arbeitsplanung und Koordination Qualitätssicherung Logistik 6
Mensch und technisches Produkt Viele Komponenten Produktergonomie Marketing Mode und Esthetik Preis/Leistung 7
2 Software als technisches Produkt Anwendungsbeispiel Kreditangebotssuche Bank A - Hausbank Bank B Sicherheits-DB Kunden-DB Produkte-DB Produkte -DB Bank C Produkte-DB . . Rechnernetz . DB-Datenbank ➣ Spezielle kundenspezifische Angaben zur Kreditsuche ➣ Befragung der Hausbank und anderer Banken ➣ Bewertung der eingegangenen Angebote nach Kriterien ➣ Verhandlung mit einer Bank über deren Angebot 8
Software Software ist eine Menge von Programmen, Daten und zugehörigen Dokumentationen. Software macht ein Rechnersystem für die Lösung einer 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 in Beziehung stehen ½ Entwicklungs-, Verkaufs-, Wartungspaket ½ Spezifische Qualitätsmerkmale Kosten- anteil % 100 80 Hardware 60 40 Software 20 Jahr 1955 1970 1990 2000 10
Softwareprodukt aus Sicht der Entwicklung und Wartung Teamleiter Teilsystem k Teilsystem 2 B11 B21 ... B12 B13 B1n B22 B13 ... B14 B15 B2m B24 Gruppek Teilsystem 1 Gruppe2 B31 B32 B3n ... Benutzungs- beziehungen B33 B34 Gruppe1 11
3 Softwarearchitektur und Softwarebauelemente Bauelemente - Softwarebauelemente Softwarebauelemente sind Komponenten, die aus Sicht des Produktauf- baus und der Konstruktion und Fertigung nicht weiter in Teile zerlegt werden. Architektur - Softwarearchitektur Eine Architektur beschreibt, aus welchen Komponenten ein technisches Produkt besteht und welche Verbindungen zwischen ihnen existieren. 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
Softwarebauelement Interface Abstraktion Konkretisierung Implemen- tation 14
Datumsmodul unit mdatum; interface type 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. 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
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, A. Zendler 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
Objektorientierte Architektur Aufbau einer Klasse Beziehungen zwischen Klassen class class Interface ½ Vererbungsbeziehungen ( ) ½ Benutztbeziehungen ( ) ½ Teil_von_Beziehung ( ) class implementation ½ Semantische Relation ( relator ) ½ Instantiierungsbeziehung ( ) ½ Nachrichtenaustauschbeziehung ( message ) class definiert einen Typ 19
Objektorientierte Struktur Rolle hat_rolle Personengruppe Person Datum Fußballteam Torhüter EnergieCottbus Klasse Instanz 20
Schichtenarchitektur Präsentation Steuerung Basismaschinenanpassung Allgemeine Funktionen Applikation ... Applikation Datenverwaltung Datenhaltung ... ... Datenhaltung 21
Verteilte Objekte Verteilte Objekte werden häufig als Komponenten (Component) bezeichnet. Sie können in einem Rechnernetz verteil erzeugt werden. Auf Basis verteilter Objekte können Client/Server-Architekturen hergestellt werden. Server Ein Server ist ein Diensteanbieter. Ein Dienst ist eine Menge von Funktionen. Server können auf verteilten Rechnern installiert werden. Client Ein Client ist ein Dienstenutzer. Clients können ebenfalls im Rechnernetz verteilt sein. Middleware Die 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 Abbildung Interfaceteil der Componentimplementation Componentimplementation Herkömmliches Software- bauelement in einer unterstützten Sprache (Abbildungsvorschrift) Implementationsteil der Componentimplementation Interface Definition Language (IDL) ist die Komponentensprache 23
Client/Server-Architektur des Anwendungsbeispiels Kreditsuch- Kreditsuch- Client Client ... Kreditangebots- Kreditangebots- Server Server Sicherheits- Kunden- Produkt- Produkt- Produkt- Server Server ... Server Server Server ... Sicherheits-DB Kunden-DB Produkte-DB Produkte-DB Produkte-DB CORBA Bank A - Hausbank Bank B Bank C 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
Grundidee des Verarbeitungsmodells von Java class2 class1 class3 ... Rechnernetz main() classx ... classn class1; classn; classx; ... nachladen Rechner Bytecode 26
Mobiler Code Die Grundidee des Bauelementetyps Mobiler Code basiert auf Softwareagenten. Softwareagent Ein 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
Agentenarchitektur Kreditberatungs- assistent Informations- manager Mobile Agenten Identifikation Kreditangebots- Kreditangebots- Authentisierung suche suche DB-Agent DB-Agent DB-Agent DB-Agent DB-Agent Sicherheits-DB Kunden-DB Produkte-DB Produkte-DB Produkte-DB Bank A - Hausbank Bank B Bank C 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: Griechischer Tempel Romanik: Französische Kapelle Moderne: Rathaus von Toronto 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
Benutzerschnittstellen WordPerfect 5.1 - 1988 textorientierte Oberfläche, 80*25 Zeichen Trennung Text-Bereich - Steuerzeichen-Bereich Steuerzeichen für Textstile, Fonts, Zeilenumbrüche, Fußnoten, Verzeichnisse, Abbildungen, ... Menüzeile normalerweise ausgeblendet schnelle Bedienung komplett über Funktionstasten Statuszeile mit Dateiname und Position im Text Druckseitenvorschau extra aufrufen (Shift+F7, 6) 33
Benutzerschnittstellen Winword 6.0 - 1993 34
Benutzerschnittstellen Winword 97 - 1997 35
Paradigmenwechsel in der Mensch-Maschine-Interaktion /a# dmesg | grep "Memory" MI WIMP IPUI - Manuelle Eingabe unter - Windows - Intelligent - Wissen über Befehlsumfang - Icons - Perceptual - Wissen über Softwaresysteme - Menus - User Interface - Pointers Manuelle Eingabe Benutzerassistenz Wahrnehmungsvermögen 36
5 Software Engineering - eine Ingenieurdisziplin ➣ 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 37
Großer Mangel an ausgebildeten Softwareingenieuren Software Engineering ist interdisziplinär andere Ingenieurdisziplinen Informatik •Elektrotechnik •Konstruktions- lehre Software Software ... Engineering Engineering Mathematik Arbeits- wissenschaften 38
Eigene Studiengänge "Software Engineering" 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 Ingenieur im Praktikum Initiale Ausbildung Projektarbeit Berufspraktikum Professionelle Entwicklung Kontinuierliche Weiterbildung Unternehmen Universität 39
6 Abschlussbemerkungen Lehrveranstaltungen des Teams Schwerpunktthemen des Softwareengineering Softwareengineering Grundlagen der Softwareentwicklung Softwarebauelement und Softwarekonstruktion Bauelementestrukturen Softwareprojekt Arbeitsteilige Softwareagenten Softwareentwicklung Softwaresicherheit Management bei der Softwaremanagement Softwareentwicklung Techniken und Werkzeuge der Softwareentwicklung 40
(1'( Software Engineering Folien: http://www.cs.uni-potsdam.de/soft/lehre/courses/ws00_01/softarch_l.pdf email: ehorn@soft.cs.uni-potsdam.de Softwareengineering-Team Haus 2, 1. Etage Erika Horn Wolfgang Schubert Thomas Reinke Horst Voigt Dirk Glöde Wolfgang Jansen und viele Studenten 41
Sie können auch lesen