Software-Entwicklung

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Identifizierung und Ausbildung von Führungskräften
Die Schulkonsole für Lehrerinnen und Lehrer
Einführung in die Informatik: Programmierung und Software-Entwicklung
Anwendungen des OODM auf die ADB / NDB
V-Modell XT - Ein Überblick
Vorteile der Online-Produkte
Entwicklungen der jwConsulting GmbH
CPCP Institute of Clinical Pharmacology AGAH Annual Meeting, 29. Februar 2004, Berlin, Praktischer Umgang mit den Genehmigungsanträgen gemäß 12. AMG Novelle.
Design by Contract with JML - Teil 2
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 2.1.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Betreuerin: Kathleen Jerchel
eXtreme Programming (XP)
DVG Verkettete Listen Verkettete Listen. DVG Verkettete Listen 2 Primitive Datentypen Vorteile: –werden direkt vom Prozessor unterstützt.
1. 2 Schreibprojekt Zeitung 3 Überblick 1. Vorstellung ComputerLernWerkstatt 2. Schreibprojekt: Zeitung 2.1 Konzeption des Kurses 2.2 Projektverlauf.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
20:00.
Fragen, die du dir schon immer gestellt hast…
Einführung Capitol Betriebskostenabrechnung
Evaluation des Leitbilds - das Haus des Lernens aus der Sicht der Eltern Umfrage-Ergebnisse.
Das Multifacetten-Korrekturverfahren beim DSD. Fehleranfälligkeit bei Leistungsbeurteilungen.
ExpertAdmin ® ist eine eingetragene Marke der Inforis AG, Zürich. Das ExpertAdmin Bewertungssystem und die ExpertAdmin Software sind urheberrechtlich geschützt.
Die Denkweise der Kinder, das Lernen und Lehren.
Medien zwischen Technologie und Gesellschaft Dozent: Herr Prof. Dr. Manfred Thaller SS 13 Referent: Christian Braun.
Interaktive Karten zur Visualisierung statistischer Daten mit Descartes Vortrag von Annette Eicker GIS - Seminar WS 2000/01.
Echte Freundschaft.
Thema: Gruppenpuzzle Referenten: Carina Thiery Anke Britz
Herzlich willkommen zum 2. Tag!
OOD – Object Oriented Design II
VS one Veranstalter: VSone Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler
Ein Rechensystem ist ein aus Hard- und Software bestehendes System zur Speicherung und Verarbeitung von Informationen.
Ein kommando unter Windows 7
Grundsätzliches zum Schneller Lesen lernen
Hinterlassen auch Sie Ihre Spuren...
Walter HAUER InteressenManagement Ing. Mag. Walter HAUER.
- Untersuchung von Realitätsnahen Problemen mit Funktionen
Server.
Was Sie schon immer wissen über diese Spezies wissen wollten
Was ist des agilen Pudels Kern?
Anwendungsentwicklung. … überlegen sie mal… Wir beschäftigen uns mit dem Aufbau der Arbeitsweise und der Gestaltung von betrieblichen Informationssystemen.
Sie hatte die Aufgabe, die Konferenz vorzubereiten. Ihm wurde aufgetragen, die Firma zu benachrichtigen. Man gab ihm die Gelegenheit, sich zu den Anschuldigungen.
Warum verschwand die Antimaterie?
Betriebliche Aufgaben effizient erfüllen
Teamreflexion Juni 2011.
Inhalt Was ist A-Plan? Einsatzgebiete Organisation der Daten
Eine Einführung in die CD-ROM
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
Hi, ich hab hier ein neues Programm, das würde ich gern auf meinem persönlichen System installieren. Es heißt LIEBE. Was soll ich denn da als erstes.
Performer PRIMUS ® und PRIMUS 50plus ® Generationen -Versorgung.
COMENIUS PROJEKTTREFFEN - PITEA – Projektpraktikum KFZ-Techniker, 4. Klasse Grundauswertung Teil 1 der Befragung: 1) Hast du dich in.
ADAT©2004 Dipl. - Ing. Walter SabinSeite: 37 Version 1.0a Datenmodellierung Modell –Abbild eines Wirklichkeitsausschnittes –Abstraktion – Reduktion auf.
ETS4 - Was ist neu? - Wie fange ich an? - Noch Fragen?
NEU! 1 2. Wo kommt diese Art von Rezeptor im Körper vor?
Symmetrische Blockchiffren DES – der Data Encryption Standard
PARTENARIAT ÉDUCATIF GRUNDTVIG PARTENARIAT ÉDUCATIF GRUNDTVIG REPERES KULTURELLER ZUSAMMENHALT UND AUSDEHNUNG DER IDEEN AUF EUROPÄISCHEM.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Pigmentierte Läsionen der Haut
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Bildergalerie PRESEASON CAMP Juni 2014 Romanshorn Get ready for the Season!
Es war einmal ein Haus
1 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt Wie.
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
Das Entwurfsmuster Model-View-Controller
3. Die Datenstruktur Graph 3.2 Repräsentation von Graphen
 Präsentation transkript:

