首页 > 最新文献

2011 18th Working Conference on Reverse Engineering最新文献

英文 中文
Renovation by Machine-Assisted Program Transformation in Production Reporting and Integration 机器辅助程序转换在生产报告和集成中的革新
Pub Date : 2011-10-17 DOI: 10.1109/WCRE.2011.57
S. Mintchev
In corporate IT, subject areas like Production Reporting and Enterprise Application Integration are routinely considered in isolation. Needs are often met by purchasing separate product suites or packages, which can be incompatible, and contain unused overlapping functionality. In this paper we discuss our experience of applying a more holistic approach. We look at how purchased software can be extended in-house with the help of a program transformation technique, and can then be utilised in a service-oriented architecture for the purposes of information retrieval, data and process integration. By reusing software components for reporting and integration purposes, we have been able to realise savings in all phases of the software lifecycle.
在企业IT中,生产报告和企业应用程序集成等主题领域通常是单独考虑的。通常通过购买单独的产品套件或包来满足需求,这些产品套件或包可能不兼容,并且包含未使用的重叠功能。在本文中,我们讨论了应用更全面的方法的经验。我们将研究如何在程序转换技术的帮助下对购买的软件进行内部扩展,然后在面向服务的体系结构中用于信息检索、数据和流程集成。通过为报告和集成目的重用软件组件,我们已经能够在软件生命周期的所有阶段实现节省。
{"title":"Renovation by Machine-Assisted Program Transformation in Production Reporting and Integration","authors":"S. Mintchev","doi":"10.1109/WCRE.2011.57","DOIUrl":"https://doi.org/10.1109/WCRE.2011.57","url":null,"abstract":"In corporate IT, subject areas like Production Reporting and Enterprise Application Integration are routinely considered in isolation. Needs are often met by purchasing separate product suites or packages, which can be incompatible, and contain unused overlapping functionality. In this paper we discuss our experience of applying a more holistic approach. We look at how purchased software can be extended in-house with the help of a program transformation technique, and can then be utilised in a service-oriented architecture for the purposes of information retrieval, data and process integration. By reusing software components for reporting and integration purposes, we have been able to realise savings in all phases of the software lifecycle.","PeriodicalId":350863,"journal":{"name":"2011 18th Working Conference on Reverse Engineering","volume":"35 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-10-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114645470","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}
引用次数: 0
An Exploratory Study of Macro Co-changes 宏观共变的探索性研究
Pub Date : 2011-10-17 DOI: 10.1109/WCRE.2011.47
Fehmi Jaafar, Yann-Gaël Guéhéneuc, Sylvie Hamel, G. Antoniol
The literature describes several approaches to identify the artefacts of programs that change together to reveal the (hidden) dependencies among these artefacts. These approaches analyse historical data, mined from version control systems, and report co-changing artefacts, which hint at the causes, consequences, and actors of the changes. We introduce the novel concepts of macro co-changes (MCC), i.e., of artefacts that co-change within a large time interval, and of dephase macro co-changes (DMCC), i.e., macro co-changes that always happen with the same shifts in time. We describe typical scenarios of MCC and DMCC and we use the Hamming distance to detect approximate occurrences of MCC and DMCC. We present our approach, Macocha, to identify these concepts in large programs. We apply Macocha and compare it in terms of precision and recall with UML Diff (file stability) and association rules (co-changing files) on four systems: Argo UML, Free BSD, SIP, and XalanC. We also use external information to validate the (approximate) MCC and DMCC found by Macocha. We thus answer two research questions showing the existence and usefulness of theses concepts and explaining scenarios of hidden dependencies among artefacts.
文献描述了几种方法来识别一起更改的程序的工件,以揭示这些工件之间的(隐藏的)依赖关系。这些方法分析从版本控制系统中挖掘的历史数据,并报告共同更改的工件,这些工件暗示了更改的原因、结果和参与者。我们引入了宏观共变(MCC)和去相宏观共变(DMCC)的新概念,即在大时间间隔内共变的伪相,即总是在相同的时间位移中发生的宏观共变。我们描述了MCC和DMCC的典型情景,并使用汉明距离来检测MCC和DMCC的近似发生情况。我们提出了在大型程序中识别这些概念的方法——Macocha。我们在四个系统上应用Macocha,并将其与UML Diff(文件稳定性)和关联规则(共同更改文件)在精度和召回方面进行比较:Argo UML、Free BSD、SIP和XalanC。我们还使用外部信息来验证Macocha发现的(近似)MCC和DMCC。因此,我们回答了两个研究问题,展示了这些概念的存在和有用性,并解释了人工制品之间隐藏依赖的场景。
{"title":"An Exploratory Study of Macro Co-changes","authors":"Fehmi Jaafar, Yann-Gaël Guéhéneuc, Sylvie Hamel, G. Antoniol","doi":"10.1109/WCRE.2011.47","DOIUrl":"https://doi.org/10.1109/WCRE.2011.47","url":null,"abstract":"The literature describes several approaches to identify the artefacts of programs that change together to reveal the (hidden) dependencies among these artefacts. These approaches analyse historical data, mined from version control systems, and report co-changing artefacts, which hint at the causes, consequences, and actors of the changes. We introduce the novel concepts of macro co-changes (MCC), i.e., of artefacts that co-change within a large time interval, and of dephase macro co-changes (DMCC), i.e., macro co-changes that always happen with the same shifts in time. We describe typical scenarios of MCC and DMCC and we use the Hamming distance to detect approximate occurrences of MCC and DMCC. We present our approach, Macocha, to identify these concepts in large programs. We apply Macocha and compare it in terms of precision and recall with UML Diff (file stability) and association rules (co-changing files) on four systems: Argo UML, Free BSD, SIP, and XalanC. We also use external information to validate the (approximate) MCC and DMCC found by Macocha. We thus answer two research questions showing the existence and usefulness of theses concepts and explaining scenarios of hidden dependencies among artefacts.","PeriodicalId":350863,"journal":{"name":"2011 18th Working Conference on Reverse Engineering","volume":"103 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-10-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127138186","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}
引用次数: 34
Make it or Break it: Mining Anomalies from Linux Kbuild 成功或失败:从Linux Kbuild中挖掘异常
Pub Date : 2011-10-17 DOI: 10.1109/WCRE.2011.46
Sarah Nadi, R. Holt
The Linux kernel has long been an interesting subject of study in terms of its source code. Recently, it has also been studied in terms of its variability since the Linux kernel can be configured to include or omit certain features according to the user's selection. These features are defined in the Kconfig files included in the Linux kernel code. Several articles study both the source code and Kconfig files to ensure variability is correctly implemented and to detect anomalies. However, these studies ignore the Make files which are another important component that controls the variability of the Linux kernel. The Make files are responsible for specifying what actually gets compiled and built into the final kernel. With over 1,300 Make files, more than 35,000 source code files, and over 10,000 Kconfig features, inconsistencies and anomalies are inevitable. In this paper, we explore the Linux's Make files (Kbuild) to detect anomalies. We develop three rules to identify anomalies in the Make files. Using these rules, we detect 89 anomalies in the latest release of the Linux kernel (2.6.38.6). We also perform a longitudinal analysis to study the evolution of Kbuild anomalies over time, and the solutions implemented to correct them. Our results show that many of the anomalies we detect are eventually corrected in future releases. This work is a first attempt at exploring the consistency of the variability implemented in Kbuild with the rest of the kernel. Such work opens the door for automatic anomaly detection in build systems which can save developers time in the future.
就其源代码而言,Linux内核长期以来一直是一个有趣的研究主题。最近,它的可变性也得到了研究,因为Linux内核可以根据用户的选择配置为包含或省略某些特性。这些特性在Linux内核代码中包含的Kconfig文件中定义。有几篇文章研究了源代码和Kconfig文件,以确保正确实现可变性并检测异常。然而,这些研究忽略了Make文件,而Make文件是控制Linux内核可变性的另一个重要组件。Make文件负责指定实际编译并内建到最终内核中的内容。有超过1300个Make文件,超过35000个源代码文件,超过10000个Kconfig特性,不一致和异常是不可避免的。在本文中,我们探索了Linux的Make文件(Kbuild)来检测异常。我们开发了三条规则来识别Make文件中的异常情况。使用这些规则,我们在最新版本的Linux内核(2.6.38.6)中检测到89个异常。我们还进行了纵向分析,以研究Kbuild异常随时间的演变,以及为纠正它们而实施的解决方案。我们的结果表明,我们检测到的许多异常最终会在未来的版本中得到纠正。这项工作是探索Kbuild中实现的可变性与内核其他部分的一致性的第一次尝试。这样的工作为构建系统中的自动异常检测打开了大门,可以在未来节省开发人员的时间。
{"title":"Make it or Break it: Mining Anomalies from Linux Kbuild","authors":"Sarah Nadi, R. Holt","doi":"10.1109/WCRE.2011.46","DOIUrl":"https://doi.org/10.1109/WCRE.2011.46","url":null,"abstract":"The Linux kernel has long been an interesting subject of study in terms of its source code. Recently, it has also been studied in terms of its variability since the Linux kernel can be configured to include or omit certain features according to the user's selection. These features are defined in the Kconfig files included in the Linux kernel code. Several articles study both the source code and Kconfig files to ensure variability is correctly implemented and to detect anomalies. However, these studies ignore the Make files which are another important component that controls the variability of the Linux kernel. The Make files are responsible for specifying what actually gets compiled and built into the final kernel. With over 1,300 Make files, more than 35,000 source code files, and over 10,000 Kconfig features, inconsistencies and anomalies are inevitable. In this paper, we explore the Linux's Make files (Kbuild) to detect anomalies. We develop three rules to identify anomalies in the Make files. Using these rules, we detect 89 anomalies in the latest release of the Linux kernel (2.6.38.6). We also perform a longitudinal analysis to study the evolution of Kbuild anomalies over time, and the solutions implemented to correct them. Our results show that many of the anomalies we detect are eventually corrected in future releases. This work is a first attempt at exploring the consistency of the variability implemented in Kbuild with the rest of the kernel. Such work opens the door for automatic anomaly detection in build systems which can save developers time in the future.","PeriodicalId":350863,"journal":{"name":"2011 18th Working Conference on Reverse Engineering","volume":"51 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-10-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132269016","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}
引用次数: 25
Refactoring Traditional Forms into Ajax-enabled Forms 将传统表单重构为支持ajax的表单
Pub Date : 2011-10-17 DOI: 10.1109/WCRE.2011.51
Ming Ying, James Miller
Ajax is a set of web development technologies for developing Rich Internet Applications (RIA); it makes web pages more responsive and minimizes the impact of round-trip latency by only updating portions of the web page. Forms are common in web applications. However, in traditional web applications, the entire page is refreshed each time the form is submitted. This method is inefficient, hence, Ajax-enabled forms should replace these traditional forms. In this paper, we describe a refactoring system called Form Transformation Tool (FTT) to provide support for web programmers by transforming traditional forms into Ajax forms, while guaranteeing that the functionality before and after refactoring is preserved.
Ajax是一套用于开发富互联网应用程序(RIA)的web开发技术;它使网页响应更快,并且通过只更新网页的一部分来最小化往返延迟的影响。表单在web应用程序中很常见。然而,在传统的web应用程序中,每次提交表单时都会刷新整个页面。这种方法效率很低,因此,支持ajax的表单应该取代这些传统表单。在本文中,我们描述了一个被称为表单转换工具(Form Transformation Tool, FTT)的重构系统,它通过将传统表单转换为Ajax表单来为web程序员提供支持,同时保证重构前后的功能得以保留。
{"title":"Refactoring Traditional Forms into Ajax-enabled Forms","authors":"Ming Ying, James Miller","doi":"10.1109/WCRE.2011.51","DOIUrl":"https://doi.org/10.1109/WCRE.2011.51","url":null,"abstract":"Ajax is a set of web development technologies for developing Rich Internet Applications (RIA); it makes web pages more responsive and minimizes the impact of round-trip latency by only updating portions of the web page. Forms are common in web applications. However, in traditional web applications, the entire page is refreshed each time the form is submitted. This method is inefficient, hence, Ajax-enabled forms should replace these traditional forms. In this paper, we describe a refactoring system called Form Transformation Tool (FTT) to provide support for web programmers by transforming traditional forms into Ajax forms, while guaranteeing that the functionality before and after refactoring is preserved.","PeriodicalId":350863,"journal":{"name":"2011 18th Working Conference on Reverse Engineering","volume":"8 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-10-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115200343","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}
引用次数: 4
Reverse Engineering Co-maintenance Relationships Using Conceptual Analysis of Source Code 使用源代码概念分析的逆向工程共同维护关系
Pub Date : 2011-10-17 DOI: 10.1109/WCRE.2011.20
Scott Grant, J. Cordy, D. Skillicorn
In this work, we explore the relationship between topic models and co-maintenance history by introducing a visualization that compares conceptual cohesion within change lists. We explain how this view of the project history can give insight about the semantic architecture of the code, and we identify a number of patterns that characterize particular kinds of maintenance tasks. We examine the relationship between co-maintenance history and concept location, and visualize the distribution of changes across concepts to show how these techniques can be used to predict co-maintenance of source code methods.
在这项工作中,我们通过引入可视化来比较变更列表中的概念内聚,探索主题模型和共同维护历史之间的关系。我们解释了项目历史的这种视图如何能够洞察代码的语义体系结构,并且我们确定了许多描述特定类型维护任务的模式。我们研究了共同维护历史和概念位置之间的关系,并可视化了跨概念的变更分布,以展示如何使用这些技术来预测源代码方法的共同维护。
{"title":"Reverse Engineering Co-maintenance Relationships Using Conceptual Analysis of Source Code","authors":"Scott Grant, J. Cordy, D. Skillicorn","doi":"10.1109/WCRE.2011.20","DOIUrl":"https://doi.org/10.1109/WCRE.2011.20","url":null,"abstract":"In this work, we explore the relationship between topic models and co-maintenance history by introducing a visualization that compares conceptual cohesion within change lists. We explain how this view of the project history can give insight about the semantic architecture of the code, and we identify a number of patterns that characterize particular kinds of maintenance tasks. We examine the relationship between co-maintenance history and concept location, and visualize the distribution of changes across concepts to show how these techniques can be used to predict co-maintenance of source code methods.","PeriodicalId":350863,"journal":{"name":"2011 18th Working Conference on Reverse Engineering","volume":"132 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-10-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114496827","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}
引用次数: 15
Incremental Code Clone Detection: A PDG-based Approach 增量代码克隆检测:基于pdg的方法
Pub Date : 2011-10-17 DOI: 10.1109/WCRE.2011.11
Yoshiki Higo, Yasushi Ueda, Minoru Nishino, S. Kusumoto
It has been noted in recent years that the presence of code clones makes software maintenance more difficult. Unintended code inconsistencies may occur due to the presence of code clones. In order to avoid problems caused by code clones, it is necessary to identify where code clones exist in a software system. Consequently, various kinds of code clone detection techniques have been proposed before now. In particular, incremental code clone detection attracts much attention in the last few years, and line-based and token-based incremental detection methods have been proposed. In incremental detections, code clone detection results or their intermediate products persist by using databases, and it is used in next code clone detection. However, no incremental detection technique has been proposed for PDG-based detection, which requires much more time to detect code clones than line-or token-based detection. In this paper, we propose a PDG-based incremental code clone detection technique for improving practicality of PDG-based detection. A prototype tool has been developed, and it has been applied to open source software. We confirmed that detection time is extremely shortened and its detection result is almost the same as one of an existing PDG-based detection technique.
近年来,人们注意到代码克隆的存在使得软件维护更加困难。由于存在代码克隆,可能会出现意外的代码不一致。为了避免由代码克隆引起的问题,有必要确定代码克隆在软件系统中的位置。因此,目前已经提出了各种各样的代码克隆检测技术。近年来,基于行和基于令牌的增量代码克隆检测方法备受关注。在增量检测中,代码克隆检测结果或中间产物通过数据库保存,并用于下一次代码克隆检测。然而,目前还没有针对基于pdg的检测提出增量检测技术,这比基于行或标记的检测需要更多的时间来检测代码克隆。本文提出了一种基于pdg的增量代码克隆检测技术,以提高基于pdg的检测的实用性。开发了一个原型工具,并将其应用于开源软件。我们证实其检测时间大大缩短,检测结果与现有的基于pdg的检测技术几乎相同。
{"title":"Incremental Code Clone Detection: A PDG-based Approach","authors":"Yoshiki Higo, Yasushi Ueda, Minoru Nishino, S. Kusumoto","doi":"10.1109/WCRE.2011.11","DOIUrl":"https://doi.org/10.1109/WCRE.2011.11","url":null,"abstract":"It has been noted in recent years that the presence of code clones makes software maintenance more difficult. Unintended code inconsistencies may occur due to the presence of code clones. In order to avoid problems caused by code clones, it is necessary to identify where code clones exist in a software system. Consequently, various kinds of code clone detection techniques have been proposed before now. In particular, incremental code clone detection attracts much attention in the last few years, and line-based and token-based incremental detection methods have been proposed. In incremental detections, code clone detection results or their intermediate products persist by using databases, and it is used in next code clone detection. However, no incremental detection technique has been proposed for PDG-based detection, which requires much more time to detect code clones than line-or token-based detection. In this paper, we propose a PDG-based incremental code clone detection technique for improving practicality of PDG-based detection. A prototype tool has been developed, and it has been applied to open source software. We confirmed that detection time is extremely shortened and its detection result is almost the same as one of an existing PDG-based detection technique.","PeriodicalId":350863,"journal":{"name":"2011 18th Working Conference on Reverse Engineering","volume":"54 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-10-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125957842","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}
引用次数: 67
Focusing on Execution Traces Using Diver 专注于执行跟踪使用潜水员
Pub Date : 2011-10-17 DOI: 10.1109/WCRE.2011.66
D. Myers, M. Storey
Understanding the behaviour of software is an essential part of program understanding in general. Execution traces of running software can be used as a source of information about software behaviour. Unfortunately, execution traces tend to be extremely large, making it difficult to show users the information that they need. This demo presents new developments in our tool called Dynamic Interactive Views for Reverse Engineering (Diver), which attempts to address this difficulty.
一般来说,理解软件的行为是理解程序的一个重要部分。运行软件的执行轨迹可以作为软件行为的信息来源。不幸的是,执行跟踪往往非常大,因此很难向用户显示他们需要的信息。这个演示展示了我们的工具的新发展,称为动态交互视图逆向工程(潜水员),它试图解决这个困难。
{"title":"Focusing on Execution Traces Using Diver","authors":"D. Myers, M. Storey","doi":"10.1109/WCRE.2011.66","DOIUrl":"https://doi.org/10.1109/WCRE.2011.66","url":null,"abstract":"Understanding the behaviour of software is an essential part of program understanding in general. Execution traces of running software can be used as a source of information about software behaviour. Unfortunately, execution traces tend to be extremely large, making it difficult to show users the information that they need. This demo presents new developments in our tool called Dynamic Interactive Views for Reverse Engineering (Diver), which attempts to address this difficulty.","PeriodicalId":350863,"journal":{"name":"2011 18th Working Conference on Reverse Engineering","volume":"355 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-10-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122800961","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}
引用次数: 0
Application Architecture Discovery - Towards Domain-driven, Easily-Extensible Code Structure 应用架构发现——面向领域驱动、易于扩展的代码结构
Pub Date : 2011-10-17 DOI: 10.1109/WCRE.2011.56
Hitesh Sajnani, Ravindra Naik, C. Lopes
The architecture of a software system and its code structure have a strong impact on its maintainability -- the ability to fix problems, and make changes to the system efficiently. To ensure maintainability, software systems are usually organized as subsystems or modules, each with atomically defined responsibilities. However, as the system evolves, the structure of the system undergoes continuous modifications, drifting away from its original design, leading to functionally non-atomic modules and intertwined dependencies between the modules. In this paper, we propose an approach to improve the code structure and architecture by leveraging the domain knowledge of the system. Our approach exploits the knowledge about the functional architecture of the system to restructure the source code and align physically with the functional elements and the re-usable library layers. The approach is validated by applying to a case study which is an existing financial system. The preliminary analysis for the case-study reveals that the approach creates meaningful structure from the legacy code, which enables the developers to quickly identify the code that implements a given functionality.
软件系统的体系结构及其代码结构对其可维护性(即修复问题和有效地对系统进行更改的能力)有很大的影响。为了确保可维护性,软件系统通常被组织为子系统或模块,每个子系统或模块都具有自动定义的职责。然而,随着系统的发展,系统的结构经历了不断的修改,偏离了最初的设计,导致功能上的非原子模块和模块之间相互交织的依赖关系。在本文中,我们提出了一种利用系统的领域知识来改进代码结构和体系结构的方法。我们的方法利用关于系统功能架构的知识来重构源代码,并与功能元素和可重用的库层进行物理对齐。通过应用于一个现有金融系统的案例研究,验证了该方法的有效性。对案例研究的初步分析表明,该方法从遗留代码中创建了有意义的结构,这使得开发人员能够快速识别实现给定功能的代码。
{"title":"Application Architecture Discovery - Towards Domain-driven, Easily-Extensible Code Structure","authors":"Hitesh Sajnani, Ravindra Naik, C. Lopes","doi":"10.1109/WCRE.2011.56","DOIUrl":"https://doi.org/10.1109/WCRE.2011.56","url":null,"abstract":"The architecture of a software system and its code structure have a strong impact on its maintainability -- the ability to fix problems, and make changes to the system efficiently. To ensure maintainability, software systems are usually organized as subsystems or modules, each with atomically defined responsibilities. However, as the system evolves, the structure of the system undergoes continuous modifications, drifting away from its original design, leading to functionally non-atomic modules and intertwined dependencies between the modules. In this paper, we propose an approach to improve the code structure and architecture by leveraging the domain knowledge of the system. Our approach exploits the knowledge about the functional architecture of the system to restructure the source code and align physically with the functional elements and the re-usable library layers. The approach is validated by applying to a case study which is an existing financial system. The preliminary analysis for the case-study reveals that the approach creates meaningful structure from the legacy code, which enables the developers to quickly identify the code that implements a given functionality.","PeriodicalId":350863,"journal":{"name":"2011 18th Working Conference on Reverse Engineering","volume":"34 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-10-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134189522","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}
引用次数: 5
An Empirical Study of Refactoring in the Context of FanIn and FanOut Coupling FanIn和FanOut耦合下重构的实证研究
Pub Date : 2011-10-17 DOI: 10.1109/WCRE.2011.52
Alessandro Murgia, R. Tonelli, S. Counsell, G. Concas, M. Marchesi
The aim of refactoring is to reduce software complexity and hence simplify the maintenance process. In this paper, we explore the impact of refactorings on "FanIn" and "FanOut" coupling metrics through extraction of refactoring data from multiple releases of five Java open-source systems, We first considered how a single refactoring modified these metric values, what happened when refactorings had been applied to a single class in unison and finally, what influence a set of refactorings had on the shape of Fan In and Fan Out distributions. Results indicated that, on average, refactored classes tended to have larger FanIn and Fan Out values when compared with non-refactored classes. Where evidence of multiple (different) refactorings applied to the same class was found, the net effect (in terms of FanIn and Fan Out coupling values) was negligible.
重构的目的是降低软件的复杂性,从而简化维护过程。在本文中,我们通过从五个Java开源系统的多个版本中提取重构数据来探讨重构对“FanIn”和“FanOut”耦合指标的影响。我们首先考虑了单个重构如何修改这些度量值,当重构被一致地应用于单个类时会发生什么,最后,一组重构对FanIn和FanOut分布的形状有什么影响。结果表明,平均而言,与非重构类相比,重构类倾向于具有更大的FanIn和Fan Out值。如果发现对同一个类应用了多个(不同的)重构的证据,则净效应(就FanIn和Fan Out耦合值而言)可以忽略不计。
{"title":"An Empirical Study of Refactoring in the Context of FanIn and FanOut Coupling","authors":"Alessandro Murgia, R. Tonelli, S. Counsell, G. Concas, M. Marchesi","doi":"10.1109/WCRE.2011.52","DOIUrl":"https://doi.org/10.1109/WCRE.2011.52","url":null,"abstract":"The aim of refactoring is to reduce software complexity and hence simplify the maintenance process. In this paper, we explore the impact of refactorings on \"FanIn\" and \"FanOut\" coupling metrics through extraction of refactoring data from multiple releases of five Java open-source systems, We first considered how a single refactoring modified these metric values, what happened when refactorings had been applied to a single class in unison and finally, what influence a set of refactorings had on the shape of Fan In and Fan Out distributions. Results indicated that, on average, refactored classes tended to have larger FanIn and Fan Out values when compared with non-refactored classes. Where evidence of multiple (different) refactorings applied to the same class was found, the net effect (in terms of FanIn and Fan Out coupling values) was negligible.","PeriodicalId":350863,"journal":{"name":"2011 18th Working Conference on Reverse Engineering","volume":"91 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-10-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115792474","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}
引用次数: 10
An Empirical Validation of the Benefits of Adhering to the Law of Demeter 坚持得墨忒耳法则益处的实证验证
Pub Date : 2011-10-17 DOI: 10.1109/WCRE.2011.36
Yi Guo, Michael Würsch, E. Giger, H. Gall
The Law of Demeter formulates the rule-of-thumb that modules in object-oriented program code should "only talk to their immediate friends". While it is said to foster information hiding for object-oriented software, solid empirical evidence confirming the positive effects of following the Law of Demeter is still lacking. In this paper, we conduct an empirical study to confirm that violating the Law of Demeter has a negative impact on software quality, in particular that it leads to more bugs. We implement an Eclipse plugin to calculate the amount of violations of both the strong and the weak form of the law in five Eclipse sub-projects. Then we discover the correlation between violations of the law and the bug-proneness and perform a logistic regression analysis of three sub-projects. We also combine the violations with other OO metrics to build up a model for predicting the bug-proneness for a given class. Empirical results show that violations of the Law of Demeter indeed highly correlate with the number of bugs and are early predictor of the software quality. Based on this evidence, we conclude that obeying the Law of Demeter is a straight-forward approach for developers to reduce the number of bugs in their software.
德墨忒耳法则制定了一个经验法则,即面向对象程序代码中的模块应该“只与它们最直接的朋友对话”。虽然据说它促进了面向对象软件的信息隐藏,但仍然缺乏确凿的经验证据来证实遵循得墨忒耳定律的积极影响。在本文中,我们进行了实证研究,以证实违反得墨忒耳定律会对软件质量产生负面影响,特别是会导致更多的bug。我们实现了一个Eclipse插件来计算五个Eclipse子项目中违反法律的强形式和弱形式的数量。然后,我们发现了违法行为与漏洞倾向之间的相关性,并对三个子项目进行了逻辑回归分析。我们还将违规与其他OO指标结合起来,以建立一个模型,用于预测给定类的bug倾向。经验结果表明,违反德墨忒耳定律确实与bug的数量高度相关,并且是软件质量的早期预测指标。基于这些证据,我们得出结论,遵守德墨忒耳定律是开发人员减少软件中bug数量的直接方法。
{"title":"An Empirical Validation of the Benefits of Adhering to the Law of Demeter","authors":"Yi Guo, Michael Würsch, E. Giger, H. Gall","doi":"10.1109/WCRE.2011.36","DOIUrl":"https://doi.org/10.1109/WCRE.2011.36","url":null,"abstract":"The Law of Demeter formulates the rule-of-thumb that modules in object-oriented program code should \"only talk to their immediate friends\". While it is said to foster information hiding for object-oriented software, solid empirical evidence confirming the positive effects of following the Law of Demeter is still lacking. In this paper, we conduct an empirical study to confirm that violating the Law of Demeter has a negative impact on software quality, in particular that it leads to more bugs. We implement an Eclipse plugin to calculate the amount of violations of both the strong and the weak form of the law in five Eclipse sub-projects. Then we discover the correlation between violations of the law and the bug-proneness and perform a logistic regression analysis of three sub-projects. We also combine the violations with other OO metrics to build up a model for predicting the bug-proneness for a given class. Empirical results show that violations of the Law of Demeter indeed highly correlate with the number of bugs and are early predictor of the software quality. Based on this evidence, we conclude that obeying the Law of Demeter is a straight-forward approach for developers to reduce the number of bugs in their software.","PeriodicalId":350863,"journal":{"name":"2011 18th Working Conference on Reverse Engineering","volume":"73 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-10-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123181203","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}
引用次数: 10
期刊
2011 18th Working Conference on Reverse Engineering
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1