fachgebiet software engineering Übersicht © 22.01.2014 albert zündorf, kassel university...

22
Fachgebiet Software Engineering Übersicht © 13.05.22 Albert Zündorf, Kassel University Projektplan:

Upload: agna-gaus

Post on 05-Apr-2015

114 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University

Projektplan:

Page 2: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University

Tätigkeiten bei der Softwareentwicklung

Page 3: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University

Testen

(Whitebox) Glassbox-Test anhand der Implementierung Normal- und Grenzfälle aus Bedingungen Überdeckungskriterien

Blackbox-Test mit Hilfe der Spezifikation (ohne die Implementierung zu

kennen) Normalfälle aus der Spezifikation Sonderfälle der Spezifikation Unzulässige Eingaben der Spezifikation

Page 4: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University

White-Box-Testing

C0-Überdeckung (Anweisungs- und Bedingungsüberdeckung) Beim Test muss jedes Statement und jeder Ausdruck mindestens einmal

ausgewertet werden Code Coverage Tools können das automatisch messen

(Ergebnis gehört ins Testprotokoll) (Für Java z.B. EMMA) manchmal schwer zu erfüllen z.B.

try { ... } catch (HeapOverflow e) { xxx () } findet nicht alles:

m (x, y) { int z = 0; if (x > 0) { z = 1; } y = x / z; // <== ERROR: Division by zero ...

Der Aufruf m(0,1) erreicht C0-Überdeckung aber keine Fehlerfreiheit

Page 5: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University

White-Box-Testing

C1-Überdeckung: Zweigüberdeckung auch leere if-then-else-Zweige müssen durchlaufen werden (while) Schleifen müssen sowohl durchlaufen als auch übersprungen

werden findet aber immer noch nicht alles:

m (x, y) { int z = 0; if (x > 0) { z = 1; } else { z = -1;} if (y > 0) { z ++; } else { z --; } y = x / z; // <== ERROR: Division by zero on x = 1 and y = -1 ...

Page 6: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University

White-Box-Testing

C2-Überdeckung (Pfadüberdeckung) Testfälle sollen alle möglichen Durchläufe durch eine Methode

testen Schleifen null und ein mal durchlaufen Problem exponentieller Aufwand:

m (x, y) { int z = 0; if (x > 0) { z = 1; } else { z = -1;} if (y > 0) { z ++; } else { z --; } if (...) { ... } else { ...} y = x / y; // <== ERROR: Division by zero on y = 0

Bei jedem if-Statement 2 Fortsetzungsmöglichkeiten bei n if Statements 2 hoch n Pfade (20 ifs 1 Millonen Testfälle) in der Praxis nicht vertretbarer Zeitaufwand findet immer noch nicht alle Fehler

Bemerkung: sowas findet man gut mit Reviews

Page 7: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University

White-Box-Testing

Coverage Tools cobertura (http://cobertura.sourceforge.net) EMMA (http://emma.sourceforge.net) EclEmma (http://www.eclemma.org) Coverlipse (http://coverlipse.sourceforge.net) jCoverage (http://www.jcoverage.com) OptimzeIt

(http://www.borland.com/us/products/optimizeit) Clover (http://www.cenqua.com/clover)

Page 8: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University

Page 9: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University

Page 10: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University

Page 11: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University

Black-Box-Testing

Funktionsorientierter Test jede Funktion / Feature / Variable einzeln

Äquivalenzklassenbildung Definitionsbereich der Variablen betrachten Partitionierung, zwei Tests pro Partition Randwerte

Regressionstests Wiederhole Tests bei Programmänderungen vgl. XP

Szenario-basierte Tests vgl. FUP

Page 12: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University

Black-Box-Testing

im eXtreme Programming: JUnit Tests Für jede Funktionalität (jedes Oval im Use-Case Diagramm) wird als erstes eine

automatische Testroutine geschrieben Testroutine ist einzeln aufrufbar und wird in Gesamttest eingehängt Testroutine kommt in die gleichen Klassen, wie die Implementierung Testroutinen verbleiben im Code und gehören zum Endprodukt Aufgaben der Testroutine:

verschiedene Ausgangssituationen herstellen Funktionalität aufrufen Messpunkte im Code abfragen (Testanweisungen fügen Meldungen an Testreport an) Testprotokoll ausgeben (Testreport mit erwartetem Output vergleichen)

expliziter Unit-Test kann entfallen im Unified Process

Tester != Programmierer

Defect-Removal-Rate ~ 1 per day

Page 13: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University

Reviews

Entwickler selbst plus Co-Entwickler oder externer Reviewer Check-Liste mit typischen Fehlern Code ist schon Unit getestet => suche nur nach typischen Fehlerquellen:

Division durch 0 null-Pointer Dereferenzierung Speicher-Lecks Array-Grenzen bei for-Schleifen deckt kompliziertes if alle Fälle richtig ab Terminiert die Schleife / Rekursion sicher Dead-Lock-Gefahren Racing Conditions . . .

+ Defect-Removal-Rate ~ 1 per hour

+ Reviewer lernt viele Kniffe

+ Viele Leute kennen viele Teile des Gesamtprogramms bei XP pair-programming

Page 14: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University

Tätigkeiten bei der Softwareentwicklung

Page 15: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University

XML-RPC Allgemein

Standard für (entfernten) Methodenaufruf

Platformunabhängig

Datenformat XML lesbar

Transportprotokoll HTTP Ausgereift

Page 16: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University

Beispiel-Aufruf

<?xml version="1.0"?>

<methodCall>

<methodName>gameServer.setCoreSize</methodName>

<params>

<param>

<value>Game1</value>

</param>

<param>

<value><int>8000</int></value>

</param>

</params>

</methodCall>

Page 17: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University

Datentypen

Int, double, boolean, String

Sowie als array (List) und struct (Map)

Base64-binary für beliebige Daten Kann für Serialisierung genutzt werden

(Date)

Page 18: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University

Apache XML-RPC 2

Einfache Benutzung (im Gegensatz zu XML-RPC 3)

Im Projekt: xmlrpc-2.0.1-bin.tar.gz Auspacken, enthält Doku und Beispiele

Im Verzeichnis xmlrpc-2.0.1/examples/echo befindet sich ein einfaches Beispiel!

Page 19: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University

Beispiel-Serverclass Server {

public static void main (String args[]) {

int port = 8080;

WebServer server = new WebServer (port);

// add an instance of this class as default handler

server.addHandler ("$default", new Server());

server.start ();

}

/**

* This is method that is invoked via XML-RPC. The server looks

* up the method via Java Reflection API.

*/

public String echo (String input) {

return input;

}

}

Page 20: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University

Beispiel-Client

public class Client {

public static void main (String args[]) throws Exception {

XmlRpcClient client = new XmlRpcClient ("http://localhost:8080/");

String message = "Hello World!";

Vector v = new Vector ();

v.add (message);

Object result = client.execute ("echo", v);

System.err.println ("received: "+result);

}

}

Page 21: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University

Analyse & Design Ziele

Technisches Konzept zur Realisierung neuer Funktionalität

Vorgabe für die Implementierung

Zielgruppe Entwickler

Beschreibung auf Modellebene

Beispielszenarien (Story Boards, Sequenzdiagramme, …)

Klassendiagramm

Page 22: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Projektplan:

Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University