Dies ist eine Tatsache aber keine Ausrede, und dies schützt Sie auch in keiner Weise und nimmt Ihnen nicht die Verantwortung für Ihr Produkt ab!

Ähnliche Dokumente
Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

Info zum Zusammenhang von Auflösung und Genauigkeit

Primzahlen und RSA-Verschlüsselung

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Professionelle Seminare im Bereich MS-Office

Installation OMNIKEY 3121 USB

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

Das Leitbild vom Verein WIR

teischl.com Software Design & Services e.u. office@teischl.com

Summenbildung in Bauteiltabellen mit If Then Abfrage

Erstellen von x-y-diagrammen in OpenOffice.calc

Die Post hat eine Umfrage gemacht

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen

Kulturelle Evolution 12

Erster Bug: eine Motte

GS-Buchhalter/GS-Office 2015 Saldovorträge in folgenden Wirtschaftsjahren erfassen

Lassen Sie sich dieses sensationelle Projekt Schritt für Schritt erklären:

Professionelle Seminare im Bereich MS-Office

Zeichen bei Zahlen entschlüsseln

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Zimmertypen. Zimmertypen anlegen

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Die integrierte Zeiterfassung. Das innovative Softwarekonzept

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Microsoft Update Windows Update

Leitfaden zur Durchführung eines Jahreswechsels in BüroWARE 5.x

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

Einführung in PHP. (mit Aufgaben)

Erweiterung AE WWS Lite Win: AES Security Verschlüsselung

Alltag mit dem Android Smartphone

AutoCAD Dienstprogramm zur Lizenzübertragung

Folgeanleitung für Klassenlehrer

Kostenstellen verwalten. Tipps & Tricks

Was meinen die Leute eigentlich mit: Grexit?

Um sich zu registrieren, öffnen Sie die Internetseite und wählen Sie dort rechts oben

Alle gehören dazu. Vorwort

Agile Software Development

ALF-BanCo - Chipkarte einrichten in 3 Schritten

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

Lizenzen auschecken. Was ist zu tun?

PowerPoint vertonen. by H.Schönbauer 1

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar ZID Dezentrale Systeme

Studieren- Erklärungen und Tipps

Zur drittletzten Zeile scrollen

Europäischer Fonds für Regionale Entwicklung: EFRE im Bundes-Land Brandenburg vom Jahr 2014 bis für das Jahr 2020 in Leichter Sprache

Datenexport aus JS - Software

Erfahrungen mit Hartz IV- Empfängern

Änderungsbeschreibung HWS32 SEPA Überweisungen

Bedienungsanleitung Albumdesigner. Neues Projekt: Bestehendes Projekt öffnen:

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

4.1 Download der App über den Play Store

Zwischenablage (Bilder, Texte,...)

Reporting Services und SharePoint 2010 Teil 1

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Folgeanleitung für Fachlehrer

How to do? Projekte - Zeiterfassung

Speicher in der Cloud

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

SEPA-Anleitung zum Release 3.09

ZfP-Sonderpreis der DGZfP beim Regionalwettbewerb Jugend forscht BREMERHAVEN. Der Zauberwürfel-Roboter. Paul Giese. Schule: Wilhelm-Raabe-Schule

Excel Funktionen durch eigene Funktionen erweitern.

YouTube: Video-Untertitel übersetzen

- Google als Suchmaschine richtig nutzen -

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Erklärung zu den Internet-Seiten von

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

200,- Euro am Tag gewinnen Konsequenz Silber Methode Warum machen die Casinos nichts dagegen? Ist es überhaupt legal?

1 Konto für HBCI/FinTS mit Chipkarte einrichten

Lehrer: Einschreibemethoden

a) Bis zu welchem Datum müssen sie spätestens ihre jetzigen Wohnungen gekündigt haben, wenn sie selber keine Nachmieter suchen wollen?

malistor Phone ist für Kunden mit gültigem Servicevertrag kostenlos.

Leitfaden zur Durchführung eines Jahreswechsels in BüroWARE 5.x

Barcodedatei importieren

Wie Sie mit Mastern arbeiten

Viele Bilder auf der FA-Homepage

SF-RB. Modul Provisionsabrechnung & Planung Reiseagentenprovisionsabrechnung & Planung. SF-Software Touristiksoftware

Den Durchblick haben. VOLKSBANK BAD MÜNDER eg. Online aber sicher: Unsere Produkt- und Sicherheitshotline hilft und informiert

ABSENDUNGEN der BICS-REISEANMELDUNG CHECKEN

HTBVIEWER INBETRIEBNAHME

Testplan. Hochschule Luzern Technik & Architektur. Software Komponenten FS13. Gruppe 03 Horw,

