Sie sind hier
E-Book

Software Engineering

Architektur-Design und Prozessorientierung

AutorGustav Pomberger, Wolfgang Pree
VerlagCarl Hanser Fachbuchverlag
Erscheinungsjahr2004
Seitenanzahl278 Seiten
ISBN9783446227880
FormatPDF
KopierschutzWasserzeichen/DRM
GerätePC/MAC/eReader/Tablet
Preis23,99 EUR
Das Lehrbuch behandelt alle Aspekte der Software-Entwicklung, besonders aber Methoden und Richtlinien zur Herstellung großer und qualitativ hochwertiger Softwareprodukte. Es vermittelt das zur Abwicklung von Softwareprojekten erforderliche Grundlagenwissen und zeigt, wie der Entwicklungsprzeß systematisiert und rationalisiert und gleichzeitig die Qualität der Softwareprdukte verbessert werden kann. Moderne Methoden wie Prototyping und objektorientierte Programmierung werden besonders eingehend behandelt.

Alle wichtigen Prinzipien werden anhand vieler einfacher Beispiele veranschaulicht. Darüber hinaus wird an einem umfangreichen praxisorientierten Beispiel gezeigt, wie verschiedene Techniken in einem Softwareprojekt eingesetzt werden können.

Die Autoren

Prof. Dipl. Ing. Dr. Gustav Pomberger leitet das Institut für Wirtschaftsinformatik - Software Engineering an der Johannes Kepler Universität in Linz.

Prof. Dipl. Ing. Dr. Wolfgang Pree leitet den Fachbereich Informatik der Paris-Lodron-Universität Salzburg.  

Kaufen Sie hier:

Horizontale Tabs

Kapitelübersicht
  1. Inhaltsverzeichnis, Vorwort und Dank
  2. 1 Gegenstandsbestimmung – Einführung und Überblick
  3. Teil I Prozessorientierte Sicht – Organisation von Software-Projekten: 2 Prozessmodelle
  4. Teil I Prozessorientierte Sicht – Organisation von Software-Projekten: 3 Software-Qualitätsmanagement
  5. Teil II Konstruktions- und Architektur-orientierte Sicht: 4 Elementare Konzepte und Konstrukte
  6. Teil II Konstruktions- und Architektur-orientierte Sicht: 5 Konstruktion anpassbarer Software
  7. Teil II Konstruktions- und Architektur-orientierte Sicht: 6 Modularisierung und Software-Architekturen
  8. Teil III Ausgewählte Gebiete und Fallbeispiele: 7 Transformationsorientierte Software
  9. Teil III Ausgewählte Gebiete und Fallbeispiele: 8 Web-Service-basierte Software
  10. Teil III Ausgewählte Gebiete und Fallbeispiele: 9 Eingebettete Echtzeitsoftware
  11. Literaturverzeichnis
  12. Stichwortverzeichnis
Leseprobe
6 Modularisierung und Software-Architekturen (S. 143-144)

Die Qualität eines Software-Produktes hängt in besonderem Maße von der Güte des Entwurfes ab. Die Hauptaufgabe im Rahmen der Entwurfsphase besteht darin, die Architektur des geplanten Software-Produktes festzulegen. Ausgehend von einer Systemspezifikation wird in der Entwurfsphase die Systemarchitektur mit dem Ziel entworfen, den in der Systemspezifikation festgelegten Funktionsumfang mit möglichst geringem Aufwand verfügbar zu machen und zu gewährleisten, dass die Qualitätsforderungen erfüllt und die Architektur an sich ändernde Anforderungen schnell, sicher und mit möglichst wenig Aufwand angepasst werden kann.

Der Entwurfsprozess umfasst grob skizziert die folgenden Tätigkeiten: problemadäquate Zerlegung des Gesamtsystems in Module (= Komponenten) und Spezifikation der Wechselwirkungen zwischen den Modulen; Festlegung der Anforderungen an die Module, das heißt, Festlegung der Modulschnittstellen; Entwurf der Algorithmen zur Bereitstellung der durch die Modulschnittstellen definierten Funktionalität. Der Modularisierung – mit Bedacht auf die Wiederverwendung bereits vorhandener Komponenten – kommt beim Entwurf und bei der Gestaltung der Systemarchitektur zentrale Bedeutung zu.

