Marcelo de Almeida Maia
Federal University of Uberlandia
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Marcelo de Almeida Maia.
aspect-oriented software development | 2011
Eduardo Figueiredo; Alessandro Garcia; Marcelo de Almeida Maia; Gabriel Ferreira; Camila Nunes; Jon Whittle
Many concern metrics have been defined to quantify properties of crosscutting concerns, such as scattering, tangling, and dedication. To quantify these properties, concern metrics directly rely on the projection (assignment) of concerns into source code. Although concern identification tools have emerged over the last years, they are still rarely used in practice to support concern projection and, therefore, it is a task often performed manually. This means that the results of concern metrics are likely to be influenced by how accurately programmers assign concerns to code elements. Even though concern assignment is an important and long-standing problem in software engineering, its impact on accurate measures of crosscutting concerns has never been studied and quantified. This paper presents a series of 5 controlled experiments to quantify and analyse the impact of concern projection on crosscutting concern measures. A set of 80 participants from 4 different institutions projected 10 concern instances into the source code of two software systems. We analyse the accuracy of concern projections independently made by developers, and their impact on a set of 12 concern metrics. Our results suggest that: (i) programmers are conservative when projecting crosscutting concerns, (ii) all concern metrics suffer with such conservative behaviour, and (iii) fine-grained tangling measures are more sensitive to different concern projections than coarse-grained scattering metrics.
mining software repositories | 2013
Lucas Batista Leite de Souza; Marcelo de Almeida Maia
Software metrics is a valuable mechanism to assess the quality of software systems. Metrics can help the automated analysis of the growing data available in software repositories. Coupling metrics is a kind of software metrics that have been extensively used since the seventies to evaluate several software properties related to maintenance, evolution and reuse tasks. For example, several works have shown that we can use coupling metrics to assess the reusability of software artifacts available in repositories. However, thresholds for software metrics to indicate adequate coupling levels are still a matter of discussion. In this paper, we investigate the impact of software categories on the coupling level of software systems. We have found that different categories may have different levels of coupling, suggesting that we need special attention when comparing software systems in different categories and when using predefined thresholds already available in the literature.
Journal of Digital Imaging | 2009
Denise Guliato; Ricardo S. Bôaventura; Marcelo de Almeida Maia; Rangaraj M. Rangayyan; Mariângela S. Simedo; Túlio Augusto Alves Macedo
We propose the design of a teaching system named Interpretation and Diagnosis of Mammograms (INDIAM) for training students in the interpretation of mammograms and diagnosis of breast cancer. The proposed system integrates an illustrated tutorial on radiology of the breast, that is, mammography, which uses education techniques to guide the user (doctors, students, or researchers) through various concepts related to the diagnosis of breast cancer. The user can obtain informative text about specific subjects, access a library of bibliographic references, and retrieve cases from a mammographic database that are similar to a query case on hand. The information of each case stored in the mammographic database includes the radiological findings, the clinical history, the lifestyle of the patient, and complementary exams. The breast cancer tutorial is linked to a module that simulates the analysis and diagnosis of a mammogram. The tutorial incorporates tools for helping the user to evaluate his or her knowledge about a specific subject by using the education system or by simulating a diagnosis with appropriate feedback in case of error. The system also makes available digital image processing tools that allow the user to draw the contour of a lesion, the contour of the breast, or identify a cluster of calcifications in a given mammogram. The contours provided by the user are submitted to the system for evaluation. The teaching system is integrated with AMDI—An Indexed Atlas of Digital Mammograms—that includes case studies, e-learning, and research systems. All the resources are accessible via the Web.
acm symposium on applied computing | 2014
Eduardo Cunha Campos; Marcelo de Almeida Maia
Q&A sites are attracting growing interest of software developers. The categorization of questions in terms of user concerns would open new opportunities to extract valuable information from millions of posts. This paper presents a comparison between different classification algorithms to find the one that best classifies questions from Q&A sites, such as, Stack Overflow. In the classification process, we used the following classification algorithms: Naive Bayes, Multilayer Perceptron, Support Vector Machine, K-Nearest Neighbors, J4.8 Decision Tree and Random Forests. We conducted an experimental study with Stack Overflow questions with posts equally divided into three domain categories: How-to-do-it, Need-to-know and Seeking-something. The attributes were extracted from a textual analysis of the title and body of each question. We considered a total of 8 attributes to get the data for each question. We found a classifier with an overall success rate of 84.16% and 92.5% on How-to-do-it category.
brazilian symposium on software engineering | 2014
Lucas Batista Leite de Souza; Eduardo Cunha Campos; Marcelo de Almeida Maia
Developers of reusable software elements, such as libraries, usually have the responsibility to provide comprehensive and high quality documentation to enable effective software reuse. The effective reuse of libraries depends upon the quality of the API (Application Program Interface) documentation. Well established libraries typically have comprehensive API documentation, for example in Javadocs. However, they typically lack examples and explanations, which makes the effective reuse of the library difficult. StackOverflow.com (SO) is a Question and Answer service directed to issues related to software development. On SO, developers post questions related to a programming topic and other members of the SO community can provide answers to help them solving their problems. Despite the increasing adoption of SO, the information related to a particular topic is spread across the website. Thus, SO still lacks organization of its crowd knowledge. In this paper, we present an automatic approach that organizes the information available on SO in order to build cookbooks (recipe-oriented books) for APIs. The cookbooks are meant to be used through an exploration process (browsing). In order to evaluate the proposed approach, we have generated cookbooks for three APIs widely used by the software development community: SWT, STL and LINQ. Desired properties that cookbooks must meet were identified and a study was conducted to assess to what extent the generated cookbook meet those properties.
conference on software maintenance and reengineering | 2011
Luciana Lourdes Silva; Klérisson Vinícius Ribeiro Paixão; Sandra de Amo; Marcelo de Almeida Maia
Perfective changes in well-established software systems are easier to perform when the development team has a solid understanding of the internals. However, it is reasonable to assume that the use of an open source system to incorporate new features and obtain a new software product is an appealing approach instead of coding a new product from scratch. Considering this scenario, and considering that it is not uncommon that systems are poorly documented, there is no widely accepted approach to guide the perfective maintenance for developers with low understanding of the system. This work proposes a new method based on the analysis of execution traces for locating evolution points in the source code where changes should be performed. The proposed method was evaluated with three open source systems and the conclusion suggests a significant impact on effort reduction.
Journal of Software: Evolution and Process | 2016
Eduardo Cunha Campos; Lucas Batista Leite de Souza; Marcelo de Almeida Maia
Stack Overflow (SO) is a question and answer service directed to issues related to software development. In SO, developers post questions related to a programming topic and other members of the site can provide answers to help them. The information available on this type of service is also known as ‘crowd knowledge’ and currently is one important trend in supporting activities related to software development.
international conference on software maintenance | 2015
Luciana Lourdes Silva; Marco Tulio Valente; Marcelo de Almeida Maia; Nicolas Anquetil
Co-change clusters are groups of classes that frequently change together. They are proposed as an alternative modular view, which can be used to assess the traditional decomposition of systems in packages. To investigate developers perception of co-change clusters, we report in this paper a study with experts on six systems, implemented in two languages. We mine 102 co-change clusters from the version history of such systems, which are classified in three patterns regarding their projection to the package structure: Encapsulated, Crosscutting, and Octopus. We then collect the perception of expert developers on such clusters, aiming to ask two central questions: (a) what concerns and changes are captured by the extracted clusters? (b) do the extracted clusters reveal design anomalies? We conclude that Encapsulated Clusters are often viewed as healthy designs and that Crosscutting Clusters tend to be associated to design anomalies. Octopus Clusters are normally associated to expected class distributions, which are not easy to implement in an encapsulated way, according to the interviewed developers.
Journal of Systems and Software | 2013
Marcelo de Almeida Maia; Raquel Fialho Lafetá
Software maintainers frequently strive to locate source code related to specific software features. This situation is mostly observable when features are scattered in the code. Considering this problem, several approaches for feature location using execution traces have been developed. Nonetheless, the practice of post-mortem analysis based on execution traces is not fully incorporated in the daily practice of software maintainers. Empirical studies that reveal strengths and weaknesses on the use of execution traces in maintenance activities could better explain the role of execution traces in software maintenance. This study reports on a controlled experiment conducted with maintainers performing actual maintenance activities on systems of different sizes unknown to them. There are benefits from systematic use of execution traces: the reduction of the maintenance activity time and greater accuracy of the activity outcome. Other qualitative observations were the lower level of activity difficulty perceived by the participants that used execution trace information and that this kind of information seems to be less useful in maintenance activities where the problem of feature scattering does not occur clearly.
empirical software engineering and measurement | 2017
Eduardo Cunha Campos; Marcelo de Almeida Maia
[Background]: There are more bugs in real-world programs than human programmers can realistically address. Several approaches have been proposed to aid debugging. A recent research direction that has been increasingly gaining interest to address the reduction of costs associated with defect repair is automatic program repair. Recent work has shown that some kind of bugs are more suitable for automatic repair techniques. [Aim]: The detection and characterization of common bug-fix patterns in software repositories play an important role in advancing the field of automatic program repair. In this paper, we aim to characterize the occurrence of known bug-fix patterns in Java repositories at an unprecedented large scale. [Method]: The study was conducted for Java GitHub projects organized in two distinct data sets: the first one (i.e., Boa data set) contains more than 4 million bug-fix commits from 101,471 projects and the second one (i.e., Defects4J data set) contains 369 real bug fixes from five open-source projects. We used a domain-specific programming language called Boa in the first data set and conducted a manual analysis on the second data set in order to confront the results. [Results]: We characterized the prevalence of the five most common bug-fix patterns (identified in the work of Pan et al.) in those bug fixes. The combined results showed direct evidence that developers often forget to add IF preconditions in the code. Moreover, 76% of bug-fix commits associated with the IF-APC bug-fix pattern are isolated from the other four bug-fix patterns analyzed. [Conclusion]: Targeting on bugs that miss preconditions is a feasible alternative in automatic repair techniques that would produce a relevant payback.