Many long term studies of software evolution have made the simplifying assumption that the system's architecture and low-level structure is relatively stable. In our past work, we have found that this is often untrue; therefore, we have sought to investigate ways to detect and model structural change in software systems through a technique we call origin analysis [6] and supported a tool called Beagle [7]. In this position paper, we present a summary of our recent and ongoing work in this area, and we argue that more attention needs to be paid to techniques for understanding architectural and structural evolution of software systems.
{"title":"Tracking structural evolution using origin analysis","authors":"Michael W. Godfrey, Q. Tu","doi":"10.1145/512035.512062","DOIUrl":"https://doi.org/10.1145/512035.512062","url":null,"abstract":"Many long term studies of software evolution have made the simplifying assumption that the system's architecture and low-level structure is relatively stable. In our past work, we have found that this is often untrue; therefore, we have sought to investigate ways to detect and model structural change in software systems through a technique we call origin analysis [6] and supported a tool called Beagle [7]. In this position paper, we present a summary of our recent and ongoing work in this area, and we argue that more attention needs to be paid to techniques for understanding architectural and structural evolution of software systems.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"52 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":"122367154","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 common in client/server architectures for components to have SQL statements embedded in their source code. Components submit queries to relational databases using such standards as Universal Data Access (UDA) and Open Database Connectivity (ODBC). The API that implements these standards is complex and requires the embedding of SQL statements in the language that is used to write the components. Such programming practices are widespread and result in increased complexity in maintaining systems.We propose an approach that eliminates the embedding of SQL in programming languages, thereby enabling the automation of important software maintenance tasks.
{"title":"An approach to evolving database dependent systems","authors":"M. Grechanik, D. Perry, D. Batory","doi":"10.1145/512035.512061","DOIUrl":"https://doi.org/10.1145/512035.512061","url":null,"abstract":"It is common in client/server architectures for components to have SQL statements embedded in their source code. Components submit queries to relational databases using such standards as Universal Data Access (UDA) and Open Database Connectivity (ODBC). The API that implements these standards is complex and requires the embedding of SQL statements in the language that is used to write the components. Such programming practices are widespread and result in increased complexity in maintaining systems.We propose an approach that eliminates the embedding of SQL in programming languages, thereby enabling the automation of important software maintenance tasks.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"23 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":"127195875","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}
K. Nakakoji, Yasuhiro Yamamoto, Yoshiyuki Nishinaka, K. Kishida, Y. Ye
Open-Source Software (OSS) development is regarded as a successful model of encouraging "natural product evolution". To understand how this "natural product evolution" happens, we have conducted a case study of four typical OSS projects. Unlike most previous studies on software evolution that focus on the evolution of the system per se, our study takes a broader perspective: It examines not only the evolution of OSS systems, but also the evolution of the associated OSS communities, as well as the relationship between the two types of evolution.Through the case study, we have found that while collaborative development within a community is the essential characteristic of OSS, different collaboration models exist, and that the difference in collaboration model results in different evolution patterns of OSS systems and communities. To treat such differences systematically, we propose to classify OSS into three types: Exploration-Oriented, Utility-Oriented, and Service-Oriented. Such a classification can provide guidance on the creation and maintenance of sustainable OSS development and communities.
{"title":"Evolution patterns of open-source software systems and communities","authors":"K. Nakakoji, Yasuhiro Yamamoto, Yoshiyuki Nishinaka, K. Kishida, Y. Ye","doi":"10.1145/512035.512055","DOIUrl":"https://doi.org/10.1145/512035.512055","url":null,"abstract":"Open-Source Software (OSS) development is regarded as a successful model of encouraging \"natural product evolution\". To understand how this \"natural product evolution\" happens, we have conducted a case study of four typical OSS projects. Unlike most previous studies on software evolution that focus on the evolution of the system per se, our study takes a broader perspective: It examines not only the evolution of OSS systems, but also the evolution of the associated OSS communities, as well as the relationship between the two types of evolution.Through the case study, we have found that while collaborative development within a community is the essential characteristic of OSS, different collaboration models exist, and that the difference in collaboration model results in different evolution patterns of OSS systems and communities. To treat such differences systematically, we propose to classify OSS into three types: Exploration-Oriented, Utility-Oriented, and Service-Oriented. Such a classification can provide guidance on the creation and maintenance of sustainable OSS development and communities.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"17 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":"121233392","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 prediction of fault-prone modules in a large software system is an important part in software evolution. Since prediction models in past studies have been constructed and used for individual systems, it has not been practically investigated whether a prediction model based on one system can also predict fault-prone modules accurately in other systems. Our expectation is that if we could build a model applicable to different systems, it would be extremely useful for software companies because they do not need to invest manpower and time for gathering data to construct a new model for every system.In this study, we evaluated the applicability of prediction models between two software systems through two experiments. In the first experiment, a prediction model using 19 module metrics as predictor variables was constructed in each system and was applied to the opposite system mutually. The result showed predictors were too fit to the base data and could not accurately predict fault-prone modules in the different system. On the basis of this result, we focused on a set of predictors showing great effectiveness in every model; and, in consequent, we identified two metrics (Lines of Code and Maximum Nesting Level) as commonly effective predictors in all the models. In the second experiment, by constructing prediction models using only these two metrics, prediction performance were dramatically improved. This result suggests that the commonly effective model applicable to more than two systems can be constructed by focusing on commonly effective predictors.
{"title":"Evaluating the applicability of reliability prediction models between different software","authors":"Shin-ichi Sato, Akito Monden, Ken-ichi Matsumoto","doi":"10.1145/512035.512057","DOIUrl":"https://doi.org/10.1145/512035.512057","url":null,"abstract":"The prediction of fault-prone modules in a large software system is an important part in software evolution. Since prediction models in past studies have been constructed and used for individual systems, it has not been practically investigated whether a prediction model based on one system can also predict fault-prone modules accurately in other systems. Our expectation is that if we could build a model applicable to different systems, it would be extremely useful for software companies because they do not need to invest manpower and time for gathering data to construct a new model for every system.In this study, we evaluated the applicability of prediction models between two software systems through two experiments. In the first experiment, a prediction model using 19 module metrics as predictor variables was constructed in each system and was applied to the opposite system mutually. The result showed predictors were too fit to the base data and could not accurately predict fault-prone modules in the different system. On the basis of this result, we focused on a set of predictors showing great effectiveness in every model; and, in consequent, we identified two metrics (Lines of Code and Maximum Nesting Level) as commonly effective predictors in all the models. In the second experiment, by constructing prediction models using only these two metrics, prediction performance were dramatically improved. This result suggests that the commonly effective model applicable to more than two systems can be constructed by focusing on commonly effective predictors.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"17 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":"128950909","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 this position paper we argue that component dependencies should be treated as a first class problem in component-based systems evolution. We discuss some issues related to dependencies and present an overview of a technique to describe and analyze dependencies in component-based systems.
{"title":"The role of dependencies in component-based systems evolution","authors":"M. Vieira, D. Richardson","doi":"10.1145/512035.512051","DOIUrl":"https://doi.org/10.1145/512035.512051","url":null,"abstract":"In this position paper we argue that component dependencies should be treated as a first class problem in component-based systems evolution. We discuss some issues related to dependencies and present an overview of a technique to describe and analyze dependencies in component-based systems.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"1 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":"129990323","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 presents an elementary particle model to facilitate traceability of evolving software. The model is called Software Quark Model, constructed by fundamental conceptual elements representing software subject information. They can interpret any software description except nonfunctional requirements and convey intrinsic semantics independent from any presentation and perspective information.
{"title":"Software quark model: an elementary particle model for measuring software evolution","authors":"T. Ajisaka","doi":"10.1145/602461.602475","DOIUrl":"https://doi.org/10.1145/602461.602475","url":null,"abstract":"This paper presents an elementary particle model to facilitate traceability of evolving software. The model is called Software Quark Model, constructed by fundamental conceptual elements representing software subject information. They can interpret any software description except nonfunctional requirements and convey intrinsic semantics independent from any presentation and perspective information.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-09-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125401773","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}
Our research starts to deal with the problems of how to proceed and manage incremental development of object-oriented software. When a system is developed incrementally, an application developer makes various design decisions. We have observed time series data of software development statistically and traced their quantitative characteristics. We have come to the conclusion that statistical analysis gives us two distinct development stages: the adding functions stage and the refactoring stage. This paper focuses on library class evolution processes.
{"title":"Quantitative observations on object evolution","authors":"Takako Nakatani","doi":"10.1145/602461.602496","DOIUrl":"https://doi.org/10.1145/602461.602496","url":null,"abstract":"Our research starts to deal with the problems of how to proceed and manage incremental development of object-oriented software. When a system is developed incrementally, an application developer makes various design decisions. We have observed time series data of software development statistically and traced their quantitative characteristics. We have come to the conclusion that statistical analysis gives us two distinct development stages: the adding functions stage and the refactoring stage. This paper focuses on library class evolution processes.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"31 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-09-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129244329","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}
Most design patterns help to make systems flexible and extensible. They have potential effects to support evolutionary software development. Ordinary implementation of design patterns, however, is not always enough for evolution. It is based on the inheritance mechanism. This makes application classes quite dependent on patterns and reduces reusability of application classes. In addition, it is difficult to exchange patterns once a system is designed. In this paper, we introduce a way to implement design patterns more flexibly, applying the concept of separation of concerns. It is realized by separating design patterns, as explicit concerns, from the application core that is responsible for the primary functionalities. The new implementation technologies that support the advanced separation of concerns such as Hyper/J™ help with coding this kind of design. Using an example, we show that it is possible to exchange patterns to support different behavior without any change on the application core. Our approach has an advantage that reusability of both design patterns and the application core is improved.
{"title":"Design pattern concerns for software evolution","authors":"N. Noda, T. Kishi","doi":"10.1145/602461.602498","DOIUrl":"https://doi.org/10.1145/602461.602498","url":null,"abstract":"Most design patterns help to make systems flexible and extensible. They have potential effects to support evolutionary software development. Ordinary implementation of design patterns, however, is not always enough for evolution. It is based on the inheritance mechanism. This makes application classes quite dependent on patterns and reduces reusability of application classes. In addition, it is difficult to exchange patterns once a system is designed. In this paper, we introduce a way to implement design patterns more flexibly, applying the concept of separation of concerns. It is realized by separating design patterns, as explicit concerns, from the application core that is responsible for the primary functionalities. The new implementation technologies that support the advanced separation of concerns such as Hyper/J™ help with coding this kind of design. Using an example, we show that it is possible to exchange patterns to support different behavior without any change on the application core. Our approach has an advantage that reusability of both design patterns and the application core is improved.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"90 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-09-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124622138","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 presents a kind of software design measures that help us to determine the application of Gang-Of-Four design patterns to refactoring processes. Refactoring using design patterns is one of the promising approaches to improve the designs during development activities, and a crucial issue is to identify when, where and which patterns could be applied. We analyzed several actual object-oriented designs of low quality needed to be refactored and focus on the characteristics of conditional statements of methods and inheritance structures, which seemed to cause the low quality. We provide 20 measures to objectively detect these characteristics in object-oriented designs. These measures express the complexity of branching execution in conditional statements and the strength of the dependency among the sub classes in the inheritance trees. Designers can be guided to recognize when, where and which design patterns should be used, in order to refactor their designs of low quality, by calculating these measures. We apply our approach to the low-quality design of the drawing editor that was produced by a novice designer and assess the effectiveness of our measures.
{"title":"Metrics for applying GOF design patterns in refactoring processes","authors":"Taichi Muraki, M. Saeki","doi":"10.1145/602461.602466","DOIUrl":"https://doi.org/10.1145/602461.602466","url":null,"abstract":"This paper presents a kind of software design measures that help us to determine the application of Gang-Of-Four design patterns to refactoring processes. Refactoring using design patterns is one of the promising approaches to improve the designs during development activities, and a crucial issue is to identify when, where and which patterns could be applied. We analyzed several actual object-oriented designs of low quality needed to be refactored and focus on the characteristics of conditional statements of methods and inheritance structures, which seemed to cause the low quality. We provide 20 measures to objectively detect these characteristics in object-oriented designs. These measures express the complexity of branching execution in conditional statements and the strength of the dependency among the sub classes in the inheritance trees. Designers can be guided to recognize when, where and which design patterns should be used, in order to refactor their designs of low quality, by calculating these measures. We apply our approach to the low-quality design of the drawing editor that was produced by a novice designer and assess the effectiveness of our measures.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"27 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-09-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126977219","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. Rodríguez-Fórtiz, P. Paderewski, Lina García-Cabrera, J. Parets-Llorca
Evolution of software systems can be conceived from the Theory of Systems as a maturation process in which the developer have an active participation. This paper presents a two levels architecture: system and Meta-system. The developer interacts with the high level, Meta-system, for evolving the structure of the software system defined in the first level in which the user works. This architecture can be used to model the structure, functioning and evolution of any kind of software systems. In concrete, as the paper describes, it is applied to agents-based systems and hypermedia systems in a satisfactory way.
{"title":"Evolutionary modelling of software systems: its application to agent-based and hypermedia systems","authors":"M. Rodríguez-Fórtiz, P. Paderewski, Lina García-Cabrera, J. Parets-Llorca","doi":"10.1145/602461.602471","DOIUrl":"https://doi.org/10.1145/602461.602471","url":null,"abstract":"Evolution of software systems can be conceived from the Theory of Systems as a maturation process in which the developer have an active participation. This paper presents a two levels architecture: system and Meta-system. The developer interacts with the high level, Meta-system, for evolving the structure of the software system defined in the first level in which the user works. This architecture can be used to model the structure, functioning and evolution of any kind of software systems. In concrete, as the paper describes, it is applied to agents-based systems and hypermedia systems in a satisfactory way.","PeriodicalId":321820,"journal":{"name":"International Workshop on Principles of Software Evolution","volume":"6 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-09-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127889126","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}