Prof. Dr. B. Rumpe Software Systems Engineering TU Braunschweig. Seite 4. vl15.fse/02/01



Ähnliche Dokumente
3. Qualitätsmanagement 3.1. Prozessqualität

7. Qualitätssicherung

Einführung in die Softwaretechnik

Qualitätssicherung. Was ist Qualität?

Softwaretechnikpraktikum SS Qualitätsmanagement I. 1. Überblick. Qualität. Qualitätsmerkmal

Softwareentwicklungsprozess im Praktikum. 23. April 2015

Objektorientierte Programmierung

Was beinhaltet ein Qualitätsmanagementsystem (QM- System)?

,$ -. "+0 *+*+ ! / -#$%$. #$%'' $ () 1 2$ #$%$! 1 2$3 )!

Empirische Softwaretechnik Kosten und Nutzen von UML in der Wartung Dr. Victor Pankratius Andreas Höfer Wintersemester 2009/2010

Testen Prinzipien und Methoden

Hauptseminar Automotive Software Engineering Testen, Rapid Prototyping und x in the loop

Automatisches Parallelisieren

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

Information zur Revision der ISO Sehr geehrte Damen und Herren,

SEP 114. Design by Contract

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

SPI-Seminar : Interview mit einem Softwaremanager

Qualitätsmanagement. Software Engineering 1 WS 2010/2011. Dr. Ina Schaefer Software Systems Engineering Technische Universität Braunschweig

Tagesprogramm

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Kapitel 10: Dokumentation

Software Systems Engineering

Technical Note Nr. 101

PRÜFMODUL D UND CD. 1 Zweck. 2 Durchführung. 2.1 Allgemeines. 2.2 Antrag

Beispielfragen L4(3) Systemauditor nach AS/EN9100 (1st,2nd party)

Bei der Tagung werden die Aspekte der DLRL aus verschiedenen Perspektiven dargestellt. Ich habe mich für die Betrachtung der Chancen entschieden,

Zwischenablage (Bilder, Texte,...)

Algorithmen und Datenstrukturen

Klausur zu den Teilgebieten Software-Management und Software-Qualitätsmanagement

Softwareentwicklungspraktikum Sommersemester Grobentwurf

Erstellung von Reports mit Anwender-Dokumentation und System-Dokumentation in der ArtemiS SUITE (ab Version 5.0)

Einführung in die Programmierung

Design by Contract with JML

1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten.

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Qualitätsmanagement: Dokumentieren. Kontrollieren. Verfolgen.

Praktische Beispiele für die positiven Auswirkungen des QM in AWO-Wohn- und Pflegeheimen

Dokumentenverwaltung im Internet

Grundlagen der Theoretischen Informatik, SoSe 2008

Test-Driven Design: Ein einfaches Beispiel

Güte von Tests. die Wahrscheinlichkeit für den Fehler 2. Art bei der Testentscheidung, nämlich. falsch ist. Darauf haben wir bereits im Kapitel über

Java-Programmierung mit NetBeans

Qualitätsmanagement nach ISO/TS 16949

17 Architekturentwurf Vorgehen und Dokumentation

Einführung in das Software-Qualitätsmanagement

Jetzt neu: Online Reporting Schritt für Schritt durch das Online Reporting (OLR) Online Liedmeldung

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Qualität von Software - Prof. Schlingloff, Lackner - SS2013 DYNAMISCHER TEST. Whitebox Testen mit JUnit

26. November Dipl.- Inf. Holger Röder stuhgart.de

Standard XPersonenstand - Version Verbindliche Handlungsanweisungen

Softwaretechnik (Allgemeine Informatik) Überblick

s.beat DAP-10X White Paper USB Stromversorgung am Apple Macintosh und deren Auswirkung

Enigmail Konfiguration

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

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Whitebox-Tests: Allgemeines

Sechster ProSTEP Benchmark Teil 2: PDM Data Exchange

In diesem Bereich wird beschrieben, wie Sie eine Datensicherung der Software Jack Plus durchführen können.

In diesem Bereich wird beschrieben, wie Sie eine Datensicherung der Software Jack Plus durchführen können.

Algorithmische Mathematik

