Effective software engineering requires healthy software and teams. A healthy software is maintainable, well-performing, with low technical debt, and based on sound design decisions. A healthy team is productive, diverse and inclusive. And healthy software and team amplify each other. Our research enables the software industry to improve their software and team health.
Large, complex, and long-lived systems are hard to design and maintain! We need evidence-based tools to make architecture decisions and manage technical debt.
There’s too much code in the world! We should rethink the software stack with DSLs for better productivity, reliability, and stakeholder communication.
Building a software system is one thing, but maintaining it is much more expensive: this is the phase we need to prioritize!
To ensure system longevity, reduce environmental footprint, and maintain operational profitability, we need to connect design-time and run time.
Software data is a boundless reservoir empowering decision-making with greater insight and navigating trade-offs relevant to society (e.g., fairness) and the software industry (e.g., developer productivity).
If software development is to evolve, we need human-centered tooling to leverage cross-system knowledge sharing.
Bridging AI and Software Engineering for Smarter, Reliable, and Scalable Systems!
AI for Software Engineering
Software Engineering for AI
Cloud-based Systems
Developer Tools
Domain-Specific Languages
Empirical Software Engineering
Human Factors
Maintenance and Evolution
Mining Software Repositories
Open Source
Software Architecture
Sustainable Software
Technical Debt