Anwendungsbeispiele Buchhaltung

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Outlook Erstellen einer aus einer HTML - Vorlage INHALT

Dieses erste Kreisdiagramm, bezieht sich auf das gesamte Testergebnis der kompletten 182 getesteten Personen. Ergebnis

SANDBOXIE konfigurieren

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Dieser PDF-Report kann und darf unverändert weitergegeben werden.

Outlook und Outlook Express

Die Online-Meetings bei den Anonymen Alkoholikern. zum Thema. Online - Meetings. Eine neue Form der Selbsthilfe?

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Eine eigene Seite auf Facebook-Fanseiten einbinden und mit einem Tab verbinden.

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Memeo Instant Backup Kurzleitfaden. Schritt 1: Richten Sie Ihr kostenloses Memeo-Konto ein

Netzwerk einrichten unter Windows

Transkript:

Fehler Keine Software ist fehlerfrei! Dies ist eine Tatsache aber keine Ausrede, und dies schützt Sie auch in keiner Weise und nimmt Ihnen nicht die Verantwortung für Ihr Produkt ab!

Wo kann die Ursache für ein fehlerhaftes Ablaufen eines Programms liegen? Hardware (z.b. im Prozessor) Betriebssystem Entwicklungsumgebung (Compiler, Linker, Bibliotheken) Quelltext Schwerpunktmäßig werden wir uns nun mit Programmierfehlern, also Fehlern im Quelltext, beschäftigen. Um Sie, die Programmierer, vor einer fatalistischen Einstellung zu bewahren ( Fehler gibt s überall, das ist nun mal so, da kann man nichts machen ) und ein sorgfältiges Arbeiten zu motivieren, wollen wir uns zunächst einige der bekanntesten Softwarefehler mit fatalen Folgen ansehen:

