My publications are available in my ResearchGate and Google Scholar profiles. They are also available in my Curriculum Lattes (in Portuguese). My research interests are listed below within a brief explanation and current research projects.

Students are welcome to join our research projects, as well as to propose new ones within the scope of my research interests.

If you want to join me for research, send me an email at diogo.mendonca [at] cefet-rj [dot] br.

1.Practical software product quality assessment and improvement

Nowadays the research area of software quality is changing their focus from software process improvement (SPI) to software product quality. This changing of focus is partially motivated by the maturity of SPI area and consolidation of agility practices in the industry. Software quality models, such as ISO25001, involve aspects as functional suitability, reliability, performance efficiency, operability, security, compatibility, maintainability, and portability. There are several proposals to measure and improve software quality attributes. However, sometimes those proposals cannot be easily applied in practice. They might rely on process metrics, software documentation, effortful approaches that hinder their applicability in industry. This research portfolio aims to coordinate research projects that propose novel approaches to practical software product quality assessment and improvement.

1.1 Pattern-Driven Maintenance: A method to prevent latent unhandled exceptions in web applications.

Research conducted during my PhD thesis in Software Engineering at PUC-Rio advised by Prof. Marcos Kalinowski and Prof. Arndt von Staa.

Unhandled exceptions affect the reliability, usability, and security of web applications. They can be identified server-side of a web application by inspecting their server logs. However, only defects that are exercised produce failures present in log files. Unhandled exceptions might be latent, i.e., not exercised yet, present in source code waiting for the time when they will produce failure. Pattern-Driven Maintenance is a method that intends to provide static analysis rules to precisely locate those latent unhandled exceptions, and thus automatically alerting developers about them. More information about PDM can be found in the following publication:

MENDONÇA, Diogo S. et al. Applying pattern-driven maintenance: a method to prevent latent unhandled exceptions in web applications. In: Proceedings of the 12th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement. ACM, 2018. p. 31.s.

1.2 Development of support tools for working with source code patterns.

Pattern-Driven Maintenance relies on defect patterns. Our studies (unpublished yet) showed that it is not easy for novice maintainers to identify, document, and program static analysis rules that locate defect patterns. This research project aims to develop novel tools to support working with defect patterns as well as evaluate the developed tools in practice. (2019-1 to 2019-2)

(Students are needed, please contact me if you are interested in this project)

2 Development of innovative software architecture and design solutions

Challenging problems need smart software solutions. Sometimes those solutions are not promptly available in literature or practice. The research field of applied software architecture studies the design of software structure to solve a software system problem within their constraints. Frequently there are several possible solutions for the same problem and finding the one that better accommodates, and balance stakeholders’ needs is indeed a research problem. Architectural solutions can be published as blueprints, with associated case studies and proofs-of-concept, to help other architects when facing similar challenges. Furthermore, innovative solutions for real issues can aggregate value for society, thus providing technological innovation on software services.

2.1 A workflow integrated solution for data imputation

Capstone undergraduate project of Letícia Moura advised by Prof. Jorge Soares and co-advised by me. (2018-2 to 2019-1)

Appraisal imputation system was developed among some software projects conducted by Prof. Jorge Soares and his students. However, the parts of the Appraisal system that deal with different kinds of imputations were not integrated, thus hindering the usage of more sophisticated imputation techniques. As an architectural candidate solution, we proposed the use of existent open-source workflow systems to incorporate the parts of Appraisal and provide flexibility on the development of more sophisticated imputation strategies. We will evaluate the leading open source workflow solution by running an integrated imputation task in each one of them. After assessing and deciding which software better fits to integrate the parts of Appraisal, we will document the architectural solution for guiding other software architects that faces a similar challenge and supporting Appraisal evolution.

2.2 Blockchain scalability

A research project conducted by the independent researcher Carlos Moreira in partnership with Prof. Pedro Gonzalez and me. (2018-2 to 2019-1)

Blockchain technology raised its popularity with Cryptocurrency wave in the last years. Although blockchain is considered and trusted as a secure technology, it has some scalability problems. Proof-of-work (PoW), the main consensus algorithm used in blockchain technology, is computation-intensive. As PoW need to run in all nodes of the chain, it makes large distributed applications (DApps) consuming a massive electricity power. Additionally, the immutable characteristic of blockchain technology make the chain only to grow up, which might cause storage problems in long-term large distributed applications. In this research project, we aim to propose solutions to blockchain scalability problems.

2.3 Secure IoT door system

Research conducted in partnership with Prof. Carlos Otávio Schocair. (2018-2 to 2019-1)

Internet-of-Things (IoT) is a buzzword for systems with devices that are connected and controlled from the internet. In the context of smart homes, door system is especially critical since can compromise residence security. IoT solutions for door system do not provide a rationale and evaluation of security system, letting doubts about its effectiveness. This project aims to propose an IoT system solution for a door system, with open documentation and evaluation data, allowing system engineering to assure its security.

(Students are needed, please contact me if you are interested in this project)

3 Innovation in software engineering education

Learning software engineering is hard, or even impossible, without practice. Traditional teaching methods, with expositive classes and exercises, do not provide the experience needed to student effectively work with software development. The software engineer must associate technical, business and interpersonal skills to be competent in industry. University usually provide only technical skills, letting the others uncovered. New approaches that approximate students of software engineer conditions of practice are needed for filling this gap.

3.1 Designing Dojo

Capstone undergraduate project of Felipe Mello advised by me with the partnership of Prof. Eduardo Bezerra. (2017-2 to 2019-1)

Design patterns are typically part of computer science courses syllabus. However, its comprehension and correct application are a challenge for students since they have little experience with software design. In this way, alternative approaches are needed for teaching design patterns. In this research, we propose a participative and collaborative method for teaching design patterns inspired on Coding Dojo called Designing Dojo. For confidentiality reasons, further information about this project will be provided after its paper publication.

3.2 Sentiment x Performance in Software Engineering

Research conducted by the master’s degree students Rodolpho Nascimento e Leonardo Santos in partnership with me and Prof. Gustavo Guedes. (2018-2 to 2019-1)

Software engineering is a mainly human-base activity. As expected, personality and affective state might affect the software engineer’s performance. In this project, we aim to understand how these factors might affect the software engineer’s performance. For confidentiality reasons, further information about this project will be provided after its paper publication.