My research interests focus on the fields Software Engineering and Data Mining (applied to software-documents). In particular I'm interested in software diagnostics (quality assurance), refactoring (software evolution), experience-based resp. pattern-based Software Engineering and model-driven software development (MDSD). More specific I'm working on the diagnosis of quality defects (Antipatterns, Code Smells, Design flaws, etc.), the quality assurance in MDSD, plug-in based software development as well as knowledge discovery in code and defect repositories.
 |
DoctorQ:
An extensible plugin-system for the eclipse IDE to enable the analysis of software systems for the diagnosis of Quality Defects. The system is designed to
diagnose quality defects during programming in order to assist the software developer directly in his work. This helps to prevent larger amount of work that
might be necessary if the quality defects were diagnosed after programming (or an iteration in agile development) when more components are based on the
flawed system and needed to be changed.
|
 |
The VIDE Defect Detector:
An extensible plugin-system for the Topcased IDE to enable the analysis of software models for the diagnosis of Quality Defects. (Click the picture or this link to see the screencast)
|
 |
SQuaD:
The Software Quality Defect Ontology represents a systematic categorization of quality defects and associated concepts such as techniques for the diagnosis
of defects and the indication of treatments (e.g., refactorings). |
| |
Quality Defect Formalization:
One main part of the research is the unambiguous description of quality defects in order to apply them in knowledge based diagnosis systems as well as to
support the sometimes ambiguous descriptions found in the literature.
|
| |
Quality Defect Diagnosis & Priorization
The focus of this part of the research is the diagnosis of quality defects based on static, dynamic, and historic (e.g., versions in CVS) information
as well as the systematic reduction of the amount of quality defects presented to the user (e.g., developer or maintainer).
|
| |
Quality Defect Handling
After quality defects are discovery in a software system they need to be properly handled. This includes either the treatment and consequently the removal
of the quality defect or the marking of the location and a decision that it was not applicable. Furthermore, this includes research on the context-specific
contra-diagnosis based on specific locations (e.g., pattern roles and stereotypes). The persistent storage of these descisions can be supported by the
annotation language RAL that was developed to record information about quality defects and their history in source code.
|
| |
Refactoring configuration & Quality Defect Removal
If multiple quality defects are found at on location (e.g., a method) are diagnosed this has an effect on the indication of an optimal treatment plan
(e.g., a sequence of refactorings).
|
 |
COWA (Code Warehouse): The code warehouse acts as the repository for source code from several software systems for further processing. Source code in several versions from source versioning systems (e.g., CVS) of OSS projects is extracted, transformed (i.e., parsed), and loaded (i.e., stored) in the code warehouse. Currently only JAVA from CVS systems are parsed and stored in the code warehouse. |
| |
CORE (Code Retrieval Engine): The code retrieval engine is an application of the data from the code warehouse. It offers a search on the source code within the COWA using the lucene search engine. The index to be searched is build upon information from the code itself (e.g., class and method names) as well as information from the documentation (i.e., javadoc) and additional comments. |
| |
COAE (Code Analysis Engine): The code analysis engine is used to calculate metrics (and other countable characteristics) about the source code and its different versions for further analysis or mining purposes. Currently, only few metrics are calculated. |
| |
COME (Code Mining Engine): The code mining engine will be used to discover previously unknown knowledge about the source code using techniques from data, text, and web mining. Work in progress is using clustering techniques in order to discover library candidates from similar projects. |