Size data of software systems are constantly collected but so far there have been no studies of applying statistical distribution models to analyze and interpret those data. In this paper, we show that the negative binomial distribution fits well to the distribution of size data such as the number of methods per class and number of lines of code per method and can be effectively used to trace software evolution processes.
{"title":"Analysis of software evolution processes using statistical distribution Models","authors":"T. Tamai, Takako Nakatani","doi":"10.1145/512035.512063","DOIUrl":"https://doi.org/10.1145/512035.512063","url":null,"abstract":"Size data of software systems are constantly collected but so far there have been no studies of applying statistical distribution models to analyze and interpret those data. In this paper, we show that the negative binomial distribution fits well to the distribution of size data such as the number of methods per class and number of lines of code per method and can be effectively used to trace software evolution processes.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"6 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126605516","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}
In the field of legacy software maintenance, there unexpectedly arise a large number of implicit coding rules --- which are seldom written down in specification documents or design documents --- as software becomes more complicated than it used be. Since not all the members in a maintenance team realize each of implicit coding rules, a maintainer who is not aware of a rule often violates the rule while doing various maintenance activities such as adding new functionality and repairing faults. The problem here is not only such a violation causes injection of a new fault into software but also this violation will be repeated again and again in the future by different maintainers. Indeed, we found that 32.7% of faults of certain legacy software were due to such violations.This paper proposes a method for detecting code fragments that violate implicit coding rules. In the method, an expert maintainer firstly investigates the causes, situations, and code fragments of each fault described in bug reports; and, identifies implicit coding rules as much as possible. Then, code patterns violating the rules (which we call bug code patterns) are described in a pattern description language. Finally, potential faulty code fragments are extracted by a pattern matching technique.
{"title":"A method for detecting faulty code violating implicit coding rules","authors":"Tomoko Matsumura, Akito Monden, Ken-ichi Matsumoto","doi":"10.1145/512035.512040","DOIUrl":"https://doi.org/10.1145/512035.512040","url":null,"abstract":"In the field of legacy software maintenance, there unexpectedly arise a large number of implicit coding rules --- which are seldom written down in specification documents or design documents --- as software becomes more complicated than it used be. Since not all the members in a maintenance team realize each of implicit coding rules, a maintainer who is not aware of a rule often violates the rule while doing various maintenance activities such as adding new functionality and repairing faults. The problem here is not only such a violation causes injection of a new fault into software but also this violation will be repeated again and again in the future by different maintainers. Indeed, we found that 32.7% of faults of certain legacy software were due to such violations.This paper proposes a method for detecting code fragments that violate implicit coding rules. In the method, an expert maintainer firstly investigates the causes, situations, and code fragments of each fault described in bug reports; and, identifies implicit coding rules as much as possible. Then, code patterns violating the rules (which we call bug code patterns) are described in a pattern description language. Finally, potential faulty code fragments are extracted by a pattern matching technique.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"73 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122271149","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}
Noritoshi Atsumi, Shoji Yuen, K. Agusa, Shinichirou Yamamoto
This paper shows a methodology to evolve a library of functions to be with common patterns of usage, called idioms. In source programs written in C, it is commonly seen that library functions are combined in a certain pattern since functionalities required in application software are more abstract than those of the library functions. This means that using appropriate idioms for the purpose is one of the key issues in implementing functionalities of the software. Investigating idioms in the existing elaborate software in terms of control and data dependencies of library function-calls, it is observed that "good" idioms contribute to the reliability in developing and maintaining software. Based on this idea, we extract idioms from the existing open-source software in the form of FCDGs (Function Call Dependency Graphs). By categorising those idioms as a database of FCDG patterns, we propose evolved libraries where each library function is accompanied by the typical reliable patterns of usage. By exploiting an evolved library, we show how effectively potential defects that may lead to unexpected behaviour are resolved by checking the conformance to our idioms.
{"title":"Library evolution for reliable software","authors":"Noritoshi Atsumi, Shoji Yuen, K. Agusa, Shinichirou Yamamoto","doi":"10.1145/512035.512052","DOIUrl":"https://doi.org/10.1145/512035.512052","url":null,"abstract":"This paper shows a methodology to evolve a library of functions to be with common patterns of usage, called idioms. In source programs written in C, it is commonly seen that library functions are combined in a certain pattern since functionalities required in application software are more abstract than those of the library functions. This means that using appropriate idioms for the purpose is one of the key issues in implementing functionalities of the software. Investigating idioms in the existing elaborate software in terms of control and data dependencies of library function-calls, it is observed that \"good\" idioms contribute to the reliability in developing and maintaining software. Based on this idea, we extract idioms from the existing open-source software in the form of FCDGs (Function Call Dependency Graphs). By categorising those idioms as a database of FCDG patterns, we propose evolved libraries where each library function is accompanied by the typical reliable patterns of usage. By exploiting an evolved library, we show how effectively potential defects that may lead to unexpected behaviour are resolved by checking the conformance to our idioms.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"77 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115812859","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}
Collaboration-based design is a methodology for de-coupling application aspects in the object-oriented world. Because collaborations are relatively orthogonal to each other, a collaboration can be implemented independently and reused in different context without any major change. Mixins and mixin layers are techniques to transform in a fairly straightforward manner the collaboration-based designs to the implementations. Subject-oriented programming (SOP) [3] and multi-dimensional separation of concerns (MDSOC) [6] are similar approaches to software development. The concepts of subject in SOP and concern in MDSOC cover the collaboration concept. Hyper/J[5] is a very useful tool for composing independently developed application aspects. This paper presents an attempt to implement layered design in Java and Hyper/J. In addition, it also compares this method with another method of composing mixin layers constructed by C++ templates [4].
{"title":"Collaboration-based evolvable software implementations: Java and Hyper/J vs. C++-templates composition","authors":"N. Thang, T. Katayama","doi":"10.1145/512035.512043","DOIUrl":"https://doi.org/10.1145/512035.512043","url":null,"abstract":"Collaboration-based design is a methodology for de-coupling application aspects in the object-oriented world. Because collaborations are relatively orthogonal to each other, a collaboration can be implemented independently and reused in different context without any major change. Mixins and mixin layers are techniques to transform in a fairly straightforward manner the collaboration-based designs to the implementations. Subject-oriented programming (SOP) [3] and multi-dimensional separation of concerns (MDSOC) [6] are similar approaches to software development. The concepts of subject in SOP and concern in MDSOC cover the collaboration concept. Hyper/J[5] is a very useful tool for composing independently developed application aspects. This paper presents an attempt to implement layered design in Java and Hyper/J. In addition, it also compares this method with another method of composing mixin layers constructed by C++ templates [4].","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"3 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117336186","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}
This paper recognizes the gap in research and practice that exists in addressing the evolution of E-Type systems that result from changes in the operating environment of the system over very long lifecycles. Through the fusion of a Goal Directed approach to requirements and the use of techniques drawn from Scenario Planning as used in the business community, this paper envisages an improved approach to requirements analysis. This approach would provide early indications of requirements stability and improved risk identification, so that they might then go on to be used as a means of preventing, or preparing for, change within the system design. An ongoing feasibility study is introduced and some early impressions from the study are summarized, including some potential instabilities in our Goals and Assumptions - and an insight into the way the system might affect the future environment itself.
{"title":"Environmental scenarios and requirements stability","authors":"David Bush, A. Finkelstein","doi":"10.1145/512035.512067","DOIUrl":"https://doi.org/10.1145/512035.512067","url":null,"abstract":"This paper recognizes the gap in research and practice that exists in addressing the evolution of E-Type systems that result from changes in the operating environment of the system over very long lifecycles. Through the fusion of a Goal Directed approach to requirements and the use of techniques drawn from Scenario Planning as used in the business community, this paper envisages an improved approach to requirements analysis. This approach would provide early indications of requirements stability and improved risk identification, so that they might then go on to be used as a means of preventing, or preparing for, change within the system design. An ongoing feasibility study is introduced and some early impressions from the study are summarized, including some potential instabilities in our Goals and Assumptions - and an insight into the way the system might affect the future environment itself.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"12 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117341608","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}
It is widely accepted that the role of software "architect" that provide frameworks to program developers is important in the object-oriented software development processes. When developers try to extend the base classes given by the architect, they may want some guidelines that tell them how many subclasses and how many methods in one subclass are reasonable. So far we are not aware of such guidelines. Through measurements of Java and Delphi class libraries, we have distilled formulae that forecast the number of methods and the number of subclasses when constructing class trees from the base classes. We propose that we should focus to extract methods and attributes rather than class structure. The formulae we have formulated support this proposition.
{"title":"A verification of class structure evolution model and its parameters","authors":"M. Ohki, Shinjiro Akiyama, Y. Kambayashi","doi":"10.1145/512035.512049","DOIUrl":"https://doi.org/10.1145/512035.512049","url":null,"abstract":"It is widely accepted that the role of software \"architect\" that provide frameworks to program developers is important in the object-oriented software development processes. When developers try to extend the base classes given by the architect, they may want some guidelines that tell them how many subclasses and how many methods in one subclass are reasonable. So far we are not aware of such guidelines. Through measurements of Java and Delphi class libraries, we have distilled formulae that forecast the number of methods and the number of subclasses when constructing class trees from the base classes. We propose that we should focus to extract methods and attributes rather than class structure. The formulae we have formulated support this proposition.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123042154","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}
Previous uses of persistent computation state have focused on fault tolerant computing, continuations of interactive sessions, process migration, and debugging. Dramatic increases in computer power and storage have made additional uses practical. SBDebug is a Computation Scrapbook system that explores how multiple 100% complete snapshots of runtime state can help support other aspects of software development. Snapshots stored in a Computation Scrapbook can document source code, initialize and evaluate the testing of code, and provide criteria for automatic code generation. In this way, Computation Scrapbooks show potential for use in many phases in the evolution of software, including the reading, writing, testing, transforming, debugging, and documenting of programs.
{"title":"Computation scrapbooks for software evolution","authors":"R. Potter, M. Hagiya","doi":"10.1145/512035.512069","DOIUrl":"https://doi.org/10.1145/512035.512069","url":null,"abstract":"Previous uses of persistent computation state have focused on fault tolerant computing, continuations of interactive sessions, process migration, and debugging. Dramatic increases in computer power and storage have made additional uses practical. SBDebug is a Computation Scrapbook system that explores how multiple 100% complete snapshots of runtime state can help support other aspects of software development. Snapshots stored in a Computation Scrapbook can document source code, initialize and evaluate the testing of code, and provide criteria for automatic code generation. In this way, Computation Scrapbooks show potential for use in many phases in the evolution of software, including the reading, writing, testing, transforming, debugging, and documenting of programs.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122054729","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}
Chang impact analysis is an useful technique for software evolution. Many techniques have been proposed for supporting change impact analysis of procedural or object-oriented software, but no effort has been made for change impact analysis of aspect-oriented software. In this paper, we present an approach to supporting change impact analysis of aspect-oriented software based on program slicing technique. The main feature of our approach is to assess the effect of changes in an aspect-oriented program by analyzing its source code, and therefore, the process of change impact analysis can be automated completely.
{"title":"Change impact analysis for aspect-oriented software evolution","authors":"Jianjun Zhao","doi":"10.1145/512035.512060","DOIUrl":"https://doi.org/10.1145/512035.512060","url":null,"abstract":"Chang impact analysis is an useful technique for software evolution. Many techniques have been proposed for supporting change impact analysis of procedural or object-oriented software, but no effort has been made for change impact analysis of aspect-oriented software. In this paper, we present an approach to supporting change impact analysis of aspect-oriented software based on program slicing technique. The main feature of our approach is to assess the effect of changes in an aspect-oriented program by analyzing its source code, and therefore, the process of change impact analysis can be automated completely.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"93 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128582191","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}
Recently, mobile code technology has been utilized in many systems: Java applets, Jini, Active network, Internet appliances, etc. To make mobile code programs work more effectively, we must consider their adaptation on runtime environments. Our goal is to realize mobile code programs that can adapt themselves to runtime environments flexibly & safely. The adaptation can be regarded as a basic & important mechanism for software evolution of mobile code programs. Towards the goal, we design a software model named SAM code. Mobile code programs based on the model can realize their adaptation on runtime environments successfully without their misbehavior & runtime errors and system faults. In this paper, we give an overview of the model and discuss its effectiveness.
{"title":"A software model for flexible & safe adaptation of mobile code programs","authors":"N. Amano, Takuo Watanabe","doi":"10.1145/512035.512050","DOIUrl":"https://doi.org/10.1145/512035.512050","url":null,"abstract":"Recently, mobile code technology has been utilized in many systems: Java applets, Jini, Active network, Internet appliances, etc. To make mobile code programs work more effectively, we must consider their adaptation on runtime environments. Our goal is to realize mobile code programs that can adapt themselves to runtime environments flexibly & safely. The adaptation can be regarded as a basic & important mechanism for software evolution of mobile code programs. Towards the goal, we design a software model named SAM code. Mobile code programs based on the model can realize their adaptation on runtime environments successfully without their misbehavior & runtime errors and system faults. In this paper, we give an overview of the model and discuss its effectiveness.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130963980","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}
Model-based software development poses requirements on the quality of models which cannot yet be fulfilled by models in the standard object-oriented modeling language, the UML. In particular, the semantic consistency of UML models is an open issue. Model-based evolution, as one crucial aspect of model-based development, requires support for re-establishing the consistency of a new version of the model after an evolution step.In this position paper, we observe that, under certain assumptions, the new model can be shown to be consistent if a certain semantic relation holds between the replaced sub-models. Thereby, one can avoid a complete re-iteration of all consistency checks for the new model, concentrating instead on those parts that have been modified.
{"title":"Towards consistency-preserving model evolution","authors":"G. Engels, J. Küster, R. Heckel, L. Groenewegen","doi":"10.1145/512035.512066","DOIUrl":"https://doi.org/10.1145/512035.512066","url":null,"abstract":"Model-based software development poses requirements on the quality of models which cannot yet be fulfilled by models in the standard object-oriented modeling language, the UML. In particular, the semantic consistency of UML models is an open issue. Model-based evolution, as one crucial aspect of model-based development, requires support for re-establishing the consistency of a new version of the model after an evolution step.In this position paper, we observe that, under certain assumptions, the new model can be shown to be consistent if a certain semantic relation holds between the replaced sub-models. Thereby, one can avoid a complete re-iteration of all consistency checks for the new model, concentrating instead on those parts that have been modified.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"29 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132160517","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}