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.