Lernfeld 6 weist aber einige besondere Merkmale auf, die beim Umgang mit ihr beachtet werden müssen: 1.4.3 Systematik der Software 1.4.3.1 System- oder Anwendungssoftware W n n n n n 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. 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. 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. S ACI nutzt die im eigenen Haus 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. 16 Ausgangssituation im Unternehmen 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. W Systemsoftware ist zum Betrieb und zur Steuerung der Hardware erforderlich und umfasst außerdem hardwarenahe, anwendungsneutrale Entwicklungsund Verwaltungsprogramme. Ursprünglich wurde die Systemsoftware direkt vom Hardwarehersteller entwickelt und ausgeliefert, heute wird Systemsoftware auch von hardwareunabhängigen Softwareunternehmen angeboten. Zur Systemsoftware werden alle Softwareprodukte gerechnet, die anwendungsunabhängig sind und damit für unterschiedlichste Anwendungen eingesetzt werden können. So gehören zur Präsentationssoftware u. a. die Browser, mit denen die Informationsangebote aus dem Internet betrachtet werden können. Der Browser wiederum bietet den Rahmen für den Einsatz aktiver Komponenten (z. B. JavaScript), durch die sich Anwendungssoftware realisieren lässt. Ähnlich verhält es sich mit den Datenbankmanagementsystemen, die als solche anwendungsunabhängig sind, aber im Rahmen von betriebswirtschaftlichen Anwendungen zur Datenverwaltung eingesetzt werden. Anwendungssoftware umfasst alle Programme, die betriebswirtschaftliche, technisch-wissenschaftliche oder branchenbezogene Anwendungen unterstützen. Die Anwendungssoftware lässt sich in folgende Bereiche aufteilen: n betriebswirtschaftliche Anwendungssoftware: Hierunter fallen sämtliche für betriebswirtschaftliche Zwecke genutzten Programme. Soweit es sich um allgemein notwendige Aufgaben handelt, versuchen die meisten Unternehmen hierfür Standardsoftware einzusetzen. n technische Anwendungssoftware: Im Vordergrund steht hierbei die Unterstützung technischer bzw. mathematischer Aufgaben, wie z. B. Software für grafische Darstellungen, technische Berechnungen und Architekturlösungen. n Branchensoftware: An der Schnittstelle zwischen betriebswirtschaftlichen und technologischen Aufgaben werden durch diese Software branchenspezifische Aufgaben unterstützt (z. B. die Berechnung der Taxigebühren aus Fahrweg und Standzeiten oder die Berechnung von Heizkosten pro Wohnung etc.) W 3 Analyse und Design Initiieren des Projektes Anforderungen des Auftraggebers Analyse des Istzustandes Erstellen des Modells Verbesserungen am Design Pflichtenheft 3.1 Analyse Vorgehensmodelle zeigen den Weg Analyse, Einordnen und Inhalt verstehen betont. Die sich daraus ergebende Festlegung von Tätigkeiten und Zwischenergebnissen ist eine Voraussetzung zur Sicherung einer arbeitsteiligen, planmäßigen und wirtschaftlichen Softwareentwicklung, verbunden mit einer wirksamen Qualitätssicherung. Dieser Ausgangspunkt führte zur Definition von sogenannten Phasenmodellen oder allgemeinen Vorgehensmodellen. In Anlehnung an das Wasserfallmodell wird von folgenden Phasen im Lebenszyklus eines Softwareproduktes ausgegangen: Design, Erkenntnisse als Modell abbilden Im vorigen Kapitel wurde die Notwendigkeit der Aufgliederung der Softwareentwicklung in einzelne, im Allgemeinen zeitlich nacheinander ablaufende Phasen Phase Analyse Inhalt n n n n n Design systemorientierte Betrachtung Erfassung des Istzustands Aufdecken von Schwachstellen Analyse der Anforderungen Prognose der Entwicklung Beschreibung des zu schaffenden Systems (fachlicher Entwurf) n n n n n n n Programmentwurf (programmtechnischer Entwurf) W Ergebnis n n n n Abgrenzung 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 n Programmierung, Test n lauffähige Module Integration n Integration, Test n lauffähiges Softwareprodukt n Abnahmetest Fehlerkorrektur Anpassung n freigegebenes Softwaresystem Updates Einführung, Routinebetrieb und Wartung n n n (Fortsetzung auf folgender Seite) Analyse 83 Lernfeld 6 W Begriff Erläuterung Java Server Pages (JSP) JSP verkörpern eine spezielle Technologie, um statische HTML-Seiten mit dynamisch generiertem HTML-Code zu mischen. Dazu werden die konventionellen HTML-Texte um spezielle JSP-Tags ergänzt. Java Beans Java Beans wurden geschaffen, um eine einfache Entwicklung von grafischen Benutzeroberflächen zu ermöglichen. Java Beans Java-Quelltext: *.java sind normale Java-Klassen, die innerhalb ihrer Programmierung jedoch bestimmte strenge Konventionen einhalten müssen. Enterprise Java Beans (EJB) EJB werden als „server-side“-Komponenten entwickelt und müssen sich extrem parametrisieren lassen. Die Parameter kommen aus der Properties-Datei und werden über die Dateien COMMON.XML und BUILD.XML ausgelesen und weitergegeben. Java-Compiler Bytecode Entwicklungsumgebung (JDK) portabler Code VM (virtual machine) Anwendungsplattform API-Bibliothek Java Runtime Environment (JRE) Entstehung einer Java-Applikation 5.3 Grundlegende Sprachelemente in Java 5.3.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: import.java.io.* public class ErstesBeispiel { public static void main (String[ ] aufrufParameter) { int intZahl, intErgebnis; intZahl=7; intErgebnis=intZahl * 3; System.out.print („Das Ergebnis lautet: “); System.out.print (intErgebnis); System.out.println („.“) } } 184 Programmierung in Java Anhand dieses Beispiels können viele Eigenheiten der Programmierung in Java erläutert werden: 1. Java unterscheidet zwischen Groß- und Kleinschreibung. Java ist „case sensitive“. 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 Diese Funktion hat keinen Rückgabewert. Der Datentyp der Funktion ist damit unbestimmt. static Diese Funktion gehört fest zu der Klasse. public Diese Funktion steht anderen Programmteilen zur Benutzung zur Verfügung. 5. Geschweifte Klammern markieren die Anweisungen. Das erste Klammernpaar fasst alles zusammen, was zur Klasse gehört. Das innere Klammernpaar schließt die Anweisungen der Funktion main ein. Lernfeld 6 static ResultSet Lesen(Connection Daba, String SQLtext) { try { Statement SQLanw = Daba.createStatement( ); return SQLanw.executeQuery(SQLtext); } // try catch(SQLException ex) { System.err.println(“SQL-Fehler beim Lesen: ” + SQLtext); System.err.println(ex); return null; } // catch }; Die Methode .executeUpdate ( ) zum Ausführen einer Änderung liefert als Rückgabewert eine ganze Zahl, die der Anzahl der erfolgreich veränderten Datensätze in der angesprochenen Tabelle entspricht. Dieser Wert ist für das Beispiel zuerst uninteressant, muss aber entgegengenommen werden. Es folgt der Quelltext zum Ändern in der Datenbank für das Beispiel (siehe oben). static int Einfuegen(Connection Daba, String SQLtext) { try { Statement SQLanw = Daba.createStatement ( ); return SQLanw.executeUpdate(SQLtext); } // try catch(SQLException ex) { System.err.println(“SQL-Fehler beim Aendern/Einfuegen:” + SQLtext); System.err.println(ex); return 0; } // catch }; Eine Fehlerbehandlung ist jedoch notwendig. Java verlangt ein „Exception-Handling“, der Compiler selbst akzeptiert keine Anweisungen ohne Ausnahmebehandlung. Deshalb werden die kritischen Anweisungen des Datenbankzugriffes mittels „try“ gekapselt und gegebenenfalls mit „catch“ abgefangen. Als Ausnahmen werden behandelt: Ausnahmesituation Bemerkung ClassNotFoundException Der gewünschte Treiber kann beim dynamischen Methodenaufruf nicht gefunden werden. Hier ist eventuell der CLASSPATH -Wert anzupassen. IOException Bei der Ein- oder Ausgabe tritt ein Fehler auf, was hier durch die allgemeine Arbeit mit Zeichenketten kaum passieren kann. NullPointerException Im Objekt vom Type ResultSet bewegt sich der Zeiger in unvorgesehene Regionen. SQL Exception Die SQL -Anweisung ist falsch und kann daher nicht ausgeführt werden, meistens durch einen Syntaxfehler in SQL verursacht. 7.5.4 Antwort des Servlets 7.5.3 Datensicherung und Fehlerbehandlung beim Datenbankzugriff Für den Webshop wurden in den Anforderungen (vgl. Lastenheft, Abgrenzung gegenüber nicht zu realisierenden Leistungen) keine Maßnahmen zur Datensicherung vereinbart: 2.3 Abgrenzungskriterien (Anmerkung der Autoren: Die ersten drei Abgrenzungskriterien sind nur in der Modellsituation akzeptabel) 1. Es sind keinerlei Maßnahmen zur Datensicherung vorzusehen. 2. Es sind keinerlei Maßnahmen zur Datenarchivierung vorzusehen. 3. Es sind nur einfache Maßnahmen zur Zugriffssicherheit vorzusehen. 4. Die Pflege des Warenbestandes erfolgt ausschließlich über das bestehende Warenwirtschaftssystem. Die Verbindung zwischen Browser und HTTP -Server wird als „stateless“ bezeichnet, sie ist zustandslos. Eine zustandslose Verbindung hat kein eigenes Gedächtnis, sie kann Informationen aus dem Seitenaufruf nicht speichern, um sie bei einem späteren Aufruf einer anderen oder der gleichen Seite wieder zur Verfügung zu stellen. Deshalb kann man auf der Seite des Servers eine bestehende Webseite nicht modifizieren, sondern sie muss komplett neu geschrieben werden. Auch der Client kann die Webseite nicht ändern, sondern nur Formulare ausfüllen und Daten aus Auswahllisten auswählen. Für das Beispiel des Webshops bedeutet diese zustandslose Verbindung, dass die Anzeige im Browser nicht partiell verändert werden kann, sondern nach einer Änderung stets wieder komplett zu schreiben ist. Also muss vom Servlet auch eine komplette Seite erzeugt werden, wobei sich der Inhalt der Seite nach den Abfrageergebnissen richtet. ACI-Webshop: Servlet mit Datenbankzugriff 305 Lernfeld 6 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. 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: n Das Programm ist klein, verständlich geschrieben und im Quelltext gut kommentiert. 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. n Das Programm wird nur einmal eingesetzt und ist generell nur für den internen Gebrauch gedacht. Derartige „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 benötigt. Hier kann wirklich auf eine aufwendige Dokumentation verzichtet werden. Für die Qualitätssicherung sollten die Konvertierungsalgorithmen jedoch dokumentiert werden. Tauchen später Fehler in den Daten auf, können hier mögliche Ursachen aufgedeckt werden. n n Interne Programme, oft Ergebnis von User-Development, werden kaum dokumentiert. Wenn ein Mitarbeiter sich selbst ein VBA -Makro zur Rationalisierung seiner Office-Arbeit schreibt, dann verbleibt das Wissen bei ihm. Vielleicht könnte man aber im gesamten Unternehmen große Effekte durch den Einsatz dieses kleinen Makros erreichen. Hier muss allerdings vom Management der Publikationsaufwand für das Dokumentieren der Lösung entsprechend honoriert werden. Das Programm ist selbsterklärend. Bei diesem Argument muss bedacht werden, dass erheblich mehr an Aufwand notwendig ist, um eine gute, selbsterklärende Benutzeroberfläche zu erstellen. Damit entsteht die Benutzerdokumentation quasi online. Aber wo befinden sich die Installationshinweise? Dafür ist eine aufwendige Installationsroutine mit einem langen Dialog und dem Abtesten aller erdenklichen Konstellationen notwendig. Auch das kostet viel Zeit. Schließlich werden beim Benutzer Kenntnisse und Fertigkeiten im Umgang mit der Software vorausgesetzt, die er sich aus anderen Dokumentationen und Schulungsunterlagen bereits angeeignet hat. Selbsterklärende Software wird vom Markt nur dann angenommen, wenn es sich um den „Nachbau“ bekannter Softwaresysteme handelt. Es mag spezielle Situationen geben, wo eine Dokumentation überflüssig ist. In den meisten Fällen kann bei einer Softwareentwicklung jedoch nicht auf eine Dokumentation verzichtet werden, denn der Markt verlangt danach. Die Dokumentation schafft die Voraussetzung für eine langfristige, sichere Nutzung der Software. Der Entwickler kennt die Anwender im Normalfall nicht. Erst mit der Dokumentation vermittelt er sein Wissen über die Software an den Anwender. 9.2 Dokumentationsarten Nachdem die Bedeutung der Dokumentation und ihre Rolle im Lebenszyklus eines Softwareproduktes klar ist, bleibt immer noch die Frage nach dem Inhalt und der Gestaltung der Dokumentation zu beantworten. Der Inhalt und damit die Art der Dokumentation richten sich zuerst nach den Zielgruppen: Entwickler oder Anwender. Die Entwickler benötigen die Dokumente zur Planung, Durchführung und Absicherung des Entwicklungsprozesses sowie im späteren Lebenszyklus zur Wartung der Software. Die Anwender müssen die Software installieren und betreiben können und deren Benutzer benötigen Material zum Erlernen und Dokumentationsarten 343