Software-Entwicklung Klaus Becker 2009

Software-Entwicklung

Miniprojekt Lernkartei Teil 1 Miniprojekt Lernkartei

Projekt - Auftrag Es soll ein Programm entwickelt werden, mit dem der Benutzer Lernkarteien erstellen und zum Lernen einsetzen kann. Eine Lernkartei besteht aus Karteikarten, bei denen ein Stichwort auf der Vorderseite und die zugehörige Erläuterung auf der Rückseite steht.

Projekt - Anforderungsanalyse Ziel der ersten Phase ist es, die Anforderungen an das zu entwickelnde Programm möglichst klar zu formulieren.

Projekt - Anforderungsanalyse Gruppe A: Auftraggeber Gruppe B: Software-Entwickler Schritt 1: Die Mitglieder der beiden Teilgruppen verständigen sich grob über die Funktionalitäten des zu entwickelnden Programms. Schritt 2: Die Gruppe der Auftraggeber formuliert möglichst präzise die Anforderungen an das zu entwickelnde Programm (z.B. in Form einer Auflistung). Die Gruppe der Entwickler skizziert eine grafische Benutzeroberfläche, die alle gewünschten Funktionalitäten des Programms ermöglichen soll. Schritt 3: Die beiden Teilgruppen setzen sich wieder zusammen und überarbeiten ihre Produkte. In der gemeinsamen Diskussion wird überprüft, ob die Anforderungen präzise genug formuliert sind und ob die skizzierte Benutzeroberfläche geeignet ist, die Anforderungen umzusetzen.

Anforderungskatalog zur Lernkartei /1/ Der Benutzer kann eine neue Lernkartei erstellen. /2/ Der Benutzer kann eine bestehende Lernkartei laden. /3/ Der Benutzer kann eine Lernkartei abspeichern. /4/ Der Benutzer kann einer (evtl. leeren) Lernkartei neue Karten hinzufügen. /5/ Der Benutzer kann Karten einer Lernkartei löschen. /6/ Der Benutzer kann sich die Karten (Vorder- und Rückseite) einer Lernkartei schrittweise anzeigen lassen. /7/ Der Benutzer kann in eine Art Abfragemodus wechseln und entscheiden, ob die Erläuterung oder das Stichwort abgefragt werden. /8/ Der Benutzer kann sich im Abfragemodus nur die Rück- bzw. Vorderseite einer Karte anzeigen lassen und dann selbst die andere Kartenseite aufdecken. /9/ (optional) Der Benutzer kann die Karten eines Kartenstapels umsortieren.

Prototyp einer Benutzeroberfläche

Vorgehensmodelle Sequentielles Vorgehen: Die Schritte zur Entwicklung der Software werden streng sequentiell – einer nach dem anderen – durchlaufen. Dieses Vorgehensmodell wird auch Wasserfallmodell genannt. Iteratives Vorgehen: Während des Entwicklungsprozesses wird eine Folge von Produktversionen erstellt. Zunächst werden nur die Kernfunktionalitäten des Systems realisiert. Anschließend werden weitere Funktionen sukzessive ergänzt.

Projekt - Planung der Vorgehensweise Planung der Iterationsstufen: Welche Kernfunktionalitäten sollen in einer ersten Produktversion berücksichtigt werden? Welche Erweiterungen sind in weiteren Produktversionen vorgesehen?

