Grundlagen des Software Engineering



Ähnliche Dokumente
Software Engineering

Softwaretechnik (Medieninformatik) Überblick

Objektorientiertes Programmieren

Liste MI / Liste I Programmieren in C++

Programmieren 2 - Java

Einführung in die Informatik

Praxis der objektorientierten Programmierung

Software- Qualitätssicherung

Software-Engineering Grundlagen des Software-Engineering 7 Implementierungsphase (Programming Phase)

Eberhard Lehmann: Projekte im Informatik-Unterricht Software Engineering, Ferd. Dümmlers Verlag, Bonn Inhaltsverzeichnis.

Zum Buch Hinweise Handhabung des Buchs Website In eigener Sache... 19

Grundlagen der Wirtschafts informatik

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

Softwaretechnik (Allgemeine Informatik) Überblick

Programmierung Paradigmen und Konzepte

Einführung in die Informatik

Programmieren I. Überblick. Institut für Angewandte Informatik. KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft

Java-Grundkurs für Wirtschaftsinformatiker

Karol Frühauf, Jochen Ludewig, Helmut Sandmayr. Software-Prüfung Eine Anleitung zum Test und zur Inspektion

4.Grundsätzliche Programmentwicklungsmethoden

Programmieren I. Überblick. Institut für Angewandte Informatik. KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft

Lehrbuch der Objektmodellierung

Softwareprozessmodelle

Inhalte des Moduls Programmieren 1

Qualitätsmanagement. Andreas Bäuml SWT-Projekt WS 07/08

Inhaltsverzeichnis. Teil I Grundlagen 1

Erweiterungscurriculum Grundlagen der Informatik

2. Der Software-Entwicklungszyklus

Programmierung in C/C++

Software Engineering

Teil II Objektorientierte Programmierung (OOP) 20. Objektnetze

Java-Grundkurs für rtschaftsinformatiker

EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217

Kapitel 4 - Die Implementierungsphase

Inhaltsverzeichnis Grundbegriffe der Programmierung Strukturelle Programmierung

Jochen Ludewig Horst Lichter. Software Engineering. Grundlagen, Menschen, Prozesse, Techniken. dpunkt.verlag

Teil II Objektorientierte Programmierung (OOP) 20. Objektnetze

Programmierparadigmen

Objektorientierte Softwareentwicklung

Software- und Systementwicklung

Software-Praktikum. Überblick und Zeitplan

Matrikelnr. Name. Vorname

Programmierparadigmen A01 OOP. Programmierparadigmen

Das Softwaresystem BASEMENT

Wintersemester Systementwicklung: Grundlagen. Prof. Dr. Christoph Rosenkranz. Katholische Universität Eichstätt-Ingolstadt

Phasenmodelle. Projektphasen Life-Cycle-Modell Wasserfallmodell Spiralmodell. 3. Phasenmodelle. Software Engineering 2

Projektarbeit im Informatikunterricht

Teil III. Modellierung

Manfred Schüttengruber. Objektorientierte Programmierung mit Visual Basic 2005

Evelin Kofler SE aus Fachdidaktik / Dr. Hubwieser / SS 2002 Seite 1

Software Engineering

Klassische Softwareentwicklung - Software Engineering -

Inhalt. Vorwort...5 Hinweise zum Buch... 7 Abbildungsverzeichnis...15 T abellenverzeichnis... 19

2 Softwarearchitektur in der Organisationsstruktur 25

7. Programmierungs- Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

Software-Entwicklung mit Delphi

Das V-Modell 97. Oldenbourg Verlag München Wien

Universität Stuttgart Institut für Automatisierungs- und Softwaretechnik Prof. Dr.-Ing. Dr. h. c. P. Göhner. Softwaretechnik II. Sommersemester 2015

Inhaltsverzeichnis. Einleitung Zielsetzung und Inhalt Didaktisches Konzept Voraussetzungen Literaturquellen...

Inhaltsverzeichnis.

Sprechen Sie Java? Hanspeter Mössenböck. Tm\ dpunkt.verlag. Eine Einführung in das systematische Programmieren

