Inhaltsverzeichnis Modellunternehmen . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.4 1.4.1 1.4.2 1.5 2 2.1 2.1.1 2.1.2 2.1.3 2.1.3.1 2.1.3.2 2.1.3.3 2.1.4 2.1.4.1 2.1.4.2 2.2 2.2.1 2.2.2 8 Betriebswirtschaftliche Anwendungen Geschäftsprozesse . . . . . . . . . . . . . . . . . . Abbildung von Geschäftsprozessen in Computersystemen . . . . . . . . . . . . . . . . . Automatisierung einzelner Prozessschritte . . . . . . . . . . . . . . . . . . . . Integration als Forderung des Managements . . . . . . . . . . . . . . . . . . . . . Schaffung integrierter Anwendungssysteme . . . . . . . . . . . . . . . . . . . . . . . . . . Integration von Anwendungssystemen . . . . . . . . . . . . . . . . . . . . . . . . . Integration über Unternehmensgrenzen hinweg . . . . . . . . . . . . . . . . . . . . . . . . . . Softwaretechnische Realisierung . . . . . . Business Objects . . . . . . . . . . . . . . . . . . . Referenzmodelle oder Business Frameworks . . . . . . . . . . . . . . . . . . . . . . Ausgewählte betriebswirtschaftlichtechnische Standardanwendungen . . . . . Softwarearchitektur . . . . . . . . . . . . . . . . Softwaretools zur Modellierung von Geschäftsprozessen . . . . . . . . . . . . . ARIS -Modell . . . . . . . . . . . . . . . . . . . . . SiSy-Tool . . . . . . . . . . . . . . . . . . . . . . . . Konsequenzen für das Projekt der Auszubildenden . . . . . . . . . . . . . . . . 18 21 22 23 25 27 30 31 31 33 33 34 36 36 38 39 2.2.2.1 2.2.2.2 2.2.2.3 2.2.2.4 2.2.2.5 2.2.3 2.2.3.1 2.2.3.2 2.2.3.3 2.2.3.4 2.2.4 2.2.4.1 2.2.4.2 2.2.4.3 2.2.4.4 2.2.4.5 2.2.4.6 2.3 2.3.1 2.3.1.1 2.3.1.2 2.3.1.3 2.3.1.4 2.3.1.5 2.3.2 2.3.2.1 2.3.2.2 2.3.2.3 2.3.2.4 2.3.2.5 Entwicklung von Anwendungssoftware Software als Produkt . . . . . . . . . . . . . . . . Was ist Software? . . . . . . . . . . . . . . . . . . Software in der Hand des Anwenders . . . Systematik der Software . . . . . . . . . . . . . System- oder Anwendungssoftware . . . . Standard- oder Individualsoftware . . . . . Vergütung der Softwareentwicklungsleistungen . . . . . . . . . . . . . . . . . . . . . . . . Softwarequalität . . . . . . . . . . . . . . . . . . . Qualitätsmerkmale nach ISO/IEC 9126 (DIN 66272) . . . . . . . . . . Qualitätsmanagement . . . . . . . . . . . . . . . Entwicklung von Softwareprodukten . . . . . . . . . . . . . . . . . . . . . . . . Softwareklebenszyklus . . . . . . . . . . . . . . Phasen der Softwareentwicklung . . . . . . 40 40 40 41 41 42 44 46 47 49 50 50 51 2.3.2.6 2.3.2.7 2.3.2.8 2.3.2.9 2.3.3 2.3.3.1 2.3.3.2 2.3.3.3 2.3.3.4 2.3.4 2.3.4.1 2.3.4.2 2.3.4.3 2.3.4.4 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . Entwurf . . . . . . . . . . . . . . . . . . . . . . . . . . Implementierung . . . . . . . . . . . . . . . . . . . Integration und Integrationstest . . . . . . . Dokumentation . . . . . . . . . . . . . . . . . . . . Softwaretechnologie . . . . . . . . . . . . . . . . Prinzipien . . . . . . . . . . . . . . . . . . . . . . . . Methoden . . . . . . . . . . . . . . . . . . . . . . . . Verfahren . . . . . . . . . . . . . . . . . . . . . . . . Werkzeuge . . . . . . . . . . . . . . . . . . . . . . . Phasenmodelle . . . . . . . . . . . . . . . . . . . . Trial and Errorr . . . . . . . . . . . . . . . . . . . . . Wasserfallmodell . . . . . . . . . . . . . . . . . . Prototyping . . . . . . . . . . . . . . . . . . . . . . . Spiralmodell . . . . . . . . . . . . . . . . . . . . . . V-Modell . . . . . . . . . . . . . . . . . . . . . . . . . Extrem Programming (XP) . . . . . . . . . . . Management von Softwareprojekten . . . . . . . . . . . . . . . . . . . . . . . . . Grundbegriffe . . . . . . . . . . . . . . . . . . . . . Projekt . . . . . . . . . . . . . . . . . . . . . . . . . . . Vorgänge und Arbeitspakete . . . . . . . . . . Vorgangsbeziehungen . . . . . . . . . . . . . . . Ressourcen und Ressourcenplanung . . . . . . . . . . . . . . . . . . . . . . . . . . Meilensteine . . . . . . . . . . . . . . . . . . . . . . Team-Management . . . . . . . . . . . . . . . . . Ziele und Zielkonflikte . . . . . . . . . . . . . . Projektorganisation . . . . . . . . . . . . . . . . . Team-Entwicklung . . . . . . . . . . . . . . . . . Team-Konflikte . . . . . . . . . . . . . . . . . . . . Aufwandsschätzung zu einzelnen Vorgängen . . . . . . . . . . . . . . . . . . . . . . . . Top-Down-Vorgehensweise . . . . . . . . . . Bottom-Up-Vorgehensweise . . . . . . . . . . Projektplanungssoftware . . . . . . . . . . . . Netzpläne PERT/CPM . . . . . . . . . . . . . . Projektdurchführung . . . . . . . . . . . . . . . . Projektfortschrittskontrolle . . . . . . . . . . . Basisplan und Planänderungen . . . . . . . . Protokollierung des Aufwands . . . . . . . . Auswertung und Berichte . . . . . . . . . . . . Projektmanagement und Prozessqualität . . . . . . . . . . . . . . . . . . . . Reife der Organisation . . . . . . . . . . . . . . Klassifikation nach CMMI . . . . . . . . . . . Total Quality Management . . . . . . . . . . . Zertifizierung nach ISO 9000 . . . . . . . . . 52 53 53 54 55 56 56 59 61 61 62 63 63 64 66 68 69 72 73 73 74 76 77 78 78 79 79 81 82 83 83 83 84 85 86 86 86 87 87 88 88 88 91 92 Inhaltsverzeichnis 3 3 3.1 3.1.1 3.1.2 3.1.3 3.2 3.2.1 3.2.1.1 3.2.1.2 3.2.2 3.2.3 3.2.3.1 3.2.3.2 3.2.4 3.2.4.1 3.2.4.2 3.2.5 3.3 3.3.1 3.3.2 3.3.2.1 3.3.2.2 3.3.2.3 3.3.3 3.4 3.4.1 3.4.1.1 3.4.1.2 3.4.1.3 3.4.1.4 3.4.1.5 3.4.2 3.4.3 4 4.1 4.1.1 4.1.2 4.1.3 4.1.4 4.2 4.2.1 4.2.2 4.2.3 Analyse und Entwurf Projektvorbereitung . . . . . . . . . . . . . . . . Kick-off-Meeting . . . . . . . . . . . . . . . . . . Lastenheft . . . . . . . . . . . . . . . . . . . . . . . . Projektplan . . . . . . . . . . . . . . . . . . . . . . . Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . Systeme als Untersuchungsgegenstand d ........................ Systembegriff . . . . . . . . . . . . . . . . . . . . . Merkmale von Systemen . . . . . . . . . . . . Systemanalyse . . . . . . . . . . . . . . . . . . . . Vorbereitung der Systemanalyse . . . . . . Vorgehensweise . . . . . . . . . . . . . . . . . . . Qualitätsanforderungen . . . . . . . . . . . . . Die Erfassung als erster Schritt der Systemanalyse . . . . . . . . . . . . . . . . . Gegenstand . . . . . . . . . . . . . . . . . . . . . . . Erfassungstechniken . . . . . . . . . . . . . . . . Die Analyse als zweiter Schritt der Systemanalyse . . . . . . . . . . . . . . . . . Entwurf . . . . . . . . . . . . . . . . . . . . . . . . . . Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . Modellierung mit SiSy . . . . . . . . . . . . . . Arbeitsweise mit SiSy . . . . . . . . . . . . . . Entwurf von Prozess- und Datenmodell . . . . . . . . . . . . . . . . . . . . . . Funktionale Anforderungen . . . . . . . . . . Testszenarien . . . . . . . . . . . . . . . . . . . . . Pflichtenheft . . . . . . . . . . . . . . . . . . . . . . Vorgehensweise nach dem V-Modell XT . . . . . . . . . . . . . . . . . . . . . Grundkonzept . . . . . . . . . . . . . . . . . . . . . Vorgehensbausteine und Tailoring . . . . . Projektdurchführungsstrategien . . . . . . . Qualitätssicherung . . . . . . . . . . . . . . . . . Zusammenfassung . . . . . . . . . . . . . . . . . Pflichtenheft erstellen . . . . . . . . . . . . . . . Abnahme des Pflichtenheftes durch den Auftraggeber . . . . . . . . . . . . . . . . . . 94 94 96 100 102 103 103 105 106 107 107 108 109 109 110 112 114 114 114 115 116 116 116 117 118 119 121 123 124 124 125 135 Programmentwurf Klassische Darstellungsmittel . . . . . . . . Programmablaufplan (PAP) . . . . . . . . . . Struktogramm . . . . . . . . . . . . . . . . . . . . . Pseudocode . . . . . . . . . . . . . . . . . . . . . . . Entscheidungstabellen . . . . . . . . . . . . . . UML (Unified Modelling Language) . . . Anwendungsfalldiagramm . . . . . . . . . . . Klassendiagramm . . . . . . . . . . . . . . . . . . Objektdiagramm . . . . . . . . . . . . . . . . . . . 4 Inhaltsverzeichnis 137 137 139 140 141 142 142 142 146 4.2.4 4.2.5 4.2.6 4.2.7 4.3 4.3.1 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.4 4.4.1 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.5 5 5.1 5.1.1 5.1.2 5.1.3 5.2 5.2.1 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7 5.2.8 5.2.9 5.2.10 5.2.10.1 5.2.10.2 5.2.10.3 5.2.11 5.2.11.1 5.2.11.2 5.2.12 5.2.12.1 Sequenzdiagramm . . . . . . . . . . . . . . . . . Kollaborationsdiagramm . . . . . . . . . . . . Zustandsdiagramm . . . . . . . . . . . . . . . . . Komponentendiagramm . . . . . . . . . . . . . Programmiersprachen . . . . . . . . . . . . . . . Einteilung der Programmiersprachen . . . Erste Generation: Maschinensprachen . . . . . . . . . . . . . . . . . . . . . . . . . Zweite Generation: Assemblersprachen . . . . . . . . . . . . . . . . . . . . . . . . . Dritte Generation: Problemorientierte Sprachen . . . . . . . . . . . . . . . . Vierte Generation: Deklarative Sprachen . . . . . . . . . . . . . . . . . . . . . . . . . Fünfte Generation: Künstliche Intelligenz . . . . . . . . . . . . . . . . . . . . . . . . Entwicklungswerkzeuge . . . . . . . . . . . . . Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . Interpreter . . . . . . . . . . . . . . . . . . . . . . . . Compiler und Assembler . . . . . . . . . . . . Debugger . . . . . . . . . . . . . . . . . . . . . . . . Entwicklungsumgebung . . . . . . . . . . . . . Standardbibliotheken . . . . . . . . . . . . . . . Modellgetriebene Softwareentwicklung (MDSD) . . . . . . . . 146 147 148 148 150 150 152 152 153 153 154 155 155 156 156 157 157 159 159 Programmierung in Java Die Java-Idee . . . . . . . . . . . . . . . . . . . . . Applikation . . . . . . . . . . . . . . . . . . . . . . . Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . JavaScript . . . . . . . . . . . . . . . . . . . . . . . . Grundlegende Sprachelemente in Java . . . . . . . . . . . . . . . . . . . . . . . . . . . Das erste Programm . . . . . . . . . . . . . . . . Variablennamen oder Bezeichner . . . . . . Reservierte Wörter . . . . . . . . . . . . . . . . . Literale . . . . . . . . . . . . . . . . . . . . . . . . . . Kommentare . . . . . . . . . . . . . . . . . . . . . . Anweisungen und Anweisungsblöcke . . Gültigkeitsbereich . . . . . . . . . . . . . . . . . . Ausdrücke . . . . . . . . . . . . . . . . . . . . . . . . Wertzuweisungen . . . . . . . . . . . . . . . . . . Datentypen . . . . . . . . . . . . . . . . . . . . . . . Numerische Datentypen . . . . . . . . . . . . . Zeichen-Datentyp . . . . . . . . . . . . . . . . . . Boolescher Datentyp . . . . . . . . . . . . . . . Variablen . . . . . . . . . . . . . . . . . . . . . . . . . Syntax der Variablendeklarationen . . . . . Wertzuweisung an Variablen . . . . . . . . . Operatoren . . . . . . . . . . . . . . . . . . . . . . . Arithmetische Operatoren . . . . . . . . . . . 163 163 163 164 164 164 165 166 166 166 166 167 167 167 167 168 168 168 168 169 169 169 169 5.2.12.2 5.2.12.3 5.2.13 5.2.13.1 5.2.13.2 5.2.13.3 5.2.13.4 5.2.13.5 5.2.13.6 5.2.13.7 5.2.14 5.2.15 5.2.16 5.3 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.4 5.4.1 5.4.2 5.4.3 5.5 5.5.1 5.5.2 5.5.3 5.5.4 5.5.5 5.6. 5.6.1 5.6.2 5.6.3 5.6.4 5.6.5 6 6.1 6.1.1 6.1.1.1 6.1.1.2 6.1.1.3 Logische Operatoren . . . . . . . . . . . . . . . Vergleichsoperatoren . . . . . . . . . . . . . . . Kontrollstrukturen . . . . . . . . . . . . . . . . . Folge (Sequenz) . . . . . . . . . . . . . . . . . . . Bedingte Anweisung, einseitige Auswahl . . . . . . . . . . . . . . . . . . . . . . . . . Bedingte Anweisung, zweiseitige Auswahl . . . . . . . . . . . . . . . . . . . . . . . . . Bedingte Anweisung, mehrseitige Auswahl . . . . . . . . . . . . . . . . . . . . . . . . . Wiederholung mit vorausgehender Bedingungsprüfung . . . . . . . . . . . . . . . . Wiederholung mit nachfolgender Bedingungsprüfung . . . . . . . . . . . . . . . . Wiederholung mit Zähler . . . . . . . . . . . . Ein- und Ausgabe an der Konsole . . . . . Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . Funktionen . . . . . . . . . . . . . . . . . . . . . . . Objektorientierte Programmierung . . . . . Von der Struktur zum Objekt . . . . . . . . . Argumente für Objekte . . . . . . . . . . . . . . Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . Konstruktoren . . . . . . . . . . . . . . . . . . . . . Methoden . . . . . . . . . . . . . . . . . . . . . . . . Klassenvariablen . . . . . . . . . . . . . . . . . . . Vererbung . . . . . . . . . . . . . . . . . . . . . . . . Programmierung mit Eclipse . . . . . . . . . Terminologie . . . . . . . . . . . . . . . . . . . . . . Arbeiten mit der Workbench . . . . . . . . . . Erstes Projekt . . . . . . . . . . . . . . . . . . . . . Auswahlmenü für den Webshop (Azubi-Projekt) . . . . . . . . . . . . . . . . . . . . Menüstruktur . . . . . . . . . . . . . . . . . . . . . Visuelle Klasse mit Hauptmenü . . . . . . . Startklasse . . . . . . . . . . . . . . . . . . . . . . . . actionPerformed-Methoden . . . . . . . . . . Visuelle Klassen mit Labels und Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . Arbeiten mit dem UML-Editor . . . . . . . . Anwendungsfalldiagramm . . . . . . . . . . . Aktivitätsdiagramm . . . . . . . . . . . . . . . . Klassendiagramm . . . . . . . . . . . . . . . . . . Code-Generierung . . . . . . . . . . . . . . . . . Reverse Engineering . . . . . . . . . . . . . . . . 170 170 170 171 171 6.1.2.1 6.1.2.2 6.1.2.3 6.2 172 6.2.1 172 6.2.2 6.2.2.1 6.2.2.2 6.2.2.3 6.2.2.4 173 174 174 175 176 176 177 177 178 179 179 180 180 181 181 181 182 184 186 186 186 187 188 189 190 191 194 197 200 202 Datenbankanwendung Einführung . . . . . . . . . . . . . . . . . . . . . . . Datenbanksysteme . . . . . . . . . . . . . . . . . Konzeptionelles Schema . . . . . . . . . . . . Internes Schema . . . . . . . . . . . . . . . . . . . Externes Schema . . . . . . . . . . . . . . . . . . 6.1.2 203 203 204 204 205 6.2.3 6.2.3.1 6.2.3.2 6.2.3.3 6.2.3.4 6.2.3.5 6.2.4 6.2.4.1 6.2.4.2 6.2.4.3 6.2.4.4 6.2.4.5 6.2.4.6 6.2.4.7 6.2.4.8 6.3 6.3.1 6.3.1.1 6.3.1.2 6.3.1.3 6.3.1.4 6.3.2 6.3.3 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.4.1 6.4.4.2 6.4.5 6.4.5.1 Anwendungsformen von Datenbanksystemen . . . . . . . . . . . . . . . . Stand-alone-Datenbank . . . . . . . . . . . . . File-Share-Datenbank . . . . . . . . . . . . . . . Client-Server-Datenbank . . . . . . . . . . . . Arbeiten mit einer relationalen Datenbank . . . . . . . . . . . . . . . . . . . . . . . . Relationale Datenbankmanagementsysteme . . . . . . . . . . . . . . . . Normalisieren einer Tabelle . . . . . . . . . . Erste Normalform (1NF) . . . . . . . . . . . . Zweite Normalform (2NF) . . . . . . . . . . . Dritte Normalform (3NF) . . . . . . . . . . . . Nachteile einer extremen Normalisierung . . . . . . . . . . . . . . . . . . . . Begriffe der Datenmodellierung und Datenbankmanipulation . . . . . . . . . . Entität und Entitätstyp . . . . . . . . . . . . . . Entitätsbeziehungen . . . . . . . . . . . . . . . . Primärschlüssel . . . . . . . . . . . . . . . . . . . . Redundanz, Mutation und Anomalie . . . Referenzielle Integrität . . . . . . . . . . . . . . Entity-Relationship-Diagramm (ER-Diagramm) . . . . . . . . . . . . . . . . . . . Entity (Objekt) . . . . . . . . . . . . . . . . . . . . Attribute . . . . . . . . . . . . . . . . . . . . . . . . . Abhängige (weak) Entitys . . . . . . . . . . . Relation . . . . . . . . . . . . . . . . . . . . . . . . . . Kardinalität . . . . . . . . . . . . . . . . . . . . . . . Darstellung im vereinfachten ER-Diagramm . . . . . . . . . . . . . . . . . . . . . Fünf Schritte zum ER-Modell . . . . . . . . Entity-Relationship-Diagramm (ER-Diagramm) . . . . . . . . . . . . . . . . . . . Arbeit mit MySQL . . . . . . . . . . . . . . . . . Datentypen . . . . . . . . . . . . . . . . . . . . . . . Zeichenketten . . . . . . . . . . . . . . . . . . . . . Numerische Datentypen . . . . . . . . . . . . . Datum und Zeit . . . . . . . . . . . . . . . . . . . . Aufzählung . . . . . . . . . . . . . . . . . . . . . . . Umsetzung vom ER-Diagramm in Tabellen . . . . . . . . . . . . . . . . . . . . . . . Zusammenfassung . . . . . . . . . . . . . . . . . Datenbankzugriffe mit SQL . . . . . . . . . . Kleine SQL-Geschichte . . . . . . . . . . . . . SQL-Befehlsübersicht . . . . . . . . . . . . . . Struktur von Tabellen erzeugen, ändern und löschen . . . . . . . . . . . . . . . . . Abfrageformulierung mit SQL . . . . . . . . Projektion . . . . . . . . . . . . . . . . . . . . . . . . Selektion . . . . . . . . . . . . . . . . . . . . . . . . . Aggregatfunktionen und Gruppen . . . . . Gruppenbildung in SQL-Anfragen . . . . . 205 206 206 207 207 207 210 214 214 215 216 216 216 216 216 216 217 217 217 217 219 219 220 221 221 222 222 222 222 223 223 224 225 226 228 228 228 229 231 231 232 233 234 Inhaltsverzeichnis 5 6.4.5.2 6.4.6 6.4.6.1 6.4.6.2 6.4.6.3 6.4.7 6.4.7.1 6.4.7.2 6.4.7.3 6.4.7.4 6.4.7.5 7 Auswahl von Gruppen . . . . . . . . . . . . . . Unterabfragen (Subqueries) . . . . . . . . . . Einzeilige Unterabfragen . . . . . . . . . . . . Mehrzeilige Unterabfragen . . . . . . . . . . . Unteranfragen mit dem IN-Operatorr . . . . Verbund (JOIN) von Tabellen . . . . . . . . . Einfacher EQUIJOIN mit zwei Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . Einfacher EQUIJOIN über mehr als zwei Tabellen . . . . . . . . . . . . . . . . . . . . . Vereinigung und Durchschnitt mit UNION . . . . . . . . . . . . . . . . . . . . . . . . . . Verknüpfung aller Tabellen mit INNER JOIN und OUTER JOIN . . . . . . SELF JOIN . . . . . . . . . . . . . . . . . . . . . . . 234 235 235 235 236 236 7.3.2.2 7.3.2.3 7.3.2.4 7.4 7.4.1 7.4.1.1 236 236 236 237 237 7.4.1.2 7.4.1.3 7.4.1.4 7.4.1.5 7.4.1.6 7.4.2 7.4.2.1 7.4.2.2 Web-Anwendungen mit Java 7.4.2.3 7.1 7.1.1 7.1.2 7.1.3 7.2 7.2.1 7.2.1.1 7.2.1.2 7.2.1.3 7.2.1.4 7.2.1.5 7.2.1.6 7.2.1.7 7.2.1.8 7.2.1.9 7.2.2 7.2.2.1 7.2.2.2 7.2.2.3 7.2.2.4 7.2.2.5 7.2.2.6 7.2.2.7 7.3 7.3.1 7.3.1.1 7.3.1.2 7.3.2 7.3.2.1 6 Technische Kommunikation . . . . . . . . . . Formen der Client-ServerKommunikation . . . . . . . . . . . . . . . . . . . Realisierungsvarianten der technischen Kommunikation . . . . . . . . . Dokumente der Client-ServerKommunikation . . . . . . . . . . . . . . . . . . . Statische Dokumente . . . . . . . . . . . . . . . HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . Grundlagen . . . . . . . . . . . . . . . . . . . . . . . Textformatierungen . . . . . . . . . . . . . . . . Tabellen und Listen . . . . . . . . . . . . . . . . Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . RGB-Farbmodell . . . . . . . . . . . . . . . . . . What’s a deprecated tag/attribute? . . . . . Frames . . . . . . . . . . . . . . . . . . . . . . . . . . Formulare . . . . . . . . . . . . . . . . . . . . . . . . Beispiel einer statischen Webseite . . . . . XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ursprung der Sprache . . . . . . . . . . . . . . . Aufbau eines XML-Dokuments . . . . . . . Gültige und wohlgeformte XML-Dokumente . . . . . . . . . . . . . . . . . . Parser für XML-Dateien . . . . . . . . . . . . . XML-Schemata . . . . . . . . . . . . . . . . . . . XSL zur Formatangabe . . . . . . . . . . . . . . Epilog zu XML . . . . . . . . . . . . . . . . . . . . Clientseitige Programmierung . . . . . . . . Scripte . . . . . . . . . . . . . . . . . . . . . . . . . . . JavaScript zur Eingabekontrolle . . . . . . . Eingabekontrolle mit Prüfziffernberechnung in JavaScript . . . . . . . . . . . . Applets . . . . . . . . . . . . . . . . . . . . . . . . . . Aufruf von Applets . . . . . . . . . . . . . . . . . Inhaltsverzeichnis 239 240 240 240 241 241 241 242 244 246 247 248 249 251 254 257 257 257 258 259 259 259 260 261 261 261 262 265 265 7.4.3 7.4.3.1 7.4.3.2 7.4.3.3 7.4.3.4 7.4.4 7.5 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.5.8 7.5.9 7.6 7.6.1 7.6.2 8 8.1 8.2 8.3 Gefährdung durch Applets . . . . . . . . . . . Applet zur EAN-Kontrolle mit Ereignisbehandlung . . . . . . . . . . . . . . . . . . . . . . . Erstellen und Einbetten des Applets . . . . Serverseitige Programmierung . . . . . . . . Webserver . . . . . . . . . . . . . . . . . . . . . . . . Arbeitsteilung zwischen HTTP-Server und Webserver . . . . . . . . . . . . . . . . . . . . Tomcat als Webserver . . . . . . . . . . . . . . . Lokale Installation von Tomcat . . . . . . . Lokaler Server und Firewall . . . . . . . . . . Test und Administration des TomcatServers . . . . . . . . . . . . . . . . . . . . . . . . . . Tomcat in Eclipse einbinden . . . . . . . . . . Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . Das Konzept der Servlets . . . . . . . . . . . . Einfaches Beispiel zur Abfrage von Serverdaten . . . . . . . . . . . . . . . . . . . . . . . Codieren und Compilieren des Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . Deployment . . . . . . . . . . . . . . . . . . . . . . Prinzip des Deployments . . . . . . . . . . . . Werkzeug für das Deployment . . . . . . . . Zusammenfassung in einem Webarchiv . . . . . . . . . . . . . . . . . . . . . . . . Übermittlung des Webarchivs zum Server . . . . . . . . . . . . . . . . . . . . . . . Verwendung des Servlets . . . . . . . . . . . . ACI-Webshop: Servlet mit Datenbankzugriff . . . . . . . . . . . . . . . . . . Installationshinweise . . . . . . . . . . . . . . . SQL-fähiges Datenbanksystem verwenden . . . . . . . . . . . . . . . . . . . . . . . . Dynamischer Methodenaufruf . . . . . . . . Verbindung zur Datenbank herstellen . . . Datenbankzugriff aus Java mit SQL . . . . Datensicherung und Fehlerbehandlung beim Datenbankzugriff . . . . . . . . . . . . . . Antwort des Servlets . . . . . . . . . . . . . . . . Servlet mit Datenbankabfrage . . . . . . . . Deployment . . . . . . . . . . . . . . . . . . . . . . ACI-Webshop: Zwischenbericht zum Entwicklungsstand . . . . . . . . . . . . . Offene und unbehandelte Probleme . . . . Vergleich der Anforderungen mit dem erreichten Stand . . . . . . . . . . . . . . . 265 266 269 270 270 270 271 271 273 273 275 277 277 278 278 281 281 282 282 284 286 287 287 289 290 291 292 293 294 296 297 299 299 302 Testverfahren Zielstellung . . . . . . . . . . . . . . . . . . . . . . . 304 Überblick . . . . . . . . . . . . . . . . . . . . . . . . 305 Teststufen . . . . . . . . . . . . . . . . . . . . . . . . 305 8.4 8.4.1 8.4.2 8.4.3 8.4.3.1 8.4.3.2 8.4.3.3 8.5 8.6 9 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.1.1 9.2.1.2 9.2.2 9.2.2.1 9.2.2.2 9.2.2.3 9.2.2.4 9.3 Durchführung der Tests . . . . . . . . . . . . . Manuelle Testverfahren . . . . . . . . . . . . . White-Box-Verfahren . . . . . . . . . . . . . . . Black-Box-Verfahren . . . . . . . . . . . . . . . Äquivalenzklassenbildung . . . . . . . . . . . Grenzwertanalyse . . . . . . . . . . . . . . . . . . Testsequenzermittlung . . . . . . . . . . . . . . Testszenarien . . . . . . . . . . . . . . . . . . . . . Testdokumentation . . . . . . . . . . . . . . . . . 306 306 307 308 308 309 309 311 313 9.3.4 10 10.1 10.1.1 10.1.2 Dokumentation Rolle der Dokumentation im Softwarelebenszyklus . . . . . . . . . . . . . . . Dokumentation als kollektives Gedächtnis der Entwickler . . . . . . . . . . . Dokumentation als Hilfe für den Benutzer . . . . . . . . . . . . . . . . . . . . . . Programm ohne Dokumentation . . . . . . . Dokumentationsarten . . . . . . . . . . . . . . . Entwickler-Dokumentation . . . . . . . . . . Planungsdokumente . . . . . . . . . . . . . . . . Dokumente für Entwurf und Implementierung . . . . . . . . . . . . . . . . . . . Anwender-Dokumentation . . . . . . . . . . . Marketingunterlagen . . . . . . . . . . . . . . . . Installationshinweise . . . . . . . . . . . . . . . Benutzer-Dokumente . . . . . . . . . . . . . . . Online-Hilfe . . . . . . . . . . . . . . . . . . . . . . Erstellung der Dokumentation . . . . . . . . 9.3.1 9.3.2 9.3.3 315 316 317 320 321 322 322 324 325 327 327 327 328 328 10.1.3 10.1.4 10.1.5 10.2 10.2.1 10.2.2 10.2.3 10.2.4 10.3 Formulardokumentation . . . . . . . . . . . . . Parallele Dokumentation . . . . . . . . . . . . Werkzeuge zur Dokumentationserstellung . . . . . . . . . . . . . . . . . . . . . . . . Dokumentation in der ACI GmbH . . . . . 328 328 328 332 Routinebetrieb von IT-Systemen Informationsmanagement . . . . . . . . . . . . Entwicklungsstufen . . . . . . . . . . . . . . . . Strategische, taktische und operative Aufgaben des Informationsmanagements . . . . . . . . . . . . . . . . . . . . . Personalmanagement . . . . . . . . . . . . . . . Organisationsmanagement . . . . . . . . . . . Informationsinfrastrukturmanagement . . IT Infrastructure Library (ITIL) . . . . . . . Historische Entwicklung . . . . . . . . . . . . Service Operation und Service Transition . . . . . . . . . . . . . . . . . . Service Desk . . . . . . . . . . . . . . . . . . . . . . Service Design und Service Strategie . . . Zusammenfassung . . . . . . . . . . . . . . . . . 333 333 334 336 338 339 340 340 341 342 344 347 Anhang Richtlinien für die Softwaredokumentation . . . . . . 348 Sachwortverzeichnis . . . . . . . . . . . . . . . . . . . . . . . 352 Inhaltsverzeichnis 7 Lernfeld 6 W den, das wie andere Produkte systematisch entwickelt werden kann und durch feststellbare Eigenschaften (Funktionalität, Qualität) gekennzeichnet ist. Software weist aber einige besondere Merkmale auf, die beim Umgang mit ihr beachtet werden müssen: Die Entwicklung und Bereitstellung von Anwendungen der IT (Informations- und Telekommunikationstechnik) muss eine Verbindung zwischen dem aktuell technisch Machbaren und den Anforderungen der Kunden schaffen. Besondere Eigenschaften von Software ■ Software ist immateriell, d. h. nur durch den Datenträger materiell und „fassbar“. ■ Software kann nicht ohne Weiteres betrachtet werden, Computer und passende Betriebssysteme sind notwendig. ■ Kopie und Original sind völlig gleich. Das Erstellen von Kopien verursacht kaum Aufwand. ■ Software wird nicht gefertigt, sondern nur entwickelt. Jede Softwareentwicklung ist eine individuelle Leistung, je nach Umfang der Software erbracht durch kleine oder große Teamarbeit. ■ Software verschleißt nicht, aber Software „altert“ in dem Maße, in dem sich ihre Umwelt ändert. Das Systemhaus ACI GmbH nutzt die von ihm entwickelte Software selbst als gewerblicher Kunde, also als ein Nutzer der IT , der unter Einsatz von IT -Anwendungen seine gewerbliche Tätigkeit ausüben, ausweiten und rationeller gestalten will. ACI ist zugleich Auftraggeber und Anwender für ein zu schaffendes Warenwirtschaftssystem mit eingebundenem Webshop, das die Auszubildenden entwickeln sollen. Diese Eigenentwicklung versetzt die Firma ACI GmbH damit zugleich in die Rolle von Auftraggeber und Auftragnehmer. 2.1.3 Systematik der Software Was wir als natürlich empfinden, verknüpft sich mit materiellen Eigenschaften. An Software ist nichts natürlich. Erfahrungen aus der natürlichen Welt sind auf die Software nicht übertragbar, werden aber dennoch ständig übertragen. Zum Beispiel stellt die Wartung nicht den alten Zustand wieder her, sondern schafft einen neuen Zustand. Software unterliegt keinem Verschleiß, sie veraltet aber, da sich ihr Umfeld und ihre Einsatzbedingungen verändern. Die Verwendung bei vielen Anwendern erscheint bei Software extrem lukrativ, wenn der Aufwand für Anpassungen relativ gering ausfällt. Programmierer unterschätzen allerdings meist das Problem der Anpassbarkeit. 2.1.3.1 System- oder Anwendungssoftware Nach ihrer Bestimmung mit mehr Nähe zum Anwender oder zur Hardware hin wird zwischen Anwendungssoftware und Systemsoftware unterschieden. Systemsoftware dient zum Betreiben (daher auch Betriebssystem) der Hardware, Anwendungssoftware wird hingegen zur Bearbeitung einer fachlich-inhaltlichen Aufgabenstellung beim Anwender benötigt. Systemsoftware ist zum Betrieb und zur Steuerung der Hardware erforderlich und umfasst außerdem hardwarenahe, anwendungsneutrale Entwicklungsund Verwaltungsprogramme. Systematik der Software Software Systemsoftware S Anwendungssoftware Betriebssysteme betriebswirtschaftliche Anwendungen Softwareentwicklungswerkzeuge Dienstprogramme wissenschaftlich-technische Anwendungen Datenbankmanagementsysteme Spiel-, Lern- und Unterhaltungssoftware Präsentationssoftware Büro- und Verwaltungssoftware Netzwerksoftware Branchensoftware diverse Tools Sicherheitssoftware Software als Produkt 41 W Lernfeld 6 3.2 Analyse Kick-offMeeting Vorlage des Lastenheftes vom Auftraggeber Projektplan erstellen Analyse der Anforderungen und der Ausgangssituation Im vorigen Kapitel wurde die Notwendigkeit der Aufgliederung der Softwareentwicklung in einzelne, im Allgemeinen zeitlich nacheinander ablaufende Phasen betont. Die sich daraus ergebende Festlegung von Tätigkeiten und Zwischenergebnissen ist eine Voraussetzung zur Sicherung einer arbeitsteiligen, planmäßigen und wirtschaftlichen Softwareentwicklung, verbun- W Modellierung: Prozessmodell, Benutzeroberfläche, Datenmodell ■ ■ ■ ■ ■ Entwurf Abnahme des Pflichtenheftes durch den Auftraggeber den mit einer wirksamen Qualitätssicherung. Dieser Ausgangspunkt führte zur Definition von so genannten Phasenmodellen oder allgemeinen Vorgehensmodellen. In Anlehnung an das Wasserfallmodell wird von folgenden Phasen im Lebenszyklus eines Softwareproduktes ausgegangen: Inhalt Analyse Pflichtenheft erstellen systemorientierte Betrachtung Erfassung des Istzustands Aufdecken von Schwachstellen Analyse der Anforderungen Prognose der Entwicklung Beschreibung des zu schaffenden Systems (fachlicher Entwurf) Ergebnis ■ ■ ■ ■ ■ ■ ■ Programmentwurf (programmtechnischer Entwurf) Abgrenzung g des Einsatzgebiets Modell des Istzustands präzisierte Anforderungen Systemarchitektur Systemschnittstellen Testszenarien Pflichtenheft (Anforderungsspezifikation aus Sicht des Auftragnehmers) ■ Datenausgaben und -eingaben Benutzerschnittstellen Datenmodell Entwurf der Algorithmen ■ ■ ■ Implementierung ■ Programmierung, Test ■ lauffähige Module Integration ■ Integration, Test ■ lauffähiges Softwareprodukt Einführung, Routinebetrieb und Wartung ■ ■ ■ Dokumentation Abnahmetest Fehlerkorrektur Anpassung ■ ■ Beschreibung der Arbeitsschritte und Protokollierung der Ergebnisse, auch der Entscheidungen bezüglich der weiteren Entwicklungsarbeiten ■ ■ ■ ■ ■ Dem Wasserfallmodell entsprechend sind die Ergebnisse einer Phase jeweils die Ausgangsbasis für die Arbeit in der nächsten Phase. Dabei läuft die Arbeit nicht zwangsläufig linear hintereinander ab. Rücksprünge sind notwendig, wenn die Ergebnisse einer Phase nicht 102 Analyse und Entwurf freigegebenes Softwaresystem Updates Programmdokumentation Problemdokumentation Benutzerhandbuch Installationshinweise Betriebsanleitung den Anforderungen entsprechen. Dann muss die gleiche oder eine frühere Phase erneut durchlaufen werden. Die weiteren Ergebnisse und zu erstellenden Dokumente verbinden Analyse und Entwurff eng miteinander. Oft werden beide Phasen auch von einem Spezialisten Lernfeld 6 Java-Quelltext: *.java Java-Compiler Byte-Code Entwicklungsumgebung (JDK) portabler Code VM (virtual machine) Anwendungsplattform API-Bibliothek Java Runtime Environment (JRE) Entstehung einer Java-Applikation 5.1.3 JavaScript JavaScript ist eine eigenständige Sprache und hat eigentlich mit der Java-Idee wenig zu tun. Ihre Hauptanwendung findet sie in Programmen, die innerhalb eines Webbrowsers ausgeführt werden. Der Quelltext dieser Programme wird dazu in die HTML -Seite eingebettet. Es gibt aber auch in JavaScript geschriebene Programme, die direkt auf einem Webserver ablaufen. 5.2 Grundlegende Sprachelemente in Java 5.2.1 Das erste Programm Eine Programmiersprache versteht man am besten mithilfe einer Kombination aus Beispielen und theoretischen Erklärungen. Deshalb soll hier am Anfang ein einfaches Beispiel stehen: mport.java.io.* public class ErstesBeispiel { public static void main (String[ ] aufrufParameter) { int intZahl, intErgebnis; intZahl=7; 164 Programmierung intErgebnis=intZahl * 3; System.out.print („Das Ergebnis lautet: “); System.out.print (intErgebnis); System.out.println („.“) } } Anhand dieses Beispiels können viele Eigenheiten der Programmierung in Java erläutert werden: 1. Java unterscheidet zwischen Groß- und Kleinschreibung. Java ist „case sensitiv“. 2. Java-Programme bestehen aus Klassen. Die Klassendefinition wird mit dem Schlüsselwort class eingeleitet. 3. Damit aus der Klasse eine Anwendung, eine application wird, muss eine Funktion namens main vorhanden sein. main ist die Hauptfunktion, die beim Aufruf der application gestartet wird. 4. Die Attribute der Funktion main verkörpern folgende Sachverhalte: void static public Diese Funktion hat keinen Rückgabewert. Der Datentyp der Funktion ist damit unbestimmt. Diese Funktion gehört fest zu der Klasse. Diese Funktion steht anderen Programmteilen zur Benutzung zur Verfügung. 5. Geschweifte Klammern markieren die Anweisungen. Das erste Klammernpaar fasst alles zusam- Lernfeld 6 WEB-INF Verzeichnis Servlet Container (3.) Ausführung classes (2.) speziell -web.xml -sun-web.xml build.xml try{ ........ Class.forName(dbDriver); connection = DriverManager.getConnection (dbUrl, dbUser, dbPwd); statement = connection.createStatement( ); ........ <?xml Version....> <! build.xml> <property name=„db..user“ value=„PBase“/> ........ include common.xml ........ </xml> } Catch (ClassNotFoundException ex){ ........ } D:\Sun\samples (1.) allgemein für alle -common.properties -common.xml -database.properties pointbase.driver=com.pointbase.jdbc.jdbcUniversalDriver ........ Parameterquellen beim dynamischen Methodenaufruf public Connection JDBCOpen(String url, String driverName, String user, String passwd) { Connection dbconn=null; try { // Class.forName(driverName).newInstance( ); // “new.Instance( )” zur Umgehung von abgebrochenen Zugriffen Class.forName(driverName); // dynamischer Methodenaufruf dbconn = DriverManager.getConnection(url, user, passwd); } // try catch(SQLException ex) { System.err.println(“SQL-Fehler beim Oeffnen der Daba: ” + url); System.err.println(ex); } // catch catch (ClassNotFoundException ex) { System.err.println(“Datenbank-Treiber nicht gefunden: ” + driverName); System.err.println(ex); } // catch return dbconn; }; 7.5.5 Datenbankzugriff aus Java mit SQL Der Zugriff auf die Datenbank erfolgt durch die Übermittlung von SQL -Anweisungen. Dazu wird zuerst ein Statement-Objekt zu der bestehenden Datenbankverbindung erzeugt. Dieses Statement-Objekt kennt hier die folgenden Methoden: 292 Web-Anwendungen mit Java ■ ■ .executeQuery ( ) zum Ausführen einer Abfrage mit SELECT (als Rückgabewert wird ein Objekt vom Typ ResultSet geliefert) .executeUpdate ( ) zum Ausführen einer Änderung mit INSERT, UPDATE oder DELETE . Lernfeld 6 9.1.3 Programm ohne Dokumentation Ein Programm ohne Dokumentation ist keine Software und kann nicht an unbekannte Nutzer zur langfristigen erfolgreichen Verwendung übergeben werden. Dieser Satz ruft viel Widerspruch hervor. Gegen eine Dokumentation werden meistens folgende Argumente genannt: ■ Dieses Argument wird sogar messbar gemacht, wenn man von Programmen mit maximal 500 Zeilen Quelltext oder maximal 10 Seiten Programmcode spricht. Aber für wen ist dieses Programm gedacht? Versteht der Kunde den Quelltext? Der Kunde muss hier ebenfalls ein Entwickler sein, der Bausteine für seine Programmierarbeiten braucht. Viele gute Programme gehen so von Hand zu Hand. Dem Ziel dieses Lehrbuches, Anwendungssysteme zu entwickeln und bereitzustellen, können diese Programme jedoch nicht entsprechen. Formularantrag aus dem PAO-System der IHK Die abzugebende Dokumentation als Gegenstand der Prüfung muss im Wesentlichen als Projektbericht verfasst sein, also als Projektablaufdokumentation, aus der ersichtlich ist, dass der Prüfling „Arbeitsabläufe und Teilaufgaben zielorientiert unter Beachtung wirtschaftlicher, technischer, organisatorischer und zeitlicher Vorgaben selbständig planen und kundengerecht umsetzen sowie Dokumentationen kundengerecht anfertigen kann.“ Die von den einzelnen Kammern (IHK) vorgegebenen Begrenzungen für den Umfang (maximal 10 bis 15 Seiten) orientieren praktisch auf eine Ablaufdokumentation. Die Ergebnisse der Projektarbeit können in der Anlage dargestellt werden, aber nur in Art und Umfang der oben beschriebenen Marketingmaterialien zur schnellen Erfassung von Leistung und Qualität der erstellten Produkte. Das Programm ist klein, verständlich geschrieben und im Quelltext gut kommentiert. ■ Das Programm wird nur einmal eingesetzt und ist generell nur für den internen Gebrauch gedacht. Derar- tige „Wegwerf-Programme“ werden beispielsweise zur Konvertierung von Daten für die Übernahme in ein neues Softwaresystem benötigt. Befindet sich die neue Software erfolgreich im Einsatz, sind alle Daten im neuen System verfügbar, verliert das Konvertierungsprogramm seine Bedeutung und wird nicht mehr gebraucht. Hier kann wirklich auf eine aufwendige Dokumentation verzichtet werden. Allein für die Qualitätssicherung sollten jedoch die Konvertierungsalgorithmen dokumentiert werden. Tauchen später Fehler in den Daten auf, können hier mögliche Ursachen aufgedeckt werden. ■ Interne Programme, oft Ergebnis von User-Development, werden kaum dokumentiert. Wenn ein Mitarbeiter sich selbst ein VBA -Makro zur Rationalisie- rung seiner Office-Arbeit schreibt, dann verbleibt das Wissen bei ihm. Vielleicht könnte man aber im 320 Dokumentation