N. Medina-Medina, Lina García-Cabrera, J. Carbonell, J. Parets-Llorca
In this paper, the need of mechanisms of evolution in adaptive hypermedia systems is argued. Moreover, the basic characteristics of these systems are described and the user adaptation carried out in them is situated in the context of evolution models. Finally, SEM-HP, an evolutionary and adaptive hypermedia system, is presented and outlined.
{"title":"Evolution in adaptive hypermedia systems","authors":"N. Medina-Medina, Lina García-Cabrera, J. Carbonell, J. Parets-Llorca","doi":"10.1145/512035.512044","DOIUrl":"https://doi.org/10.1145/512035.512044","url":null,"abstract":"In this paper, the need of mechanisms of evolution in adaptive hypermedia systems is argued. Moreover, the basic characteristics of these systems are described and the user adaptation carried out in them is situated in the context of evolution models. Finally, SEM-HP, an evolutionary and adaptive hypermedia system, is presented and outlined.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"34 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":"129341486","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}
While a number of research systems have demonstratedthe potential value of program transformations, very few ofthese systems have made it into practice. The core technologyfor such systems is well understood; what remains isintegration and more importantly, the problem of handlingthe scale of the applications to be processed.This paper describes DMS, a practical, commercialprogram analysis and transformation system, and sketchesa variety of tasks to which it has been applied, from redocumentingto large-scale system migration. Its successderives partly from a vision of design maintenance and theconstruction of infrastructure that appears necessary tosupport that vision. DMS handles program scale by carefulspace management, computational scale via parallelismand knowledge acquisition scale via domains.
{"title":"DMS®: Program Transformations for Practical Scalable Software Evolution","authors":"I. Baxter, C. Pidgeon, M. Mehlich","doi":"10.1145/512035.512047","DOIUrl":"https://doi.org/10.1145/512035.512047","url":null,"abstract":"While a number of research systems have demonstratedthe potential value of program transformations, very few ofthese systems have made it into practice. The core technologyfor such systems is well understood; what remains isintegration and more importantly, the problem of handlingthe scale of the applications to be processed.This paper describes DMS, a practical, commercialprogram analysis and transformation system, and sketchesa variety of tasks to which it has been applied, from redocumentingto large-scale system migration. Its successderives partly from a vision of design maintenance and theconstruction of infrastructure that appears necessary tosupport that vision. DMS handles program scale by carefulspace management, computational scale via parallelismand knowledge acquisition scale via domains.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"42 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":"134170469","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}
Object-oriented paradigm is widely adopted in software development, but it has its own problem to make such software evolution difficult. In this paper, I will propose a new paradigm named SOMA (solid object and medium artifact) as a variation of OO paradigm, which enables dynamic and robust evolution of software products. Operations to modify software structure are explained, which enable developers and users to evolve software product through its life cycle. Brief comparison to the other approaches will reveal the pros and cons of SOMA paradigm as evolution methods. Currently, SOMA paradigm has no supportive implementation yet and waiting for detailed formalization.
{"title":"SOMA: a paradigm to evolve software based on separation of concerns","authors":"Toshihiro Kamiya","doi":"10.1145/512035.512065","DOIUrl":"https://doi.org/10.1145/512035.512065","url":null,"abstract":"Object-oriented paradigm is widely adopted in software development, but it has its own problem to make such software evolution difficult. In this paper, I will propose a new paradigm named SOMA (solid object and medium artifact) as a variation of OO paradigm, which enables dynamic and robust evolution of software products. Operations to modify software structure are explained, which enable developers and users to evolve software product through its life cycle. Brief comparison to the other approaches will reveal the pros and cons of SOMA paradigm as evolution methods. Currently, SOMA paradigm has no supportive implementation yet and waiting for detailed formalization.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"34 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":"123940024","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}
Maintaining and evolving large software systems is hard. One underlying cause is that existing modularisation mechanisms are inadequate to handle crosscutting concerns. We propose intentional software views as an intuitive and lightweight means of modelling such concerns. They increase our ability to understand, modularise and browse the implementation by grouping together source-code entities that address a same concern. Alternative descriptions of the same intentional view can be provided and checked for consistency. In addition, the model supports the declaration, verification and enforcement of relations among intentional views. This facilitates software evolution by providing the ability to detect invalidation of important intentional relationships among concerns when the software is modified.
{"title":"Supporting software evolution with intentional software views","authors":"K. Mens, T. Mens, M. Wermelinger","doi":"10.1145/512035.512068","DOIUrl":"https://doi.org/10.1145/512035.512068","url":null,"abstract":"Maintaining and evolving large software systems is hard. One underlying cause is that existing modularisation mechanisms are inadequate to handle crosscutting concerns. We propose intentional software views as an intuitive and lightweight means of modelling such concerns. They increase our ability to understand, modularise and browse the implementation by grouping together source-code entities that address a same concern. Alternative descriptions of the same intentional view can be provided and checked for consistency. In addition, the model supports the declaration, verification and enforcement of relations among intentional views. This facilitates software evolution by providing the ability to detect invalidation of important intentional relationships among concerns when the software is modified.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"65 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":"130405648","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 article proposes a set of metrics for software architecture evolution and discusses continuous and discontinuous software evolution with the metrics proposed. We claim that discontinuity arises to reengineer software architecture and is an essential aspect of software evolution. We expect the proposed metrics can help to identify the architecture preservation core to be preserved over certain period of evolution, and the active evolution zone frequently changing during evolution. The evolution dynamics with discontinuity reveals the non-homogeneous nature of software evolution over the space and time.
{"title":"Metrics and analysis of software architecture evolution with discontinuity","authors":"M. Aoyama","doi":"10.1145/512035.512059","DOIUrl":"https://doi.org/10.1145/512035.512059","url":null,"abstract":"This article proposes a set of metrics for software architecture evolution and discusses continuous and discontinuous software evolution with the metrics proposed. We claim that discontinuity arises to reengineer software architecture and is an essential aspect of software evolution. We expect the proposed metrics can help to identify the architecture preservation core to be preserved over certain period of evolution, and the active evolution zone frequently changing during evolution. The evolution dynamics with discontinuity reveals the non-homogeneous nature of software evolution over the space and time.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"248 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":"123284711","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}
Development of adaptable software has been receiving much attention recently, as such software could better accommodate changes in user requirements as well as in needs of the developing organization. This paper considers software adaptability as a key non-functional requirement (NFR) for evolving systems. One of the major problems in developing adaptable software is the lack of systematic methods to ensure adaptability in the software during the process of software development. One framework to handle such non-functional requirements is the NFR Framework. In this paper we describe a tool called the SA3 (Software Architecture Adaptability Assistant) that helps develop (semi-)automatically adaptable architectures. An adaptable architecture will help to ensure that the final system is adaptable as well. SA3 uses the NFR Framework to develop the architectures, in particular the knowledge base properties of the Framework. Although preliminary, we also show the use of the current version of this tool in developing architectures for embedded systems.
{"title":"Tool support for engineering adaptability into software architecture","authors":"N. Subramanian, L. Chung","doi":"10.1145/512035.512056","DOIUrl":"https://doi.org/10.1145/512035.512056","url":null,"abstract":"Development of adaptable software has been receiving much attention recently, as such software could better accommodate changes in user requirements as well as in needs of the developing organization. This paper considers software adaptability as a key non-functional requirement (NFR) for evolving systems. One of the major problems in developing adaptable software is the lack of systematic methods to ensure adaptability in the software during the process of software development. One framework to handle such non-functional requirements is the NFR Framework. In this paper we describe a tool called the SA3 (Software Architecture Adaptability Assistant) that helps develop (semi-)automatically adaptable architectures. An adaptable architecture will help to ensure that the final system is adaptable as well. SA3 uses the NFR Framework to develop the architectures, in particular the knowledge base properties of the Framework. Although preliminary, we also show the use of the current version of this tool in developing architectures for embedded systems.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"106 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":"121056021","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}
Refactoring has become a well-known technique for transforming code in a way that preserves behavior. Refactorings may be applied manually, although manual code manipulation is error prone and cumbersome, so maintainers need tools to make automatic refactorings. There is currently extensive literature on refactoring object-oriented programs and some very good tools for refactoring Smalltalk and Java code. Although there is more code written in C or C++ than in any other language, refactoring tools for C with full support for preprocessor directives have not yet appeared.The C programming language, especially the preprocessor directives that coexist with it, complicates refactorings in different ways as directives are not legal C code and may violate otherwise correct refactorings.Refactoring C poses two major research challenges. On the one hand, as preprocessor directives may violate correctness, new precondition and execution rules must be defined for existing refactorings to preserve behavior. On the other hand, the automated execution of refactorings requires specialized program analysis tools to represent and manipulate preprocessor directives. After studying the area we have found some results to overcome these challenges and make a correct tool for the C language attainable.This paper first discusses the difficulties in refactoring C code with preprocessor directives. It then defines preconditions and execution rules to maintain correctness of refactoring in the presence of macros and conditional directives. Moreover, new refactorings are proposed for macro definitions and conditionals. Lastly, the paper suggests enhancements to program analysis and program representation tools to correctly manipulate preprocessor directives.
{"title":"Challenges of refactoring C programs","authors":"A. Garrido, Ralph E. Johnson","doi":"10.1145/512035.512039","DOIUrl":"https://doi.org/10.1145/512035.512039","url":null,"abstract":"Refactoring has become a well-known technique for transforming code in a way that preserves behavior. Refactorings may be applied manually, although manual code manipulation is error prone and cumbersome, so maintainers need tools to make automatic refactorings. There is currently extensive literature on refactoring object-oriented programs and some very good tools for refactoring Smalltalk and Java code. Although there is more code written in C or C++ than in any other language, refactoring tools for C with full support for preprocessor directives have not yet appeared.The C programming language, especially the preprocessor directives that coexist with it, complicates refactorings in different ways as directives are not legal C code and may violate otherwise correct refactorings.Refactoring C poses two major research challenges. On the one hand, as preprocessor directives may violate correctness, new precondition and execution rules must be defined for existing refactorings to preserve behavior. On the other hand, the automated execution of refactorings requires specialized program analysis tools to represent and manipulate preprocessor directives. After studying the area we have found some results to overcome these challenges and make a correct tool for the C language attainable.This paper first discusses the difficulties in refactoring C code with preprocessor directives. It then defines preconditions and execution rules to maintain correctness of refactoring in the presence of macros and conditional directives. Moreover, new refactorings are proposed for macro definitions and conditionals. Lastly, the paper suggests enhancements to program analysis and program representation tools to correctly manipulate preprocessor directives.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"43 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":"131068467","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}
M. Wermelinger, G. Koutsoukos, J. Fiadeiro, L. Andrade, J. Gouveia
A four-layer architecture is outlined for the design of systems required to accommodate higher levels of evolution and personalization. This architecture is based on the separation of four different aspects that concern change: the computations the system has to perform to ensure basic functionalities, the interactions that can be superposed among those computations to make global properties emerge, the configurations of computations and interactions that respond to current business requirements, and the "contexts" in which the system is used according to organizational policies..
{"title":"Evolving and using coordinated systems","authors":"M. Wermelinger, G. Koutsoukos, J. Fiadeiro, L. Andrade, J. Gouveia","doi":"10.1145/512035.512046","DOIUrl":"https://doi.org/10.1145/512035.512046","url":null,"abstract":"A four-layer architecture is outlined for the design of systems required to accommodate higher levels of evolution and personalization. This architecture is based on the separation of four different aspects that concern change: the computations the system has to perform to ensure basic functionalities, the interactions that can be superposed among those computations to make global properties emerge, the configurations of computations and interactions that respond to current business requirements, and the \"contexts\" in which the system is used according to organizational policies..","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"16 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":"127895454","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 papers presents a radically new approach for the dynamic evolution of long-lived systems that can not easily be shut-down for maintenance and restarted afterwards. Conventionally, the source code of a software system is viewed as a static entity and separated from the system at runtime. This seems intuitive as a single piece of code is usually associated with multiple components at runtime. Obviously, this viewpoint is a major obstacle for dynamic evolution during runtime as it raises difficult consistency issues concerning the relationship between static code and the dynamically executing system. The evolution approach presented in this paper takes a completely different direction by seamlessly integrating static code with dynamic execution. By this and sound concepts for component categories, incompleteness and dynamic completion, software can be generalized and adapted during runtime in a highly flexible way.
{"title":"Dynamic component and code co-evolution","authors":"M. Pizka","doi":"10.1145/512035.512053","DOIUrl":"https://doi.org/10.1145/512035.512053","url":null,"abstract":"This papers presents a radically new approach for the dynamic evolution of long-lived systems that can not easily be shut-down for maintenance and restarted afterwards. Conventionally, the source code of a software system is viewed as a static entity and separated from the system at runtime. This seems intuitive as a single piece of code is usually associated with multiple components at runtime. Obviously, this viewpoint is a major obstacle for dynamic evolution during runtime as it raises difficult consistency issues concerning the relationship between static code and the dynamically executing system. The evolution approach presented in this paper takes a completely different direction by seamlessly integrating static code with dynamic execution. By this and sound concepts for component categories, incompleteness and dynamic completion, software can be generalized and adapted during runtime in a highly flexible way.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"120 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":"133571506","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}
Distributed, heterogeneous systems are becoming very common, as globalized organizations integrate applications running on different platforms, possibly written in different languages. Certain requirements for such features as security, QoS, and flexible administration are specially critical to distributed heterogeneous systems. Unfortunately, such requirements are often formulated late, since they depend upon a particular installation, and/or change rapidly with business and political climate. Distributed, heterogeneous systems are particularly difficult to evolve, since the elements are written in different languages, and the operational environment is heterogeneous and distributed.We would like to address this problem with solutions that are animated by practical software engineering goals: type safety of scattered changes, and their interactions; explicit design models, with traceability to code; and inter-operability with legacy components and binary COTS components.
{"title":"A framework for flexible evolution in distributed heterogeneous systems","authors":"E. Wohlstadter, B. Toone, Premkumar T. Devanbu","doi":"10.1145/512035.512045","DOIUrl":"https://doi.org/10.1145/512035.512045","url":null,"abstract":"Distributed, heterogeneous systems are becoming very common, as globalized organizations integrate applications running on different platforms, possibly written in different languages. Certain requirements for such features as security, QoS, and flexible administration are specially critical to distributed heterogeneous systems. Unfortunately, such requirements are often formulated late, since they depend upon a particular installation, and/or change rapidly with business and political climate. Distributed, heterogeneous systems are particularly difficult to evolve, since the elements are written in different languages, and the operational environment is heterogeneous and distributed.We would like to address this problem with solutions that are animated by practical software engineering goals: type safety of scattered changes, and their interactions; explicit design models, with traceability to code; and inter-operability with legacy components and binary COTS components.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"55 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":"123882116","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}