Inhaltsverzeichnis. Vorwort...XIII. Aufbau des Buches...

Webbasierte Programmierung

Objektorientierte Programmierung mit Java

IT-Projekte strukturiert realisieren

III.1 Prinzipien der funktionalen Programmierung - 1 -

Software Engineering

Inhaltsverzeichnis 1 Der objektorientierte Ansatz 2 Elementare Objekte und Ausdrücke

Kapitel 1. Softwaretechnik: Überblick

10. Programmierungs-Phase: Objektorientierung Software Engineering

Einführung in die Wirtschaftsinformatik

Inhaltsverzeichnis. Grundlagen und Begriffsbildung

Objektorientierte Systementwicklung

Programmieren I. Überblick. Institut für Angewandte Informatik. KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft

Vertiefung Wirtschaftsinformatik im Studiengang Betriebswirtschaftslehre dual des Fachbereichs I der Beuth Hochschule für Technik Berlin

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich. Softwaretechnik I

wenige Konzepte, keine Adressen, Anlehnung an C++ -Syntax Vererbung, Polymorphie/dynamisches Binden, umfangreiche Klassenbibliotheken

Datenstrukturen und Algorithmen

1 Einleitung zum Thema Softwaremigration 1

Objektorientierte Konzepte

Softwareentwicklung nach Maß

1. Grundbegriffe des Software-Engineering

Application Engineering Grundlagen für die objektorientierte Softwareentwicklung mit zahlreichen Beispielen, Aufgaben und Lösungen

Analyse und Entwurf von Softwaresystemen mit der UML

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Objektmodellierung. Grundkurs C++

Einleitung. Der Begriff Software Engineering Software Engineering im Kontext Überblick Literaturempfehlungen. 1. Einleitung. Software Engineering 2

Basiswissen Softwaretest

Inhaltsverzeichnis. 4.9 Aufgaben... 63

Testmanagement. Full-Service

Software Engineering 1

Organisatorisches. Software Engineering 1 WS 2012/13. Prof. Dr.-Ing. Ina Schaefer. Institut für Softwaretechnik und Fahrzeuginformatik TU Braunschweig

Technologiepark Paderborn Telefon: / XX XX XX Mobil: 01XX / XX XX XX XX XXXXXXX@mail.upb.de

Software Engineering

Knasmüller.book Seite vii Mittwoch, 28. März : vii. Inhaltsverzeichnis

Informatik 2-stündig

Fakultät für Wirtschaftswissenschaft

Transkript:

Gustav Pomberger und Günther Blaschek Grundlagen des Software Engineering Prototyping und objektorientierte Software-Entwicklung Mit 101 Abbildungen Technische Universität Darmstadt FACHBEREICH INFORMATIK BIBLIOTHEK Invsfrtar-Nr.: Sachgebiete: Standort: Carl Hanser Verlag München Wien

Vorwort Dank 1 Gegenstandsbestimmung 1 1.1 Die Entwicklung des Software Engineering 1 1.2 Der Begriff "Software Engineering" 2 1.3 Der Begriff "Prototyping" 3 1.4 Der Begriff "Objektorientierte Programmierung" 6 2 Qualitätskriterien für Softwareprodukte 9 2.1 Softwarequalitätsmerkmale 9 2.2 Die Bedeutung der Qualitätsmerkmale für die Softwareherstellung 13 2.3 Die Wirkung von Qualitätsmerkmalen auf andere Qualitätsmerkmale, Kosten und Zeitgrößen 14 2.4 Maßnahmen zur Qualitätssicherung 15 3 Die Phasen eines Softwareprojekts 17 3.1 Phasenmodelle 17 3.1.1 Das klassische sequentielle Software-Life-Cycle-Modell 18 3.1.2 Das Wasserfall-Modell 23 3.1.3 Das prototyping-orientierte Life-Cycle-Modell 24 3.1.4 Das Spiral-Modell 26 3.1.5 Das objektorientierte Life-Cycle-Modell 28 3.1.6 Das objekt- und prototyping-orientierte Life-Cycle-Modell 31 3.2 Problemanalyse. 33 3.2.1 Systemabgrenzung 33 3.2.2 Systemerhebung 34 3.2.3 Systembeschreibung 37 3.2.4 Analysetechniken und Hilfsmittel 37 3.3 Systemspezifikation (Anforderungsdefinition) 40 3.3.1 Aufbau und Inhalt der Systemspezifikation 41 3.3.2 Qualitätsanforderungen an Systemspezifikationen 42 3.3.3 Grundlegende Probleme bei der Systemspezifikation 43 3.3.4 Vorgehensmodell für prototyping-orientierte Systemspezifikation 44 3.3.5 Durchführbarkeitsstudie 47 3.4 Entwurf 47 3.4.1 Entwurfstechniken 48 3.4.2 Aufgabenstellung eines Entwurfsbeispiels 50 3.4.3 Modularisierung 52 3.4.3.1 Richtlinien zur Modularisierung 53 3.4.3.2 Abstrakte Datenstrukturen und abstrakte Datentypen 58 3.4.3.3 Anwendung auf das Entwurfsbeispiel 61 v vii

