My research interests include Predictive Analytics for Software Engineering, Search-Based Sofware Engineering, and Empirical Software Engineering, with a focus on software project managment, software measures, software testing, and app stores analytics. A brief description of each area is given below.
For further information about my current research work see my research group web page SOLAR.

Predictive Analytics for Software Engineering

Software has nowadays pervaded all aspects of our lives. This allows the production and collection of a large amount of information about people's behaviours and decisions. Predictive analytics is the practice of exploiting such information through intelligent systems able to identify patterns and predict future outcomes and trends. Applied to Software Engineering, predictive analytics can be used to understand software processes, products and customers in order to maximise product quality, users' satisfaction, and revenues. Various automated approaches based on data mining, artificial intelligence, machine or statistical learning have been proved to be useful to this end. Area of applications are, for example, project management , development effort estimation , defect prediction , software testing and app store analysis.
by Federica Sarro

Search Based Software Engineering

The term Search Based Software Engineering (SBSE) was first used by Harman and Jones in 2001. The term "search" is used to refer to the metaheuristic search-based optimization techniques. Search Based Software Engineering seeks a fundamental shift of emphasis from solution construction to solution description. Rather than devoting human effort to the task of finding solutions, the search for solutions is automated as a search, guided by a fitness function, defined by the engineer to capture what is required rather than how it is to be constructed. In many ways, this approach to Software Engineering echoes, at the macro level of Software Engineering artifacts, the declarative programming approach, which applies at the code level; both seek to move attention from the question of "how" a solution is to be achieved to the question of "what" properties are desirable."
From "Why the Virtual Nature of Software Makes it Ideal for Search Based Optimization", Mark Harman

Empirical Software Engineering

"Like physics, medicine, manufacturing, and many other disciplines, software engineering requires the same high level approach for evolving the knowledge of the discipline; the cycle of model building, experimentation and teaming. We cannot rely solely on observation followed by logical thought. Software engineering is a laboratory science. It involves an experimental component to test or disprove theories, to explore new domains. We must experiment with techniques to see how and when they really work, to understand their limits, and to understand how to improve them. We must learn from application and improve our understanding."
From "The Role of Experimentation in Software Engineering: Past, Current, and Future", Victor R. Basili


E-mail: f.sarro at
Phone: +44 (0) 2031087003 (57003)
Address: Department of Computer Science, University College London, 66-72 Gower Street