Our research on Greenability focuses on the environmental sustainability of software systems, addressing both technical and non-technical dimensions.
We investigate practices, principles, and strategies to minimize and mitigate software’s environmental impact throughout its lifecycle. For example, we conduct empirical studies on the relationships between code smells, refactoring, and energy consumption, as well as exploring the broader socio-technical factors influencing sustainable software development. We aim to provide actionable insights and innovative solutions that empower development teams to build greener, more sustainable software systems and processes.
In the pursuit of sustainable software engineering, our research delves into the dual impact of engineering practices—on both the engineered product and the humans behind its creation.
We aim to provide a holistic understanding of sustainability in software engineering, guiding practices that are both environmentally and socially responsible. For example, we examine how software quality attributes, such as code complexity and technical debt, influence energy consumption, uncovering ways to minimize environmental footprints. Yet, sustainability transcends the software itself; we also explore its effects on the people and processes driving development. For instance, we investigate how technical debt affects developers’ well-being and job satisfaction, framing these as critical dimensions of sustainable practices.
By analyzing the interplay between software engineering processes, practices, and their outcomes, we seek to understand how decisions in design and implementation influence both environmental impact and the work experience of development teams.
In this research line at CoSELab, some of the questions we seek to investigate are:
- How do software quality attributes, such as code complexity and technical debt, influence energy consumption and environmental impact throughout a software system’s lifecycle?
- What are the most critical code smells that significantly impact software energy consumption, and how can refac- toring strategies be optimized to mitigate their effects?
- How does the complexity of software architecture contribute to or mitigate energy consumption across different execution environments (e.g., mobile, cloud, embedded systems)?
- How does technical debt affect software developers’ well-being, job satisfaction, and overall productivity?
- What are the socio-technical factors that influence the adoption of sustainable software engineering practices within development teams and organizations?
Energy optimization of large-scale AI models
With the rise of AI and its widespread adoption, the environmental impact of training and deploying large-scale AI models has become a concern and an area of inquiry. Training state-of-the-art models, such as large language models, requires immense computational resources, leading to substantial energy consumption.
As software engineering researchers, we recognize the need to explore practices and methods that mitigate the energy demands of AI systems. This includes investigating how to optimize model training, reduce resource-intensive inference, and incorporate energy-efficient strategies throughout the AI product lifecycle.
Furthermore, we aim to understand how sustainable AI practices can align with the goals of software developers and organizations to achieve both technological innovation and environmental responsibility. In alignment with our mission to advance sustainable software engineering practices, we are interested in exploring how software engineering principles can mitigate the energy demands of AI systems.
Some of the questions, we plan to investigate are:
- How can software engineering practices and tools be adapted to support the development of energy-efficient AI models?
- How can software architectures for AI-driven systems be optimized to minimize energy consumption during both training and inference?
- What socio-technical barriers exist in adopting energy-efficient AI practices, and how can they be addressed?
By investigating these questions, we aim to contribute to software engineering, where both the people involved and the products themselves become not only aware of sustainable practices but also contribute to a future and a culture where software engineering is environmentally conscious, socially responsible, and inherently sustainable.