Schrittweises Vorgehen Das Kernsystem In einem ersten Iterationsschritt beschränken wir uns darauf, das Erstellen einer Lernkartei und die Navigation in der Lernkartei zu realisieren. /1/ Der Benutzer kann eine neue Lernkartei erstellen. /4/ Der Benutzer kann einer (evtl. leeren) Lernkartei neue Karten hinzufügen. /5/ Der Benutzer kann Karten einer Lernkartei löschen. /6/ Der Benutzer kann sich die Karten (Vorder- und Rückseite) einer Lernkartei schrittweise anzeigen lassen. Erweiterung: Speichern und Laden In einem zweiten Iterationsschritt sollen das Problem der Speicherung von Daten bearbeitet werden. /2/ Der Benutzer kann eine bestehende Lernkartei laden. /3/ Der Benutzer kann eine Lernkartei abspeichern. Erweiterung: Abfragemodus In einem dritten Iterationsschritt soll schließlich das Abfragen realisiert werden. /7/ Der Benutzer kann in ein Art Abfragemodus wechseln und entscheiden, ob die Erläuterung oder das Stichwort abgefragt werden. /8/ Der Benutzer kann sich im Abfragemodus nur die Rück- bzw. Vorderseite einer Karte anzeigen lassen und dann selbst die andere Kartenseite aufdecken. /9/ (optional) Der Benutzer kann die Karten eines Kartenstapels umsortieren.

Das Kernsystem Ziel ist es, ein Kernsystem zu entwickeln. Dieses Kernsystem soll es dem Benutzer ermöglichen, eine Lernkartei zu erstellen und innerhalb der erstellten Lernkartei zu navigieren. /1/ Der Benutzer kann eine neue Lernkartei erstellen. /4/ Der Benutzer kann einer (evtl. leeren) Lernkartei neue Karten hinzufügen. /5/ Der Benutzer kann Karten einer Lernkartei löschen. /6/ Der Benutzer kann sich die Karten (Vorder- und Rückseite) einer Lernkartei schrittweise anzeigen lassen.

Projekt - Modellierung Ein Softwaresystem muss genau geplant werden, bevor es in einer Programmiersprache realisiert werden kann. In einer Modellierungsphase werden zu diesem Zweck Modelle des Systems aus unterschiedlichen Blickrichtungen erstellt. In einem ersten Schritt versucht man, die zu Grunde liegende Miniwelt möglichst strukturgetreu in einem Modell abzubilden. In einem zweiten Schritt wird dieses Modell mit Blick auf das zu erstellende System verfeinert. - Abbild der Miniwelt - Vorlage für das System Miniwelt Modell Softwaresystem

Modellierung der Miniwelt Identifikation der Objekte Geeignete Objekte zur Darstellung der Miniwelt ergeben sich oft aus einer Beschreibung der Miniwelt: "Zentraler Bestandteil einer Lernkartei sind die Karteikarten. In der Regel werden mehrere Karteikarten zu einem Kartenstapel zusammengefasst. Der Kartenstapel wird in einer bestimmten Art und Weise gemanagt (eine Karte herausnehmen ...)." Miniwelt Überlege dir, welche Objekte zur Darstellung der Miniwelt geeignet wären. Beschreibe auch die Zuständigkeiten der vorgesehenen Objekte.

Modellierung der Miniwelt Konzeption der Klassen Konzipiere (erst grob, dann fein), welche Daten die verschiedenen Objekte mit Hilfe von Attributen verwalten sollen und welche Operationen sie durchführen können sollen. Überlege dir auch, welche Beziehungen zwischen den Objekten bestehen sollen. Erstell ein Klassendiagramm zur Verdeutlichung des objektorientierten Modells. Miniwelt

Modellierung der Miniwelt Objekte und ihre Zuständigkeiten Objekte der Klasse Karte sind für die Verwaltung der Daten einzelner Karteikarten zuständig. Ein Objekt der Klasse Kartenstapel ist für die Verwaltung mehrerer Karteikarten (bzw. Objekte der Klasse Karte) zuständig. Ein Objekt der Klasse Kartenmanager ist für das Kartenmanagement zuständig, z.B. für das Auswählen einzelner Karten.

