Architecture
Modernizing a legacy system is a costly process that requires a deep understanding of the system architecture and its components. In our research, we have proposed ways to use visualization and clustering techniques applied together to provide a higher accuracy on the software architecture recovery process and co-change clusters analysis.
Dependability
Dependability is the property that defines the ability of computer systems to provide a service that they can justifiably rely on. Its major attributes are reliability, safety, availability, and maintainability. Our current research interests are in dependability analysis and modeling in software systems, particularly probabilistic model checking, self-adaptive systems, and goal-oriented requirements engineering.
Experimental Software Engineering
We conduct research activities that employ scientific methods to investigate and understand phenomena related to software development, from literature review to the design of controlled experiments, data collection and statistical analysis, and secondary studies such as systematic reviews and meta-analyses.
Gamification
Gamification is the use of game elements in non-game contexts. Our focus lies on understanding, enhancing, and strategically applying game elements to improve the efficiency and quality of software engineering processes, from design strategies to the analysis of impact metrics.
Gender Diversity
The analysis of Gender Diversity in Software Engineering aims to understand and address existing gender disparities in this domain, examining team representation, access to leadership opportunities, and the cultural perception around gender, to identify barriers and implement strategies that promote equity.
Project Management
Project Management is a guide for creating and delivering software, ensuring that projects are delivered on time, within budget, and with the desired quality, whether adopting agile or traditional methodologies.
Programming Language Features
This research analyzes the characteristics of programming languages, from syntactic constructs to design paradigms, to optimize expressiveness, security, and efficiency in coding, contributing to more robust languages and improved code quality.
Program Transformations
This area focuses on the systematic analysis and manipulation of source code, developing techniques and tools for efficient, controlled and automatic transformation of programs, from refactoring to adapting systems to new requirements.
Requirements Engineering (RE)
Our focus on RE research has recently been devoted mostly to ethical and privacy requirements, investigating techniques, methods, processes, frameworks and tools used in literature and industry to elicit ethical and privacy requirements throughout the software development process.
Secondary Studies
Secondary Studies consolidate and broaden our understanding of existing research in Software Engineering, helping identify gaps in knowledge, avoid duplication and build on established foundations through systematic reviews.
Security and Privacy
Our research group is dedicated to advancing the field of security and privacy requirements in software and systems development, gathering and synthesizing academic and industrial approaches to security and privacy requirements elicitation.
Self-adaptive Systems
Self-adaptive systems are systems able to adjust their behavior in response to their perception of the environment and the system itself. We investigate self-adaptation from the perspective of fault-tolerant computing, distributed systems, and goal-oriented modeling.
Software Architecture and Modularity
This discipline focuses on the design and organization of complex software systems, aiming to understand, design and improve architectural structures that support the functionality and scalability of applications through modular architectures.
Software Engineering and Artificial Intelligence
Focus on conversation-driven development, model-driven development, human-chatbot interaction, and privacy protection, contributing to the evolution of chatbot technologies and pushing the boundaries of their capabilities.
Software Product Line
Software Product Line Engineering (SPLE) aims to develop a large number of software systems that share a common and managed set of features, improving productivity and reducing the time, effort and cost required to develop a family of products.
Software Quality
Our efforts focus on understanding, improving and innovating practices that guarantee efficiency, reliability and usability in software, covering advanced testing methodologies, static code analysis, quality metrics, code review and continuous integration.
