• Keine Ergebnisse gefunden

1.1Entwerfen – Warum? 1. Einführung

N/A
N/A
Protected

Academic year: 2021

Aktie "1.1Entwerfen – Warum? 1. Einführung"

Copied!
16
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 1

1. Einführung

1.1 Entwerfen – Warum?

1.2 Definitionen

1.3 Entwurfsprinzipien 1.4 Produkte

1.5 Der Entwurfsprozess 1.6 Das Lösungskonzept 1.7 Architekturstile

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 2

1.1 Entwerfen – Warum?

Beim Arbeiten im Kleinen nicht oder nur ansatzweise (Detailentwurf)

Größere Software braucht einen systematischen Aufbau

Verstehen: Software >> 1 Kopf

Arbeit verteilen: Software-Entwicklung ist Teamarbeit

Einbetten in vorhandene Software: Schnittstellen und Wechselwirkungen verstehen

Verteilen auf Hardware-Komponenten, geographische Verteilung

Lokalisieren: Lokal ändern können, Auswirkungen von Erweiterungen und Ergänzungen abschätzen/begrenzen

Aufbau im Großen: Software-Architektur, Konzept

Aufbau im Detail: Software-Entwurf (und Programme)

(2)

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 3

1.2 Definitionen

Architektur (architecture) – Die Organisationsstruktur eines Systems oder einer Komponente. (IEEE 610.12)

Entwurf (design) – 1. Der Prozess des Definierens von Architektur,

Komponenten, Schnittstellen und anderen Charakteristika eines Systems oder einer Komponente.

2. Das Ergebnis des Prozesses gemäß 1. (IEEE 610.12)

Software – Die Programme, Verfahren, zugehörige Dokumentation und Daten, die mit dem Betrieb eines Rechnersystems zu tun haben. (IEEE 610.12)

1.3 Entwurfsprinzipien

Systematischer Aufbau: Die Grundlage guten Entwurfs

Strukturen (Module, Prozesse, Kommunikation...):

Gliederung in Komponenten und Interaktion zwischen Komponenten

Abstraktionen (Komposition, Benutzung, Generalisierung, Aspekte)

Systematische Vergröberung und Verfeinerung nach verschiedenen Kriterien

Verständnis großer Zusammenhänge unter Weglassung der Details

Verständnis eines Details unter Weglassung/starker Vergröberung des Rests

Systematischer Zusammenhang zwischen Übersichten und

(3)

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 5

Modularität: Divide et impera oder Das Entwurfsprinzip schlechthin

Gliederung der Gesamtlösung in kleinere, überschaubare Teillösungen

Nicht irgendwie gliedern, sondern:

• Modul = in sich geschlossene Einheit

• Verwendung erfordert keine Kenntnisse über inneren Aufbau

• Kommunikation mit Umgebung ausschließlich über Schnittstelle

• Rückwirkungsfreie Änderbarkeit im Modulinnern

• Korrektheit ohne Kenntnis der Einbettung prüfbar

zwingend bei Entwurf großer Systeme

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 6

Das Geheimnisprinzip (Information Hiding):

Das Fundamentalprinzip zur Gliederung komplexer Systeme

Modularisierungsprinzip: Kapselung von Entwurfsentscheidungen

Modulverwender wissen, welche Entwurfsentscheidungen ein Modul implementiert, aber nicht wie.

Typische Arten von Entwurfsentscheidungen:

wie eine Funktion realisiert ist

wie eine Datenstruktur aufgebaut ist und wie sie bearbeitet werden kann

wie Leistungen Dritter genutzt werden

(4)

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 7

Zusicherungen und Verträge: Die starken Geschwister des Geheimnisprinzips

Zusicherungen definieren das Leistungsangebot eines Moduls

Voraussetzungen – was vorher erfüllt sein muss

Ergebniszusicherung – was nachher erfüllt ist

Invarianten – was nicht verändert werden darf

Verpflichtungen – mit der Verwendung übernommene Pflichten

Verträge regeln die Zusammenarbeit (z. B. Delegation von Teilaufgaben) zwischen Modulen ("Design by Contract")

Qualität: Du sollst nicht schludern

Ein guter Entwurf ist:

Effektiv: erfüllt die Vorgaben, löst das Problem des Auftraggebers

Robust

Wirtschaftlich: gebrauchstauglich, kostengünstig, mehrfachverwendbar/mehrfachverwendet

Erfordert kontinuierliche Prüfung

(5)

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 9

Ästhetik und Eleganz: Was gut ist, ist auch schön

Gestaltet statt geworden

Einfach und klar

Problemadäquate Architektur

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 10

1.4 Produkte

Resultat des Architekturentwurfs: Software-Architektur

Niedergelegt in einem Dokument (genannt Lösungskonzept, Software-Architektur, Architectural design [document], o.ä.)