Modellierung der Miniwelt Dokumentation der Klasse Kartenstapel Zuständigkeit: Ein Objekt der Klasse Kartestapel erzeugt und verwaltet Objekte der Klasse Karte. Attribut karten: Liste von Referenzen zur Verwaltung von Objekten der Klasse Karte Konstruktor Kartenstapel(): erzeugt ein Kartestapel-Objekt, das einen leeren Kartenstapel beschreibt Methode karteHinzufuegen(bezeichner, erlaeuterung): Prozedur, die ein neues Objekt der Klasse Karte erzeugt und in die Liste karten (am Ende der Liste) einfügt Methode karteLoeschen(index): Prozedur, die das Element mit dem übergebenen Index aus der Liste karten entfernt (sofern der Index im erlaubten Bereich liegt) Methode getKarte(index): Funktion, die das Karte-Objekt mit dem übergebenen Index zurückliefert (sofern der Index im erlaubten Bereich liegt)

Modellierung der GUI Die grafische Benutzeroberfläche soll von einem Objekt der Klasse GUILernkartei verwaltet werden. Beachte das Prinzip Trennung zwischen Datenmodell und GUI und beschreibe, in welcher Beziehung diese Klasse zu den Datenmodell-Klassen steht. Mache dir die Zuständigkeit eine Objekts der Klasse GUILernkartei klar und überlege dir, was dieses Objekt verwalten muss bzw. welche Verarbeitungen es vorsieht. Beschreibe möglichst genau, wie das System bei den verschiedenen Ereignissen reagieren soll. Kontrolliere auch, ob die Datenmodell-Objekte alle hierfür benötigten Methoden bereit stellen.

Modellierung der GUI Die grafische Benutzeroberfläche soll von einem Objekt der Klasse GUILernkartei verwaltet werden. Nach dem Prinzip Trennung zwischen Datenmodell und GUI soll dieses Objekt Zugriff auf die Datenmodell-Objekte haben, ein umgekehrter Zugriff soll hingegen nicht möglich sein.

Modellierung der GUI Mit Hilfe einer Zustandstabelle soll das gewünschte Verhalten der grafischen Benutzeroberfläche beschrieben werden. Vorerst sollen nur die Zustände 0 und 1 betrachtet werden. Die genaue Beschreibung der Funktionalitäten der GUI liefert auch eine Kontrolle, ob die Datenmodell-Objekte alle hierfür erforderlichen Methoden bereitstellen.

Projekt - Implementierung Wenn man das Prinzip Trennung zwischen Datenmodell und GUI beachtet hat, dann können Datenmodell und grafische Benutzeroberfläche unabhängig voneinander implementiert werden. Es bietet sich in diesem Fall an, arbeitsteilig vorzugehen. Bildet Programmiererteams, die aus 2 bis 3 Mitgliedern bestehen. Jeweils zwei Teams sollen arbeitsteilig das modellierte Kernsystem implementieren. Eines der beiden Teams ist für die Implementierung des Datenmodells zuständig, das andere Team für die Implementierung der grafischen Benutzeroberfläche. Bei der Implementierung soll darauf geachtet werden, dass der Quelltext verständlich ist (z.B. durch die Verwendung von Kommentaren). Das ist bei arbeitsteiligem Vorgehen von besonderer Bedeutung, da Programmierteams hier Programme verwenden, die sie nicht selbst entwickelt haben.

Projekt - Testen Testfälle In der Regel reicht es nicht, ein Programm nur einmal schnell zu testen. Vielmehr muss das Verhalten des Programms systematisch untersucht werden. Es hat sich bewährt, im Vorfeld Testfälle festzulegen. /1/ Erzeugung des Kartenstapel- und Kartenmanager-Objekts /2/ Hinzufügen von Karten-Objekten /3/ Löschen von Karten-Objekten (am Anfang / am Ende / in der Mitte des Kartenstapels) /4/ Navigation im Kartenstapel (an den Anfang / an das Ende / eine Karte weiter / eine Karte zurück) Module unabhängig Testen Bei komplexeren Programmen testet man zunächst die einzelnen Bausteine unabhängig voneinander, bevor man das Zusammenspiel der Bausteine testet. Gegenseitiges Testen Oft ist es günstig, wenn ein Programm von Personen getestet wird, die selbst das Programm nicht entwickelt haben. Im vorliegenden Fall könnte etwa das Datenmodell-Entwicklerteam die GUI-Implementierung und umgekehrt das GUI-Entwicklerteam die Datenmodell-Implementierung testen.

