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.
study principles, methods, and tools to create high-quality software systems while meeting the functional and non-functional requirements of stakeholders
study techniques and tools for managing, modifying, and improving software systems throughout their lifecycle to ensure their continued usefulness and value to stakeholders
study methods and technologies for designing, building, and operating computer systems that consist of multiple autonomous components that communicate and coordinate with each other over a network
study the interactions between software developers and software systems, with the aim of improving the usability, efficiency, and effectiveness of software development processes and outcomes
design, implement, and optimize programming languages and their compilers to improve the efficiency, reliability, and usability of software systems
apply data science techniques to software engineering data to gain insights into software development processes, improve software development practices, and support decision-making in software development organizations