Projektplan: Fachgebiet Software Engineering Übersicht © 27.03.2017 Albert Zündorf, Kassel University.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Tomcat Web-Server installieren
Internetzugriff mit Strings und Streams
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Listen Richard Göbel.
FH-Hof Sockets in Java Richard Göbel. FH-Hof Kommunikation über das Internet - Grundlagen Ein Rechner wird im Internet über die so genannte IP- Adresse.
Java: Grundlagen der Sprache
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
IF-ELSE-IF-Ketten Weiter mit PP..
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 6. Story Driven Modeling Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Reservierungs Datenbank
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Projektplan: m : Anforderungsanalyse Dokument m :
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Projektplan:
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
1 Reverse Engineering WS 07 / 08 A. Zündorf. Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University 2 Organisatorisches.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Baustein- vs. Funktionsorientierte Organisation.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Test Summary: m ein Fehler pro Tag m Test First m Funktionstests.
Seminar Internet Technologien
DVG Ausnahmen. DVG Was sind Programmfehler? 4 Programm erzielt gar kein Ergebnis. 4 Berechnetes Ergebnis stimmt nicht mit dem erwarteten.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung in die Programmierung Datensammlung
Informatikunterricht mit Java
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Client Architecture Data Model GUI KI Socket Connection.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Test Summary: m ein Fehler pro Tag m Test First m Funktionstests.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Rekursive Funktionen (Fakultät)
Die .NET Common Language Runtime
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Grundlagen der Programmierung
Telecooperation/RBG Technische Universität Darmstadt Copyrighted material; for TUD student use only Grundlagen der Informatik I Thema 16: Ausnahmebehandlung.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Style Guidelines für Java und .NET
Variablenkonzept Klassisch, in Java Basistyp
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Einführung in Web Services Web Services in der Praxis
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Schleifen
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Robuste Programme durch Ausnahmebehandlung
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Hello World! Javakurs 2013 Arne Kappen
Grundkurs Informatik mit Java
Schleifen mit der Turtle
Test Summary: ein Fehler pro Tag Test First
 Präsentation transkript:

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

Tätigkeiten bei der Softwareentwicklung Fachgebiet Software Engineering Übersicht © 27.03.2017 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 © 27.03.2017 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 © 27.03.2017 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 © 27.03.2017 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 © 27.03.2017 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 © 27.03.2017 Albert Zündorf, Kassel University

Fachgebiet Software Engineering. Übersicht. © 27. 03 Fachgebiet Software Engineering Übersicht © 27.03.2017 Albert Zündorf, Kassel University

Fachgebiet Software Engineering. Übersicht. © 27. 03 Fachgebiet Software Engineering Übersicht © 27.03.2017 Albert Zündorf, Kassel University

Fachgebiet Software Engineering. Übersicht. © 27. 03 Fachgebiet Software Engineering Übersicht © 27.03.2017 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 © 27.03.2017 Albert Zündorf, Kassel University

Defect-Removal-Rate ~ 1 per day 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 © 27.03.2017 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 © 27.03.2017 Albert Zündorf, Kassel University

Tätigkeiten bei der Softwareentwicklung Fachgebiet Software Engineering Übersicht © 27.03.2017 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 © 27.03.2017 Albert Zündorf, Kassel University

Beispiel-Aufruf <?xml version="1.0"?> <methodCall> <methodName>gameServer.setCoreSize</methodName> <params> <param> <value>Game1</value> </param> <value><int>8000</int></value> </params> </methodCall> Fachgebiet Software Engineering Übersicht © 27.03.2017 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 © 27.03.2017 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 © 27.03.2017 Albert Zündorf, Kassel University

Beispiel-Server class 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 © 27.03.2017 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 © 27.03.2017 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 © 27.03.2017 Albert Zündorf, Kassel University

Fachgebiet Software Engineering. Übersicht. © 27. 03 Fachgebiet Software Engineering Übersicht © 27.03.2017 Albert Zündorf, Kassel University