Testen Test der GUI Test des Datenmodells ... ... # Erzeugung der Verwaltungsobjekte kartenstapel = Kartenstapel() kartenmanager = Kartenmanager() kartenmanager.setKartenstapel(kartenstapel) printKartenstapel(kartenmanager) # Karten hinzufügen kartenmanager.karteHinzufuegen('dog', 'Hund') kartenmanager.karteHinzufuegen('cat', 'Katze') kartenmanager.karteHinzufuegen('mouse', 'Maus') kartenmanager.karteHinzufuegen('cow', 'Kuh') # Kartenstapel durchlaufen kartenmanager.anfangKartenstapel() printAktuelleKarte(kartenmanager) ... def ButtonLoeschenClick(): pass """if zustand.get() == 1: kartenmanager.aktuelleKarteLoeschen() anzeigeKarte(zustand.get())""" Test der GUI Test des Datenmodells

Testen Dokumentation der Testergebnisse /1/ Erzeugung des Kartenstapel- und Kartenmanager-Objekts  /2/ Hinzufügen von Karten-Objekten  /3/ Löschen von Karten-Objekten (am Anfang / am Ende / in der Mitte des Kartenstapels)  /4/ Navigation im Kartenstapel (an den Anfang / an das Ende / eine Karte weiter / eine Karte zurück) 

Erweiterungen Ziel ist es jetzt, das System so zu erweitern, dass auch die restlichen Anforderungen /2/, /3/, /7/, /8/ und ggf. /9/ erfüllt werden. Es bietet sich an, diese Erweiterungen arbeitsteilig zu realisieren. Erweiterung: Speichern und Laden In einem zweiten Iterationsschritt sollen das Problem der Speicherung von Daten bearbeitet werden. /2/ Der Benutzer kann eine bestehende Lernkartei laden. /3/ Der Benutzer kann eine Lernkartei abspeichern. Erweiterung: Abfragemodus In einem dritten Iterationsschritt soll schließlich das Abfragen realisiert werden. /7/ Der Benutzer kann in ein Art Abfragemodus wechseln und entscheiden, ob die Erläuterung oder das Stichwort abgefragt werden. /8/ Der Benutzer kann sich im Abfragemodus nur die Rück- bzw. Vorderseite einer Karte anzeigen lassen und dann selbst die andere Kartenseite aufdecken. /9/ (optional) Der Benutzer kann die Karten eines Kartenstapels umsortieren.

Erweiterungen Ziel ist es jetzt, das System so zu erweitern, dass auch die restlichen Anforderungen /2/, /3/, /7/, /8/ und ggf. /9/ erfüllt werden. Es bietet sich an, diese Erweiterungen arbeitsteilig zu realisieren. Erweiterung: Speichern und Laden In einem zweiten Iterationsschritt sollen das Problem der Speicherung von Daten bearbeitet werden. /2/ Der Benutzer kann eine bestehende Lernkartei laden. /3/ Der Benutzer kann eine Lernkartei abspeichern. Erweiterung: Abfragemodus In einem dritten Iterationsschritt soll schließlich das Abfragen realisiert werden. /7/ Der Benutzer kann in ein Art Abfragemodus wechseln und entscheiden, ob die Erläuterung oder das Stichwort abgefragt werden. /8/ Der Benutzer kann sich im Abfragemodus nur die Rück- bzw. Vorderseite einer Karte anzeigen lassen und dann selbst die andere Kartenseite aufdecken. /9/ (optional) Der Benutzer kann die Karten eines Kartenstapels umsortieren.

Hinweise zum Speicherformat Es gibt eine Vielzahl an Möglichkeiten, Datenformate zur Speicherung der Informationen, die die Karteikarten enthalten, zu entwerfen. Wir werden hier das folgende XML-basierte Datenformat benutzen. <?xml version="1.0" encoding="iso-8859-1"?> <kartenstapel> <karte> <stichwort> dog </stichwort> <erläuterung> Hund </erläuterung> </karte> <karte> <stichwort> cat </stichwort> <erläuterung> Katze </erläuterung> </karte>' ... </kartenstapel>

Hinweise zum Abfragemodus Mit Hilfe einer Zustandstabelle wird das gewünschte Verhalten der grafischen Benutzeroberfläche beschrieben.

Software-Entwicklung als Prozess Teil 2 Software-Entwicklung als Prozess