PRÜFUNG FÜR ELEKTROINGENIEURE. Softwaretechnik I. Musterlösung SS Ohne Gewähr -

Abwesenheitsnotiz im Exchange Server 2010

Speicher in der Cloud

Vgl. Kapitel 5 aus Systematisches Requirements Engineering, Christoph Ebert

Softwareentwicklung aus Sicht des Gehirns

Die wichtigsten Werkzeuge, um UNTERNEHMENSKULTUR BEWUSST zu gestalten.

Software- und Druckerzuweisung Selbstlernmaterialien

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Selbsttest Prozessmanagement

Betriebliche Gestaltungsfelder

Arbeiten mit UMLed und Delphi

Übungsklausur vom 7. Dez. 2007

EFQM. European Foundation of Quality Management

Windows 10 - Probleme

Erwin Grüner


MIT NEUEN FACHTHEMEN

How to do? Projekte - Zeiterfassung

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

Installation OMNIKEY 3121 USB

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Bedienungsanleitung für Mitglieder von Oberstdorf Aktiv e.v. zur Verwaltung Ihres Benutzeraccounts auf

BEISPIELKLAUSUR Softwareentwicklung:

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

1 Mathematische Grundlagen

Erweiterung AE WWS Lite Win: AES Security Verschlüsselung

Excel Arbeitszeiterfassung

3D-Konstruktion Brückenpfeiler für WinTrack (H0)

Informationssystemanalyse Lebenszyklusmodelle 3 1. Lebenszyklusmodelle sollen hauptsächlich drei Aufgaben erfüllen:

Übung Theoretische Grundlagen

QM: Prüfen -1- KN

Anleitung über den Umgang mit Schildern

Psychologie im Arbeitsschutz

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

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

Übung - Konfigurieren einer Windows 7-Firewall

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Anleitung SEPA-Lastschriften mit VR-NetWorld Software 5

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Transkript:

Seite 4 Qualitätssicherung für Analyse und Entwurf Farbe! Softwaretechnik Vorlesung Prof. Dr. Bernhard Rumpe Technische Universität Braunschweig http://www.sse-tubs.de/ Hohe Bedeutung früher Phasen für Produktqualität! Deshalb: Alle Dokumente frühzeitig überprüfen ("Validation"). Techniken: Anforderungskatalog-Begutachtung Echte Benutzer einbeziehen Anforderungskatalog auf Vollständigkeit und Korrektheit prüfen Use-Case-Szenarien Echte Benutzer einbeziehen "Funktionsfähigkeit" der abstrakten Modelle demonstrieren Prototyping Prototyp auf der Basis der Analyse/Entwurfs-Dokumente Echte Benutzer einbeziehen Vorgezogener Akzeptanztest Abgleich des Entwurfs mit Use-Cases/Anforderungskatalog Erste verifizierende Tätigkeiten Seite 5 Begutachtung (Review) 3.1. Prozessqualität Analyse Entwurf Implementierung Prof. Dr. Bernhard Rumpe Technische Universität Braunschweig http://www.sse-tubs.de/, Literatur: Sommerville 24-25 Balzert Band II, LE 12-13 Wartung Produkt wird von Expertengremium begutachtet Anwendbar auf fast alle Phasen der Entwicklung Was wird begutachtet? Genau definiertes Dokument (Art, Status, Prozesseinbindung) Teil der Gesamtplanung des Projekts (Termin) Wer begutachtet? Teammitglieder (Peer-Review) Externe Spezialisten Echte Benutzer Moderator, Manager Wie läuft die Begutachtung ab? Einladung Vorbereitung, Sammlung von Kommentaren Begutachtungssitzung(en), Protokolle Auswertung und Konsequenzen (Wiederholung, Statusänderung) Seite 3 Analyse Prozessintegrierte Qualitätssicherung Reviews, Prototyp der Oberfläche Entwurf Reviews, Konsistenzprüfungen, Realisierbarkeitsstudien Implementierung Code-Reviews, -Spezifikation, splan, -Management, Q? Fehlerberichte, Änderungsmanagement, Versionsplanung Wartung Seite 6 Regeln für wirkungsvolle Begutachtung "Checklisten" für die Gutachter vorbereiten z.b. "Enthält das Dokument alle laut Firmenstandard vorgesehenen Inormationen?" - "Gibt es für jede Klasse eine informelle Beschreibung?" - "Sind Kardinalitäten im Klassendiagramm vollständig und korrekt?" - "Sind alle Klassen kohärent?" -... Das Dokument wird begutachtet, nicht die Autoren! Richtige Vorkenntnisse der Gutachter sind wesentlich. Die Rolle des Moderators ist anspruchsvoll: Vermittlung in persönlichen Konflikten und Gruppenkonflikten Fachlicher Gesamtüberblick Das Ziel ist Einigkeit, nicht ein Abstimmungsergebnis! Ergebnisse von Begutachtungen müssen Auswirkungen haben. Wesentliche Beiträge von Gutachtern müssen Anerkennung finden. Begutachtung ist auch anwendbar auf Programm-Code (Code-Inspektion). 1

