Pub Date : 2019-05-01DOI: 10.1109/ICSE-Companion.2019.00038
Yilong Yang, Xiaoshan Li, Zhiming Liu, W. Ke
Prototyping is an effective and efficient way of requirement validation to avoid introducing errors in the early stage of software development. However, manually developing a prototype of a software system requires additional efforts, which would increase the overall cost of software development. Based on our proposed approach, we develop RM2PT: a tool for generating prototypes from requirements models automatically. A requirements model consists of a use case diagram, a conceptual class diagram, system sequence diagrams for use cases, and the formal contracts of their system operations in OCL (Object Constraint Language). RM2PT can generate executable MVC (Model View Controller) prototypes from requirements models automatically. We evaluate the tool with four case studies. 93.65% of requirement specifications can be generated to the executable Java source code successfully, and only 6.35% are non-executable for our current provided generation algorithm such as sorting and event-call, which can be implemented by developers manually or invoking the APIs of advanced algorithms in Java library. The tool is efficient that the one second generated prototype of a case study requires approximate nine hours manual implementation by skilled programmers.
{"title":"RM2PT: A Tool for Automated Prototype Generation from Requirements Model","authors":"Yilong Yang, Xiaoshan Li, Zhiming Liu, W. Ke","doi":"10.1109/ICSE-Companion.2019.00038","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00038","url":null,"abstract":"Prototyping is an effective and efficient way of requirement validation to avoid introducing errors in the early stage of software development. However, manually developing a prototype of a software system requires additional efforts, which would increase the overall cost of software development. Based on our proposed approach, we develop RM2PT: a tool for generating prototypes from requirements models automatically. A requirements model consists of a use case diagram, a conceptual class diagram, system sequence diagrams for use cases, and the formal contracts of their system operations in OCL (Object Constraint Language). RM2PT can generate executable MVC (Model View Controller) prototypes from requirements models automatically. We evaluate the tool with four case studies. 93.65% of requirement specifications can be generated to the executable Java source code successfully, and only 6.35% are non-executable for our current provided generation algorithm such as sorting and event-call, which can be implemented by developers manually or invoking the APIs of advanced algorithms in Java library. The tool is efficient that the one second generated prototype of a case study requires approximate nine hours manual implementation by skilled programmers.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"40 2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116538439","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}
Pub Date : 2019-05-01DOI: 10.1109/ICSE-Companion.2019.00094
Anh Nguyen-Duc, M. L. Jaccheri, P. Abrahamsson
Gender issues in software engineering education are gaining research attention due to the desire to promote female participation in the field. The objective of this work is to enhance the understanding of female students' participation in software engineering projects to support gender-aware course optimization. Since 2015, we have investigated the participation of female students in terms of software engineering activities and team dynamics in a software project course that involves a real customer. We found that female students are more active with project management and requirement engineering, while they remain under-represented in highly complex or specific tasks, i.e. architecture work, and user experience design. We found no statistically significant difference in perceived team dynamics between male and female students. Insights on female project activities would facilitate the arrangement of project teams so that learning can be distributed equally across genders
{"title":"An Empirical Study on Female Participation in Software Project Courses","authors":"Anh Nguyen-Duc, M. L. Jaccheri, P. Abrahamsson","doi":"10.1109/ICSE-Companion.2019.00094","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00094","url":null,"abstract":"Gender issues in software engineering education are gaining research attention due to the desire to promote female participation in the field. The objective of this work is to enhance the understanding of female students' participation in software engineering projects to support gender-aware course optimization. Since 2015, we have investigated the participation of female students in terms of software engineering activities and team dynamics in a software project course that involves a real customer. We found that female students are more active with project management and requirement engineering, while they remain under-represented in highly complex or specific tasks, i.e. architecture work, and user experience design. We found no statistically significant difference in perceived team dynamics between male and female students. Insights on female project activities would facilitate the arrangement of project teams so that learning can be distributed equally across genders","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"16 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124628429","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}
Pub Date : 2019-05-01DOI: 10.1109/ICSE-Companion.2019.00087
Juan Manuel Florez
Problem: Existing approaches for requirements-to-code traceability link recovery rely on text retrieval to trace requirements to coarse-grained code documents (e.g., methods, files, classes, etc.), while suffering from low accuracy problems. Hypotheses: The salient information in most requirements is expressed as functional constraints, which can be automatically identified and categorized. Moreover, people use recognizable discourse patterns when describing them and developers use well-defined patterns for implementing them. Contributions: Recasting the requirements-to-code traceability link problem as an accurate matching between functional constraints and their implementation.
{"title":"Automated Fine-Grained Requirements-to-Code Traceability Link Recovery","authors":"Juan Manuel Florez","doi":"10.1109/ICSE-Companion.2019.00087","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00087","url":null,"abstract":"Problem: Existing approaches for requirements-to-code traceability link recovery rely on text retrieval to trace requirements to coarse-grained code documents (e.g., methods, files, classes, etc.), while suffering from low accuracy problems. Hypotheses: The salient information in most requirements is expressed as functional constraints, which can be automatically identified and categorized. Moreover, people use recognizable discourse patterns when describing them and developers use well-defined patterns for implementing them. Contributions: Recasting the requirements-to-code traceability link problem as an accurate matching between functional constraints and their implementation.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"142 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125478452","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}
Pub Date : 2019-05-01DOI: 10.1109/ICSE-Companion.2019.00083
Eduardo Fernandes
Developers may introduce poor code structures spotted by code smells along the software maintenance. However, only some of these structures eventually become obstacles to the addition of new features. Developers are forced to remove these obstacles before adding features. Identifying which poor structures are actual obstacles is hard, due to their subtlety and scattering across code elements. Such identification has been largely debated by developers in public platforms such as Gerrit Code Review. Fully removing obstacles is also hard, as developers often have to perform non-trivial sets of interrelated code transformations. Despite enabling the feature addition, certain sets of transformations tend to introduce rather than remove code smells. The scarce knowledge on recurring obstacles, and how refactoring can cope with them, helps little in guiding the feature addition. This doctoral research aims to address the current scarceness via empirical studies with projects and their developers. Our major goal is three-fold: (1) to assess past feature additions in order to elicit recurring obstacles; (2) to understand when interrelated transformations unexpectedly introduce poor code structures; and (3) to propose a refactoring recommender system. Contrarily to the few existing ones, our system aims to guide developers along the feature addition while removing poor code structures.
{"title":"Stuck in The Middle: Removing Obstacles to New Program Features through Batch Refactoring","authors":"Eduardo Fernandes","doi":"10.1109/ICSE-Companion.2019.00083","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00083","url":null,"abstract":"Developers may introduce poor code structures spotted by code smells along the software maintenance. However, only some of these structures eventually become obstacles to the addition of new features. Developers are forced to remove these obstacles before adding features. Identifying which poor structures are actual obstacles is hard, due to their subtlety and scattering across code elements. Such identification has been largely debated by developers in public platforms such as Gerrit Code Review. Fully removing obstacles is also hard, as developers often have to perform non-trivial sets of interrelated code transformations. Despite enabling the feature addition, certain sets of transformations tend to introduce rather than remove code smells. The scarce knowledge on recurring obstacles, and how refactoring can cope with them, helps little in guiding the feature addition. This doctoral research aims to address the current scarceness via empirical studies with projects and their developers. Our major goal is three-fold: (1) to assess past feature additions in order to elicit recurring obstacles; (2) to understand when interrelated transformations unexpectedly introduce poor code structures; and (3) to propose a refactoring recommender system. Contrarily to the few existing ones, our system aims to guide developers along the feature addition while removing poor code structures.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"6 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128361431","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}
Pub Date : 2019-05-01DOI: 10.1109/ICSE-Companion.2019.00114
William Pourmajidi, Lei Zhang, John Steinbacher, Tony Erwin, A. Miranskyy
Logs contain critical information about the quality of the rendered services on the Cloud and can be used as digital evidence. Hence, we argue that the critical nature of logs calls for immutability and verification mechanism without a presence of a single trusted party. In this paper, we propose a blockchain-based log system, called Logchain, which can be integrated with existing private and public blockchains. To validate the mechanism, we create Logchain as a Service (LCaaS) by integrating it with Ethereum public blockchain network. We show that the solution is scalable (being able to process 100 log files per second) and fast (being able to "seal" a log file in 23 seconds, on average).
{"title":"Immutable Log Storage as a Service","authors":"William Pourmajidi, Lei Zhang, John Steinbacher, Tony Erwin, A. Miranskyy","doi":"10.1109/ICSE-Companion.2019.00114","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00114","url":null,"abstract":"Logs contain critical information about the quality of the rendered services on the Cloud and can be used as digital evidence. Hence, we argue that the critical nature of logs calls for immutability and verification mechanism without a presence of a single trusted party. In this paper, we propose a blockchain-based log system, called Logchain, which can be integrated with existing private and public blockchains. To validate the mechanism, we create Logchain as a Service (LCaaS) by integrating it with Ethereum public blockchain network. We show that the solution is scalable (being able to process 100 log files per second) and fast (being able to \"seal\" a log file in 23 seconds, on average).","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"67 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121052321","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}
Pub Date : 2019-05-01DOI: 10.1109/ICSE-Companion.2019.00027
B. Buhse, Thomas Wei, Zhiqiang Zang, Aleksandar Milicevic, Miloš Gligorić
Developers spend substantial time debugging their programs, yet debugging is still one of the most tedious activities. Interactive debuggers have been around for as long as computing, but the way they are used-set a breakpoint, reason about the state, step into/over-has not substantially changed. The last big discoveries, which happened decades ago, include visual debugging (e.g., DDD) and time-travel debugging. Although existing interactive debugging tools provide useful and powerful features, they are limited to a single program execution, e.g., a developer can only see data values and navigate the control flow of a single program execution at a time. We present VeDebug, the first video-based time-travel regression debugging tool to advance users' debugging experience. VeDebug introduces two unique features: (1) regression debugging, i.e., setting a "divergence breakpoint" (which "breaks" the execution whenever the control flow of the current execution diverges from the flow of a previously captured execution), and (2) video debugging, which provides features similar to those of a video player (e.g., speed up/slow down the replay). The demo video for VeDebug can be found at: https://www.youtube.com/watch?v=lOiGrE sc10.
{"title":"VeDebug: Regression Debugging Tool for Java","authors":"B. Buhse, Thomas Wei, Zhiqiang Zang, Aleksandar Milicevic, Miloš Gligorić","doi":"10.1109/ICSE-Companion.2019.00027","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00027","url":null,"abstract":"Developers spend substantial time debugging their programs, yet debugging is still one of the most tedious activities. Interactive debuggers have been around for as long as computing, but the way they are used-set a breakpoint, reason about the state, step into/over-has not substantially changed. The last big discoveries, which happened decades ago, include visual debugging (e.g., DDD) and time-travel debugging. Although existing interactive debugging tools provide useful and powerful features, they are limited to a single program execution, e.g., a developer can only see data values and navigate the control flow of a single program execution at a time. We present VeDebug, the first video-based time-travel regression debugging tool to advance users' debugging experience. VeDebug introduces two unique features: (1) regression debugging, i.e., setting a \"divergence breakpoint\" (which \"breaks\" the execution whenever the control flow of the current execution diverges from the flow of a previously captured execution), and (2) video debugging, which provides features similar to those of a video player (e.g., speed up/slow down the replay). The demo video for VeDebug can be found at: https://www.youtube.com/watch?v=lOiGrE sc10.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"73 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116236968","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}
Pub Date : 2019-05-01DOI: 10.1109/icse-companion.2019.00010
S. Abrahão, Laurie Williams
The ICSE 2019 Doctoral Symposium was a one-day event held on May 28, 2019 in Montréal, Canada. The Doctoral Symposium provided an opportunity for doctoral students to present their ongoing work and future research plans, and to discuss them with experienced researchers and fellow doctoral students in the Software Engineering community. Students participating in the Doctoral Symposium presented their work to a panel of experts who provided each student with valuable feedback on their work and highlighted opportunities to further improve their research work. In addition, the symposium facilitated the exchange of ideas among young researchers.
{"title":"Message from the Doctoral Symposium Chairs of ICSE 2019","authors":"S. Abrahão, Laurie Williams","doi":"10.1109/icse-companion.2019.00010","DOIUrl":"https://doi.org/10.1109/icse-companion.2019.00010","url":null,"abstract":"The ICSE 2019 Doctoral Symposium was a one-day event held on May 28, 2019 in Montréal, Canada. The Doctoral Symposium provided an opportunity for doctoral students to present their ongoing work and future research plans, and to discuss them with experienced researchers and fellow doctoral students in the Software Engineering community. Students participating in the Doctoral Symposium presented their work to a panel of experts who provided each student with valuable feedback on their work and highlighted opportunities to further improve their research work. In addition, the symposium facilitated the exchange of ideas among young researchers.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"39 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133806368","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}
Pub Date : 2019-05-01DOI: 10.1109/ICSE-Companion.2019.00088
M. M. Rahman
Software developers often experience difficulties in preparing appropriate queries for code search. Recent finding has suggested that developers fail to choose the right search keywords from an issue report for 88% of times. Thus, despite a number of earlier studies, automatic reformulation of queries for the code search is an open problem which warrants further investigations. In this dissertation work, we hypothesize that code search could be improved by adopting appropriate term weighting, context-awareness and data-analytics in query reformulation. We ask three research questions to evaluate the hypothesis, and then conduct six studies to answer these questions. Our proposed approaches improve code search by incorporating (1) novel, appropriate keyword selection algorithms, (2) context-awareness, (3) crowdsourced knowledge from Stack Overflow, and (4) large-scale data analytics into the query reformulation process.
{"title":"Supporting Code Search with Context-Aware, Analytics-Driven, Effective Query Reformulation","authors":"M. M. Rahman","doi":"10.1109/ICSE-Companion.2019.00088","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00088","url":null,"abstract":"Software developers often experience difficulties in preparing appropriate queries for code search. Recent finding has suggested that developers fail to choose the right search keywords from an issue report for 88% of times. Thus, despite a number of earlier studies, automatic reformulation of queries for the code search is an open problem which warrants further investigations. In this dissertation work, we hypothesize that code search could be improved by adopting appropriate term weighting, context-awareness and data-analytics in query reformulation. We ask three research questions to evaluate the hypothesis, and then conduct six studies to answer these questions. Our proposed approaches improve code search by incorporating (1) novel, appropriate keyword selection algorithms, (2) context-awareness, (3) crowdsourced knowledge from Stack Overflow, and (4) large-scale data analytics into the query reformulation process.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"50 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129704131","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}
Pub Date : 2019-05-01DOI: 10.1109/ICSE-Companion.2019.00122
Árpád Beszédes, Ferenc Horváth, M. D. Penta, T. Gyimóthy
In Spectrum-Based Fault Localization, program elements such as statements or functions are ranked according to a suspiciousness score which can guide the programmer in finding the fault more efficiently. However, such a ranking does not include any additional information about the element under investigation. In this work, we propose to complement function-level spectrum based fault localization with function call chains - i.e., snapshots of the call stack occurring during execution - on which the fault localization is first performed, and then narrowed down to functions. Our experiments using defects from four Defects4J programs show that (i) 84% of the defective functions can be found in call chains with highest scores, (ii) the proposed approach improves Ochiai ranking of 1 to 6 positions on average, with a relative improvement of 45%, and (iii) the improvement is substantial when Ochiai produces bad rankings.
{"title":"Leveraging Contextual Information from Function Call Chains to Improve Fault Localization","authors":"Árpád Beszédes, Ferenc Horváth, M. D. Penta, T. Gyimóthy","doi":"10.1109/ICSE-Companion.2019.00122","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00122","url":null,"abstract":"In Spectrum-Based Fault Localization, program elements such as statements or functions are ranked according to a suspiciousness score which can guide the programmer in finding the fault more efficiently. However, such a ranking does not include any additional information about the element under investigation. In this work, we propose to complement function-level spectrum based fault localization with function call chains - i.e., snapshots of the call stack occurring during execution - on which the fault localization is first performed, and then narrowed down to functions. Our experiments using defects from four Defects4J programs show that (i) 84% of the defective functions can be found in call chains with highest scores, (ii) the proposed approach improves Ochiai ranking of 1 to 6 positions on average, with a relative improvement of 45%, and (iii) the improvement is substantial when Ochiai produces bad rankings.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130106133","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}