Anforderungsanalyse Software-Entwicklung ist ein Vorgang, bei dem in der Regel ein Auftraggeber einen Software-Entwickler beauftragt, ein Produkt mit bestimmten Eigenschaften zu entwickeln. In der Phase der Anforderungsanalyse legen die Software-Entwickler gemeinsam mit ihrem Auftraggeber möglichst präzise die Anforderungen an die zu entwickelnde Software fest. Hierzu wird oft eine Art Prototyp des Systems erstellt und ein Lastenheft formuliert. Ein Prototyp dient dazu, bestimmte Aspekte eines zu entwickelnden Softwaresystems vor der Realisierung zu überprüfen. Häufig wird ein Prototyp der Benutzungsoberfläche erstellt. Anhand dieses Prototyps können die Entwickler mit den Auftraggebern diskutieren, inwieweit deren Wünsche beachtet und umgesetzt wurden. Ein Lastenheft beschreibt möglichst präzise die Anforderungen an ein zu entwickelndes Softwaresystem aus der Sicht der Auftraggeber. /1/ Der Benutzer kann eine neue Lernkartei erstellen. /2/ Der Benutzer kann eine bestehende Lernkartei laden. ...

Modellierung Ein Softwaresystem muss genau geplant werden, bevor es in einer Programmiersprache realisiert werden kann. In einer Modellierungsphase werden zu diesem Zweck Modelle des Systems aus unterschiedlichen Blickrichtungen erstellt. In einem ersten Schritt versucht man, die zu Grunde liegende Miniwelt möglichst strukturgetreu in einem Modell abzubilden. In einem zweiten Schritt wird dieses Modell mit Blick auf das zu erstellende System verfeinert. Miniwelt Modell Softwaresystem - Abbild der Miniwelt - Vorlage für das System

Implementierung In der Implementierungssphase werden die entwickelten Modelle in einer Programmiersprache umgesetzt. # Klassen zur Modellierung einer Lernkarte # Autor: ... # Datum: ... # Deklaration der Klasse Karte class Karte(object): def __init__(self, stichwort, erlaeuterung): self.stichwort = stichwort self.erlaeuterung = erlaeuterung ...

Testen In der Testphase wird schließlich überprüft, ob das entwickelte System die im Vorfeld formulierten Anforderungen erfüllt. In der Regel reicht es nicht, ein System nur einmal zu testen. Vielmehr muss das Verhalten des Systems systematisch untersucht werden. Es hat sich bewährt, im Vorfeld Testfälle festzulegen, die dann schrittweise abgeprüft werden. ... # Erzeugung der Verwaltungsobjekte kartenstapel = Kartenstapel() kartenmanager = Kartenmanager() kartenmanager.setKartenstapel(kartenstapel) printKartenstapel(kartenmanager) # Karten hinzufügen kartenmanager.karteHinzufuegen('dog', 'Hund') kartenmanager.karteHinzufuegen('cat', 'Katze') kartenmanager.karteHinzufuegen('mouse', 'Maus') kartenmanager.karteHinzufuegen('cow', 'Kuh') # Kartenstapel durchlaufen kartenmanager.anfangKartenstapel() printAktuelleKarte(kartenmanager) /1/ Der Benutzer kann eine neue Karte erstellen und dem Kartenstapel hinzufügen. (ok) ...

Dokumentation Dokumentation erfolgt mit dem Ziel, Information über Maßnahmen, Entscheidungen, Ergebnisse eines Software-Entwicklungsprozesses bereitzustellen. Diese Information ist für die Software-Entwickler von entscheidender Bedeutung. Je komplexer das zu entwickelnde System ist und je mehr Personen daran beteiligt sind, desto schwieriger wird es, alle Details des Software-Entwicklungsprozesses zu überblicken. Dokumentation hilft hier, wichtige Informationen für alle Beteiligten zum Nachschauen bereitzustellen. Dokumentation sollte stets parallel zum Entwicklungsprozess erfolgen. Während der einzelnen Entwicklungsphasen sollten alle wichtigen konzeptionellen Entscheidungen festgehalten werden: In der Anforderungsanalysephase wird ein Lastenheft erstellt und evtl. ein Prototyp bereitgestellt. In der Modellierungsphase werden die entwickelten Modelle möglichst genau beschrieben. Die Implementierungsphase liefert ein kommentiertes Programm. In der Testphase werden sämtliche untersuchten Testfälle angegeben.