Der Blick auf die Modularisierung (= Strukturierung) eines Software-Systems erlaubt uns eine „grobkörnige" Betrachtung des Software-Produktes, aus der wir insbesondere feststellen können, welche Schnittstellen die Module haben und wie die Module untereinander interagieren. Im Mittelpunkt der Gestaltung der Software-Architektur steht daher die Modularisierung beziehungsweise Strukturierung des Software-Systems. Die Qualität der Modularisierung von Software-Systemen, die in der Entwurfsphase des Software-Entwicklungsprozesses festgelegt wird, ist ausschlaggebend für den Verlauf der weiteren Entwicklungsphasen und die Qualität des Endproduktes. Außerdem schafft eine adäquate Modularisierung die technische Voraussetzung für die Schaffung wiederverwendbarer Software-Komponenten.

In diesem Abschnitt führen wir zuerst das Modulkonzept als Grundlage für die Konstruktion von Software-Komponenten ein (Abschnitte 6.1 bis 6.4). Um die Beschreibungsproblematik von Software-Architekturen einigermaßen in den Griff zu bekommen, ist ein Teil dieses Kapitels der Diskussion von Architekturmustern gewidmet. Sie sind ein Mittel zur Beschreibung der Architektur von Software-Systemen (Abschnitt 6.5). Eine der Schwierigkeiten beim Entwurf einer Software-Architektur besteht darin, dass nicht exakt definierbar ist, was eine „gute" Modularisierung ausmacht und wie wir vorzugehen haben, um zu Aussagen zur Güte der Architektur zu gelangen. In Abschnitt 6.6 stellen wir die Software Architektur Analyse Methode (SAAM) vor, die ein pragmatischer Lösungsansatz zur Evaluierung einer Software-Architektur ist.

Die aspektorientierte Programmierung kann als Querschnittsmodularisierungstechnik gesehen werden, die zu einer flexiblen Modularisierung führt. Ihr ist ein eigener Abschnitt (Abschnitt 6.7) gewidmet. Die aspektorientierte Programmierung gehört zu den jüngeren Entwicklungen im Bereich der Modularisierungstechniken und ist ein in den letzten Jahren viel diskutiertes Forschungsgebiet (siehe dazu zum Beispiel die Web- Referenzen zu aspektorientiertem Programmieren und Colyer et al, 2004). Das zeigt, dass die Forschung im Bereich der Modularisierung von Software-Systemen bei weitem noch nicht abgeschlossen ist.

6.1 Software-Module

Module sind, wenn man die Entwicklung von Programmiersprachen und von Strukturierungskonstrukten betrachtet, Ende der 1970er Jahre eingeführt worden, weil die bis dahin benutzten Strukturierungskonstrukte Prozedur und Funktion keine der wachsenden Systemkomplexität angemessene Strukturierung erlaubten. Prozeduren und Funktionen repräsentieren Algorithmen. Das heißt, sie fassen einzelne Anweisungen zu einer Einheit zusammen. Module hingegen fassen mehrere Prozeduren und/oder Funktionen sowie die Daten, auf denen diese operieren, zu einer Einheit zusammen. Man unterscheidet zwischen der Schnittstelle eines Moduls und dessen Implementierung. Die (Programmier-)Schnittstelle führt die Namen und Parameter der Funktionen, Prozeduren und Daten an, die von anderen Modulen verwendet werden können. Wir definieren einen Modul (=Software-Komponente) als ein Stück Software mit einer Programmierschnittstelle.

Das mögliche Zusammenspiel mehrerer Module ist durch ihre Programmierschnittstellen festgelegt. Genau genommen ist zwischen zwei Arten von Schnittstellen zu unterscheiden: Die Programmierschnittstelle ist die Exportschnittstelle, die angibt, welche Operationen und Daten ein Modul anderen Modulen zur Verfügung stellt. Die Importschnittstelle gibt an, was ein Modul von anderen Modulen benutzt. Wenn wir nachfolgend nicht explizit zwischen Export- und Importschnittstelle unterscheiden, meinen wir mit Schnittstelle die Exportschnittstelle.

Reiser und Wirth, 1992, beschreiben das Modulkonzept wie folgt:

It provides mechanisms for:

1. structuring of a program into independent units;

2. the declaration of variables that keep their value for the duration the module is active (that is, in memory) – these variables are called global to the module;

