<?xml version="1.0" encoding="iso-8859-1"?><rss version="2.0" xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Co-Evolution of Unit Tests and Implementation</title><link>http://decomp.ulb.ac.be/education/diplomasubjects05-06/co-evolutionofunittestsandimplementation/</link><description>Recent Changes to Co-Evolution of Unit Tests and Implementation</description><generator>SmallWiki 1.0</generator><copyright>Software Composition Group, University of Berne, 2003</copyright><item><title>Co-Evolution of Unit Tests and Implementation</title><link>http://decomp.ulb.ac.be/education/diplomasubjects05-06/co-evolutionofunittestsandimplementation/</link><pubDate>Wed, 11 May 2005 11:30:40 GMT</pubDate><description>May 11, 2005 11:30:40.738 by admin from 84.195.216.12</description><content:encoded><![CDATA[<h1>Co-Evolution of Unit Tests and Implementation</h1><h3>Keywords:</h3><p>Software Engineering, Unit Tests, Co-Evolution, Declarative Meta Programming</p><h3>Description:</h3><p>The concept of Unit Testing, as introduced by Extreme Programming, is gaining more and more acceptance when developing code. Unit tests are sets of executable code (methods) that exercise the system with the intent of checking it for correctness. Important is that they are automated, reproducible, and run without human interaction. However, it is currently hard to keep unit tests synchronized with the source code. One problem is that unit tests are not explicitly linked to the implementation: when changing the implementation it is not possible to see what unit tests are impacted. Vice versa, when changing a unit test, it is not cleat how this affects the implementation. In this thesis you will link the unit tests and the implementation such that the impact of changes to one can be seen on the other. This will be done by constructing a framework of logic rules that express the mapping between unit tests and the implementation. Synchronizing and detecting differences between both is then done by running a logic query. Validation of the work will be done by refactoring an existing body of unit tests for two small applications.</p><h3>What you will Learn:</h3><ul><li> Smalltalk: Smalltalk is a pure Object-Oriented Language, featuring true reflection.</li><li>SUnit: Unit testing was developed in Smalltalk as part of the Extreme Programming methodology before it spread to other languages.</li><li>Declarative Meta Programming and Soul: Soul is a Prolog-like language in symbiosis with Smalltalk that allows you to do logic queries directly over Smalltalk objects.</li></ul>]]></content:encoded></item></channel></rss>