STAR Software Technology Advanced Research - Indico

Download Report

Transcript STAR Software Technology Advanced Research - Indico

STAR
Software Technology Advanced
Research
Paolo Tonella
[email protected]
ITC-irst
Centro per la Ricerca
Scientifica e Tecnologica
The STAR project
The project aims at the development and field
validation of novel approaches for the comprehension
of the software, supporting the process of its
understanding, testing, and evolution.




Web site: http://star.itc.it/
Team: 6 full-time researchers
Started in 1999 (prosecution of project PURE: 1994-99)
More than 25 conference publications and 14 journal papers
since 1999.
Competences



Reverse Engineering (code analysis and
restructuring; coding standards)
Web applications (analysis and testing;
accessibility; multilingual sites)
Testing (test automation, object oriented
testing)
Applications


CERN (Alice, ATLAS, LHCb) – reverse
engineering and coding conventions.
WebFAQ (Web: Flexible Access and Quality)
– quality support for Web applications.
C++ code analysis



Requires the ability to parse any compilable
C++ program (templates, namespaces, etc.).
May have several different uses (verification
of coding conventions, reverse engineering,
restructuring, structural testing).
Should handle preprocessor and macro
directives, and should separate user from
library code.
C++ code analysis:
Language model
C++ code analysis:
Tool architecture
Coding conventions




Improve code readability (comments, names).
Support group development, by introducing a shared
programming standard.
Increase maintainability, making the code easier to
understand for new programmers.
Reduce the likelihood of inserting bugs, by
disciplining the use of programming constructs.
Coding conventions:
Example of implementation
check () {
modules = CPPParser.getModules();
foreach (m in modules) {
classes = m.getClasses();
foreach (c in classes) {
name = c.getName();
if (! name.startsWith("Ali"))
printViolationMessage();
}
}
}
Coding conventions:
Alice, ATLAS, LHCb
Java as a reference language



Java was designed with the goal of
supporting a clean programming style.
Troublesome features of languages such as
C++ have been excluded (global variables,
pointer manipulation, goto statements, etc.).
However, Java may be not an option for
several reasons (performances, libraries,
legacy code, etc.).
Cjj: a subset of C++ compliant with
Java
P. Tonella and A. Potrich, "Cjj: a subset of C++ compliant with
Java", Science of Computer Programming, Vol 42/2-3, pp.
229-271, January 2002.
Cjj: constraint verification tool
Reverse engineering





The code is the most reliable source of information about the
structure and behavior of a program.
Alternative information sources are often missing at all or
unreliable.
Reverse engineering aims at abstracting the information in the
code to a level that is easier to use during program
understanding and modification (e.g., UML diagrams).
The problem in reverse engineering is identifying meaningful
information and disregarding irrelevant, implementative details.
Moreover, static approaches consider every execution path as
possible, while dynamic approaches produce partial results.
Reverse engineering of UML diagrams:
Class diagram with containers
Reverse engineering of UML diagrams:
Object diagram
Reverse engineering of UML diagrams:
Interaction diagrams
Other activities








Static and dynamic model extraction for Web applications
Structural and statistical testing of Web applications
Alignment of multilingual Web sites (MLHTML – Multi Lingual
HTML)
Web site accessibility
Automatic program transformation (currently applied to HTML)
Concept analysis for code restructuring
Program slicing (Web application slicing; decomposition slicing)
Empirical study of the open source software development
process (GRASS case study)
Future directions


Aspect Oriented Programming
Object Oriented testing (test case generation;
state based testing; structural testing)