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.
2012 – 2016 : Researcher - University of Bern, SwitzerlandI 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., ItalyI 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.
2012 – 2016 : PhD in Computer Science - University of Bern, Switzerlandexpected graduation date: 22 March 2016
Thesis: “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%]
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.
MareaMarea 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.
PangeaPangea 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.
DPBDPB 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.
- 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 →
- 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 →
- 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 →
- 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
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 →