1982 Im Falklandkrieg 1982 wurde der britische Zerstörer Sheffield mit Exocet-Raketen versenkt, wobei 20 Menschen ertranken. Das Abwehrsystem funktionierte nicht, da nicht vorgesehen war, dass Raketen eigenen Typs gegen eigene Schiffe anfliegen. 1983 Im Jahre 1983 übten Jagdbomber vom Typ F18 mit neuer Bordsoftware. Aufgrund eines Vorzeichenfehlers drehten sie sich nach dem Überfliegen des Äquators auf den Kopf. 1999 Der Mars Climate Orbiter zerschellte 1999 auf dem Mars, statt in eine Umlaufbahn einzutreten. Grund war eine fehlerhafte Programmierung verschiedener Entwicklungsteams an verschiedenen Orten innerhalb der USA. Man vermischte Maßeinheiten (Meter Yard; kg Pfund etc.). Dadurch wurde ein Winkel beim Anflug zum Mars falsch berechnet. Problem war die mangelhafte Kommunikation zwischen den Entwicklungsteams und die unvollständige Spezifikation der Software. [Quelle: http://www.iwi.uni-hannover.de/cms/images/stories/upload/lv/wisem0809/sqm/swg.pdf] Kalter Kaffee? Von wegen

1. Strafe und Rückzahlungen kosten Finanzkonzern 240 Millionen Dollar 25 Millionen Dollar Strafe verhängte die US-Finanzaufsichtsbehörde Securities and Exchange Commission (SEC) einem internationalen Finanzdienstleister. Dieser hatte zuvor einen Fehler in einer Softwareanwendung eines Investmentfonds vertuscht. Gleichzeitig musste das Unternehmen den geprellten Anlegern den entstandenen Schaden zurückerstatten: 217 Millionen Dollar (über 160 Millionen Euro). 2. Hunderttausende Gehaltszahlungen verzögert Landesweit fielen in Japan durch einen Softwarefehler bei einer der größten Banken rund 5.600 Geldautomaten für 24 Stunden aus. Um die Systemwiederherstellung zu beschleunigen, mussten alle 38.000 Geldautomaten vom Netz genommen werden. Mehrere Tage lang war kein Online-Banking möglich. Erst nach einer zehntägigen Verzögerung konnte die Bank alle Lohnüberweisungen mit einem Gesamtvolumen von 1,5 Milliarden Dollar (über eine Milliarde Euro) bearbeiten. 3. Bankautomaten verschenken Geld an Kunden Im australischen Sydney, Melbourne und Brisbane konnten Kunden über fünfeinhalb Stunden uneingeschränkt Geld an 40 defekten Geldautomaten abheben. Möglich machte den überraschenden Geldsegen eine Störung in der Datenbanksoftware, die die Automaten in den Stand-by-Modus versetzte: Die Geräte erkannten weder die Grenze des Tageslimits, noch wussten sie, ob das Konto genügend gedeckt war. [Quelle: http://www.channelpartner.de/smb/2576871/] 2011!

Aber auch bei vergleichsweise harmlosen Programmen können Fehler weitreichende Konsequenzen haben! Ein Beispiel: Sie erstellen Software zur Berechnung der Volumina von Deponien. Ein Fuhrunternehmen kauft Ihr Programm, berechnet damit das Volumen einer Bauschuttdeponie, kalkuliert so den Aufwand für Abtragung / Abfuhr / Entsorgung, bewirbt sich damit auf eine Ausschreibung und gewinnt den Auftrag. Nun stellt sich heraus, dass berechnete Volumen nur etwa halb so groß ist wie das tatsächliche. Das Fuhrunternehmen muss aber den Auftrag erfüllen und geht dabei in Konkurs. Wer haftet für den Schaden? Das oberste Gebot bei der Softwareentwicklung: Arbeiten Sie planvoll und sorgfältig!

C++ Softwareentwickler/-in - Sorgfältiges Design statt "Quick & Dirty" - Teamarbeit statt Einzelkämpfertum - Dauerhafte Produktentwicklung statt eilige Projektarbeit Wir glauben, dass gute Software auf diesem Weg entwickelt wird. ( ) ist ein junges, innovatives High-Tech Unternehmen mit ca. 120 Mitarbeitern. Wir entwickeln optische 3D-Messsysteme und messtechnische Software für industrielle Anwendungen. Neben den großen internationalen Automobil-, Flugzeug- und Konsumgüterherstellern sind auch viele klein- und mittelständische Firmen unsere Kunden. Für die Aufstockung unserer ca. 25-köpfigen Softwareabteilung suchen wir (Aus einer Stellenanzeige, Frühjahr 2009)

Typische Fehlerkurve von Programmierern Häufigkeit von Fehlern 1 2 3 4 Zeit 1: Anfänger, unsicher, viele Fehler 2: Zunehmende Sicherheit, weniger Fehler 3: Zunehmende Schlampigkeit, mehr Fehler 4: Reifestadium

Einige Arten von / Beispiele für Programmierfehler: Falscher bzw. ungeeigneter Algorithmus Ungeeigneter Variablentyp (z.b. integer statt real) Unzulässige Eingaben nicht abgefangen (z.b. negative Zahlen bei sqrt) Ausnahmen nicht abgefangen (z.b. Null im Nenner) Fehlerhafte Schnittstellen zu Unterprogrammen Fehlende Synchronisation bei Parallelprozessen Speicherüberlauf bei Feldern Tippfehler im Quelltext (z.b. falsches Vorzeichen, falscher Exponent) Das Tückische an diesen Fehlern: Sie können nicht vom Compiler erkannt werden und wirken sich u.u. auch nur sehr selten aus. Aber es gibt sie! Eine alte Faustregel besagt, dass bei komplexeren Programmen je 1000 Zeilen Quelltext ein bis drei Fehler versteckt sind. Weitere Fehler: Das Programm ist viel zu langsam, die Bedienung ist nicht oder kaum intuitiv möglich, Online-Hilfe fehlt oder ist unvollständig,

Wie kann man Fehler möglichst vermeiden? Vor allem bei komplexeren Programmen wirken sich selbst kleinere Änderungen oft an allen möglichen Stellen aus. Deshalb gilt folgender Grundsatz: Mal eben (irgend etwas ändern, erweitern usw.) ist tödlich! Beispiel: Da wird mal eben in einem Unterprogramm eine Erweiterung vorgenommen, die zu einem zusätzlichen Parameter in der Schnittstelle führt. Da aber dieses Unterprogramm an allen möglichen Stellen, insgesamt etwa 20 mal, aufgerufen wird, vergisst man garantiert irgendwo, die Schnittstelle anzupassen! Gegenmittel u.a.: Eine exakte Dokumentation aller Programmteile.

Selbst bei sorgfältiger Programmierung kann es Fälle geben, wo das Programm nicht korrekt arbeiten kann, insbesondere bei fehlerhaften Eingabedaten. Wichtig: Das Programm darf niemals abstürzen oder sich aufhängen! Treten Fehler auf, muss eine sinnvolle (für den Nutzer verständliche) Fehlermeldung ausgegeben werden, z.b. Fehler beim Lesen der Eingabedatei bitte Format kontrollieren. [Quelle: http://www.gregor-jonas.de/witze/bugs.htm]

Ein Kunde meldet einen Fehler Geben Sie dem Kunden das Gefühl, dass Sie ihn und das Problem ernst nehmen! Sorgen Sie umgehend für eine Lösung. Auch dem Kunden ist bekannt, dass kein Programm fehlerfrei ist. Wenn er aber weiß, dass Sie sich umgehend um eine Lösung kümmern, wird er ein zufriedener Kunde bleiben! Ein unverzichtbares Mittel, um die Anzahl von Fehlern zu minimieren bzw. Fehler aufzuspüren, sind Tests. Und im Notfall: [Quelle wie vorige Seite] (vermutlich gemeint: Die Festplatte sollte mal defragmentiert werden )

Softwaretests Vorbemerkungen Tests können Fehler finden, aber nicht die Fehlerlosigkeit eines Programms beweisen! Ein fehlerfrei durchlaufener Test bedeutet nicht, dass das Programm fehlerfrei ist! Soweit möglich, sollten Tests nicht vom Programmentwickler selbst, sondern von einer unabhängigen Person durchgeführt werden (Stichwort Betriebsblindheit). Hierzu müssen wir jedoch einen Blick auf die einzelnen Teststufen werfen. Tests kosten ebenso Zeit und Geld wie die Programmentwicklung. Es ist daher ein sinnvolles / ausgewogenes Verhältnis von Aufwand und Ertrag anzustreben.

Fehlerkosten versus Testkosten [Quelle: Skript der TU Wien, link s.u.]

Teststufen Komponententest (Modultest, Unit-Test) wird auf der untersten Ebene durchgeführt. Gestestet werden die einzelnen Komponenten (Unterprogramme / Module / Units / Methoden), hier meist noch vom Entwickler selbst. Integrationstest testet die Zusammenarbeit von unabhängigen Modulen. In dieser Stufe kommen z.b. die Schnittstellen ins Spiel. Systemtest testet das gesamte Programm, beispielsweise in Bezug auf das Pflichtenheft. Wird wie die vorigen Tests vom Hersteller durchgeführt, z.b. in einer eigenen Testabteilung ( Warenausgangskontrolle ) Abnahmetest durch den Kunden, mit beliebigen realen Daten. Die Software wird hierbei als black box betrachtet.

Beispiel: Tests im V-Modell

Box-Modelle black box (Funktionstest): Erfolgt ohne Kenntnis über den inneren Aufbau bzw. den Quelltext des entsprechenden Moduls. Eingabedaten Modul Ausgabedaten white box (Strukturtest): Wird vom Programmierer durchgeführt unter genauer Kenntnis des Aufbaus bzw. des Quelltextes. grey box: Test werden vom Programmierer entwickelt vor Fertigstellung des zu testenden Moduls testgetriebene Entwicklung. Zum Weiterlesen: http://fbim.fh-regensburg.de/~hab39652/se/kapitel_9_test_01_motivation.pdf http://qse.ifs.tuwien.ac.at/courses/skriptum/download/06_testen_wid_20031017.pdf

Testgetriebene Entwicklung ( test-driven development, TDD) Test Eingabedaten, Parameter Ausgabedaten Modul 1) Entwicklung des Tests 2) Entwicklung des Moduls 3) Austesten des Moduls, bis dieses fehlerfrei läuft 4) Optimieren des Codes ( refactoring ), wiederum testen Eine solche Vorgehensweise ist u.u. interessant auf der Stufe der Komponententests (unit tests) und ein Beispiel für das grey-box-modell: Der Tester kennt zwar den Quelltext, testet aber das Modul wie es ist ausschließlich auf seine Funktionalität.

Beispiel: Berechnung des größten gemeinsamen Teilers von i und j nach dem Verfahren von Euklid. Das Modul ggt wird programmiert und fortan als black box betrachtet. Vorab (!) wurde der folgende Test geschrieben: integer function ggt(i,j) integer*4 i,j,a,b,c,rest a = abs(max(i,j)) b = abs(min(i,j)) if (b == 0) then ggt = -99 return end if do while (rest /= 0) c = a/b rest = a-c*b ggt = b a = b b = rest end do end Division durch Null abfangen

Test für das Modul ggt: program test integer*4 i,j,ggt,ergebnis read(5,*)i,j ergebnis = ggt(i,j) print*,'ggt = ',ergebnis Bemerkung: end Solange ausschließlich ganze Zahlen, beide ungleich Null, eingegeben werden, wird ggt erwartungsgemäß funktionieren! Bei Eingabe einer oder zweier Nullen würde das Programm abstürzen. Dieser Fall ist in ggt bereits abfangen. Ebenfalls sicherstellen: Eingabewerte nur ganze Zahlen. Option: Eingabe der Zahlen nicht von Hand, sondern per Zufallsgenerator (vgl. auch unser Beispiel zur Matrix-Invertierung).