Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Software-Entwicklung Klaus Becker 2009. 2 Software-Entwicklung.

Ähnliche Präsentationen


Präsentation zum Thema: "Software-Entwicklung Klaus Becker 2009. 2 Software-Entwicklung."—  Präsentation transkript:

1 Software-Entwicklung Klaus Becker 2009

2 2 Software-Entwicklung

3 3 Teil 1 Miniprojekt Lernkartei

4 4 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.

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

6 6 Projekt - Anforderungsanalyse Gruppe A: AuftraggeberGruppe 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.

7 7 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.

8 8 Prototyp einer Benutzeroberfläche

9 9 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.

10 10 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?

11 11 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.

12 12 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.

13 13 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. MiniweltModell Softwaresystem - Abbild der Miniwelt - Vorlage für das System

14 14 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...)." Überlege dir, welche Objekte zur Darstellung der Miniwelt geeignet wären. Beschreibe auch die Zuständigkeiten der vorgesehenen Objekte. Miniwelt

15 15 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

16 16 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.

17 17 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)

18 18 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.

19 19 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.

20 20 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.

21 21 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.

22 22 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.

23 23 Testen... # 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') printKartenstapel(kartenmanager) # Kartenstapel durchlaufen kartenmanager.anfangKartenstapel() printAktuelleKarte(kartenmanager)... def ButtonLoeschenClick(): pass """if zustand.get() == 1: kartenmanager.aktuelleKarteLoeschen() anzeigeKarte(zustand.get())"""... Test des Datenmodells Test der GUI

24 24 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)

25 25 Erweiterungen 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. 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.

26 26 Erweiterungen 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. 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.

27 27 Hinweise zum Speicherformat dog Hund cat Katze '... 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.

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

29 29 Teil 2 Software-Entwicklung als Prozess

30 30 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....

31 31 Modellierung MiniweltModell Softwaresystem - Abbild der Miniwelt - Vorlage für das System 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.

32 32 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...

33 33 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') printKartenstapel(kartenmanager) # Kartenstapel durchlaufen kartenmanager.anfangKartenstapel() printAktuelleKarte(kartenmanager)... /1/ Der Benutzer kann eine neue Karte erstellen und dem Kartenstapel hinzufügen. (ok)...

34 34 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.

35 35 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.

36 36 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.

37 37 Teil 3 Software als Produkt

38 38 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 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.

39 39 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.

40 40 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 : 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.

41 41 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.

42 42 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?

43 43 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?

44 44 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 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?


Herunterladen ppt "Software-Entwicklung Klaus Becker 2009. 2 Software-Entwicklung."

Ähnliche Präsentationen


Google-Anzeigen