Seite 7 Produktqualität und Prozessqualität Software: Kaum Qualitätsmängel durch Massenproduktion Qualitätsmängel im Herstellungsprozess begründet Qualitätsmanagement: Organisatorische Maßnahmen zur Prüfung und Verbesserung der Prozessqualität Beachtung von internen Kunden-/Lieferantenbeziehungen Qualität des Entwicklungsprozesses! Ansätze: ISO 9000 Total Quality Management (TQM) Kaizen: Ständige Verbesserung Capability Maturity Model (CMM) Software Process Improvement and Capability Determination (SPICE) Business (Process) 3.2. und Prof. Dr. Bernhard Rumpe Technische Universität Braunschweig http://www.sse-tubs.de/, Allg. Literatur: Sommerville 19-20 Balzert Band 2, LE 14-15 Wartung Speziell: Robert V. Binder: ing object-oriented systems, Addison-Wesley 2000 Seite 8 ISO 9000 Seite 11 und Internationales Normenwerk ISO 9000: Allgemeiner Leitfaden ISO 9000-3: Leitfaden zur Anwendung von ISO 9001 auf Software ISO 9001: Modelle zur Darlegung der Qualitätssicherung insbesondere in Entwurf und Entwicklung Allgemeingültige Forderungen an die Organisation eines Unternehmens: Regelung von Zuständigkeiten Erstellung und korrekte Verwaltung wesentlicher Dokumente Existenz eines unabhängigen Qualitätssicherungs-Systems Zertifizierung: durch unabhängige (zertifizierte) Prüforganisationen Audit, Prüfsiegel ISO 9000 prüft nicht die Qualität des Produkts, sondern die Qualität der Organisation! Baustein- Modul- Bausteintest (unit test): Traditionell: Prozeduren OO: Methoden Modultest: Traditionell: Module OO: Klassen Subsystemtest: OO: Pakete Subsystem- System- Analyse Entwurf Implementierung Akzeptanz- Manche Autoren: Subsystemtest = = "stest" Seite 9 Capability Maturity Model (CMM) Seite 12 Systematisches en: Begriffe Einstufungsverfahren für Reifegrad der Organisation entwickelt von der Carnegie-Mellon University Stufe 3: Definiert Stufe 2: Wiederholbar Stufe 4: Gesteuert Stufe 1: Initialer Stufe1: Kosten, Zeit, Qualität Prozess Initial unvorhersehbar Stufe 5: Optimierend Kosten und Termine zuverlässig, aber Qualität schwankend Terminkontrolle, aber Kosten und Qualität schwanken Kontrolle über Produktqualität Kontrolle über Prozessqualität gegenstand (ling, Prüfling): Programm bzw. Komponente, die zu testen ist fall: Satz von Eingabedaten, der die (vollständige) Ausführung des gegenstands bewirkt daten: Daten, die für den fall benötigt werden treiber: Rahmenprogramm für Ausführung von s Attrappe (Stub, Dummy): Ersatz für ein (noch) nicht vorhandenes Unterprogramm Regressionstest: Nachweis, dass eine geänderte Version des gegenstands früher durchgeführte s erneut besteht Alphatest: experimenteller Vorversion durch Benutzer Betatest: funktional vollständiger Software durch Benutzer 2