Findet ihren Niederschlag in Coderahmen und/oder Code

Die Struktur des Codes ist eine bruchfreie oder zumindest formal rückverfolgbare Umsetzung der Architektur

Dokumentiert auch Einbettung in vorhandene Software sowie Beschaffungs- und Wiederverwendungsentscheide

Resultat des Detailentwurfs: Wohldokumentierter Coderahmen für jede Komponente des Codes

Die Struktur des Detailentwurfs ist eine möglichst bruchfreie, min- destens aber formal rückverfolgbare Umsetzung der Architektur

Die Struktur des Codes ist eine 1:1-Umsetzung der Struktur des Detailentwurfs

(6)

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 11

1.5 Der Entwurfsprozess

1.5.1 Die Hauptaufgaben des Architekturentwurfs Aufgabe analysieren

Anforderungen verstehen

Vorhandene bzw. beschaffbare Technologien und Mittel analysieren

Architektur modellieren und dokumentieren

Grundlegende Systemarchitektur festlegen

Muster Kapitel 3, 6

Metaphern Kapitel 6 und Vorlesung «Modellierung», Kapitel 7

Stil Kapitel 1.7

Modularisieren

Gliederung der zu erstellenden Software in Komponenten

Abgrenzung der Module

Festlegung von Verantwortlichkeiten und Entwurfsgeheimnissen

Definition der Schnittstellen

Wer kommuniziert was mit wem

Wie wird kommuniziert

Verträge

Nebenläufige Lösungen in Prozesse gliedern

Parallele/Zeitlich verzahnte Ausführung von Aktivitäten analysieren

Festlegung der Prozesse

Zuordnung von Modulen zu Prozessen

Festlegung der Kommunikationsmittel; Zuordnung von Zusammenarbeit zu Mitteln

(7)

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 13

Ressourcen zuordnen

Module -> Prozesse

Prozesse und Daten -> Prozessoren, Speicher

Zusammenarbeit -> Kommunikationsmittel, Netze

Teilkonzepte für Querschnittsaufgaben erstellen

Erstellung aspektorientierter Konzepte, zum Beispiel

Konzeptionelles Datenbankschema

Mensch-Maschine-Kommunikationskonzept

Fehlerbehandlungs-, Fehlertoleranz-, Sicherheitskonzepte

Lösungskonzept (als Dokument) erstellen Aufbau: Einleitung

Struktur der Lösung

Aspektbezogene Teilkonzepte

Voraussetzungen und benötigte Hilfsmittel

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 14

Lösungskonzept prüfen

Anforderungen/Kundenwünsche erfüllt?

Softwaretechnisch gut?

Wirtschaftlich?

(8)

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 15

1.5.2 Hauptaufgaben des Detailentwurfs

Abbildung der Module und Prozesse auf die verfügbaren Konstrukte der verwendeten Programmiersprache(n)

Erstellung von Coderahmen und Implementierungsskizzen für alle Module und Prozesse

Detaillierte Ausarbeitung aller Aspektkonzepte

Wo noch nicht geschehen: Umsetzung der Aspektkonzepte in den entworfenen Modulen und Prozessen

Kann bei Verwendung leistungsfähiger Programmiersprachen und bei Komponenten mit geringen Risiken mit der Codierung

zusammenfallen

1.5.3 Einbettung

Erster Schritt der Lösung

Wenn Anforderungsspezifikation vorliegt

Vorgabe für Codierung Aber

Hierarchische Verzahnung von Anforderungen und Lösungen

Zeitliche Verzahnung von Anforderungen, Entwürfen und Code bei evolutionären Prozessen

(9)

Architektur und Entwurf von Software 1. EinführungMG, 99-03-3117

grobe Anforderungs- spezifikation des Gesamtsystems

grobe Gesamt- architektur des Systems

Entwicklungs- planung

für i-tes Teilprojekt

Anforderungsspezi- fikation

i-tes Teilprojekt

Architekturentwurf i-tes Teilprojekt

Installation und Nutzung der Software Auswertung der

Erfahrungen

Detailentwurf und Realisierung i-tes Teilprojekt

Prototyp entwickeln

Prototyp installieren und erproben

Entwicklungsprozeß nach einem Wachstumsmodell

mit Einsatz von Prototyping

Lieferung Release

grobe Planung des Gesamtprojekts

Integration mit vor- handener Software

Architektur und Entwurf von Software 1. EinführungMG, 99-03-3118

1.5.4 Vorgehen

Keine Patentrezepte oder algorithmischen Wege

Vorgehen ist abhängig vom verwendeten Entwurfsstil und vomgewählten Entwicklungsmodell

Nachfolgend: Mögliches Vorgehen bei objektorientiertem,evolutionärem Entwurf

(10)

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 19

Vorgehen und Zusammenhänge:

Anforderungen Technologie Vorhandene/beschaffbare Mittel (Hard- und Software)

Aufgaben- analyse

Wahl von Architekturmetapher(n), grundlegenden Architekturmustern und des Architekturstils

Prozesse und Kommunikation festlegen

Aspektbezogene Teilkonzepte erstellen

Physische Struktur festlegen, Ressourcen zuteilen

Präzise Definition von Objekten/Klassen, Zusammenarbeit

Inkrementeller Aufbau des Lösungskonzepts

Wiederverwendungs-/

Beschaffungsentscheide treffen

Modularisierung:

Objekt/Klassenmodell erstellen bzw. bearbeiten und ergänzen

Validieren und verifizieren

1.5.5 Variantenbehandlung

Erkennen

Beurteilen: Kostengünstigste Variante bestimmen:

Kosten der Variante (einschließlich Folgekosten!)

Kosten der Untersuchung (!)

Je größer / teuerer der Untersuchungsgegenstand, desto aufwendiger darf die Untersuchung sein

Entscheiden

(11)

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 21

1.5.6 Beschaffung und Wiederverwendung

Ist ein Konzeptentscheid

Für jede Komponente untersuchen, ob die Option Beschaffung bzw.

Wiederverwendung besteht

Falls ja, Beschaffung / Wiederverwendung vs. Eigenentwicklung als Lösungsvarianten untersuchen und entscheiden

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 22

1.6 Das Lösungskonzept

Dokumentiert das Ergebnis des Architekturentwurfs

Möglicher Aufbau:

1 . Einleitung 1 . 1Überblick

Überblick über die gewählte Lösung 1 . 2Ziele und Vorgaben

Beschreibung von Entwurfszielen und Vorgaben, die nicht in der Anforderungsspezifikation stehen

1 . 3Einbettung und Abgrenzung

- Wo und wie ist das konzipierte System eingebettet

- Wie und über welche Schnittstellen wird mit der Umwelt kommuniziert 1 . 4Lösungsalternativen

Betrachtete, aber schließlich verworfene Lösungsalternativen: Kurze Skizze jeder Alternative, Grund für die Verwerfung

(12)

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 23

2 . Struktur der Lösung 2 . 1Übersicht

- Architekturstil, Metapher(n) und Architekturmuster, die der Architektur zugrunde liegen

- Teilsysteme und ihre Aufgaben 2 . 2Prozessstruktur

Prozesse und Kommunikation zwischen den Prozessen 2 . 3Modulare Struktur

Module und ihre Zusammenhänge, bei objektorientiertem Entwurf Klassen- bzw. Objektmodelle

2 . 4Entwurf der Module

- Beschreibung der Schnittstellen

- ggf. Hinweise zur geplanten Implementierung 2 . 5Physische Struktur

- Physische Gliederung der Software in Pakete, Komponenten, etc.

- Ressourcenzuordnung

3 . Aspektbezogene Teilkonzepte

Ein Unterkapitel je interessierendem Aspekt, zum Beispiel Datenhaltungskonzept, Mensch-Maschine-Kommunikationskonzept, Fehlerbehandlungskonzept,

Fehlertoleranzkonzept, Sicherheitskonzept, etc.

4 . Voraussetzungen und benötigte Hilfsmittel 4 . 1Benötigte Software

Beschreibung der benötigten (fertigen) Software, welche für Entwicklung und/oder Betrieb des Systems zu beschaffen bzw. zu verwenden ist 4 . 2Benötigte Hardware

Beschreibung der benötigten Hardware, welche für Entwicklung und/oder Betrieb des Systems zu beschaffen bzw. zu verwenden ist

4 . 3Benötigtes Umfeld

Charakterisierung der für den Betrieb des Systems erforderlichen

organisatorischen und /oder technischen Strukturen und Abläufe Quellennachweis

(13)

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 25

1.7 Architekturstile

Architekturstil – Leitlinien für die Gestaltung der Architektur

Verwendete Modularten

Verwendete Arten von Kooperation

zwischen den Modulen ➜ Architekturstil

Benutzung passender Architekturmuster

Orientierung an einer Architekturmetapher

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 26

1.7.1 Funktionsorientierte Architektur (Structured Design)

Jeder Modul berechnet eine Funktion

Zur Realisierung einer Funktion können andere, einfachere Funktionen aufgerufen werden

Daten werden über Parameter oder gemeinsame Speicherbereiche ausgetauscht

Entwurf = Hierarchie aufeinander aufbauender Funktionen

Meist nach dem Prinzip Eingabe – Verarbeitung – Ausgabe strukturiert

Typischer Vertreter: "Structured Design"

Problem: Daten und funktionsübergreifende Probleme können nicht gekapselt werden -> Ungenügende Abstraktion -> Verständnis und Änderbarkeit erschwert

