Empirical Software Engineering concerns understanding the practical processes of software product development in order to leverage the expertise and experience of real people. We use a range of qualitative and quantitative approaches, from in situ observation of professional practice to controlled studies, from data extraction from software repositories and its visualisation to modelling and simulation. Our emphasis is on practice in naturalistic settings, naturally-occurring artefacts, and reports from practitioners.
- People. We ‘pick the brains’ of experienced software developers in industry to distinguish the reality from the ‘mythology’, e.g.: what motivates the developers, how notations and representations are used in software development, whether clones are harmful to development.
- Process. Our approach emphasises research ‘in the wild’ and includes multiple methods, triangulation, and longitudinal studies.
- Products. We identify and assess design principles, articulate effective design and development practices, evaluate tool use in practice, identify factors that contribute to effective social contexts for effective software development, and discern meaningful changes from multiple viewpoints.
- Knowledge Sharing in a Large Agile Organisation: a Survey Study (Paper)
- Error Detection and Recovery in Software Development (Thesis)
- Software Design Decoded: 66 Ways Experts Think (Book)
- The Role of Ethnographic Studies in Empirical Software Engineering (Paper)
- In the best families: tracking and relationships (Paper)
- Contravision: Exploring users' reactions to futuristic technology (Paper)
- Studying Professional Software Design (Project)