Seite 13 Fehlfunktionen Seite 16 Klassifikation von verfahren Fehlfunktion (fault): Unerwartete Reaktion des lings Unterscheidung zwischen dem fehlerhaften Code (error, bug) und dem Auftreten des Fehler (fault): Ein fault kann aufgrund mehrerer bugs auftreten. Ein bug kann mehrere faults hervorrufen. Arten von Fehlfunktionen: Falsches oder fehlendes Ergebnis Nichtterminierung Unerwartete oder falsche Fehlermeldung Inkonsistenter Speicherzustand Unnötige Ressourcenbelastung (z.b. von Speicher) Unerwartetes Auslösen einer Ausnahme, "Abstürze" Falsches Abfangen einer Ausnahme en kann nur die Anwesenheit von Fehlern nachweisen, nicht deren Abwesenheit! Funktionaler (black box test) (fallauswahl beruht auf Spezifikation) Äquivalenzklassentest, Grenzwerte, spezieller Werte Zustandstest auf Spezifikationsbasis Strukturtest (white box test, glass box test) (fallauswahl beruht auf Programmstruktur) Kontrollflussorientierter Anweisungsüberdeckung, Zweigüberdeckung, Pfadüberdeckung Datenflussorientierter Definition/Verwendung von Variablen Weitere: Zufallstest ("monkey test") Stress-, Lasttest etc. Seite 14 Pareto-Prinzip Seite 17 Funktionaler (black box) % der Fehlfunktionen 100 80 60 40 20 % der betroffenen Module Funktionale Spezifikation Erwartete Vergleich 30 60 90 Fenton/Ohlsson 2000 und andere empirische Untersuchungen: 20 % der Module sind verantwortlich für 60 % der Fehler Diese 20 % der Module entsprechen 30 % des Codes muster: "Scratch'n sniff" Fehlerhafte Stellen deuten oft auf weitere Fehler in der Nähe hin. fälle (Eingabedaten) Programmausführung Seite 15 planung Seite 18 Äquivalenzklassen en ist aufwändig, deshalb ist gute Planung nötig! planung sollte bereits mit der Anforderungsanalyse beginnen und im Entwurf verfeinert werden (V-Modell, -First-Ansatz)! Typische Bestandteile einer -Spezifikation: Phasenmodell des prozesses Zusammenhang zur Anforderungsspezifikation z.b. dort festgelegte Qualitätsziele Zu testende Produkte Zeitplan für die s Abhängigkeiten der phasen Aufzeichnung der ergebnisse Hardware- und Softwareanforderungen Einschränkungen und Probleme Äquivalenzklasse: Teilmenge der möglichen Datenwerte der Eingabeparameter Annahme: Programm reagiert für alle Werte aus der Äquivalenzklasse prinzipiell gleich je eines Repräsentanten jeder Äquivalenzklasse Finden von Äquivalenzklassen: Kriterien für Werte entwickeln und diese wo sinnvoll kombinieren Zulässige und unzulässige Teilbereiche der Datenwerte Unterteilung der zulässigen Bereiche nach verschiedenen Ausgabewerten 3