3.4.4 Entwurf von Benutzerschnittstellen 66 3.4.4.1 Zustände 67 3.4.4.2 Elementaroperationen 69 3.4.4.3 Menüs 70 3.4.4.4 Masken 73 3.4.4.5 Farbe und Ton 76 3.4.4.6 Konsistenz 78 3.4.4.7 Prototyping 78 3.4.4.8 Anwendung auf das Entwurfsbeispiel 79 3.4.5 Funktionsorientierter Entwurf 81 3.4.5.1 Schrittweise Verfeinerung 82 3.4.5.2 Anwendung auf das Entwurfsbeispiel 84 3.4.6 Datenorientierter Entwurf (Attributierte Grammatiken) 93 3.4.6.1 Kontextfreie Grammatiken 94 3.4.6.2 Konstruktion eines Sprachanalysators 96 3.4.6.3 Attributierte Grammatiken 101 3.4.6.4 Anwendung auf das Entwurfsbeispiel 107 3.4.7 Objektorientierter Entwurf 119 3.4.7.1 Die Methode von Abbot 120 3.4.7.2 Bildung von Klassenhierarchien 122 3.4.7.3 Generalisierung 125 3.4 JA Anwendung auf das Entwurfsbeispiel 126 3.5. Implementierung 132 3.5.1 Wahl der Implementierungssprache 133 3.5.2 Programmierstil 137 3.5.3 Inkrementelle Implementierung 144 3.6 Test und Installation 146 ;' 3.6.1 Testmethoden 146 3.6.1.1 Verifikation von Algorithmen 149 3.6.1.2 Statische Programmanalyse 150 3.6.1.3 Dynamisches Testen 151 3.6.1.4 Black-Box-und White-Box-Test 151 3.6.1.5 Topdown- und Bottomup-Test 153 3.6.2 Testplanung und -ausführung 155 3.6.2.1 Testplanung 155 3.6.2.2 Vorbereitung von Testobjekten zur Fehlerlokalisierung 155 3.6.2.3 Auswahl der Testfälle und Testdaten 156 3.6.2.4 Bereitstellung der Testumgebung 158 3.6.2.5 Testauswertung und Fehlersuche 158 3.6.2.6 Typische Fehler 159 3.6.3 Testdokumentation 159 3.6.4 Abnahmetest und Installation 160 3.7 Dokumentation und Wartung 160 3.7.1 Die Dokumentation von Softwareprodukten 161 3.7.1.1 Benutzerdokumentation 163 3.7.1.2 Systemdokumentation 166 3.7.1.3 Projektdokumentation 171 3.7.2 Die Wartung von Softwareprodukten 172

