Research Projects



inCode
Team: Radu Marinescu, George Ganea, Ioana Verebi


inCode is an Eclipse plugin that enables you to understand and design better object-oriented systems, using Java. inCode will help you detect code and design problems (e.g. duplicated code, classes that break encapsulation, or methods placed in a wrong class) on-the-fly, while you're typing. As a result, you can improve the quality of your code and design. Instead of lengthy, and oftentimes unsuccessful code reviews and restructuring sessions, you can now save a lot of precious time by detecting and correcting design problems as they appear.
iPlasma - An Integrated Platform for Quality Assessment of Object-Oriented Design
Team: Cristina Marinescu, Radu Marinescu, Petru F. Mihancea, Daniel Ratiu, Richard Wettel


To make software maintenance easier, a superior quality of its design and implementation process must be ensured. For this reason, existing software must be supported by automated systems for analysis, diagnose and design improvement, at a high level as well as at a level close to source code. iPlasma is an integrated environment for quality analysis of objectoriented software systems that includes support for all the necessary phases of analysis: from model extraction (including scalable parsing for C++ and Java) up to high-level metricsbased analysis, or detection of code duplication. iPlasma has three major advantages: extensibility of supported analysis, integration with further analysis tools and scalability, as it was used in the past to analyze large-scale projects in the size of millions of code lines (e.g. Eclipse and Mozilla).
Methods and Tools for Continuous Quality Assurance in Complex Software Systems
Romanian Education And Research Ministry, IDEI PN–II–ID–PCE–2007–1, Grant 357/01.10.2007, October 2007 - October 2010
Team: Marius Minea, Radu Marinescu, Petru F. Mihancea, Cristina Marinescu, Mihai Balint