3. export of variables and procedures to be used in other modules. The module therefore provides the facilities for abstractions.
Inhaltsverzeichnis
Inhaltsverzeichnis6
Vorwort10
Dank12
1 Gegenstandsbestimmung – Einführung und Überblick14
1.1 Was ist Software?14
1.2 Was ist Software Engineering?16
1.3 Inhalt und Aufbau des Buches18
Teil I Prozessorientierte Sicht – Organisation von Software-Projekten22
2 Prozessmodelle24
2.1 Das klassische sequenzielle Phasenmodell24
2.2 Das V-Modell31
2.3 Das Prototyping-orientierte Prozessmodell39
2.3.1 Begriffe und Abgrenzung39
2.3.2 Prozessmodell42
2.4 Das Spiralmodell45
2.4.1 Das Spiralmodell von Boehm45
2.4.2 Das Spiralmodell von Pomberger und Pree48
2.5 Der Unified Process52
2.6 Ein objektorientiertes Phasenmodell55
2.7 Leichtgewichtige (agile) Prozessmodelle58
3 Software-Qualitätsmanagement64
3.1 Was ist Softwarequalität?64
3.2 Wo und wie entstehen Softwarequalität bzw. Qualitätsmängel68
3.3 Grundzüge des Software- Qualitätsmanagements70
3.3.1 Hauptaufgaben des Qualitätsmanagements71
3.3.2 Objekte und Sichten des Qualitätsmanagements71
3.3.3 Prinzipien des Qualitätsmanagements73
3.3.4 Konstruktive und analytische Qualitätsmaßnahmen74
Teil II Konstruktions- und Architektur-orientierte Sicht78
4 Elementare Konzepte und Konstrukte80
4.1 Der Algorithmenbegriff80
4.2 Datenobjekte, Datentypen und elementare Aktionen81
4.3 Schnittstellen und Aktivierung von Algorithmen83
4.4 Systematischer Entwurf von Algorithmen85
4.5 Grundlegende Konzepte der objektorientierten Programmierung89
4.5.1 Klassen, Objekte (= Instanzen von Klassen), Instanzvariablen, Methoden90
4.5.2 Vererbung, Polymorphismus, statischer Variablentyp, dynamischer Variablentyp und dynamische Bindung92
5 Konstruktion anpassbarer Software98
5.1 Konfigurationsparameter als Basis für anpassbare Software98
5.1.1 Parametereinstellungen über globale, statische Variable98
5.1.2 Callback-Style of Programming – Funktionen und Prozeduren als Parameter100
5.2 Konzepte und Konstruktionsprinzipien für anpassbare, objektorientierte Produktfamilien102
5.2.1 Das Konzept der abstrakten Kopplung104
5.2.2 Das Konzept der Template- und Hook-Methoden110
5.2.3 Das Hook-Method-Konstruktionsprinzip113
5.2.4 Das Hook-Object-Konstruktionsprinzip116
5.2.5 Das Composite-Konstruktionsprinzip122
5.2.6 Das Decorator-Konstruktionsprinzip129
5.2.7 Zusammenfassung der Merkmale der Konstruktionsprinzipien138
5.3 Konstruktionsprinzipien und Entwurfsmuster138
6 Modularisierung und Software-Architekturen144
6.1 Software-Module145
6.2 Erwünschte Eigenschaften von Modulen147
6.2.1 Stabile und verständliche Modulschnittstellen durch Information Hiding148
6.2.2 Balance zwischen Kopplung und Kohäsion150
6.3 Ausprägungen von Modulen153
6.3.1 Modul als Abstrakte Datenstruktur (ADS)153
6.3.2 Modul als Abstrakter Datentyp (ADT)154
6.3.3 Module und Komponentenstandards158
6.4 Beispiele für ausgewogene Modularisierungen160
6.4.1 Kohäsionsverbesserung durch Aufteilung von Modulen160
6.4.2 Module für die Simulation diskreter Ereignisse162
6.5 Beschreibung von Software-Architekturen169
6.5.1 Datenzentrierung170
6.5.2 Datenflussorientierung171
6.5.3 Call&Return172
6.5.4 Virtuelle Maschine173
6.5.5 Unabhängige Komponenten174
6.5.6 Vor- und Nachteile der Architekturmuster175
6.6 Analyse von Software-Architekturen175
6.6.1 Die Software-Architektur-Analyse-Methode (SAAM)175
6.6.2 Beispiel einer Anwendung der SAAM180
6.6.3 Was ist bei einer Anwendung der SAAM zu beachten? Was sind die Vorteile und Risiken?185
6.7 Mehrdimensionale Modularisierung durch Aspektorientierte Programmierung (AOP)186
6.7.1 Das Problem einer einzigen, statischen Modularisierung187
6.7.2 Grundlegende Sprachkonzepte und -konstrukte von AOP189
6.8 Zusammenfassung wichtiger Modularisierungsprinzipien193
Teil III Ausgewählte Gebiete und Fallbeispiele194
7 Transformationsorientierte Software1196
7.1 Grundlegende Konzepte196
7.1.1 Kontextfreie Grammatiken197
7.1.2 Konstruktion eines Sprachanalysators (Scanner und Parser)199
7.1.3 Attributierte Grammatiken205
7.2 Fallbeispiel: Transformation strukturierter Texte209
7.2.1 Entwurf einer attributierten Grammatik mit Coco/R212
7.3 Zusammenfassung228
8 Web-Service-basierte Software1230
8.1 Was sind Web-Services230
8.2 Vergleich mit anderen Technologien232
8.2.1 CORBA233
8.2.2 Java RMI235
8.2.3 .NET Remoting Framework235
8.3 Entwicklungsprozess für Web-Service-basierte Software236
8.4 Grundlegende Konzepte und Standards237
8.4.1 SOAP237
8.4.2 Web-Service Description Language (WSDL)239
8.5 Fallbeispiel: Elektronisches Telefonbuch242
8.5.1 Ausgangssituation im Fallbeispiel242
8.5.2 Beteiligte Komponenten243
8.5.3 Schnittstelle des Web-Services243
8.5.4 Implementierung des Web-Services mit Microsoft Visual Studio244
8.5.5 Implementierung der Anwendungssoftware245
8.5.6 Interaktionen zwischen Anwendungssoftware und Web-Service247
8.6 Zusammenfassung249
9 Eingebettete Echtzeitsoftware250
9.1 Grundlegende Konzepte und Voraussetzungen250
9.1.1 Charakteristika von Echtzeitsoftware251
9.1.2 Logische versus tatsächliche Ausführungszeiten von Echtzeitsoftware252
9.2 Fallbeispiel: Echtzeitsoftware eines autonom fliegenden Helikopters254
9.2.1 Das OLGA-System256
9.2.2 Die TDL-Spezifikation des Zeit- und Kommunikationsverhaltens257
9.2.3 Die Übersetzung der TDL-Spezifikation in ein ausführbares Programm260
9.2.4 Simulation eines TDL-basierten Regelungssystems261
9.3 Zusammenfassung263
Literaturverzeichnis264
Stichwortverzeichnis268

