1 / 19

STAR Software Technology Advanced Research

STAR Software Technology Advanced Research. Paolo Tonella tonella@itc.it ITC-irst Centro per la Ricerca Scientifica e Tecnologica. The STAR project. Web site: http://star.itc.it/ Team: 6 full-time researchers Started in 1999 (prosecution of project PURE: 1994-99)

shasta
Download Presentation

STAR Software Technology Advanced Research

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. STARSoftware Technology Advanced Research Paolo Tonella tonella@itc.it ITC-irst Centro per la Ricerca Scientifica e Tecnologica

  2. The STAR project • 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. 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.

  3. Competences • Reverse Engineering (code analysis and restructuring; coding standards) • Web applications (analysis and testing; accessibility; multilingual sites) • Testing (test automation, object oriented testing)

  4. Applications • CERN (Alice, ATLAS, LHCb) – reverse engineering and coding conventions. • WebFAQ (Web: Flexible Access and Quality) – quality support for Web applications.

  5. 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.

  6. C++ code analysis: Language model

  7. C++ code analysis:Tool architecture

  8. 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.

  9. 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(); } } }

  10. Coding conventions:Alice, ATLAS, LHCb

  11. 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.).

  12. 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.

  13. Cjj: constraint verification tool

  14. 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.

  15. Reverse engineering of UML diagrams:Class diagram with containers

  16. Reverse engineering of UML diagrams:Object diagram

  17. Reverse engineering of UML diagrams:Interaction diagrams

  18. 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)

  19. Future directions • Aspect Oriented Programming • Object Oriented testing (test case generation; state based testing; structural testing)

More Related