My name is Andrea Caracciolo.
I am a software engineer with academic experience.
In the recent past, I developed tools and techniques for assessing the quality of a software system with regards to its specification.
I'm highly interested in architectural design, software analysis and testing.
- email: mail at andrea-caracciolo.com
- mobile: +41 78 669 30 12
- skype: aef.caracciolo
- social: LinkedIn, Twitter
Work Experience
2012 – 2016 : Researcher - University of Bern, Switzerland
I developed tools and techniques for assessing the quality of software systems and supporting developers in maintenance activities.- Collaboration: I had frequent collaborations with software architects and developers working in medium-large Swiss companies. I performed a field-study with 14 professionals to identify requirements for a conformance checking solution. I validated my approach through multiple one-year-long case studies collaborating with several industrial organizations (e.g. an international consortium of vendors working on a product used by millions of users; a team of 30 developers working for one of the top-30 largest companies in Switzerland).
- Leadership: I supervised 4 BSc/MSc students in the writing of their thesis. I was teaching assistant for a software engineering course and managed the planning and execution of multiple concurrent projects in a class of 30-50 students for 3 years.
- Writing/Presenting: I wrote several research papers and presented my work at prominent international conferences. I taught several lectures in various university courses.
- Concepts: software analysis, (meta-)modeling, requirements elicitation, data mining, OO design.
2007 – 2009 : Co-founder, Software Engineer - Neoinet Ltd., Italy
I co-founded Neoinet, a company selling web hosting solutions to 50-100 customers.- Collaboration: I discussed design alternatives and commercial strategies with the second co-founder. I managed customer relationships.
- Leadership: I designed, implemented and automated core business processes.
- Concepts: business model design, frontend/backend web development.
Education
2012 – 2016 : PhD in Computer Science - University of Bern, Switzerland
expected graduation date: 22 March 2016Thesis: “A Unified Approach to Architecture Conformance Checking”.
- Presentations: WICSA 2015 (academic conference), Die Mobiliar (industrial presentation)
- The thesis proposes a cost-effective approach to architecture conformance checking. The approach consists of an extensible, declarative and empirically-grounded specification language and a corresponding interpreter which checks user-defined invariants through off-the-shelf analysis tools. The approach builds on several empirical studies and was validated in the context of two large industrial projects.
2009 – 2012 : MSc in Computer Science - Università degli Studi Milano-Bicocca, Italy [GPA: summa cum laude]
Thesis: “A Web Application for Design Pattern Detection Tools Benchmarking” [italian].- Presentations: CSMR 2012 (academic conference)
- The thesis consisted in developing a web platform for assessing the accuracy of existing design patterns detection techniques. To compare results produced by different tools, I designed a model for encoding design pattern instances and a distance metric based on that model.
2005 – 2009 : BSc in Computer Science - Università degli Studi Milano-Bicocca, Italy [GPA: 95%]
2000 – 2005 : High School - Liceo Scientifico Statale Leonardo Da Vinci, Milano, Italy [GPA: 89%]
Projects
Dictō + Probō
Dictō is a language that aims at supporting software architects in formalizing and testing prescriptive assertions on functional and non-functional aspects of a software system. Instead of dealing with multiple tool-specific formalisms, one can define several types of architectural constraints using one uniform, highly-readable, formal language. Rules can be automatically evaluated using Probō, which integrates widely-adopted off-the-shelf analysis tools. Our technique has been successfully integrated with SonarQube, Jenkins (live installation) and Teamcity (live installation).- Dictō website: Catalog of supported rules and user manual.
- Preliminary study: An empirical analysis on the adoption of conformance checking solution in industrial organizations.
- Industrial validation: The approach has been validated in the context of several industrial projects.
Marea
Marea is a tool that suggests optimal refactoring strategies for removing dependency cycles at package-level. This is done by simulating different evolutionary scenarios and evaluating their cost-effectiveness using a purpose-designed profit function.- Publication: A comprehensive description of the technique.
- MSc thesis: An exhaustive description of the implementation.
Pangea
Pangea is a workbench that eases multi-language static analysis of software corpora by providing a repository of language-independent object model snapshots. Arbitrary complex structural analysis scripts can be run in batch on a large number of open source systems.- Pangea website: Short introduction, tutorial and sample analyses.
- Conference paper: An exhaustive description of the technique.
DPB
DPB is a benchmark platform for assessing the accuracy of current design patterns detection techniques. We designed a model for encoding design pattern instances and a distance metric for supporting comparison.- DPB website: actively maintained installation.
- MSc thesis (italian): An exhaustive description of the project.
Publications
Online profiles: Google Scholar, dblp
2016
- . Automated Conformance Monitoring: Exploring the Path to Industrial Adoption. submitted for review. PDF →
- . Marea: a Semi-automatic Decision Support System for Breaking Dependency Cycles. to appear. PDF →
- . Evaluating an Architecture Conformance Monitoring Solution. to appear. PDF →
2015
- . A Unified Approach to Automatic Testing of Architectural Constraints. In Software Engineering (ICSE), 2015 IEEE/ACM 37th IEEE International Conference on, 2 p. 871-874, ACM Press, 2015. DOI PDF →
- . A Unified Approach to Architecture Conformance Checking. In Proceedings of the 12th Working IEEE/IFIP Conference on Software Architecture (WICSA), p. 41-50, ACM Press, May 2015. DOI PDF →
- . On the Evaluation of a DSL for Architectural Consistency Checking. In Extended Abstracts of the Eighth Seminar on Advanced Techniques and Tools for Software Evolution (SATToSE 2015), p. 55—57, July 2015. PDF →
- . Polymorphism in the Spotlight: Studying its Prevalence in Java and Smalltalk. In Proceedings of the 2015 IEEE 23rd International Conference on Program Comprehension, p. 186—195, IEEE Press, 2015. Published. DOI PDF →
2014
- . How Do Software Architects Specify and Validate Quality Requirements?. In European Conference on Software Architecture (ECSA), Lecture Notes in Computer Science 8627 p. 374—389, Springer Berlin Heidelberg, August 2014. DOI PDF →
- . Dicto: A Unified DSL for Testing Architectural Rules. In Proceedings of the 2014 European Conference on Software Architecture Workshops, ECSAW '14 p. 21:1—21:4, ACM, New York, NY, USA, 2014. DOI PDF →
- . Pangea: A Workbench for Statically Analyzing Multi-Language Software Corpora. In Source Code Analysis and Manipulation (SCAM), 2014 IEEE 14th International Working Conference on, p. 71—76, IEEE, September 2014. DOI PDF →
- . Dicto: Keeping Software Architecture Under Control. In ERCIM News 99, October 2014. URL →
2012
- . DPB: A benchmark for design pattern detection tools. In Software Maintenance and Reengineering (CSMR), 2012 IEEE 14th European Conference on, p. 235—244, IEEE, March 2012. DOI PDF
- . A Benchmark for Design Pattern Detection Tools: a Community Driven Approach. In ERCIM News 88, January 2012. URL
2010
- . A benchmark platform for design pattern detection. In International Conferences on Pervasive Patterns and Applications (PATTERNS), ThinkMind Digital Library, November 2010. PDF
Teaching
Taught lectures and labs:
- 2014, 2015: Software Architecture lecture for the Software Engineering course at the University of Bern, Switzerland (time: 2h / year).
- 2014: Software Architecture Recovery lecture for the Software Design and Evolution course at the University of Bern, Switzerland (time: 2h).
- 2013, 2014, 2015: Teaching assistant for the Software Engineering course at University of Bern (time: 14 hours / year).
-
Industrial: General overview,
Swiss company (1),
Swiss company (2).
- Academic Conferences: WICSA 2015, ECSA 2014
- . Continuous Integration with Architectural Invariants — A case study about architectural monitoring in practice. Masters thesis, University of Bern, December 2015. PDF →
- . Marea — A Tool for Breaking Dependency Cycles Between Packages. Masters thesis, University of Bern, January 2015. PDF →
- . Dicto Auto-Complete Engine. Bachelor's thesis, University of Bern, N/A 2016.
- . HIKOMSYS: How I KnOw My SYStem — Learning About Java Dependencies Through Gamification. Bachelor's thesis, University of Bern, July 2015. PDF →