Vorgehensmodelle Sequentielles Vorgehen: Die Schritte zur Entwicklung der Software werden streng sequentiell – einer nach dem anderen – durchlaufen. Dieses Vorgehensmodell wird auch Wasserfallmodell genannt. In der Praxis ist dieses Vorgehen kaum einsetzbar, da in späteren Phasen oft Erkenntnisse gewonnen werden, die eine Überarbeitung früher gewonnener Ergebnisse erforderlich machen.

Vorgehensmodelle Iteratives Vorgehen: Während des Entwicklungsprozesses wird eine Folge von Produktversionen erstellt. Zunächst werden nur die Kernfunktionalitäten des Systems realisiert. Anschließend werden weitere Funktionen sukzessive ergänzt. Diese Vorgehensweise wird evolutionär genannt. Die Entwicklung der einzelnen Produktversionen wird jeweils in weitere Phasen aufgeteilt.

Teil 3 Software als Produkt

Kosten für Software Software ist ein Produkt, das bei der Herstellung hohe Kosten verursachen kann und daher in der Regel auch Geld kostet. Aufgabe: Das Unternehmen Microsoft beschäftigt etwa 10000 gutverdienende Informatiker zur Weiterentwicklung ihrer Windows-Software. Schätze ab, welche Kosten diesem Unternehmen allein hierdurch jährlich entstehen. Aufgabe: Einer Schätzung zu Folge war in Deutschland im Jahr 2004 unlizensierte Software im Wert von 1,84 Milliarden Euro im Einsatz. Warum wird wohl Software vielfach so unrechtmäßig genutzt? Welche Folgen hätte es wohl, wenn Software - wie andere Produkte auch - nur noch rechtmäßig genutzt würde? Stelle hierzu Vermutungen auf.

Softwarelizenzen Software ist ein Produkt, dessen Nutzung durch Nutzungsrechte (Lizenzen) geregelt wird. Bei kommerzielle Lizenzen muss für die Nutzung von Software ein bestimmter Geldbetrag erstattet werden. Software-Firmen, die ihre Software-Produkte auf diese Weise vertreiben, bestreiten mit den erworbenen Lizenzbeträgen ihre Kosten. Wenn man bedenkt, dass die Herstellung von Software sehr viel Arbeit erfordert, so wird klar, dass die Kosten für ein Software-Produkt sehr hoch sein können. Eine kommerzielle Lizenz kann nur dann günstig ausfallen, wenn sehr viele Nutzer tatsächlich eine solche Lizenz erwerben und nicht - wie es nach wie vor gängige Praxis ist - die Software illegal nutzen. Freeware wird Nutzern kostenlos zur Verfügung gestellt. Eine besondere Form von Freeware ist die sogenannte freie Software. Sie räumt den Nutzern zusätzlich das Recht ein, die Software weiterzuverarbeiten. Die Nutzung freier Software wird oft durch die GNU General Public License geregelt. Diese Lizenz verlangt, dass Nutzer der Software veränderte Produkte ebenfalls als freie Software zur Verfügung stellen und den Quelltext der Software offenlegen.

Fehler in der Software Beispiel: Hartz IV Winter 2004: Hunderttausende Hartz IV Empfänger erhalten kein Geld. Die Ursache fand man in der Software A2LL: Kurze Kontonummern füllte A2LL hinten (anstatt vorne) mit Nullen auf, um auf die üblichen zehn Stellen zu kommen. Hierdurch wurden sie falsch, die Geldbeträge konnten nicht zugestellt werden.´ Beispiel: Ariane 5 4. Juni 1996: Die Rakete Ariane 5 muss kurz nach dem Start gesprengt werden. Ein Fehler in der Software führte dazu, dass es beim Umrechnen eines 64-Bit-Gleitkomma-Wertes zu einem Überlauf kam und Daten daraufhin falsch interpretiert wurden. Beispiel: Therac 25 1985-1987: Das Bestrahlungsgerät Therac-25 tötet mehrere Patienten durch eine überhöhte Strahlendosis. Als Ursache stellte sich heraus, dass die Software nur dann mehrere Tasks fehlerfrei gleichzeitig bearbeiten konnte, wenn der Benutzer die Befehle langsam eingab. Aufgabe: Wie schlimm sind Fehler in der Software? Beurteile dies - auch unter Berücksichtigung der oben beschriebenen Beispiele.

