首页 > 最新文献

2010 IEEE International Conference on Software Maintenance最新文献

英文 中文
Automatically repairing test cases for evolving method declarations 自动修复演进方法声明的测试用例
Pub Date : 2010-09-12 DOI: 10.1109/ICSM.2010.5609549
Mehdi MirzaAghaei, F. Pastore, M. Pezzè
When software systems evolve, for example due to fault fixes, modification of functionalities or refactoring activities, test cases may become obsolete thus generating wrong results or even not being executable or compilable. Maintaining test cases is expensive and time consuming, and often test cases are discarded by software developers due to high maintenance costs. This paper presents TestCareAssistant, a technique that combines data-flow analysis with program diffing for automatically repairing test cases that become obsolete because of changes in method declarations (addition, removal, or type modification of parameters or return values). The paper illustrates the efficacy of TestCareAssistant by analyzing the impact of method declarations changes on the executability of test cases, and by presenting the preliminary results of applying TestCareAssistant to repair 22 test cases.
当软件系统发展时,例如由于错误修复、功能修改或重构活动,测试用例可能会过时,从而产生错误的结果,甚至不能执行或编译。维护测试用例是昂贵且耗时的,并且由于高昂的维护成本,测试用例经常被软件开发人员丢弃。本文介绍了TestCareAssistant,一种将数据流分析与程序差异相结合的技术,用于自动修复由于方法声明(参数或返回值的添加、删除或类型修改)的更改而过时的测试用例。本文通过分析方法声明变更对测试用例可执行性的影响,并通过展示应用TestCareAssistant修复22个测试用例的初步结果,来说明TestCareAssistant的有效性。
{"title":"Automatically repairing test cases for evolving method declarations","authors":"Mehdi MirzaAghaei, F. Pastore, M. Pezzè","doi":"10.1109/ICSM.2010.5609549","DOIUrl":"https://doi.org/10.1109/ICSM.2010.5609549","url":null,"abstract":"When software systems evolve, for example due to fault fixes, modification of functionalities or refactoring activities, test cases may become obsolete thus generating wrong results or even not being executable or compilable. Maintaining test cases is expensive and time consuming, and often test cases are discarded by software developers due to high maintenance costs. This paper presents TestCareAssistant, a technique that combines data-flow analysis with program diffing for automatically repairing test cases that become obsolete because of changes in method declarations (addition, removal, or type modification of parameters or return values). The paper illustrates the efficacy of TestCareAssistant by analyzing the impact of method declarations changes on the executability of test cases, and by presenting the preliminary results of applying TestCareAssistant to repair 22 test cases.","PeriodicalId":101801,"journal":{"name":"2010 IEEE International Conference on Software Maintenance","volume":"9 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114885680","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}
引用次数: 33
A human study of fault localization accuracy 故障定位精度的人工研究
Pub Date : 2010-09-12 DOI: 10.1109/ICSM.2010.5609691
Zachary P. Fry, Westley Weimer
Localizing and repairing defects are critical software engineering activities. Not all programs and not all bugs are equally easy to debug, however. We present formal models, backed by a human study involving 65 participants (from both academia and industry) and 1830 total judgments, relating various software- and defect-related features to human accuracy at locating errors. Our study involves example code from Java textbooks, helping us to control for both readability and complexity. We find that certain types of defects are much harder for humans to locate accurately. For example, humans are over five times more accurate at locating “extra statements” than “missing statements” based on experimental observation. We also find that, independent of the type of defect involved, certain code contexts are harder to debug than others. For example, humans are over three times more accurate at finding defects in code that provides an array abstraction than in code that provides a tree abstraction. We identify and analyze code features that are predictive of human fault localization accuracy. Finally, we present a formal model of debugging accuracy based on those source code features that have a statistically significant correlation with human performance.
定位和修复缺陷是关键的软件工程活动。然而,并不是所有的程序和错误都同样容易调试。我们提出了正式的模型,由一项涉及65名参与者(来自学术界和工业界)的人类研究和1830个总判断支持,将各种软件和缺陷相关的特征与人类定位错误的准确性联系起来。我们的研究涉及Java教科书中的示例代码,帮助我们控制可读性和复杂性。我们发现某些类型的缺陷对人类来说很难准确定位。例如,根据实验观察,人类定位“额外语句”的准确率是“缺失语句”的五倍以上。我们还发现,与所涉及的缺陷类型无关,某些代码上下文比其他代码上下文更难调试。例如,在提供数组抽象的代码中,人类发现缺陷的准确度是提供树抽象的代码的三倍以上。我们识别和分析了预测人类故障定位准确性的代码特征。最后,我们提出了一个正式的调试精度模型,该模型基于那些与人类性能具有统计上显著相关性的源代码特征。
{"title":"A human study of fault localization accuracy","authors":"Zachary P. Fry, Westley Weimer","doi":"10.1109/ICSM.2010.5609691","DOIUrl":"https://doi.org/10.1109/ICSM.2010.5609691","url":null,"abstract":"Localizing and repairing defects are critical software engineering activities. Not all programs and not all bugs are equally easy to debug, however. We present formal models, backed by a human study involving 65 participants (from both academia and industry) and 1830 total judgments, relating various software- and defect-related features to human accuracy at locating errors. Our study involves example code from Java textbooks, helping us to control for both readability and complexity. We find that certain types of defects are much harder for humans to locate accurately. For example, humans are over five times more accurate at locating “extra statements” than “missing statements” based on experimental observation. We also find that, independent of the type of defect involved, certain code contexts are harder to debug than others. For example, humans are over three times more accurate at finding defects in code that provides an array abstraction than in code that provides a tree abstraction. We identify and analyze code features that are predictive of human fault localization accuracy. Finally, we present a formal model of debugging accuracy based on those source code features that have a statistically significant correlation with human performance.","PeriodicalId":101801,"journal":{"name":"2010 IEEE International Conference on Software Maintenance","volume":"33 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116733636","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}
引用次数: 50
Automatic verification of loop invariants 循环不变量的自动验证
Pub Date : 2010-09-12 DOI: 10.1109/ICSM.2010.5609573
Olivier Ponsini, Hélène Collavizza, Carine Fédèle, C. Michel, M. Rueher
Loop invariants play a major role in program verification. Though various techniques have been applied to automatic loop invariants generation, most interesting ones often generate only candidate invariants. Thus, a key issue to take advantage of these invariants in a verification process is to check that these candidate loop invariants are actual invariants. This paper introduces a new technique based on constraint programming for automatic verification of inductive loop invariants. This approach is efficient to detect spurious invariants and is also able to verify valid invariants under boundedness restrictions. First experiments on classical benchmarks are very promising.
循环不变量在程序验证中起着重要作用。尽管各种技术已经应用于自动循环不变量生成,但最有趣的技术通常只生成候选不变量。因此,在验证过程中利用这些不变量的一个关键问题是检查这些候选循环不变量是否是实际的不变量。本文介绍了一种基于约束规划的自动验证感应回路不变量的新技术。该方法不仅能够有效地检测出虚假不变量,而且能够在有界约束下验证有效不变量。在经典基准上的第一次实验非常有希望。
{"title":"Automatic verification of loop invariants","authors":"Olivier Ponsini, Hélène Collavizza, Carine Fédèle, C. Michel, M. Rueher","doi":"10.1109/ICSM.2010.5609573","DOIUrl":"https://doi.org/10.1109/ICSM.2010.5609573","url":null,"abstract":"Loop invariants play a major role in program verification. Though various techniques have been applied to automatic loop invariants generation, most interesting ones often generate only candidate invariants. Thus, a key issue to take advantage of these invariants in a verification process is to check that these candidate loop invariants are actual invariants. This paper introduces a new technique based on constraint programming for automatic verification of inductive loop invariants. This approach is efficient to detect spurious invariants and is also able to verify valid invariants under boundedness restrictions. First experiments on classical benchmarks are very promising.","PeriodicalId":101801,"journal":{"name":"2010 IEEE International Conference on Software Maintenance","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129808288","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}
引用次数: 6
Software modularization operators 软件模块化操作员
Pub Date : 2010-09-12 DOI: 10.1109/ICSM.2010.5609546
Girish Maskeri Rama, Naineet Patel
There exists a number of large business critical software systems written in newer languages such as C and Java that are fast becoming legacy and increasingly difficult to maintain. Unlike older monolithic systems, where modularization primarily involves splitting the monolithic code base into modules, for such newer systems which already have some basic modular structure, code decomposition is only one of the many possible activities. Even though the area of software modularization has received considerable attention over these past years, there are hardly any case studies documented in literature on modularizing large C and Java systems. We still do not fully comprehend the activities experienced developers perform when they have to modularize such newer systems. The goal of this paper is to learn from past software modularization projects and identify common recurring patterns. This paper formalizes 6 such patterns, which we term as modularization operators, that are likely to be the basic building blocks of any software modularization activity. The operators presented in this paper are validated using modularization case studies of open source software systems and a proprietary software system and several observations and insights are presented.
有许多用C和Java等较新的语言编写的大型关键业务软件系统正在迅速成为遗留问题,并且越来越难以维护。与旧的单体系统不同,在旧的单体系统中,模块化主要涉及将单体代码库拆分为模块,对于这些已经具有一些基本模块化结构的新系统,代码分解只是许多可能的活动之一。尽管软件模块化领域在过去的几年中受到了相当大的关注,但是关于大型C和Java系统模块化的文献中几乎没有记录任何案例研究。当有经验的开发人员必须模块化这样的新系统时,我们仍然不能完全理解他们所执行的活动。本文的目标是从过去的软件模块化项目中学习,并确定常见的重复模式。本文形式化了6种这样的模式,我们称之为模块化操作符,它们可能是任何软件模块化活动的基本构建块。本文使用开源软件系统和专有软件系统的模块化案例研究验证了操作符,并提出了一些观察和见解。
{"title":"Software modularization operators","authors":"Girish Maskeri Rama, Naineet Patel","doi":"10.1109/ICSM.2010.5609546","DOIUrl":"https://doi.org/10.1109/ICSM.2010.5609546","url":null,"abstract":"There exists a number of large business critical software systems written in newer languages such as C and Java that are fast becoming legacy and increasingly difficult to maintain. Unlike older monolithic systems, where modularization primarily involves splitting the monolithic code base into modules, for such newer systems which already have some basic modular structure, code decomposition is only one of the many possible activities. Even though the area of software modularization has received considerable attention over these past years, there are hardly any case studies documented in literature on modularizing large C and Java systems. We still do not fully comprehend the activities experienced developers perform when they have to modularize such newer systems. The goal of this paper is to learn from past software modularization projects and identify common recurring patterns. This paper formalizes 6 such patterns, which we term as modularization operators, that are likely to be the basic building blocks of any software modularization activity. The operators presented in this paper are validated using modularization case studies of open source software systems and a proprietary software system and several observations and insights are presented.","PeriodicalId":101801,"journal":{"name":"2010 IEEE International Conference on Software Maintenance","volume":"35 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129170138","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}
引用次数: 14
Exploring the impact of context sensitivity on blended analysis 探讨上下文敏感性对混合分析的影响
Pub Date : 2010-09-12 DOI: 10.1109/ICSM.2010.5609695
M. Fisher, Bruno Dufour, Shrutarshi Basu, B. Ryder
This paper explores the use of context sensitivity both intra- and interprocedurally in a blended (static/dynamic) program analysis for identifying source of object churn in framework-intensive Web-based applications. Empirical experiments with an existing blended analysis algorithm [10] compare combinations of (i) use of a context-insensitive call graph with a context-sensitive calling context tree, and (ii) use (or not) of context-sensitive code pruning within methods. These experiments demonstrate achievable gains in scalability and performance in terms of several metrics designed for blended escape analysis, and report results in terms of object instances created, to allow more realistic conclusions from the data than were possible previously.
本文探讨了在混合(静态/动态)程序分析中在程序内部和程序间使用上下文敏感性来识别基于框架的密集型应用程序中对象混乱的来源。使用现有混合分析算法的经验实验[10]比较了(i)使用上下文不敏感的调用图与上下文敏感的调用上下文树的组合,以及(ii)在方法中使用(或不使用)上下文敏感的代码修剪。这些实验表明,根据为混合逸出分析设计的几个指标,可以在可伸缩性和性能方面获得可实现的收益,并根据创建的对象实例报告结果,从而从数据中得出比以前更现实的结论。
{"title":"Exploring the impact of context sensitivity on blended analysis","authors":"M. Fisher, Bruno Dufour, Shrutarshi Basu, B. Ryder","doi":"10.1109/ICSM.2010.5609695","DOIUrl":"https://doi.org/10.1109/ICSM.2010.5609695","url":null,"abstract":"This paper explores the use of context sensitivity both intra- and interprocedurally in a blended (static/dynamic) program analysis for identifying source of object churn in framework-intensive Web-based applications. Empirical experiments with an existing blended analysis algorithm [10] compare combinations of (i) use of a context-insensitive call graph with a context-sensitive calling context tree, and (ii) use (or not) of context-sensitive code pruning within methods. These experiments demonstrate achievable gains in scalability and performance in terms of several metrics designed for blended escape analysis, and report results in terms of object instances created, to allow more realistic conclusions from the data than were possible previously.","PeriodicalId":101801,"journal":{"name":"2010 IEEE International Conference on Software Maintenance","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130598715","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}
引用次数: 3
Extracting reusable services from legacy object-oriented systems 从遗留的面向对象系统中提取可重用服务
Pub Date : 2010-09-12 DOI: 10.1109/ICSM.2010.5609744
L. Bao, Chao Yin, Weigang He, Jun Ge, Ping Chen
Migrating legacy object-oriented system functionalities to SOA environment is a important problem that frequently arises in many system maintenance and integration tasks. A service is often implemented by complex collaborations of many objects in an object-oriented system. Such complexity brings impedance mismatch between service and object. Moreover, the delocalized nature of object-oriented system, where the code associated with a service is distributed across many interrelated objects, make this problem even more challenging. This paper presents a four-staged approach that extracts services from legacy object-oriented systems with source code and documents. In the first stage source code of legacy system is loaded and preprocessed to form different modules according to the explicit dependencies among classes. While preprocessing, some aspect code is also embedded to intercept and log execution traces of system as well as to store states of involved objects. In the second stage, services, which represent system-level business functionalities, are modeled with use cases. Useful test cases are in turn generated from these use cases to identify services. In the third stage, the modularized and intercepted system is executed driven by generated test cases and the execution logs and object states are recorded. In the last stage, services are located and extracted by analyzing the execution logs and restoring the object states. The approach is supported by an integrated tool and the evaluation on five open-source systems yields encouraging result and demonstrates the practical applicability of the approach.
将遗留的面向对象系统功能迁移到SOA环境是许多系统维护和集成任务中经常出现的一个重要问题。服务通常通过面向对象系统中许多对象的复杂协作来实现。这种复杂性导致了服务和对象之间的阻抗不匹配。此外,面向对象系统的非局部化特性(与服务关联的代码分布在许多相互关联的对象中)使这个问题更具挑战性。本文提出了一种四阶段的方法,从具有源代码和文档的遗留面向对象系统中提取服务。第一阶段根据类之间的显式依赖关系加载和预处理遗留系统的源代码,形成不同的模块。在预处理过程中,还嵌入了一些方面代码来拦截和记录系统的执行轨迹,以及存储所涉及对象的状态。在第二阶段,用用例对表示系统级业务功能的服务进行建模。有用的测试用例依次从这些用例中生成,以识别服务。在第三阶段,由生成的测试用例驱动执行模块化和拦截的系统,并记录执行日志和对象状态。在最后一个阶段,通过分析执行日志和恢复对象状态来定位和提取服务。该方法得到了一个集成工具的支持,对五个开源系统的评估取得了令人鼓舞的结果,并证明了该方法的实际适用性。
{"title":"Extracting reusable services from legacy object-oriented systems","authors":"L. Bao, Chao Yin, Weigang He, Jun Ge, Ping Chen","doi":"10.1109/ICSM.2010.5609744","DOIUrl":"https://doi.org/10.1109/ICSM.2010.5609744","url":null,"abstract":"Migrating legacy object-oriented system functionalities to SOA environment is a important problem that frequently arises in many system maintenance and integration tasks. A service is often implemented by complex collaborations of many objects in an object-oriented system. Such complexity brings impedance mismatch between service and object. Moreover, the delocalized nature of object-oriented system, where the code associated with a service is distributed across many interrelated objects, make this problem even more challenging. This paper presents a four-staged approach that extracts services from legacy object-oriented systems with source code and documents. In the first stage source code of legacy system is loaded and preprocessed to form different modules according to the explicit dependencies among classes. While preprocessing, some aspect code is also embedded to intercept and log execution traces of system as well as to store states of involved objects. In the second stage, services, which represent system-level business functionalities, are modeled with use cases. Useful test cases are in turn generated from these use cases to identify services. In the third stage, the modularized and intercepted system is executed driven by generated test cases and the execution logs and object states are recorded. In the last stage, services are located and extracted by analyzing the execution logs and restoring the object states. The approach is supported by an integrated tool and the evaluation on five open-source systems yields encouraging result and demonstrates the practical applicability of the approach.","PeriodicalId":101801,"journal":{"name":"2010 IEEE International Conference on Software Maintenance","volume":"448 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114958949","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}
引用次数: 9
Log filtering and interpretation for root cause analysis 日志过滤和解释根本原因分析
Pub Date : 2010-09-12 DOI: 10.1109/ICSM.2010.5609556
Hamzeh Zawawy, K. Kontogiannis, J. Mylopoulos
Problem diagnosis in large software systems is a challenging and complex task. The sheer complexity and size of the logged data make it often difficult for human operators and administrators to perform problem diagnosis and root cause analysis. A challenge in this area is to provide the necessary means, tools, and techniques for the operators to focus their attention to specific parts of the logged data reducing thus the complexity of the diagnostic process. In this paper, we propose a framework for filtering logs according to specific analysis goals and diagnostic hypotheses set by the user or by an automated process. More specifically, the proposed framework uses annotated goal trees to model the constraints and the conditions by which the functionality of a particular system is being delivered. Next, a transformation process maps such constraints and conditions to a collection of queries that can be either applied to a relational database that stores the logged data or use Latent Semantic Indexing to identify the most relevant log entries for the given query. The results of such queries provide a subset of the logged data that is compliant with the goal tree and can be used by a diagnostic SAT-solver based algorithm. Experimental results show that the filtering process can reduce the time and complexity of the diagnosis when applied to multitier heterogeneous service oriented systems.
大型软件系统的问题诊断是一项具有挑战性和复杂性的任务。由于日志数据的复杂性和大小,操作人员和管理员通常很难进行问题诊断和根本原因分析。该领域面临的挑战是为作业者提供必要的手段、工具和技术,使他们能够将注意力集中在测井数据的特定部分,从而降低诊断过程的复杂性。在本文中,我们提出了一个框架,根据用户或自动化过程设置的特定分析目标和诊断假设来过滤日志。更具体地说,建议的框架使用带注释的目标树对约束和条件进行建模,特定系统的功能通过这些约束和条件被交付。接下来,转换过程将这些约束和条件映射到一组查询,这些查询既可以应用于存储记录数据的关系数据库,也可以使用Latent Semantic Indexing来标识给定查询的最相关日志条目。此类查询的结果提供了符合目标树的日志数据子集,可以由基于sat -求解器的诊断算法使用。实验结果表明,将该滤波过程应用于多层异构服务系统,可以减少诊断的时间和复杂度。
{"title":"Log filtering and interpretation for root cause analysis","authors":"Hamzeh Zawawy, K. Kontogiannis, J. Mylopoulos","doi":"10.1109/ICSM.2010.5609556","DOIUrl":"https://doi.org/10.1109/ICSM.2010.5609556","url":null,"abstract":"Problem diagnosis in large software systems is a challenging and complex task. The sheer complexity and size of the logged data make it often difficult for human operators and administrators to perform problem diagnosis and root cause analysis. A challenge in this area is to provide the necessary means, tools, and techniques for the operators to focus their attention to specific parts of the logged data reducing thus the complexity of the diagnostic process. In this paper, we propose a framework for filtering logs according to specific analysis goals and diagnostic hypotheses set by the user or by an automated process. More specifically, the proposed framework uses annotated goal trees to model the constraints and the conditions by which the functionality of a particular system is being delivered. Next, a transformation process maps such constraints and conditions to a collection of queries that can be either applied to a relational database that stores the logged data or use Latent Semantic Indexing to identify the most relevant log entries for the given query. The results of such queries provide a subset of the logged data that is compliant with the goal tree and can be used by a diagnostic SAT-solver based algorithm. Experimental results show that the filtering process can reduce the time and complexity of the diagnosis when applied to multitier heterogeneous service oriented systems.","PeriodicalId":101801,"journal":{"name":"2010 IEEE International Conference on Software Maintenance","volume":"26 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126154739","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}
引用次数: 27
Model-driven detection of Design Patterns 模型驱动的设计模式检测
Pub Date : 2010-09-12 DOI: 10.1109/ICSM.2010.5609740
M. Bernardi, G. D. Lucca
Tracing source code elements of an existing Object Oriented software system to the components of a Design Pattern is a key step in program comprehension or re-engineering. It helps, mainly for legacy systems, to discover the main design decisions and trade-offs that are often not documented. In this paper an approach is presented to automatically detect Design Patterns in existing Object Oriented systems by tracing system's source code components to the roles they play in the Patterns. Design Patterns are modelled by high level structural Properties (e.g. inheritance, dependency, invocation, delegation, type nesting and membership relationships) that are checked, by source code parsing, against the system structure and components. The approach allows to detect also Pattern variants, defined by overriding the Pattern structural properties. The approach was applied to some open-source systems to validate it. Results on the detected patterns, discovered variants and on the overall quality of the approach are provided and discussed.
将现有面向对象软件系统的源代码元素跟踪到设计模式的组件是程序理解或重新设计的关键步骤。它有助于发现通常没有记录的主要设计决策和权衡,主要是对于遗留系统。本文提出了一种自动检测现有面向对象系统中的设计模式的方法,该方法通过跟踪系统的源代码组件到它们在模式中所扮演的角色。设计模式由高级结构属性(例如继承、依赖、调用、委托、类型嵌套和成员关系)建模,这些属性通过源代码解析根据系统结构和组件进行检查。该方法还允许检测通过覆盖模式结构属性定义的模式变体。将该方法应用于一些开源系统以验证其有效性。提供并讨论了检测到的模式、发现的变体以及该方法的整体质量的结果。
{"title":"Model-driven detection of Design Patterns","authors":"M. Bernardi, G. D. Lucca","doi":"10.1109/ICSM.2010.5609740","DOIUrl":"https://doi.org/10.1109/ICSM.2010.5609740","url":null,"abstract":"Tracing source code elements of an existing Object Oriented software system to the components of a Design Pattern is a key step in program comprehension or re-engineering. It helps, mainly for legacy systems, to discover the main design decisions and trade-offs that are often not documented. In this paper an approach is presented to automatically detect Design Patterns in existing Object Oriented systems by tracing system's source code components to the roles they play in the Patterns. Design Patterns are modelled by high level structural Properties (e.g. inheritance, dependency, invocation, delegation, type nesting and membership relationships) that are checked, by source code parsing, against the system structure and components. The approach allows to detect also Pattern variants, defined by overriding the Pattern structural properties. The approach was applied to some open-source systems to validate it. Results on the detected patterns, discovered variants and on the overall quality of the approach are provided and discussed.","PeriodicalId":101801,"journal":{"name":"2010 IEEE International Conference on Software Maintenance","volume":"24 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129495302","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}
引用次数: 14
Revisiting common bug prediction findings using effort-aware models 使用努力感知模型回顾常见的bug预测结果
Pub Date : 2010-09-12 DOI: 10.1109/ICSM.2010.5609530
Yasutaka Kamei, S. Matsumoto, Akito Monden, Ken-ichi Matsumoto, Bram Adams, A. Hassan
Bug prediction models are often used to help allocate software quality assurance efforts (e.g. testing and code reviews). Mende and Koschke have recently proposed bug prediction models that are effort-aware. These models factor in the effort needed to review or test code when evaluating the effectiveness of prediction models, leading to more realistic performance evaluations. In this paper, we revisit two common findings in the bug prediction literature: 1) Process metrics (e.g., change history) outperform product metrics (e.g., LOC), 2) Package-level predictions outperform file-level predictions. Through a case study on three projects from the Eclipse Foundation, we find that the first finding holds when effort is considered, while the second finding does not hold. These findings validate the practical significance of prior findings in the bug prediction literature and encourage their adoption in practice.
Bug预测模型通常用于帮助分配软件质量保证工作(例如测试和代码审查)。Mende和Koschke最近提出了努力感知的bug预测模型。在评估预测模型的有效性时,这些模型将审查或测试代码所需的工作考虑在内,从而导致更现实的性能评估。在本文中,我们回顾了bug预测文献中的两个常见发现:1)过程度量(例如,变更历史)优于产品度量(例如,LOC); 2)包级预测优于文件级预测。通过对来自Eclipse Foundation的三个项目的案例研究,我们发现当考虑到工作量时,第一个发现是成立的,而第二个发现则不成立。这些发现验证了bug预测文献中先前发现的实际意义,并鼓励它们在实践中被采用。
{"title":"Revisiting common bug prediction findings using effort-aware models","authors":"Yasutaka Kamei, S. Matsumoto, Akito Monden, Ken-ichi Matsumoto, Bram Adams, A. Hassan","doi":"10.1109/ICSM.2010.5609530","DOIUrl":"https://doi.org/10.1109/ICSM.2010.5609530","url":null,"abstract":"Bug prediction models are often used to help allocate software quality assurance efforts (e.g. testing and code reviews). Mende and Koschke have recently proposed bug prediction models that are effort-aware. These models factor in the effort needed to review or test code when evaluating the effectiveness of prediction models, leading to more realistic performance evaluations. In this paper, we revisit two common findings in the bug prediction literature: 1) Process metrics (e.g., change history) outperform product metrics (e.g., LOC), 2) Package-level predictions outperform file-level predictions. Through a case study on three projects from the Eclipse Foundation, we find that the first finding holds when effort is considered, while the second finding does not hold. These findings validate the practical significance of prior findings in the bug prediction literature and encourage their adoption in practice.","PeriodicalId":101801,"journal":{"name":"2010 IEEE International Conference on Software Maintenance","volume":"85 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129516810","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}
引用次数: 204
MAGISTER: Quality assurance of Magic applications for software developers and end users MAGISTER:为软件开发人员和最终用户提供Magic应用程序的质量保证
Pub Date : 2010-09-12 DOI: 10.1109/ICSM.2010.5609550
Csaba Nagy, László Vidács, R. Ferenc, T. Gyimóthy, Ferenc Kocsis, István Kovács
Nowadays there are many tools and methods available for source code quality assurance based on static analysis, but most of these tools focus on traditional software development techniques with 3GL languages. Besides procedural languages, 4GL programming languages such as Magic 4GL and Progress are widely used for application development. All these languages lie outside the main scope of analysis techniques. In this paper we present MAGISTER, which is a quality assurance framework for applications being developed in Magic, a 4GL application development solution created by Magic Software Enterprises. MAGISTER extracts data using static analysis methods from applications being developed in different versions of Magic (v5-9 and uniPaaS). The extracted data (including metrics, rule violations and dependency relations) is presented to the user via a GUI so it can be queried and visualized for further analysis. It helps software developers, architects and managers through the full development cycle by performing continuous code scans and measurements.
目前有许多工具和方法可以用于基于静态分析的源代码质量保证,但这些工具大多集中在使用3GL语言的传统软件开发技术上。除了过程语言之外,4GL编程语言(如Magic 4GL和Progress)也被广泛用于应用程序开发。所有这些语言都不在分析技术的主要范围之内。在本文中,我们介绍MAGISTER,这是一个质量保证框架,用于在Magic中开发的应用程序,Magic软件企业创建的4GL应用程序开发解决方案。MAGISTER使用静态分析方法从使用不同版本的Magic (v5-9和uniPaaS)开发的应用程序中提取数据。提取的数据(包括指标、规则违例和依赖关系)通过GUI呈现给用户,因此可以对其进行查询和可视化,以便进行进一步分析。它通过执行连续的代码扫描和度量,帮助软件开发人员、架构师和管理人员完成整个开发周期。
{"title":"MAGISTER: Quality assurance of Magic applications for software developers and end users","authors":"Csaba Nagy, László Vidács, R. Ferenc, T. Gyimóthy, Ferenc Kocsis, István Kovács","doi":"10.1109/ICSM.2010.5609550","DOIUrl":"https://doi.org/10.1109/ICSM.2010.5609550","url":null,"abstract":"Nowadays there are many tools and methods available for source code quality assurance based on static analysis, but most of these tools focus on traditional software development techniques with 3GL languages. Besides procedural languages, 4GL programming languages such as Magic 4GL and Progress are widely used for application development. All these languages lie outside the main scope of analysis techniques. In this paper we present MAGISTER, which is a quality assurance framework for applications being developed in Magic, a 4GL application development solution created by Magic Software Enterprises. MAGISTER extracts data using static analysis methods from applications being developed in different versions of Magic (v5-9 and uniPaaS). The extracted data (including metrics, rule violations and dependency relations) is presented to the user via a GUI so it can be queried and visualized for further analysis. It helps software developers, architects and managers through the full development cycle by performing continuous code scans and measurements.","PeriodicalId":101801,"journal":{"name":"2010 IEEE International Conference on Software Maintenance","volume":"52 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121209666","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}
引用次数: 13
期刊
2010 IEEE International Conference on Software Maintenance
全部 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