Weitere E-Books zum Thema: Software-Design - Softwareentwicklung

Automotive Embedded Systeme

E-Book Automotive Embedded Systeme
Effizfientes Framework - Vom Design zur Implementierung Format: PDF

Die Entwicklung hochkomplexer automotiver Infotainmentsysteme bestehend aus einer Headunit und weiteren Komponenten wie Audio- und Videoelementen, Kommunikationseinheiten, Navigationssystemen und…

Automotive Embedded Systeme

E-Book Automotive Embedded Systeme
Effizfientes Framework - Vom Design zur Implementierung Format: PDF

Die Entwicklung hochkomplexer automotiver Infotainmentsysteme bestehend aus einer Headunit und weiteren Komponenten wie Audio- und Videoelementen, Kommunikationseinheiten, Navigationssystemen und…

Automotive Embedded Systeme

E-Book Automotive Embedded Systeme
Effizfientes Framework - Vom Design zur Implementierung Format: PDF

Die Entwicklung hochkomplexer automotiver Infotainmentsysteme bestehend aus einer Headunit und weiteren Komponenten wie Audio- und Videoelementen, Kommunikationseinheiten, Navigationssystemen und…

Automotive Embedded Systeme

E-Book Automotive Embedded Systeme
Effizfientes Framework - Vom Design zur Implementierung Format: PDF

Die Entwicklung hochkomplexer automotiver Infotainmentsysteme bestehend aus einer Headunit und weiteren Komponenten wie Audio- und Videoelementen, Kommunikationseinheiten, Navigationssystemen und…

