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

Die Seite wird erstellt Finn Bittner
 
WEITER LESEN
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