Seite 19 Äquivalenzklassen: Beispiel Seite 22 Strukturtest (glass-box) int search (int[] a, int k) Vorbedingung: a.length >= 0 Nachbedingung: (result 0 a[result] == k) (result == 1 ( i. 0 i < a.length a[i] == k)) Programm- Code Kriterien für Äquivalenzklassen: Kriterium 1A: a.length == 0 Kriterium 1B: a.length > 0 Kriterium 2A: k in a Kriterium 2B: k nicht in a Äquivalenzklassen: / fälle: drei Äq.-Klassen, da 1A und 2A nicht kompatibel a == [], k == 17, result == undef. (1A, 2B) a == [11, 17, 45], k == 17, result == 1 (1B, 2A) a == [11, 23, 45], k == 17, result == -1 (1B, 2B) fälle (Eingabedaten) Funktionale Spezifikation oder "Orakel" Programmausführung Erwartete Vergleich Seite 20 Grenzwertanalyse und spezieller Werte Seite 23 Überdeckungsgrad (coverage) Grenzwerte: Randfälle der Spezifikation Werte, bei denen "gerade noch" ein gleichartiges Ergebnis zum Nachbarwert erzielt wird, bzw. "gerade schon" ein andersartiges Beispiele: Ränder von Zahl-Intervallen Schwellenwerte Spezielle Werte: Zahlenwert 0 Leere Felder, Sequenzen und Zeichenreihen Einelementige Felder, Sequenzen und Zeichenreihen Null-Referenzen Sonderzeichen (Steuerzeichen, Tabulator) Maß für die Vollständigkeit eines s Welcher Anteil des Programmtexts wurde ausgetestet? Messung der Überdeckung: Instrumentierung des Programmcodes Ausgabe statistischer Informationen Planung der Überdeckung: gezielte Anlage der s auf volle Überdeckung Überdeckungsarten: Anweisungsüberdeckung: Anteil ausgeführter Anweisungen Zweigüberdeckung: Anteil ausgeführter Anweisungen und Verzweigungen Pfadüberdeckung: Anteil ausgeführter Programmablaufpfade Hilfsmittel: Kontrollflussgraph Seite 21 Grenzwertanalyse: Beispiel Seite 24 Beispielprogramm: Binäre Suche int search (int[] a, int k) Vorbedingung: a.length > 0 Nachbedingung: (result 0 a[result] == k) (result == 1 ( i. 0 i < a.length a[i] == k)) Weitere Kriterien für Äquivalenzklassen: 3A: Element am linken Rand a[0]==k 3B: Element am rechten Randa.last==k 3C: Element an keinem Rand... 4A: a einelementig a.length==1 4B: a nicht einelementig a.length!=1 5A: k ist 0 k==0 5B: k ist nicht 0 k!=0 Neue fälle: a == [17], k == 17, result == 0 (Kriterien 1B, 2B, 3A+B, 4A, 5B) a == [11, 23, 0], k == 0, result == 2 (Kriterien 1B, 2B, 3B, 4B, 5A) public static final int NOTFOUND = -1; // Binaere Suche auf Array a. // Annahme: a ist sortiert // Ergebnis ist NOTFOUND, wenn k nicht in A enthalten ist. // Ergebnis ist i falls a[i] gleich k ist. public static int binsearch (int[] a, int k) { int ug = 0, og = a.length-1, m, pos = NOTFOUND; while (ug <= og && pos == NOTFOUND) { m = (ug + og) / 2; if (a[m] == k) pos = m; if (a[m] < k) ug = m + 1; og = m - 1; }; return pos; } 4