Automotive Embedded Systeme

E-Book Automotive Embedded Systeme
Effizfientes Framework - Vom Design zur Implementierung Format: PDF

Die Entwicklung hochkomplexer automotiver Infotainmentsysteme bestehend aus einer Headunit und weiteren Komponenten wie Audio- und Videoelementen, Kommunikationseinheiten, Navigationssystemen und…

Automotive Embedded Systeme

E-Book Automotive Embedded Systeme
Effizfientes Framework - Vom Design zur Implementierung Format: PDF

Die Entwicklung hochkomplexer automotiver Infotainmentsysteme bestehend aus einer Headunit und weiteren Komponenten wie Audio- und Videoelementen, Kommunikationseinheiten, Navigationssystemen und…

SAP für Java-Entwickler

E-Book SAP für Java-Entwickler
Konzepte, Schnittstellen, Technologien Format: PDF

Seit kurzem forciert SAP die Verbreitung der Netweaver-Technologie und initiiert damit eine Gleichstellung von Java und ABAP als Sprachen zur SAP-Programmierung. Dieses Buch leistet einem erfahrenen…

SAP für Java-Entwickler

E-Book SAP für Java-Entwickler
Konzepte, Schnittstellen, Technologien Format: PDF

Seit kurzem forciert SAP die Verbreitung der Netweaver-Technologie und initiiert damit eine Gleichstellung von Java und ABAP als Sprachen zur SAP-Programmierung. Dieses Buch leistet einem erfahrenen…

SAP für Java-Entwickler

E-Book SAP für Java-Entwickler
Konzepte, Schnittstellen, Technologien Format: PDF

Seit kurzem forciert SAP die Verbreitung der Netweaver-Technologie und initiiert damit eine Gleichstellung von Java und ABAP als Sprachen zur SAP-Programmierung. Dieses Buch leistet einem erfahrenen…

SAP für Java-Entwickler

E-Book SAP für Java-Entwickler
Konzepte, Schnittstellen, Technologien Format: PDF

Seit kurzem forciert SAP die Verbreitung der Netweaver-Technologie und initiiert damit eine Gleichstellung von Java und ABAP als Sprachen zur SAP-Programmierung. Dieses Buch leistet einem erfahrenen…

Weitere Zeitschriften

ARCH+.

ARCH+.

ARCH+ ist eine unabhängige, konzeptuelle Zeitschrift für Architektur und Urbanismus. Der Name ist zugleich Programm: mehr als Architektur. Jedes vierteljährlich erscheinende Heft beleuchtet ...

Arzneimittel Zeitung

Arzneimittel Zeitung

Die Arneimittel Zeitung ist die Zeitung für Entscheider und Mitarbeiter in der Pharmabranche. Sie informiert branchenspezifisch über Gesundheits- und Arzneimittelpolitik, über Unternehmen und ...

FREIE WERKSTATT

FREIE WERKSTATT

Die Fachzeitschrift FREIE WERKSTATT berichtet seit der ersten Ausgaben 1994 über die Entwicklungen des Independent Aftermarkets (IAM). Hauptzielgruppe sind Inhaberinnen und Inhaber, Kfz-Meisterinnen ...

Correo

Correo

 La Revista de Bayer CropScience para la Agricultura ModernaPflanzenschutzmagazin für den Landwirt, landwirtschaftlichen Berater, Händler und am Thema Interessierten mit umfassender ...

crescendo

crescendo

Die Zeitschrift für Blas- und Spielleutemusik in NRW - Informationen aus dem Volksmusikerbund NRW - Berichte aus 23 Kreisverbänden mit über 1000 Blasorchestern, Spielmanns- und Fanfarenzügen - ...

Deutsche Hockey Zeitung

Deutsche Hockey Zeitung

Informiert über das nationale und internationale Hockey. Die Deutsche Hockeyzeitung ist Ihr kompetenter Partner für Ihren Auftritt im Hockeymarkt. Sie ist die einzige bundesweite Hockeyzeitung ...

Evangelische Theologie

Evangelische Theologie

Über »Evangelische Theologie« In interdisziplinären Themenheften gibt die Evangelische Theologie entscheidende Impulse, die komplexe Einheit der Theologie wahrzunehmen. Neben den Themenheften ...