Liefert in vielen Fällen keine gute Modularisierung

(14)

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 27

1.7.2 Datenorientierte Architektur (Datenabstraktionen)

Modularisierung nach dem Geheimnisprinzip

Datenstruktur und alle darauf möglichen Operationen sind zusammen- gefasst: Datenabstraktion

notwendig zum Verbergen von Entwurfsentscheidungen

Realisierung durch Abstrakte Datentypen

System besteht aus Menge aufeinander aufbauender Datenabstraktionen

Jeder Modul bietet Leistungen an

Module benutzen die Leistungen anderer Module zur Realisierung der eigenen Leistungen

Benutzungshierarchie

Regelung der Zusammenarbeit durch Verträge (Design by Contract)

Zusätzlich häufig Gliederung in Schichten

Stil besonders geeignet zur Realisierung von Information Hiding

Gute Abstraktion -> Entwürfe sind leicht verstehbar und änderbar

1.7.3 Objektorientierte Architektur (-> Kapitel 2)

Modul repräsentiert Objekt des Problembereichs oder benötigtes Informatik-Element

System besteht aus Menge kooperierender Objekte

Abstrakte Beschreibung gleichartiger Objekte Klasse

Geeignet gebildete Klassen beachten das Geheimnisprinzip

gute Modularisierung

Systematischer Zusammenhang zwischen allgemeinen und speziellen Objekten: Objekte von Spezialklassen erben alle Strukturen und

Operationen der übergeordneten allgemeinen Klassen

➔ Spezialisierungs- (Generalisierungs-) Hierarchie

ermöglicht problemnahe Modellierung

schränkt jedoch Anwendbarkeit des Geheimnisprinzips ein

Durch Vererbung massiv erhöhte Flexibilität + Software ist erweiterbar

(15)

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 29

1.7.4 Prozessorientierte Architektur (-> Kapitel 4)

System besteht aus Menge unabhängig arbeitender, untereinander kooperierender Akteure

Akteure sind typisch als Prozesse realisiert

Prozesse kooperieren durch Austausch von Nachrichten oder durch Zugriff auf gemeinsame Speicherbereiche

Prozesse sind die Module der obersten Stufe

Jeder Prozess ist typisch ein sequentiell ablaufender Systemteil

Prozesse sind selbst wieder modularisiert, z.B. in objektorientiertem Stil

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 30

1.7.5 Komponentenorientierte Architektur (-> Kapitel 5)

Weiterentwicklung objektorientierter Architekturen

Komponente (im engeren Sinn) – Stark gekapselte Menge zusammenge- höriger Objekte / KIassen, die eine gemeinsame Aufgabe lösen

System besteht aus einer Menge von (möglicherweise geographisch verteilten) Komponenten, die über einen Makler kommunizieren

Komponenten kennen Schnittstellen ihrer Partnerkomponenten ... kennen nicht Art der Realisierung der Kommunikation

Geografische Lokalisierung

Implementierung der Partnerkomponenten

(16)

Architektur und Entwurf von Software 1. Einführung MG, 99-03-31 31

1.7.6 Datenflussorientierte Architektur

Die Software wird in Aktivitäten und Datenflüsse (sowie ggf. Speicher) gegliedert

Aktivitäten arbeiten, wenn die von ihnen benötigten Daten vorliegen -> Systemsteuerung durch Datenfluss

Typische Vertreter

Leitung-Filter-Architekturen, z.B. UNIX pipes

Regler

Strukturierte Analyse

Referenzen

ÄHNLICHE DOKUMENTE

engineering principles in order to obtain economically software that is reliable and works efficiently on real machines.”. [Bauer

 Aufteilung  der  Verantwortlichkeiten  auf  Klassen  und   Gestaltung  ihrer  Interaktionen  .

Zu jeder Sprache, die nicht mehr als n ∈ N S¨ atze enth¨ alt, gibt es mindestens eine kontextfreie Grammatik, die diese Sprache definiert.. Zu jeder kontextfreien Grammatik gibt es

Korrekte Software: Grundlagen und Methoden Vorlesung 8 vom 22.05.17: Funktionen und Prozeduren. Serge Autexier,

Anweisungen bestehen kann, wird durch die Doppelstriche am Rand des Strukturblocks

12.6 Beihilfevorschriften zur ambulanten Psychotherapie und Maßnahmen der psychosomatischen Grund­. versorgung

Die  Verfolgung  von  Militärdienstentziehern  und  Deserteuren  erfolgt  nach  den  Bestimmungen  von  Artikel  26  Abs.  1  des  Wehrpflichtgesetzes.  Demnach 

Und so wird ein zweiter Aspekt wichtig: Einen Gegenstand sprachlich erfassen heißt eben auch, sich der Sprache bedienen bzw. sich die Sprache erarbeiten, die eine