The research line in Software Architecture of our group is focused on addressing the challenges and opportunities associated with the study of different aspects of software systems architecture. Recognizing that software architecture is a fundamental pillar to ensure compliance with quality attributes and adaptability in modern environments, our research covers a broad spectrum of key topics, including:
• Architectural design decisions: exploring styles, tactics, and patterns that guide the structure and behavior of software systems.
• Software quality attributes: analyzing non-functional properties such as performance, scalability, security, interoperability, availability, reliability, evolution, among others.
• Modeling and execution of software architectures: developing models and practices to represent and execute architectures.
• Description and representation of software architectures: investigating languages, tools, and methods that allow architectures to be communicated effectively.
• Verification, validation, and evaluation of software architectures: ensuring that architectures meet their objectives through analysis and testing techniques.
• Teaching software architecture: designing pedagogical strategies to train the next generation of software architects.
Through this line, we seek not only to advance theoretical knowledge in the field, but also to generate a practical impact in the construction of more robust, efficient and adaptable systems.
Over the years, various frameworks and methods have been proposed to organize, control, and improve the development process of software systems. None of these methods is better than the others, each one has a limited scope, and all of them have strengths and weaknesses. Our aim is to study these methods, evaluate them, and also, propose improvements and adaptations to these methods and the tools that support them. The design of tools and technologies to support or automate software development activities is also a subject included in this research line. Associated topics:
• Software Methods
• Software Project Management
• Software Sizing and Estimation
• Human Aspects of Software Engineering
Enterprise architecture's main goal is to ensure the proper alignment between business processes and information technologies, in order to achieve compliance with the strategic goals set up by the organization. That is why the management of the business processes that operate throughout the organization, must be an essential point of support for the fulfillment of those objectives. Thus, a correct implementation of an enterprise architecture, aligned with the respective business process and leveraged in a service-oriented architecture, are, nowadays, a key combination that supports strategic decision making in order to respond quickly and effectively to the organizational and opportunity changes that occur in an increasingly globalized environment. Associated topics:
• Information Systems - IS
• Business Process - BP
• Business Process Management cd - BPM
• Service-Oriented Architecture - SOA
The research line in Model-Driven Software Engineering of our group is focused on exploring the challenges and opportunities associated with the use of models as central artifacts in the design, development, analysis, and maintenance of software systems. Recognizing that models are essential to managing complexity and facilitating automation in software construction, our research covers several key topics, including:
• Modeling languages and notations: exploring and designing domain-specific languages, metamodels and standards that allow representing different levels of abstraction and aspects of the software.
• Model transformations: investigating techniques and tools to transform models into other models or into executable artifacts, such as source code, infrastructure configurations, or test specifications.
• Model-based verification and validation: developing methods to ensure that models meet the functional and non-functional requirements of the system, through simulations, static analysis and automated testing.
Through this line, we aim to advance the knowledge and practices of software engineering, promoting the adoption of model-driven approaches to build more reliable, scalable and adaptable systems, while promoting innovation in tools and methods that facilitate their application in real contexts.
Throughout its life, a software system is repeatedly updated to fulfill the ever changing requirements of its operating environment. Our goal is to analyze these processes of change, build models to describe the past, present and future of the evolution of a software system; and design and implement tools to support and analyze those processes. The study of the evolution of a software system is important because the higher software costs are related to adaptation and maintenance tasks; and because, its lifespan depends heavily on the approaches and techniques used for implementing the required changes, enhancements, and extensions. Associated topics:
• Software Comprehension
• Reengineering
• Software Analysis and Metrics
• Software Visualization