2022
Autores
Sousa, TB; Ferreira, HS; Correia, FF;
Publicação
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING
Abstract
This work takes as a starting point a collection of patterns for engineering software for the cloud and tries to find how they are regarded and adopted by professionals. Existing literature assesses the adoption of cloud computing with a focus on business and technological aspects and falls short in grasping a holistic view of the underlying approaches. Other authors delve into how independent patterns can be discovered (mined) and verified, but do not provide insights on their adoption. We investigate (1) the relevance of the patterns for professional software developers, (2) the extent to which product and company characteristics influence their adoption, and (3) how adopting some patterns might correlate with the likelihood of adopting others. For this purpose, we survey practitioners using an online questionnaire (n = 102). Among other findings, we conclude that most companies use these patterns, with the overwhelming majority (97 percent) using at least one. We observe that the mean pattern adoption tends to increase as companies mature, namely when varying the product operation complexity, active monthly users, and company size. Finally, we search for correlations in the adoption of specific patterns and attempt to infer causation, providing further clues on how some practices depend or influence the adoption of others. We conclude that the adoption of some practices correlates with specific company and product characteristics, and find relationships between the patterns that were not covered by the original pattern language and which might deserve further investigation.
2021
Autores
Miranda, P; Faria, JP; Correia, FF; Fares, A; Graça, R; Moreira, JM;
Publicação
SAC '21: The 36th ACM/SIGAPP Symposium on Applied Computing, Virtual Event, Republic of Korea, March 22-26, 2021
Abstract
Forecasts of the effort or delivery date can play an important role in managing software projects, but the estimates provided by development teams are often inaccurate and time-consuming to produce. This is not surprising given the uncertainty that underlies this activity. This work studies the use of Monte Carlo simulations for generating forecasts based on project historical data. We have designed and run experiments comparing these forecasts against what happened in practice and to estimates provided by developers, when available. Comparisons were made based on the mean magnitude of relative error (MMRE). We did also analyze how the forecasting accuracy varies with the amount of work to be forecasted and the amount of historical data used. To minimize the requirements on input data, delivery date forecasts for a set of user stories were computed based on takt time of past stories (time elapsed between the completion of consecutive stories); effort forecasts were computed based on full-time equivalent (FTE) hours allocated to the implementation of past stories. The MMRE of delivery date forecasting was 32% in a set of 10 runs (for different projects) of Monte Carlo simulation based on takt time. The MMRE of effort forecasting was 20% in a set of 5 runs of Monte Carlo simulation based on FTE allocation, much smaller than the MMRE of 134% of developers' estimates. A better forecasting accuracy was obtained when the number of historical data points was 20 or higher. These results suggest that Monte Carlo simulations may be used in practice for delivery date and effort forecasting in agile projects, after a few initial sprints. © 2021 ACM.
2021
Autores
Teixeira, G; Bispo, J; Correia, FF;
Publicação
SOAP@PLDI 2021: Proceedings of the 10th ACM SIGPLAN International Workshop on the State Of the Art in Program Analysis, Virtual Event, Canada, 22 June, 2021
Abstract
We propose a mechanism to raise the abstraction level of source-code analysis and robustly support multiple languages. Built on top of the LARA framework, it allows sharing language specifications between LARA source-to-source compilers, and enables the mapping of a virtual AST over the nodes of ASTs provided by different, unrelated parsers. We use this approach to create a language specification for Object-Oriented (OO) languages and add support for three different LARA compilers. We evaluate it by implementing a library of 18 software metrics using this language specification and apply the metrics to source code in four programming languages (C, C++, Java, and JavaScript). We compare the results with other tools to evaluate the approach.
2022
Autores
Reis, D; Piedade, B; Correia, FF; Dias, JP; Aguiar, A;
Publicação
IEEE ACCESS
Abstract
Cloud computing and Infrastructure-as-Code (IaC), supported by technologies such as Docker, have shaped how many software systems are built and deployed. Previous research has identified typical issues for some types of IaC specification but not why they come to be, or they have delved into collaboration aspects but not into technical ones. This work aims to characterize the activities around two particular kinds of IaC specification-Dockerfiles and docker-compose.yml files. We seek to know how they can be better supported and therefore study also what approaches and tools practitioners employ. We used an online questionnaire to gather data. The first part of the study reached 68 graduate students from a study program on informatics engineering, and the second one 120 professional software developers. The results show that most of the activities of the process of developing a Dockerfile are perceived as time-consuming, especially when the respondents are beginners with this technology. We also found that solving issues using trial-and-error approaches is very common and that many developers do not use ancillary tools to support the development of Dockerfiles and docker-compose.yml files.
2020
Autores
Santos, J; Correia, FF;
Publicação
EuroPLoP '20: European Conference on Pattern Languages of Programs 2020, Virtual Event, Germany, 1-4 July, 2020
Abstract
Software documentation is an important part of the captured knowledge of a software project and documentation patterns have often been used as a systematic way to describe good practices on software documentation. Still, many software teams are challenged by what to document, how to keep the documentation consistent and how to make their consumers aware of the relevant documents. A literature review was done over 14 publications and identified 16 quality attributes and 114 patterns about software documentation. This knowledge was analysed and classified and led to the proposal of new categories and relationships between the existing patterns. These are depicted as a new pattern map that provides a new perspective of documentation patterns and can be used to guide teams in adopting software documentation practices. © 2020 Owner/Author.
2022
Autores
Vale, G; Correia, FF; Guerra, EM; Rosa, TD; Fritzsch, J; Bogner, J;
Publicação
2022 IEEE 19TH INTERNATIONAL CONFERENCE ON SOFTWARE ARCHITECTURE COMPANION (ICSA-C 2022)
Abstract
This package provides all published resources used and produced in the context of the research study leading to the article "Designing Microservice Systems Using Patterns: An Empirical Study on Quality Trade-Offs", presented in ICSA 2022's technical track. It includes materials used to conduct the study as well as aggregated and anonymized data produced in its context. Making this package available intends to foster transparency and to support researchers attempting to replicate the study. The package complies with the Research Object Reviewed (ROR) and Open Research Object (ORO) badges, awarded by the Artifact Evaluation Track at ICSA 2022, and is available under Creative Commons Attribution 4.0 International. The package is openly available in Zenodo [1] and the article is available in ICSA 2022's proceedings [2] and as a pre-print [3]. © 2022 IEEE.
The access to the final selection minute is only available to applicants.
Please check the confirmation e-mail of your application to obtain the access code.