Mívian M. Ferreira, G. Avelino, M. T. Valente, K. Ferreira
{"title":"A Comparative Study of Algorithms for Estimating Truck Factor","authors":"Mívian M. Ferreira, G. Avelino, M. T. Valente, K. Ferreira","doi":"10.1109/SBCARS.2016.20","DOIUrl":"https://doi.org/10.1109/SBCARS.2016.20","url":null,"abstract":"In modern software projects, it is crucial to have reliable data about how knowledge on the source code is distributed among the team members. This information can help for example to avoid \"islands of knowledge\" and to prevent the risks associated to the loss of key developers. Truck factor is a key measure proposed to estimate such risks. Basically, truck factor (aka bus factor) designates the minimal number of developers that have to be hit by a truck (or quit) before a project is incapacitated. Although being a key measure of the concentration of information among team members, we still have few algorithms proposed to estimate truck factors. More importantly, we lack rigorous comparisons of the existing algorithms. Therefore, in this paper we provide a comparative study of the two main algorithms proposed in the literature to estimate truck factors. For this purpose, we rely on a large dataset of 133 popular GitHub systems. We compare both the performance of these algorithms and the truck factors estimated by them.","PeriodicalId":122920,"journal":{"name":"2016 X Brazilian Symposium on Software Components, Architectures and Reuse (SBCARS)","volume":"34 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124729890","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
T. Heineck, E. Gonçalves, Aêda Sousa, Marcos Antonio de Oliveira, J. Castro
{"title":"Model-Driven Development in Robotics Domain: A Systematic Literature Review","authors":"T. Heineck, E. Gonçalves, Aêda Sousa, Marcos Antonio de Oliveira, J. Castro","doi":"10.1109/SBCARS.2016.12","DOIUrl":"https://doi.org/10.1109/SBCARS.2016.12","url":null,"abstract":"Robots are complex agents composed of various sensors and actuators that work together with software to meet specific requirements. The subset of robots that has the ability to interact among them and even with people, through gestures or speaking, is known as Social Robots. Model-Driven Development is a promising paradigm because it promotes the reuse of components and quick code generation with quality. ModelDriven Development has been widely used in the context of Robotics in order to reduce complexity, reduce development effort and reuse of software. Due to these facts, it becomes pertinent the development of a systematic literature review to compile these results. In this paper we investigate how MDD techniques have helped the field of Robotics, therefore a systematic literature review was conducted seeking to identify approaches and their main technical features, as well as the types of specific requirements, behavioral and social issues. We came to conclusion that the existing approaches provide many interesting capabilities, typically by using the component-based development paradigm seeking a higher level of software reuse and facilitating the implementation of systems.","PeriodicalId":122920,"journal":{"name":"2016 X Brazilian Symposium on Software Components, Architectures and Reuse (SBCARS)","volume":"307 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133829879","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Characterizing the Exception Handling Code of Android Apps","authors":"Francisco Diogo Queiroz, Roberta Coelho","doi":"10.1109/SBCARS.2016.25","DOIUrl":"https://doi.org/10.1109/SBCARS.2016.25","url":null,"abstract":"Android apps are becoming more and more popular. The number of such apps is astonishingly increasing in a daily rate, as well as the number of users affected by their crashes. Android apps as other Java apps may crash due to faults on the exception handling (EH) code (e.g. uncaught exceptions). Techniques for exception detection and handling are not an optional add-on but a fundamental part of such apps. Yet, no study has investigated the main characteristics of the EH code of mobile apps nor the developers perspective about the good and bad practices of EH in such context. This paper reports two complementary studies: one that inspected the EH code of 15 popular Android apps (which overall comprises of 3490 try-catch-finally blocks); and other study which surveyed 47 Android experts to get their opinion about the good and bad practices of EH development in Android environment. Some outcomes of the studies shows a high occurrence of exception swallowing and only few apps sending exception information to a remote server - both considered by Android experts as bad practices that negatively impact the app robustness.","PeriodicalId":122920,"journal":{"name":"2016 X Brazilian Symposium on Software Components, Architectures and Reuse (SBCARS)","volume":"28 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116078504","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
S. Vidal, Everton T. Guimarães, W. Oizumi, Alessandro F. Garcia, J. A. D. Pace, C. Marcos
{"title":"Identifying Architectural Problems through Prioritization of Code Smells","authors":"S. Vidal, Everton T. Guimarães, W. Oizumi, Alessandro F. Garcia, J. A. D. Pace, C. Marcos","doi":"10.1109/SBCARS.2016.11","DOIUrl":"https://doi.org/10.1109/SBCARS.2016.11","url":null,"abstract":"Architectural problems constantly affect evolving software projects. When not properly addressed, those problems can hinder the longevity of a software system. Studies have revealed that a range of architectural problems are reflected in source code through two or more code smells. However, a software project often contains thousands of code smells and many of them have no relation to architectural problems. Thus, developers may feel discouraged to identify architectural problems if they are not equiped with means to focus their attention in a reduced set of locations in their system to start with. However, state-of-the-art techniques fall short in assisting developers in the prioritization of code smells that are likely to indicate architectural problems in a program. As a consequence, developers struggle to effectively focus on (groups of) smells that are architecturally relevant, i.e., smells that contribute to a critical design problem. This work presents and evaluates a suite of criteria for prioritizing groups of code smells as indicators of architectural problems in evolving systems. These criteria are supported by a tool called JSpIRIT. We have assessed the prioritization criteria in the context of more than 23 versions of 4 systems, analyzing their effectiveness for spoting locations of architectural problems in the source code. The results provide evidence that one of the proposed criteria helped to correctly prioritize more than 80 (locations of) architectural problems, alleviating tedious manual inspections of the source code vis-a-vis with the architecture. This prioritization criteria would have helped developers to discard at least 500 code smells having no relation to architectural problems in the analyzed systems.","PeriodicalId":122920,"journal":{"name":"2016 X Brazilian Symposium on Software Components, Architectures and Reuse (SBCARS)","volume":"7 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122115501","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"A Lightweight Remodularization Process Based on Structural Similarity","authors":"Ricardo Terra, M. T. Valente, N. Anquetil","doi":"10.1109/SBCARS.2016.24","DOIUrl":"https://doi.org/10.1109/SBCARS.2016.24","url":null,"abstract":"Erosion process, when neglected over long periods, may reduce the concrete architecture to a small set of strongly-coupled and weakly-cohesive components. This nullifies the benefits provided by an architectural design, such as maintainability, scalability, portability, etc. In this scenario, the solution might be only achieved through a complete remodularization process. However, most remodularization approaches are heavyweight and lack tool support. This paper, therefore, proposes a lightweight and tool supported remodularization process based on structural similarity. The process is centered on the observation that the remodularization of a software system can be achieved by successive applications of Move Class, Move Method, and Extract Method refactorings. We evaluate the process in a modified version of an open-source software achieving a recall of 100% and a precision of 50%. The design decisions of the proposed process-such as the use of structural similarity, non-implementation of preconditions, and identification of the target entity on demand-were also evaluated obtaining outcome results.","PeriodicalId":122920,"journal":{"name":"2016 X Brazilian Symposium on Software Components, Architectures and Reuse (SBCARS)","volume":"2014 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128942777","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Izabela Melo, Gustavo Santos, D. Serey, M. T. Valente
{"title":"Perceptions of 395 Developers on Software Architecture's Documentation and Conformance","authors":"Izabela Melo, Gustavo Santos, D. Serey, M. T. Valente","doi":"10.1109/SBCARS.2016.14","DOIUrl":"https://doi.org/10.1109/SBCARS.2016.14","url":null,"abstract":"Since the 90's, a major effort has been applied in the academy to study and evolve aspects related to Software Architecture. The significant rise in the number of publications in the last few years shows how much importance and concern academia gives to the subject. However, previous studies have pointed out that when it comes to software architecture concepts and practices, there is a gap between industry and academy. Industry professionals do not know/use what is proposed by academic researchers. From the academic perspective, the theoretical foundations about software architecture, architectural documentation and architectural conformance checking are well developed. Then why industry seems not to follow them? What aspects does the academy miss about the problems in practice? What is the practical/industrial context about software architecture's definition, documentation and verification? Aiming to answer these questions, we performed a 3-step qualitative study. Firstly, we applied an exploratory survey to 58 professionals to better understand the state of the practice on software development and architecture and to give us an initial comprehension of software architecture concepts, practices and problems from the point of view of the industry. Secondly, we interviewed 14 top-professionals chosen among those who participated in the exploratory survey. In this phase we intended to deeply understand the professionals' perceptions on the subject. We used thematic analysis to assess the narratives, to form a base for our understanding and to formulate our comprehension as a series of statements. Finally, in a third phase, we performed a confirmatory survey by means of which we were able to confirm the findings. We sent the survey to GitHub users with public emails and more than 100 followers, getting 7.74% of response rate (337 respondents). From our study, we confirmed that there is not a single and unified definition and understanding of the term \"software architecture\" among software developers. In particular, we observed that the definition depends on several factors, such as the professional's experience and the company in which he/she is currently working. The architecture is sometimes documented but, most of the time, it is incomplete, informal and outdated. Finaly, we observed that while there is a general perception of the relevance of architectural conformity and compliance of software, activities to check architectural conformance and compliance are seldom adopted - not to mention the use of automated tools and procedures.","PeriodicalId":122920,"journal":{"name":"2016 X Brazilian Symposium on Software Components, Architectures and Reuse (SBCARS)","volume":"40 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114954586","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Isabella Ferreira, Elder Cirilo, Vinicius Vieira, Fernando Mourão
{"title":"Bug Report Summarization: An Evaluation of Ranking Techniques","authors":"Isabella Ferreira, Elder Cirilo, Vinicius Vieira, Fernando Mourão","doi":"10.1109/SBCARS.2016.17","DOIUrl":"https://doi.org/10.1109/SBCARS.2016.17","url":null,"abstract":"Bug reports are regularly consulted software artifacts, especially, because they contain valuable information for many change management tasks. Developers consult them whenever they need to know already reported problems or have to investigate previous bug solutions. This activity, however, consumes a substantial amount of time once bug reports content might achieve dozens of comments and thousands of sentences. One recommended and massively applied solution to prevent developers to read the entire bug report is to summarize the whole conversation in a few sentences. Summaries ideally give to developers an overview of the current status of the bug and the reasons, highlighting the result of each proposed solution, for which environments, which solutions are most appropriated, and the necessary information to reproduce the bug. This strategy intends to minimize the time a developer would spend in maintenance tasks. However, investigations demonstrate that summaries do not meet the expectations of developers and, in practice, they still read the entry line of discussion. To circumvent this drawback, we propose a summary based on comments, instead of the ones based on isolated sentences, as proposed by previous works. We argue that a ranking of the most relevant comments would enable developers to find more appropriate information. Empirical results corroborate with our arguments and show that summaries generated by traditional ranking algorithms are accurate with respect to developers expected information when compared to reference summaries created manually.","PeriodicalId":122920,"journal":{"name":"2016 X Brazilian Symposium on Software Components, Architectures and Reuse (SBCARS)","volume":"21 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129999407","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Wallace Ribeiro, V. Braganholo, Leonardo Gresta Paulino Murta
{"title":"A Study about the Life Cycle of Code Anomalies","authors":"Wallace Ribeiro, V. Braganholo, Leonardo Gresta Paulino Murta","doi":"10.1109/SBCARS.2016.22","DOIUrl":"https://doi.org/10.1109/SBCARS.2016.22","url":null,"abstract":"Software projects usually follow key architectural principles, such as modularity, high cohesion, low coupling, etc. However, during software evolution, sometimes developers introduce changes that are not compatible with these principles, called code anomalies. Some approaches aim at detecting and fixing code anomalies, but they miss a deeper discussion about the introduction patterns and life cycle of such code anomalies. In this paper we analyze several projects to understand the incidence of code anomalies and their life cycle. In addition, we correlate code anomalies with some project characteristics and with other code anomalies. For example, we could observe that Shotgun Surgery and God Method anomalies never happen together. Moreover, we observed that Shotgun Surgery, God Package, and Misplaced Class anomaly life cycles are closely correlated.","PeriodicalId":122920,"journal":{"name":"2016 X Brazilian Symposium on Software Components, Architectures and Reuse (SBCARS)","volume":"41 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116090405","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Identifying Utility Functions in Java and JavaScript","authors":"Tamara Mendes, M. T. Valente, André C. Hora","doi":"10.1109/SBCARS.2016.16","DOIUrl":"https://doi.org/10.1109/SBCARS.2016.16","url":null,"abstract":"Utility functions provide generic services that can be reused in different types of systems. Theoretically, they must be implemented in specific modules. However, it is common to find such functions implemented with domain specific functions, decreasing their chances of reuse. In this paper, we propose a set of heuristics to identify utility functions. With such heuristics, recommendations can be provided to move the functions to appropriate modules. In a survey conducted with 33 developers, the proposed heuristics showed a precision of 66% and 67% when applied to Java and JavaScript systems, respectively.","PeriodicalId":122920,"journal":{"name":"2016 X Brazilian Symposium on Software Components, Architectures and Reuse (SBCARS)","volume":"95 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130953052","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Fernando Benbassat, Paulo Borba, Leopoldo Teixeira
{"title":"Safe Evolution of Software Product Lines: Feature Extraction Scenarios","authors":"Fernando Benbassat, Paulo Borba, Leopoldo Teixeira","doi":"10.1109/SBCARS.2016.21","DOIUrl":"https://doi.org/10.1109/SBCARS.2016.21","url":null,"abstract":"Software Product Lines can improve productivity and product quality, but product line maintenance is not simple, since a single change can impact several products. In many situations, it is desirable to provide some assurance that we can safely change a SPL in the sense that the behaviour of existing products is preserved. Developers can rely on previously proposed safe evolution notions, by means of transformation templates to ensure safe evolution. However, the existing templates were only applied in scenarios where a product line expands, and have not been evaluated in the context of extracting features from existing code. Therefore, we conducted a study using an industrial system developed in Java with 400 KLOC. This study revealed the need for new templates to address feature extraction scenarios, as well as improving the existing templates notation to address more expressive mappings between features and code assets. As a result of this study, we successfully extracted a product line from this existing system using the proposed templates, and also found evidence that the new templates can help to prevent defects during product line evolution.","PeriodicalId":122920,"journal":{"name":"2016 X Brazilian Symposium on Software Components, Architectures and Reuse (SBCARS)","volume":"144 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123223565","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}