Crescencio Rodrigues Lima Neto, W. K. Assunção, Jabier Martinez, I. Machado, C. Chavez, W. D. F. Mendonça
{"title":"Towards an Automated Product Line Architecture Recovery: The Apo-Games Case Study","authors":"Crescencio Rodrigues Lima Neto, W. K. Assunção, Jabier Martinez, I. Machado, C. Chavez, W. D. F. Mendonça","doi":"10.1145/3267183.3267187","DOIUrl":"https://doi.org/10.1145/3267183.3267187","url":null,"abstract":"Software Product Line Engineering (SPLE) has been widely adopted for applying systematic reuse in families of systems. Given the high upfront investment required for SPLE adoption, organizations commonly start with more opportunistic reuse approaches (e.g., a single system that they clone and modify). However, maintenance problems appear when managing a large number of similar systems where each of them implements and evolves particular characteristics. One viable solution to solve this issue is to migrate to SPLs using an extractive approach. This initiative, in its early phases, includes the definition of a Product Line Architecture (PLA) supporting the variants derivation and also allowing the customization according to customers' needs. Our objective is to provide automatic support in PLA recovery to reduce the time and effort in this process. One of the main issues in the extractive approach is the explosion of the variability in the PLA representation. Our approach is based on identifying the minimum subset of cross-product architectural information for an effective PLA recovery. To evaluate our approach, we applied it in the case of the Apo-Games projects. The experimentation in this real family of systems showed that our automatic approach is able to identify variant outliers and help domain experts to take informed decisions to support PLA recovery.","PeriodicalId":446938,"journal":{"name":"Proceedings of the VII Brazilian Symposium on Software Components, Architectures, and Reuse","volume":"37 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-09-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121466835","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}
A. Santos, M. Souza, Johnatan Oliveira, Eduardo Figueiredo
{"title":"Mining Software Repositories to Identify Library Experts","authors":"A. Santos, M. Souza, Johnatan Oliveira, Eduardo Figueiredo","doi":"10.1145/3267183.3267192","DOIUrl":"https://doi.org/10.1145/3267183.3267192","url":null,"abstract":"Programming is multi-faceted, inherently involving several different skills. With the advent of collaboration platforms like GitHub, developers have the opportunity to contribute to projects from different organizations and collaborate with various developers from around the world. With GitHub data, new opportunities to identify developers abilities become possible. From GitHub, it is possible to infer several skills from a developer, for instance, the user of libraries. In this paper, we propose a method to identify library experts, based on the knowledge they produce on GitHub. We evaluated our method in an experiment to identify possible experts in three Java libraries. Our method ranked the top 100 developers for each technology. Then we compared the selected profiles from GitHub with profiles of these developers on the social network LinkedIn to see if what they report in LinkedIn matches what they produce in GitHub. We also surveyed students to compare the results of our method to the manual analysis. Our results showed that 89% of selected GitHub developers reported their skills in social networking sites as LinkedIn, according to the ranking made by our method and that the ranking produced by our method is related to the classification made by survey participants.","PeriodicalId":446938,"journal":{"name":"Proceedings of the VII Brazilian Symposium on Software Components, Architectures, and Reuse","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-09-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122372376","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}
Guisella Angulo, Daniel San Martín, B. M. Santos, F. Ferrari, V. V. D. Camargo
{"title":"An Approach for Creating KDM2PSM Transformation Engines in ADM Context: The RUTE-K2J Case","authors":"Guisella Angulo, Daniel San Martín, B. M. Santos, F. Ferrari, V. V. D. Camargo","doi":"10.1145/3267183.3267193","DOIUrl":"https://doi.org/10.1145/3267183.3267193","url":null,"abstract":"Architecture-Driven Modernization (ADM) is a type of software reenginering that employs standard metamodels along the process and deals with the whole system architecture. The main metamodel is the Knowledge-Discovery Metamodel (KDM), which is language, platform independent and it is able to represent several aspects of a software system. Although there is much research effort in the reverse engineering phase of ADM, little have been published around the forward engineering one; mainly on the generation of Platform-Specific Models (PSM) from KDM. This phase is essential as it belongs to the final part of the horseshoe cycle, completing the reengineering process. However, the lack of research and the absence of tooling support hinders the industrial adoption of ADM. Therefore, in this paper we propose an approach to support engineers in creating Transformation Engines (TE) from KDM to any other PSM. This approach was emerged from the experience in creating a TE called RUTE-K2J, which aims at generating Java Model from KDM. The transformation rules of RUTE-K2J were tested considering sets of common code structures that normally appears when modernizing systems. The test cases have shown the transformation rules were able to generate correctly 92% of the source code that was submitted to the transformation.","PeriodicalId":446938,"journal":{"name":"Proceedings of the VII Brazilian Symposium on Software Components, Architectures, and Reuse","volume":"45 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-09-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126366365","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}
Dêmora Bruna Cunha de Sousa, P. Maia, L. Rocha, Windson Viana
{"title":"Analysing the Evolution of Exception Handling Anti-Patterns in Large-Scale Projects: A Case Study","authors":"Dêmora Bruna Cunha de Sousa, P. Maia, L. Rocha, Windson Viana","doi":"10.1145/3267183.3267191","DOIUrl":"https://doi.org/10.1145/3267183.3267191","url":null,"abstract":"Previous studies have shown that exception handling bad practices may impact the overall software quality. We believe that quality of exception handling code is directly affected by (i) an absence, or lack of awareness, of an explicit exception handling policy; and (ii) a silent rising and spreading of exception handling anti-patterns. To investigate such phenomenon, we conducted a case study in a large-scale Java Web system, trying to better understand the relationship between (i) and (ii). The study takes into account technical and human aspects. We surveyed 21 developers regarding their perception about exception handling in the system's institution. Next, we analyse the evolution of exception handling anti-patterns across 15 releases of the target system. Finally, we conduct a semi-structured interview with three senior software architects. Our finds beneficiated the system's institution by making it aware of these problems and enabling it to take actions towards to combat them.","PeriodicalId":446938,"journal":{"name":"Proceedings of the VII Brazilian Symposium on Software Components, Architectures, and Reuse","volume":"21 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-09-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128121462","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":"Characteristics and Performance Assessment of Approaches Pre-rendering and Isomorphic Javascript as a Complement to SPA Architecture","authors":"William Oliveira da Silva, P. R. Farah","doi":"10.1145/3267183.3267190","DOIUrl":"https://doi.org/10.1145/3267183.3267190","url":null,"abstract":"The SPA (Single Page Application) architecture is very popular these days because of its advantages over traditional multi-page web architecture. Mainly because of its more fluid page navigation experience. However, SPAs have the disadvantage of a longer page load that can be critical in some cases. This work aimed to study and compare the approaches of prerendering and isomorphic JavaScript as a complement to the SPA architecture in order to mitigate the observed disadvantage. These approaches were analyzed on two different aspects: page load performance and server resources utilization. The results show that isomorphic JavaScript approach is able to present the complete page in up to 47% before the time SPA finish and the speed index metric demonstrate that isomorphic architecture has a visual progress 48% faster than SPA. However, isomorphic architecture throughput reached only 20 requests/s and SPA served more than 700 requests/s, while prerendering approach achieved only 1 request/s.","PeriodicalId":446938,"journal":{"name":"Proceedings of the VII Brazilian Symposium on Software Components, Architectures, and Reuse","volume":"62 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-09-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130761324","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":"On the Use of Metaprogramming and Domain Specific Languages: An Experience Report in the Logistics Domain","authors":"P. Costa, E. Canedo, R. Bonifácio","doi":"10.1145/3267183.3267194","DOIUrl":"https://doi.org/10.1145/3267183.3267194","url":null,"abstract":"In this paper we present the main design and architectural decisions to build an enterprise system that deals with the distribution of equipment to the Brazilian Army. The requirements of the system are far from trivial, and we have to conciliate the need to extract business rules from the source code (increasing software flexibility) with the requirements of not exposing the use of declarative languages to use a rule-based engine and simplifying the tests of the application. Considering these goals, we present in this paper a seamless integration of meta-programming and domain-specific languages. The use of meta-programming allowed us to isolate and abstract all definitions necessary to externalize the business rules that ensure the correct distribution of the equipment through the Brazilian Army unities. The use of a domain specific language simplified the process of writing automatic test cases related to our domain. Although our architecture targets the specific needs of the Brazilian Army, we believe that logistic systems from other institutions might also benefit from our technical decisions.","PeriodicalId":446938,"journal":{"name":"Proceedings of the VII Brazilian Symposium on Software Components, Architectures, and Reuse","volume":"15 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-09-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115643911","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}
L. P. D. S. Carvalho, R. Novais, Manoel G. Mendonça
{"title":"Investigating the Relationship between Code Smell Agglomerations and Architectural Concerns: Similarities and Dissimilarities from Distributed, Service-Oriented, and Mobile Systems","authors":"L. P. D. S. Carvalho, R. Novais, Manoel G. Mendonça","doi":"10.1145/3267183.3267184","DOIUrl":"https://doi.org/10.1145/3267183.3267184","url":null,"abstract":"Context: software architects often decide on strategies before incorporating an asset (e.g., components) in software systems. At the same time, they are responsible for preventing code and architectural degradation caused by design problems. Problem: groups of code smells (a.k.a. agglomeration of code smells) have been recognized as a source of design problems, but no previous study has analyzed the relationship between such agglomerations and different types of software. Different types of software have different needs in terms of implementation of architectural concerns, which can lead to consequential variations in the way how code smells agglomerate. Goal: this study aims to understand how a varied set of projects and their respective architectural concerns relates to code smells agglomerations. Method: our study analyses the history of 15 Open Source Software (OSS) projects split as three groups of distributed, service-oriented, and mobile project types. It mines the projects for code smells and architectural concerns (identified from injected components). It agglomerates instances of code smells around these concerns, and analyzes them according to the grouped projects. Results/Discussion: the agglomerations of smells tend to follow a stratified pattern in which they group themselves through ramifications of similarities and dissimilarities of concerns and project types.","PeriodicalId":446938,"journal":{"name":"Proceedings of the VII Brazilian Symposium on Software Components, Architectures, and Reuse","volume":"43 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-09-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124778449","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}
Eduardo G. Perissato, João Choma Neto, T. Colanzi, W. Oizumi, Alessandro F. Garcia
{"title":"On Identifying Architectural Smells in Search-based Product Line Designs","authors":"Eduardo G. Perissato, João Choma Neto, T. Colanzi, W. Oizumi, Alessandro F. Garcia","doi":"10.1145/3267183.3267185","DOIUrl":"https://doi.org/10.1145/3267183.3267185","url":null,"abstract":"The Product Line Architecture (PLA) defines a common design for all products derived from the software product line. PLA design is a high-effort task since it is influenced by several factors, such as feature modularity, PLA variability and extensibility. Given the complexity and variety of such influential factors, the use of search-based algorithms have recently been explored to derive PLA designs in the seminal approach named Multi-Objective Approach for Product-Line Architecture Design (MOA4PLA). MOA4PLA produces a set of alternative PLA designs that improve the different optimized factors. Besides the optimization of these factors, the obtained PLA designs should ideally have no architectural smell. An architectural smell may harm not only the PLA variability and extensibility, but also other non-functional attributes. However, no previous study was performed to investigate if and to what extent state-of-the-art search-based approaches, such as MOA4PLA, adversely introduce architectural smells in resulting designs. Thus, we performed an exploratory investigation about the presence of architectural smells in a set of PLA designs obtained from MOA4PLA. Such an investigation was also useful to derive guidelines for: (i) improving the resulting search-based PLA designs, or (ii) preventing upfront the emergence of architectural smells in PLA designs automatically obtained with search-based approaches.","PeriodicalId":446938,"journal":{"name":"Proceedings of the VII Brazilian Symposium on Software Components, Architectures, and Reuse","volume":"22 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-09-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133418222","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}
Matheus Flauzino, Júlio Veríssimo, Ricardo Terra, Elder Cirilo, Vinicius H. S. Durelli, R. Durelli
{"title":"Are you still smelling it?: A comparative study between Java and Kotlin language","authors":"Matheus Flauzino, Júlio Veríssimo, Ricardo Terra, Elder Cirilo, Vinicius H. S. Durelli, R. Durelli","doi":"10.1145/3267183.3267186","DOIUrl":"https://doi.org/10.1145/3267183.3267186","url":null,"abstract":"Java is one of the most widely used programming languages. However, Java is a verbose language, thus one of the main drawbacks of the language is that even simple tasks often entail writing a significant amount of code. In some cases, writing too much code might lead to certain code smells, which are violations of fundamental design that can negatively impact the overall quality of programs. To allow programmers to write concise code, JetBrains created a new language named Kotlin. Nevertheless, few studies have evaluated whether Kotlin leads to concise and clearer code in comparison to Java. We conjecture that due to Java's verbosity, programs written in Java are likely to have more code smells than Kotlin programs. Therefore, we set out to evaluate whether some types of code smells are more common in Java programs. To this end, we carried out a large-scale empirical study involving more than 6 million lines of code from programs available in 100 repositories. We found that on average Kotlin programs have less code smells than Java programs.","PeriodicalId":446938,"journal":{"name":"Proceedings of the VII Brazilian Symposium on Software Components, Architectures, and Reuse","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-09-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130462900","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":"Towards a Taxonomy of Software Mediators for Systems-of-Systems","authors":"Lina Garcés, F. Oquendo, E. Nakagawa","doi":"10.1145/3267183.3267189","DOIUrl":"https://doi.org/10.1145/3267183.3267189","url":null,"abstract":"Systems-of-Systems (SoS) refer to alliances of operational and managerial independent software-intensive systems, sometimes distributed and found in critical application domains. The independence of constituent systems brings big challenges to design SoS software architectures. Such architectures must be dynamic, evolve along the time, and allow the execution of, sometimes unknown in design time, emergent behaviours to accomplish SoS missions. Moreover, SoS architectures must connect heterogeneous systems, making possible their communication, coordination, and collaboration in a seamless way. In another perspective, mediators are architectural elements that enable required interactions among heterogeneous software entities. Despite the benefits offered by mediators, mainly at overcoming interoperability issues of software systems, no investigation has been made about which mediators can be used in SoS architectures to address challenges imposed by the nature of such heterogeneous, distributed and complex software-intensive systems. The main contribution of this paper is a taxonomy of software mediators that can be used by software architects as a library of solutions when designing their SoS. Twelve types of mediators in three categories are proposed allowing capabilities of communication and control of constituent systems' interactions, and conversion of heterogeneous messages exchanged through the mediation infrastructure. This taxonomy was established based on knowledge and experience from other types of complex systems that use mediators, and authors previous experience at architecting SoS. Categories in the taxonomy were defined based on the intrinsic characteristics of SoS architectures and well-established architectural patterns and styles. To observe the feasibility of this taxonomy, the software architecture of a Flood Monitoring System-of-Systems (FMSoS) was established using mediators as first-class software entities. Based on FMSoS architecture it was possible to have preliminary evidence to conclude that, architectures containing the proposed mediators are low coupled, support dynamic configurations during the SoS execution, and are able to address quality attributes such as flexibility, scalability, and interoperability.","PeriodicalId":446938,"journal":{"name":"Proceedings of the VII Brazilian Symposium on Software Components, Architectures, and Reuse","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-09-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115185797","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}