The ever increasing impact of software systems and the high degree of societal dependence with respect to them, especially for infrastructure make it extremely important for software to evolve, in order to adapt to the new social and economic needs. To make software evolution possible, a superior quality of its design and implementation process must be ensured. for this reason, existing software must be continuously supported by automated systems for analysis, diagnose and improvement of code and design. The project proposes an agile (continuous) approach to quality assurance for complex software systems, at the level of code (by means of static analysis and testing) and design (by means of metrics-based detection and correction of design flaws). the proposed approach aims to: (1) develop new demand-driven,fast local analyses for object-oriented code,and increase the precision of analyses by exploiting advances in decision procedures and invariant detection; (2) integrate automated test generation techniques with dynamic invariant generation and static checking into an iterative process which generates test suites together with expected correct results, while minimizing user input; (3) transform design assessment from a standalone activity in a continuous (agile) process, perfectly integrated in the development process; (4) bridge the gap between design flaw detection and complex restructurings by means of correction plans; (5) integrate techniques related to design and coding flaw detection;(6) support the analysis of industrial-size software systems implemented in the main currently used programming languages (c++, java, c#). Building such a system will allow the automation of analyses for large-scale software systems, the precise identification of functional and design flaws through the possibility of applying multiple analyses in a uniform fashion, and to obtain superior results by correlating various analysis types.
Distributed Environment for the Control and Optimization of Software Evolution
Romanian Education And Research Ministry, CEEX Project for Young Researchers, Grant 5880/18.09.2006, September 2006 - August 2008
Team: Radu Marinescu, Ioana Sora, Petru F. Mihancea, Cristina Marinescu, Dan Cosma

In an information technology society that is increasingly relying on software, software productivity and quality continue to fall short of expectations:software systems suffer from signs of aging as they are adapted to changing requirements. The main reason for this problem is that the relevance of activities for the control and optimization of software maintenance and evolution are still undervaluated in traditional software development processes. The only way to overcome or avoid the negative effects of aging in legacy software systems and to facilitate their smooth evolution is by providing engineers with a fully automated and integrated support for controlling the entire evolution process. Yet, controlling and optimizing the process of software evolution is a complex task which requires multiple techniques and models. Moreover, the past few years have shown that to come up with a working solution for industrial systems, single persons and even single groups are not enough to tackle all problems such as parsing, modeling, data mining, or visualization. In this context, the goal of this project is to provide a comprehensive and extensible support for complex, full-fledged software evolution activities applicable on real-world systems. Specifically, we want to address these issues by building a distributed environment for the control of software evolution which would support the collaboration of the various techniques and models defined in the past by different european research teams. Next, we want to use this environment to integrate different primary analysis techniques into more complex techniques for supporting evolution control. Eventually, we will validate based on large-scale experiments the feasibility of the approach. Thus, the project consists of the following tracks: 1. Creating a distributed environment for software evolution 2. Enabling complex (distributed) activities related to evolution 3. Performing large-scale experiments on controlling evolution
NOREX - Network of Reengineering Expertise
Swiss National Science Foundation (SNF), SCOPES Project, November 2005 - October 2007
Team: Radu Marinescu, Cristina Marinescu, Petru F. Mihancea, Dan Cosma, Mihai Balint, Michele Lanza, Mircea Lungu, Marco D'Ambros, Oscar Nierstrasz, Doru Girba, Orla Greevy

The goal of of this joint research project is to provide a comprehensive and extensible support for complex, full-fledged reengineering activities applicable on real-world systems. Specifically, we want to address these issues by building a distributed reengineering environment which is able to make all the techniques and models defined and implemented by each of the three research teams to complement each other. Then we want to use this environment to integrate different reengineering techniques to support complex reengineering techniques and validate based on large-scale experiments the feasibility of the approach.
Design Quality Assurance for Enterprise Software Systems
Romanian Education And Research Ministry, CEEX Project for Young Researchers, Grant 3147/2005, November 2005 - October 2007
Team: Radu Marinescu, Cristina Marinescu, Petru F. Mihancea, Dan Pescaru, Calin Jebelean, Ioana Sora

Nowadays our society fundamentally depends on complex, enterprise software systems.Therefore, as society evoles, these systems must be able to evolve too, being prepared to face the imminent changes implied by new requirements. Unfortunately, the software industry is currentely confronted with an increasing number of enterprise software systems, which have a poor quality of the design and implementation; therefore, the evolution of such systems is economically unfeasible and oftentimes technically impossible. In order to address this issue we need methodologies and tools to asses and improve the design and implementation quality of enterprise applications. The research efforts towards the assurance of design and implementation quality for large-scale object-oriented systems are not new. Yet, due to the intrinsic heterogeneity of enterprise software systems(e.g. various implementation languages and technologies, multiple programming paradigms) a novel layer of dedicate quality assurance techniques is needed in order to address properly the multiple aspects of heterogenity. The goal of this project is to define methodologies and tools that address the issue of quality assurance in enterprise applications. In this context we plan to: --define a novel set of specialized analyses for detecting design flaws in enterprise systems, taking into account their particularities over object-oriented ones. --extend the set of object-oriented structural flaws currently detectable, by employing novel analysis techniques(e.g. data-flow analysis). --define a novel methodology for estimating the effort/cost impact of removing the various design flaws. The methodology aims to support an efficient quality improvement (recovery) process --automatize the defined techniques by means of a feasible tool support.
Integrated Evolutive Environment for Software Quality Assesment
CNCSIS, Project type A, Grant 27688/2005, CNCSIS Code 710, 2005 - 2006
Team: Radu Marinescu, Marius Minea, Ioana Sora, Cristina Marinescu, Petru F. Mihancea, Dan Pescaru, Richard Wettel

The ever increasing impact of software systems and the high degree of societal dependence with respect to them, especially for infrastructure make it extremely important for software to evolve, in order to adapt to the new socio-economic needs. To make software evolution possible, a superior quality of its design and implementation process must be ensured. For this reason, existing software must be supported by automated systems for analysis, diagnose and design improvement, at a high level as well as at a level close to design. The project proposes to build an integrated environment for quality analysis of software systems, with the following characteristics: - to ensure integrating a large number of structural and semantic analysis tools and methods, both existing and newly developed, allowing the combined application of analyses and the construction of new analyses, of higher complexity. - to allow the evolution of analyses and of the mechanisms to process and visualize the gathered experimental data. - to support the analysis of industrial-size software systems implemented in the main currently used programming languages (C++, Java, C), both from a structural and semantic point of view. Building such a system will allow the automation of analyses for large-scale software systems (> 500 kloc), the precise identification of functional and design flaws through the possibility of applying multiple analyses in a uniform fashion, and to obtain superior results by correlating various analysis types.
PROWEST - Promovarea Activitatii de Cercetare in Informatica in Vestul Romaniei
Romanian Education And Research Ministry, CEEX Project, Module 3, Type P-INT-VIZ
Team: Dana Petcu, Marius Minea, Radu Marinescu, Cristina Marinescu, Petru F. Mihancea, Ioana Sora, Dan Pescaru, Dan Cosma, Doru Todinca


Modeling, analysis and verification of software systems
CNCSIS, Project type AT, 2004
Team: Marius Minea, Radu Marinescu, Cristina Marinescu, Dan Pescaru, Ioana Sora

The project has as main goal the development of a set of methods and techniques for handling the problems raised by software development, from specification and modeling to verification and maintenance. The rapid complexity growth of software systems creates significant hurdles in the way of their implementation, reaching the limits of traditional development processes and raising hard problems related to cost, on-time delivery, reliability and maintenance of software. It is acknowledged that solving these problems requires a rigorous underpinning of the software development process, by using high-level modeling capabilities and powerful, automated analysis techniques. The project proposes to bring both theoretical and practically demonstrated contributions to the improvement of the entire software development process, and thus, to the quality, cost, reliability and maintainability of the final software product, starting from key aspects and integrating the individual expertise of team members. To this effect, in the modeling phase we will use a mechanism based on composable components, with a description language that allows automatic structuring into components starting from descriptions of components and requirements. Following this, the gap between model and implementation will be reduced by using a modeling language and environment based on a meta-description of the application which incorporates the description of the language it was created in. For the implementation, we propose to devise and systematize a method for quality assurance based on software metrics and detection strategies for design defects. This is completed by developing techniques for detecting functional errors using a combination of static analysis and formal verification. By addressing these topics jointly, the project constitutes a step towards the integration of the proposed methods into a uniform development environment.