Il mercato agroalimentare cinese ed il settore vino Lonigo, 22.01.2014 Thomas Rosenthal.
Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University...
Transcript of Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University...
Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University
Projektplan:
Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University
Tätigkeiten bei der Softwareentwicklung
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
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
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 ...
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
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)
Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University
Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University
Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University
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
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
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
Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University
Tätigkeiten bei der Softwareentwicklung
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
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>
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)
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!
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;
}
}
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);
}
}
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
Fachgebiet Software Engineering Übersicht © 11.04.23 Albert Zündorf, Kassel University