Object-Oriented Software Engineering

Object-Oriented Software Engineering

From SSRG Annoki

Jump to: navigation, search

UMLDiff and JDEvAn

People Involved

Zhenchang Xing

Eleni Stroulia

Dr. Xing's Ph.D. research has focused on software evolution – understanding how software evolves over time, and in turn supporting its evolution based on this understanding. In particular, he examined three related research questions:

  1. How can one precisely recognize the changes to a system’s logical design from one version to the next?
  2. How can this information be further analyzed and communicated to the developers so that they can understand the nature of software evolution and their rationale?
  3. How can the analysis of design changes, their impact on the system and their plausible rationale be effectively used to support developers in their development and maintenance tasks?

A record of the data produced by his thesis can be found at

Extract-Class Refactoring

People Involved

Marios Fokaefs

Nikolaos Tsantalis

Eleni Stroulia

The JDeodorant Team at University of Macedonia, Greece -

Refactoring is recognized as an essential practice in the context of evolutionary and agile software development, necessary for restructuring the software design so that it can be extended to support the implementation of new requirements and features. Recognizing the importance of the practice, modern IDEs provide some support for low-level, simple refactorings. A notable exception in the list of supported refactorings is the “extract class” refactoring, which is conceived to simplify large, complex, unwieldy and incohesive classes.

In this work, we have developed a method and a tool, implemented as an Eclipse plugin, designed to fulfill exactly this need. Our method involves three steps: (a) recognition of extract-class opportunities, (b) ranking of the identified oppor- tunities in terms of the improvement each one is anticipated to bring about to the system design, and (c) fully automated application of the refactoring chosen by the developer. The first step relies in an agglomerative clustering algorithm, which identifies coherent entity sets within the system classes. The second step relies on the entity-placement metric as a measure of system quality. Through an empirical study we have shown that the tool is able to identify and extract new classes that developers recognize as “coherent concepts” and improve the design quality of the underlying system.


People Involved

Nikolaos Tsantalis

Natalia Negara

Eleni Stroulia

WebDiff is a web-based and generic differencing service, designed to support the comparison of various types of software artifacts. To achieve the required level of independence from the specific characteristics of the examined software artifacts, WebDiff employs a generic domain-independent tree differencing algorithm (VTracker) that is able to handle any kind of XML document representing a partially-ordered labeled tree.

The architecture of WebDiff is shown below:


Currently, WebDiff offers three types of software differencing services:

  1. Comparison of two different source code versions.
  2. Comparison of two different UML diagram versions (in the form of XMI files).
  3. Comparison of a source code version against UML diagrams.

WebDiff Service

WebDiff has been developed using ICEfaces (an Ajax JavaServer Faces component library) and is accessible through any web browser at WebDiff

For bug reports or feature requests please contact Nikolaos Tsantalis (tsantalis [at]