Specification Mining
Seminar — WS 2011/12

Software Engineering Chair (Prof. Zeller)
Saarland University – Computer Science
Campus E1 1
66123 Saarbrücken, Germany
E-mail: specmine2011@st.cs.uni-saarland.de
Phone: +49 681 302-70970

Deutschsprachige Startseite Page d'acceuil en fran?ais English home page
  

Daikon Hands-On Project

We have prepared an archive of Daikon together with some example Java applications (QueueAr, StackAr, and Siemens replace ported to Java) for you to use it on. Get the archive here.

If in doubt, please refer to Daikon's documentation. It is included in the archive under daikon/doc/index.html and also available online from Daikon's web page. We have also set up a mailing list for you to discuss and help each other with problems. Its address is specmine2011@lists.st.cs.uni-saarland.de

In order to use Daikon on your machine, you will need to have a Java 5.0 (or later) JVM together with the JDK installed on your machine. It's best to use (Sun/Oracle)'s version of Java instead of an OpenJDK one.

Note that we strongly recommend logging the output of the Daikon runs to log files, one per run.

Steps

  1. Download the archive with Daikon and the samples.
  2. Unzip it, open a terminal, and verify that all is working by running java -cp daikon.jar:examples/java-examples/StackAr daikon.Chicory --daikon DataStructures.StackArTester in the daikon directory from the archive.
  3. Run it on the other supplied examples and answer the following questions. You will need to adjust the classpath (-cp) option to point to the correct directory for each project by replacing examples/java-examples/StackAr with the appropriate path. You will also need to replace DataStructures.StackArTester with the name of the main class that runs the project's tests.
  4. Send your answers to question 1 to us (not the students mailing list...) until November 30, and questions 2–4 until December 30. Please remember to include your student id.

Questions

  1. Examine the source code of the projects and invariants generated for them by Daikon:

    Are the invariants meaningful? Are there any invariants missing that you would have expected to see? How many of them are meaningful? For each of the projects: Can you show us five examples each for meaningful and meaningless invariants?


  2. For all the supplied example projects, compare the run-time performance of Daikon (in seconds) to the size of the project (in lines of code) and test suite (number of test methods). Remember to show us your data.

  3. For the replace project: How does the run-time change when you vary the size of the test suite? How long does it take for (approximately) 100%, 50%, 25%, and 10% of the original test suite size?
    Please remember to recompile the Java code after changing it by running javac -g *.java in the appropriate directory.

  4. For the replace project: How do the invariants change when you vary the size of the test suite? Can you show us typical examples of invariants at (approximately) 100%, 50%, 25%, and 10% of the original test suite size?
    Please remember to recompile the Java code after changing it by running javac -g *.java in the appropriate directory.

<webmaster@st.cs.uni-saarland.de> · http://www.st.cs.uni-saarland.de/edu/specmine11/daikon/ · Updated: 2014-03-23 23:39