Besondere Aspekte prototyping-orientierter Software-Entwicklung 175 4.1 Kosten-, Qualitäts- und Risikoaspekte 175 4.2 Ausgewählte Fragen zu prototyping-orientierter Software-Entwicklung 177 Objektorientierte Programmierung 181 5.1 Wozu objektorientierte Programmierung? 181 5.1.1 Komplexität von Softwareprodukten 181 5.1.2 Wiederverwendung 182 5.1.3 Flexibilität und Kompatibilität 183 5.2 Grundlagen der objektorientierten Programmierung 185 5.2.1 Die Begriffe "Objekt" und "Klasse" 185 5.2.2 Dynamische Bindung 191 5.2.3 Polymorphismus 192 5.2.4 Vererbung 195 5.2.5 Dynamik-Modelle 201 5.3 Vererbungsarten 207 5.3.1 Einfache und mehrfache Vererbung 207 5.3.1.1 Kriterien für mehrfache Vererbung 208 5.3.1.2 Mix-In 211 5.3.1.3 Wiederholte Vererbung 212 5.3.1.4 Einfache versus mehrfache Vererbung 213 5.3.1.5 Nachbildung mehrfacher Vererbung 216 5.3.2 Geschützte Vererbung 218 5.3.3 Eingeschränkte Vererbung 220 5.3.4 Zugriffsrechte 224 5.3.5 Kovarianz und Kontravarianz 226 5.4 Generizität 230 5.5 Rein objektorientierte und hybride Sprachen 235 5.5.1 Uniformität 235 5.5.2 Effizienz.'. 236 5.5.3 Operatoren als Messages 237 5.5.4 Konsistenz 237 5.5.5 Objektorientiertes Denken 238 5.6 Objektorientierte Programmiersprachen 239 5.6.1 Smalltalk 241 5.6.2 C++ 244 5.6.3 Object Pascal 246 5.6.4 Eiffel 248 5.6.5 Oberon-2 251 5.7 Klassenbibliotheken 254 5.7.1 Einteilung von Klassen 256 5.7.2 Aufbau von Klassenbibliotheken 259 5.7.3 Application Frameworks 260 5.7.4 Organisatorische Maßnahmen für den Einsatz von Klassenbibliotheken 264

xii Inhalt 5.8 Prototyping mit objektorientierter Programmierung 269 5.9 Implementierung des Entwurfsbeispiels 272 5.9.1 Klasse Teil 274 5.9.2 Klasse Komplexer Teil 275 5.9.3 Klasse Balken 278 5.9.4 Klasse Kugel 280 5.9.5 Klasse Fundament 282 5.9.6 Klasse Portal 283 5.9.7 Klasse Greiferarm 284 5.9.8 Klasse Roboter 285 5.9.9 Beurteilung der objektorientierten Lösung 286 5.10 Quantitative und qualitative Aspekte 288 5.10.1 Quantitativer Vergleich 288 5.10.1.1 Auswirkungen auf den Umfang des Programmcodes 289 5.10.1.2 Auswirkungen auf die Laufzeit 290 5.10.2 Qualitativer Vergleich 292 5.10.2.1 Auswirkungen auf den Projektablauf 292 5.10.2.2 Auswirkungen auf die Qualität des Endprodukts 293 6 Projektmanagement 297 6.1 Ziel und Aufgaben des Projektmanagements 298 6.2 Schwierigkeiten des Projektmanagements 300 6.3 Aufwandsschätzungen 301 6.4 Projektorganisation 304 6.4.1 Hierarchisches Organisationsmodell 304 6.4.2 Das Chefprogrammierer-Team 305 7 'Software-Engineering-Werkzeuge 309 7.1 Elementare Werkzeuge 309, 7.1.1 Werkzeuge zur elementaren Dateiverwaltung 310 7.1.2 Einfache Analyse-und Dokumentationswerkzeuge 310 7.2 Phasenbezogene Werkzeuge 311 7.2.1 Werkzeuge für die Problemanalyse 311 7.2.2 Werkzeuge für die Systemspezifikation 312 7.2.3 Entwurfswerkzeuge 316 7.2.4 Implementierungswerkzeuge 318 7.2.5 Testwerkzeuge 320 7.2.6 Werkzeuge für die Dokumentation und Wartung 322 7.3 Phasenübergreifende Werkzeuge 323 7.3.1 Projektmanagement-Werkzeuge 323 7.3.2 Software-Entwicklungsumgebungen 323 Nachwort 325 Literatur 327 Stichwortverzeichnis 333