Seite 25 Beispielprogramm: Binäre Suche Kontrollflussgraph Seite 28 Zweigüberdeckender public static final int NOTFOUND = -1; public static int binsearch (int[] a, int k) { int ug = 0, og = a.length-1, m, pos = NOTFOUND; // 1 while (ug <= og && pos == NOTFOUND) { // 2 m = (ug + og) / 2; // 3 }; if (a[m] == k) // 4 pos = m; // 5 if (a[m] < k) // 6 ug = m + 1; // 7 og = m - 1; // 8 return pos; // 9 } 5 1 2 3 4 9 6 7 8 Überdeckung aller Zweige: C 1 - Bei jeder Fallunterscheidung (einschließlich Schleifen) werden beide Zweige ausgeführt (Bedingung=true und Bedingung=false). Zweigtest zwingt auch zur Untersuchung "leerer" Alternativen: if (x >= 1) y = true; // kein -Fall Beispiel: Die beiden fälle der letzten Folie überdecken alle Zweige. Messung/Instrumentierung von Anweisung i: Fallunterscheidung: if (...) { bt[i]++;... } { bf[i]++;... } While-Schleife: while (...) { bt[i]++;... } bf[i]++; Seite 26 Beispiel: Ergebnis: Kontrollflussgraph Seite 29 Pfadüberdeckung 1 2 3 Pfad = Sequenz von Knoten im Kontrollflussgraphen, so dass in der Sequenz aufeinanderfolgende Knoten im Graphen direkt miteinander verbunden sind. Anfang = Startknoten, Ende = Endknoten. 5 4 6 7 8 Theoretisch optimales verfahren Explosion der Zahl von möglichen Pfaden, deshalb nicht praxisrelevant. (Schleifen haben unendliche Pfad-Anzahlen) Praktikablere Varianten, z.b. bounded-interior-pfadtest: Alle Schleifenrümpfe höchstens n-mal (z.b. einmal) wiederholen 9 Seite 27 Anweisungsüberdeckender Seite 30 en objektorientierter Programme Überdeckung aller Anweisungen: C 0 - Jede Anweisung (numerierte Zeile) des Programms wird mindestens einmal ausgeführt. Beispiel: a = {11, 22, 33, 44, 55}, k = 33 überdeckt Anweisungen: 1, 2, 3, 4, 5, 9 a = {11, 22, 33, 44, 55}, k = 15 überdeckt Anweisungen: 1, 2, 3, 4, 6, 7, 8, 9 Beide fälle zusammen erreichen volle Anweisungsüberdeckung. Klassische Verfahren anwendbar für einzelne Methoden aber: Methoden vergleichsweise kurz und einfach Komplexität liegt zum großen Teil in der Kooperation. Probleme mit Vererbung: s der Oberklassen müssen u.u. für alle Unterklassen wiederholt werden: Beeinflussung von Variablen der Oberklasse Redefinition von Methoden der Oberklasse Spezielle Techniken für objektorientiertes en: Zustandstests Sequenztests Messen der Anweisungsüberdeckung: "Instrumentieren" des Codes (durch Werkzeuge) Einfügen von Zählanweisungen bei jeder Anweisung 5

Seite 31 Zustandstests Seite 34 Zusammenfassung: Spezifikationsbezogen ("black box"): Verwendung von Zustandsdiagrammen (z.b. UML) aus Analyse und Entwurf Abdeckungskriterien: alle Zustände alle Übergänge für jeden Übergang alle Folgeübergänge der Länge n Praxistauglich Programmbezogen ("glass box"): Automatische Berechnung eines Zustandsdiagramms Zustand = Abstraktion einer Klasse zulässiger Attributwerte Bestimmung der Übergänge erfordert symbolische Auswertung von Methoden problematisch bei Schleifen und Rekursion Im Forschungsstadium Qualitätsmanagement beginnt bereits mit den frühen Aktivitäten und begleitet das gesamte Projekt Qualitätsmanagement beinhaltet primär Reviews, Inspektionen s aber auch: Bildung von Prototypen, Einbindung von Kunden, intensive Kommunikation, gutes Arbeitsumfeld, etc. en ist eine sehr komplexe Tätigkeit, die sehr viel Erfahrung fordert s sollten gut geplant und wenn möglich bereits frühzeitig begonnen werden Reviews erfordern gute Soft-Skills von allen Beteiligten und sind nur konstruktiv Seite 32 Wohin mit dem -Code? Zur Durchführung von s entsteht zusätzlicher Code: treiber attrappen (Stubs) suiten code muss aufbewahrt, s nach allen größeren Änderungen wiederholt werden Alternativen: code als Bestandteil der Klassen einfach zu verwalten, vergrößert Code "Spiegelbildliche" Hierarchie von klassen Redundanzproblem Erleichtert Verwendung von -Frameworks (z.b. JUnit) skripten in eigenen Sprachen klassischer Ansatz, keine Vererbung von fällen möglich -Unterklassen problematisch wegen Mehrfachvererbung Seite 33 Inkrementelles en Programmierer testen meist nicht gerne. en ist zerstörerische Tätigkeit. Zu spätes en führt zu komplizierten Fehlersuchen! Inkrementelles en / -First-Ansatz: s entstehen parallel zum Code (oder sogar vor dem Code) Programmierer schreiben s für praktischen Nutzen: Klare Spezifikation von Schnittstellen Beschreibung kritischer Ausführungsbedingungen Dokumentation von Fehlerbeseitigung Festhalten von notwendigem Verhalten vor größerem Umbau ("Refaktorisierung") s archiviert und automatisch ausführbar Weitere Information: K. Beck, E. Gamma: Programmers love writing tests (JUnit) K. Beck: Extreme programming explained, Addison-Wesley 2000 6