The achievement of building evolvable systems depends on how efficiently the changeable requirements are elicited and structured by software engineers. In current requirements approaches changing requirements are not dealt with satisfactorily. Partially, this is due to the crosscutting nature of some of these requirements. Aspect-Oriented Requirements Engineering tackles the problem of crosscutting requirements, and its concepts can be used to address this problem. This work describes how early aspects, i.e. aspects identified at early stages of software development, could be integrated to an evolutionary requirements model.
{"title":"An evolutionary model of requirements correctness with early aspects","authors":"J. Araújo, D. Zowghi, A. Moreira","doi":"10.1145/1294948.1294965","DOIUrl":"https://doi.org/10.1145/1294948.1294965","url":null,"abstract":"The achievement of building evolvable systems depends on how efficiently the changeable requirements are elicited and structured by software engineers. In current requirements approaches changing requirements are not dealt with satisfactorily. Partially, this is due to the crosscutting nature of some of these requirements. Aspect-Oriented Requirements Engineering tackles the problem of crosscutting requirements, and its concepts can be used to address this problem. This work describes how early aspects, i.e. aspects identified at early stages of software development, could be integrated to an evolutionary requirements model.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"276 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-09-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116251279","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}
Modification analysis is part of most maintenance processes and includes among other activities, early prediction of potential change impacts, feasibility studies, cost estimation, etc. Existing impact analysis and regression testing techniques being source code based require at least some understanding of the system implementation. In this research we present a novel approach that combines UCM with FCA to assist decision makers in supporting modification analysis at the requirements level. Our approach provides support for determining the potential modification and re-testing effort associated with a change without the need to analyze or comprehend source code. We demonstrate the applicability of our approach on a telephony system case study.
{"title":"Modification analysis support at the requirements level","authors":"Maryam Shiri, J. Hassine, J. Rilling","doi":"10.1145/1294948.1294961","DOIUrl":"https://doi.org/10.1145/1294948.1294961","url":null,"abstract":"Modification analysis is part of most maintenance processes and includes among other activities, early prediction of potential change impacts, feasibility studies, cost estimation, etc. Existing impact analysis and regression testing techniques being source code based require at least some understanding of the system implementation. In this research we present a novel approach that combines UCM with FCA to assist decision makers in supporting modification analysis at the requirements level. Our approach provides support for determining the potential modification and re-testing effort associated with a change without the need to analyze or comprehend source code. We demonstrate the applicability of our approach on a telephony system case study.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"87 4 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-09-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133718538","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}
Nowadays almost every company depends on software technologies to function, the challenge is that the technologies and software applications are constantly changing and adapting to the needs of users. This process of change is risky, since unplanned and undisciplined changes in any software system of realistic size risk degrading the quality of the software and producing unexpected side effects. The need for disciplined, intelligent, cost-effective software change and evolution is an urgent technological challenge in the software engineering field. New technologies, new social and cultural trends, a widespread adoption of open source software, the market globalization and new development environments are spelling the requiem to the traditional way in which software evolution research was carried out. Evolution research must evolve and adapt to the new society needs and trends thus turning challenges into opportunities. This keynote attempts to shed some light on key factors such new technology transfer opportunity, the need of benchmarks and the three items each and every research program in software evolution should integrate in one way or the other.
{"title":"Requiem for software evolution research: a few steps toward the creative age","authors":"G. Antoniol","doi":"10.1145/1294948.1294950","DOIUrl":"https://doi.org/10.1145/1294948.1294950","url":null,"abstract":"Nowadays almost every company depends on software technologies to function, the challenge is that the technologies and software applications are constantly changing and adapting to the needs of users. This process of change is risky, since unplanned and undisciplined changes in any software system of realistic size risk degrading the quality of the software and producing unexpected side effects. The need for disciplined, intelligent, cost-effective software change and evolution is an urgent technological challenge in the software engineering field.\u0000 New technologies, new social and cultural trends, a widespread adoption of open source software, the market globalization and new development environments are spelling the requiem to the traditional way in which software evolution research was carried out. Evolution research must evolve and adapt to the new society needs and trends thus turning challenges into opportunities. This keynote attempts to shed some light on key factors such new technology transfer opportunity, the need of benchmarks and the three items each and every research program in software evolution should integrate in one way or the other.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"35 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-09-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116642905","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}
We present a method to detect and visualize evolution patterns in C++ source code. Our method consists of three steps. First, we extract an annotated syntax tree (AST) from each version of a given C++ source code. Next, we hash the extracted syntax nodes based on a metric combining structure and type information, and construct matches (correspondences) between similar-hash subtrees. Our technique detects code fragments which have not changed, or changed little, during the software evolution. By parameterizing the similarity metric, we can flexibly decide what is considered to be identical or not during the software evolution. Finally, we visualize the evolution of the code structure by emphasizing both changing and constant code patterns. We demonstrate our technique on a versioned code base containing a variety of changes ranging from simple to complex.
{"title":"Structural analysis and visualization of C++ code evolution using syntax trees","authors":"Fanny Chevalier, D. Auber, A. Telea","doi":"10.1145/1294948.1294971","DOIUrl":"https://doi.org/10.1145/1294948.1294971","url":null,"abstract":"We present a method to detect and visualize evolution patterns in C++ source code. Our method consists of three steps. First, we extract an annotated syntax tree (AST) from each version of a given C++ source code. Next, we hash the extracted syntax nodes based on a metric combining structure and type information, and construct matches (correspondences) between similar-hash subtrees. Our technique detects code fragments which have not changed, or changed little, during the software evolution. By parameterizing the similarity metric, we can flexibly decide what is considered to be identical or not during the software evolution. Finally, we visualize the evolution of the code structure by emphasizing both changing and constant code patterns. We demonstrate our technique on a versioned code base containing a variety of changes ranging from simple to complex.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"32 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-09-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127003658","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}
The evolvability, the ease of further development, of a software systems is difficult to assess, but may have large economic consequences. Many studies have investigated the relations between particular software metrics and effort on evolving individual classes, but little attention has been given to methods for assessing and measuring evolvability of complete software systems. This paper discusses such methods, and motivates that they should use a combination of structural code measures and expert assessments. This is exemplified in a case study assessing the evolvability of four functionally equivalent systems. The paper also gives with directions for future work on evolvability assessments.
{"title":"Assessment of software system evolvability","authors":"Bente Anda","doi":"10.1145/1294948.1294966","DOIUrl":"https://doi.org/10.1145/1294948.1294966","url":null,"abstract":"The evolvability, the ease of further development, of a software systems is difficult to assess, but may have large economic consequences. Many studies have investigated the relations between particular software metrics and effort on evolving individual classes, but little attention has been given to methods for assessing and measuring evolvability of complete software systems. This paper discusses such methods, and motivates that they should use a combination of structural code measures and expert assessments. This is exemplified in a case study assessing the evolvability of four functionally equivalent systems. The paper also gives with directions for future work on evolvability assessments.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"33 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-09-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134258402","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
A. D. Lucia, F. Fasano, R. Oliveto, Domenico Santonicola
In this paper, we present an extension of the Subversion command line to support fine-grained versioning of Java code. To this aim, for each Java file under versioning, an XML-based file representing the logical structure of the original file is automatically built by parsing the code. An additional XML-based file is also built to model collaboration constraints. This information is useful to enrich the context awareness by providing developers information about changes made by others to the same logical unit (i.e., class, method, or attribute) of the Java file. Finally, we present an extension of Subclipse, a Subversion front-end implemented as an Eclipse plug-in, aiming to support the fine-grained versioning in Subversion.
{"title":"Improving context awareness in subversion through fine-grained versioning of Java code","authors":"A. D. Lucia, F. Fasano, R. Oliveto, Domenico Santonicola","doi":"10.1145/1294948.1294975","DOIUrl":"https://doi.org/10.1145/1294948.1294975","url":null,"abstract":"In this paper, we present an extension of the Subversion command line to support fine-grained versioning of Java code. To this aim, for each Java file under versioning, an XML-based file representing the logical structure of the original file is automatically built by parsing the code. An additional XML-based file is also built to model collaboration constraints. This information is useful to enrich the context awareness by providing developers information about changes made by others to the same logical unit (i.e., class, method, or attribute) of the Java file. Finally, we present an extension of Subclipse, a Subversion front-end implemented as an Eclipse plug-in, aiming to support the fine-grained versioning in Subversion.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"16 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-09-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114075608","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}
Evolving complex systems from one consistent version to another is a challenging problem. Each version usually requires multiple changes in multiple system components having subtle functional dependencies. Mitigating the costs incurred to check the consistency of a new version is an important concern. An efficient approach to guarantee consistency of the new system is proposed. System components are modeled as communicating finite state machines. A change is a set of update rules that add or delete transitions in the system components. Given a set of changes, the proposed approach automatically generates an aggregated update comprised of groups of update rules. The interactions among the update rules are analyzed in terms of their impacts on the states of the system. Groups of update rules are computed such that each group contains one special rule whose impacted states subsume that of the others in the group. If that rule preserves consistency then the entire group preserves consistency. The proposed approach has been applied to consistently evolve a family of cache coherence protocols with highly encouraging results.
{"title":"Aggregating changes to efficiently check consistency","authors":"M. Subramaniam, P. Chundi, Harvey P. Siy","doi":"10.1145/1294948.1294959","DOIUrl":"https://doi.org/10.1145/1294948.1294959","url":null,"abstract":"Evolving complex systems from one consistent version to another is a challenging problem. Each version usually requires multiple changes in multiple system components having subtle functional dependencies. Mitigating the costs incurred to check the consistency of a new version is an important concern. An efficient approach to guarantee consistency of the new system is proposed. System components are modeled as communicating finite state machines. A change is a set of update rules that add or delete transitions in the system components. Given a set of changes, the proposed approach automatically generates an aggregated update comprised of groups of update rules. The interactions among the update rules are analyzed in terms of their impacts on the states of the system. Groups of update rules are computed such that each group contains one special rule whose impacted states subsume that of the others in the group. If that rule preserves consistency then the entire group preserves consistency. The proposed approach has been applied to consistently evolve a family of cache coherence protocols with highly encouraging results.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"88 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-09-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126488463","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}
The phenomenon of "software evolution" was observed back in the 1970s when the first large software systems were being developed, and it has attracted renewed attention in the 1990s. Yet, the difficulties of software evolution are still treated as problems that pop up unexpectedly in software projects. In this talk, I look at some possible reasons to explain this apparent contradiction and the possibly related confusion in software evolution research. I point out some ways we can make software evolution research more relevant to software engineering practice. My primary goal is to clarify that what evolves is not the software but our knowledge about a particular type of software.
{"title":"Species evolve, individuals age","authors":"M. Jazayeri","doi":"10.1109/IWPSE.2005.27","DOIUrl":"https://doi.org/10.1109/IWPSE.2005.27","url":null,"abstract":"The phenomenon of \"software evolution\" was observed back in the 1970s when the first large software systems were being developed, and it has attracted renewed attention in the 1990s. Yet, the difficulties of software evolution are still treated as problems that pop up unexpectedly in software projects. In this talk, I look at some possible reasons to explain this apparent contradiction and the possibly related confusion in software evolution research. I point out some ways we can make software evolution research more relevant to software engineering practice. My primary goal is to clarify that what evolves is not the software but our knowledge about a particular type of software.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"194 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2005-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116302064","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 is a brief introduction to our research on a collaboration field and role model aiming to support evolvable software design and programming.
本文简要介绍了我们对协作领域和角色模型的研究,旨在支持可进化的软件设计和编程。
{"title":"Evolvable programming based on collaboration-field and role model","authors":"T. Tamai","doi":"10.1145/512035.512037","DOIUrl":"https://doi.org/10.1145/512035.512037","url":null,"abstract":"This is a brief introduction to our research on a collaboration field and role model aiming to support evolvable software design and programming.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"56 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":"127474296","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 discusses the problems arising when object oriented libraries are evolved through the subclass mechanism. The overriding of a method may in fact produce undesirable side effects in the behavior of other methods. More generally, the designer of an extension may be unaware of the dependencies among class features, which should be taken into account when a class is evolved.The paper shows how the C# language allows such dependencies to be documented using attributes. Attributes may be retrieved via reflective mechanisms that can be used by a tool --- a design assistant --- which may guide designers while they evolve and reuse existing class libraries. To facilitate the approach another tool may automatically record dependency attributes for each class.The approach is also shown to help in the case of the so-called semantic fragile base class problem that has been illustrated in the literature.
{"title":"Fostering component evolution with C# attributes","authors":"C. Ghezzi, Mattia Monga","doi":"10.1145/512035.512041","DOIUrl":"https://doi.org/10.1145/512035.512041","url":null,"abstract":"This paper discusses the problems arising when object oriented libraries are evolved through the subclass mechanism. The overriding of a method may in fact produce undesirable side effects in the behavior of other methods. More generally, the designer of an extension may be unaware of the dependencies among class features, which should be taken into account when a class is evolved.The paper shows how the C# language allows such dependencies to be documented using attributes. Attributes may be retrieved via reflective mechanisms that can be used by a tool --- a design assistant --- which may guide designers while they evolve and reuse existing class libraries. To facilitate the approach another tool may automatically record dependency attributes for each class.The approach is also shown to help in the case of the so-called semantic fragile base class problem that has been illustrated in the literature.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"25 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":"126086489","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}