Fehler in der Software Softwarefehler sind nichts außergewöhnliches bei komplexeren Softwaresystemen. Gute Software enthält heutzutage nur noch etwa einen Fehler in 4000 Programmzeilen. Bei einem Office-Paket mit etwa 10 Millionen Programmzeilen muss man also mit etwa 2500 Fehlern rechnen. Das merkt man von Zeit zu Zeit auch, wenn das Programm nicht genau das macht, was es machen soll. Warum ist es so schwer, fehlerfreie Software-Produkte zu entwickeln? Hierfür gibt es sicher eine Reihe von Gründen. Ein Grund ist sicher die Komplexität der Aufgabe bei größeren Software-Entwicklungsprojekten. Software-Produkte sind oft so komplex, dass kein Entwickler die Abhängigkeiten der verschiedenen Bausteine mehr ganz überschauen kann. Das führt dann dazu, dass es zu Systemzuständen kommen kann, die keiner der Entwickler bedacht hatte. Ein weiterer Grund liegt wohl daran, dass Software von Menschen entwickelt wird, die manchmal auch Fehler machen. Mit Hilfe von Tests sollen solche Fehler natürlich entdeckt werden. Tests bieten in der Regel jedoch keine hundertprozentige Gewähr, dass Programmteile fehlerfrei sind. Die Bedingungen, unter denen Software erstellt wird, sind wohl auch manchmal für Fehler verantwortlich. Software-Produkten müssen meist termingerecht erstellt werden. Es kommt zu Zeitnot, wenn der Zeitansatz für die Entwicklung zu knapp bemessen war oder - was recht häufig vorkommt - wenn sich während der Entwicklung neue Anforderungen an das Produkt ergeben.

Gütekriterien für Software Was ist gute Software? Mit Hilfe von Gütekriterien versucht man, die Qualität von Software zu beschreiben. Folgende Kriterien werden üblicherweise zur Beschreibung von Softwarequalität herangezogen: Funktionalität: Erfüllt die Software die geforderten Funktionen? Zuverlässigkeit: Ist die Software fehlerfrei und toleriert sie Fehleingaben? Benutzbarkeit: Ist die Software leicht bedienbar? Effizienz: Ist der Zeit- und Speicherbedarf angemessen? Änderbarkeit: Kann die Software mit geringem Aufwand korrigiert oder erweitert werden? Übertragbarkeit: Vermeidet die Software programmiersprachenspezifische Elemente?

Verantwortung für Software(fehler) P. ist an der Entwicklung einer Software beteiligt, die im miltärischen Bereich eingesetzt werden soll. Die Firma, die die Software entwickelt, ist im Rückstand, der vereinbarte Abgabetermin für die Software ist kaum noch zu halten. Die Firmeninhaber drängen zur Eile. P. ist jedoch der Ansicht, dass die Software nicht hinreichend getestet ist und dass einige konzeptionelle Entscheidungen noch einmal überdacht werden sollten. Aufgabe: Welche Folgen könnte es für die Firma haben, wenn das zu entwickelnde Produkt nicht rechtzeitig fertig wird? Welche Folgen könnte es für P. haben, wenn er/sie die Firmenleitung / die Öffentlichkeit informiert, dass das entwickelte Produkt möglicherweise grundlegende Schwächen hat? Wie würdest du an P.s Stelle handeln?

Verantwortung für Software Verantwortung übernimmt man ... ... für etwas (Handlungsfolgen, Handlungen, Personen, Güter etc.), ... in einer Eigenschaft / Funktion (als bestimmtes Handlungsobjekt), ... vor jemandem (Instanz: Personen, Natur, Gott, Gesellschaft, Staat), ... unter bestimmten Kriterien (Werten, Prinzipien, Maßstäben), ... im Blick auf (Schaden / Nutzen, Pflichterfüllung, Haftung etc.). Quelle: M. Peschek: Ethik und Informatik. In: J. Friedrich u. a.: Informatik und Gesellschaft. Heidelberg 1995. Verantwortung übernimmt man also für Software-Produkte in der Eigenschaft als Software-Entwickler vor z.B. der Gesellschaft unter Berücksichtigung z.B. ethischer Richtlinien im Hinblick auf die Möglichkeit, dass sie größeren Schaden anrichten können. Ethische Richtlinien geben Orientierung bei Handlungsentscheidungen, die Fragen der Verantwortlichkeit berühren. Aufgabe: Informiere dich über ethische Leitlinien der Gesellschaft für Informatik. Welche Empfehlung würden diese Richtlinien P. geben?