Software product lines have numerous members. Thus, a product line infrastructure must cover various systems. This is the significant difference to usual software systems and the reason for additional requirements on the various assets present during software product line engineering. It is imperative that they support the description of the product line as a whole, as well as its instantiation for the derivation of individual products. Literature has already addressed how to create and instantiate generic product line assets, such as domain models and architectures to generate instance specific ones [1, 2, 3], yet little attention has been given on how to actually deal with this genericity at the code level. This paper addresses the issue of handling product line variability at the code level. To this end various implementation approaches are examined with respect to their use in a product line context.
{"title":"Implementing product line variabilities","authors":"C. Gacek, Michalis Anastasopoules","doi":"10.1145/375212.375269","DOIUrl":"https://doi.org/10.1145/375212.375269","url":null,"abstract":"Software product lines have numerous members. Thus, a product line infrastructure must cover various systems. This is the significant difference to usual software systems and the reason for additional requirements on the various assets present during software product line engineering. It is imperative that they support the description of the product line as a whole, as well as its instantiation for the derivation of individual products.\u0000Literature has already addressed how to create and instantiate generic product line assets, such as domain models and architectures to generate instance specific ones [1, 2, 3], yet little attention has been given on how to actually deal with this genericity at the code level.\u0000This paper addresses the issue of handling product line variability at the code level. To this end various implementation approaches are examined with respect to their use in a product line context.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-05-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133722052","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 order to be able to determine whether the product line approach is suitable, a company needs to analyse its business drivers, commonality of existing products, domain knowledge owned by the engineering staff, and quality of the representations of existing software artefacts. In this paper we present evaluation criteria for the development of a product line and give an overview of the current state of practices in the embedded software area. Evaluation criteria are divided into three classes. Business drivers of a product line are defined by analysing product assortment and business manners. Domains and personnel are considered in the analysis of the preconditions and targets of a product line. In the development of core assets, elements that affect assets engineering are considered as well as the mechanisms needed in their maintenance. A product line architecture that brings about a balance between sub- domains and their most important properties is an investment that must be looked after. However, the subdomains need flexibility to use, change and manage their own technologies, and evolve separately, but in a controlled way.
{"title":"Product line software engineering of embedded systems","authors":"Eila Niemelä, T. Ihme","doi":"10.1145/375212.375271","DOIUrl":"https://doi.org/10.1145/375212.375271","url":null,"abstract":"In order to be able to determine whether the product line approach is suitable, a company needs to analyse its business drivers, commonality of existing products, domain knowledge owned by the engineering staff, and quality of the representations of existing software artefacts. In this paper we present evaluation criteria for the development of a product line and give an overview of the current state of practices in the embedded software area. Evaluation criteria are divided into three classes. Business drivers of a product line are defined by analysing product assortment and business manners. Domains and personnel are considered in the analysis of the preconditions and targets of a product line. In the development of core assets, elements that affect assets engineering are considered as well as the mechanisms needed in their maintenance. A product line architecture that brings about a balance between sub- domains and their most important properties is an investment that must be looked after. However, the subdomains need flexibility to use, change and manage their own technologies, and evolve separately, but in a controlled way.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"49 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-05-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124916560","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}
Developing reusable object-oriented software requires a designer to determine how to structure a software system so as to achieve the necessary functionality, while at the same time increasing the reuse potential of the software. We introduce a set of reusability metrics intended to be iteratively applied during the design and implementation parts of the software life-cycle to help guide the production and identification of reusable components. Component identification centers on the application's domain, with reuse focusing specifically on an organization's future systems. Our approach requires the developer to subjectively categorize classes, identify component boundaries, and specify where components are related. Our metrics provide reuse valuations on the couplings between components. Based upon the results of applying our metrics, we provide refactoring guidelines to increase the separation between components in a manner that improves component reusability. We include an application of our metrics to a commercial objec-oriented framework.
{"title":"Producing reusable object-oriented components: a domain-and-organization-specific perspective","authors":"M. Price, D. Needham, S. Demurjian","doi":"10.1145/375212.375236","DOIUrl":"https://doi.org/10.1145/375212.375236","url":null,"abstract":"Developing reusable object-oriented software requires a designer to determine how to structure a software system so as to achieve the necessary functionality, while at the same time increasing the reuse potential of the software. We introduce a set of reusability metrics intended to be iteratively applied during the design and implementation parts of the software life-cycle to help guide the production and identification of reusable components. Component identification centers on the application's domain, with reuse focusing specifically on an organization's future systems. Our approach requires the developer to subjectively categorize classes, identify component boundaries, and specify where components are related. Our metrics provide reuse valuations on the couplings between components. Based upon the results of applying our metrics, we provide refactoring guidelines to increase the separation between components in a manner that improves component reusability. We include an application of our metrics to a commercial objec-oriented framework.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"46 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-05-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122418910","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 of source code has been studied as a preliminary step in the evolution of object-oriented software. We extend the concept of refactoring to the whole range of models used to describe a framework in our methodology: feature model, use case model, architecture, design, and code. We view framework evolution as a two-step process: refactoring and extension. The refactoring step is a set of refactorings, one for each model, that cascades through them. The refactorings chosen for a model become the rationale or constraints for the choice of refactorings of the next model. The cascading of refactorings is aided by the alignment of the models. Alignment is a traceable mapping between models that preserves the commonality-variability aspects of the models.
{"title":"Cascaded refactoring for framework","authors":"Greg Butler, Lugang Xu","doi":"10.1145/375212.375239","DOIUrl":"https://doi.org/10.1145/375212.375239","url":null,"abstract":"Refactoring of source code has been studied as a preliminary step in the evolution of object-oriented software. We extend the concept of refactoring to the whole range of models used to describe a framework in our methodology: feature model, use case model, architecture, design, and code. We view framework evolution as a two-step process: refactoring and extension. The refactoring step is a set of refactorings, one for each model, that cascades through them. The refactorings chosen for a model become the rationale or constraints for the choice of refactorings of the next model.\u0000The cascading of refactorings is aided by the alignment of the models. Alignment is a traceable mapping between models that preserves the commonality-variability aspects of the models.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"443 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-05-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133213128","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 experience with explicitly managing variability within a software architecture. Software architects normally plan for change and put mechanisms in the architecture to support those changes. Understanding the situations where change has been planned for and recording the options possible within particular situations is usually not done explicitly. This becomes important if the architecture is used for many product versions over a long period or in a product line context where the architecture is used to build a variety of different products. That is, it is important to explicitly represent variation and indicate within the architecture locations for which change has been allowed. We will describe how the management of variations in an architecture can be made more explicit and how the use of variation points connected to the choices a customer has when ordering a product can help to navigate to the appropriate places in the architecture.
{"title":"Managing variability in software architectures","authors":"Felix Bachmann, L. Bass","doi":"10.1145/375212.375274","DOIUrl":"https://doi.org/10.1145/375212.375274","url":null,"abstract":"This paper presents experience with explicitly managing variability within a software architecture. Software architects normally plan for change and put mechanisms in the architecture to support those changes. Understanding the situations where change has been planned for and recording the options possible within particular situations is usually not done explicitly. This becomes important if the architecture is used for many product versions over a long period or in a product line context where the architecture is used to build a variety of different products. That is, it is important to explicitly represent variation and indicate within the architecture locations for which change has been allowed.\u0000We will describe how the management of variations in an architecture can be made more explicit and how the use of variation points connected to the choices a customer has when ordering a product can help to navigate to the appropriate places in the architecture.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131020856","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}
R. Biddle, S. Marshall, John Miller-Williams, E. Tempero
become a key component in our visualization tools. We have been investigating tool support for managing reuse of source code. One approach we have been exploring is the use of visualization in programming tools. A difficulty with this approach is that effective program visualization of ordinary programs requires substantial sophisticated low-level software. Our solution to this problem is to reuse debugging systems in an innovative way. We present our experience with this approach, both to evaluate the reusability of the debugging systems we used, and to provide a case study in reuse. In this paper, we present our experienc:e with this use of debuggers, both to evaluate the reusability of the debugging systems we used, and to provide a case study in reuse. We have developed two different tools, each using a different debugging technology: one for C++ programs that uses Gdb and Expect, and another for Java programs that uses the Java Virtual Machine Debugger Interface (JVMDI).
{"title":"Reuse of debuggers for visualization of reuse","authors":"R. Biddle, S. Marshall, John Miller-Williams, E. Tempero","doi":"10.1145/303008.303037","DOIUrl":"https://doi.org/10.1145/303008.303037","url":null,"abstract":"become a key component in our visualization tools. We have been investigating tool support for managing reuse of source code. One approach we have been exploring is the use of visualization in programming tools. A difficulty with this approach is that effective program visualization of ordinary programs requires substantial sophisticated low-level software. Our solution to this problem is to reuse debugging systems in an innovative way. We present our experience with this approach, both to evaluate the reusability of the debugging systems we used, and to provide a case study in reuse. In this paper, we present our experienc:e with this use of debuggers, both to evaluate the reusability of the debugging systems we used, and to provide a case study in reuse. We have developed two different tools, each using a different debugging technology: one for C++ programs that uses Gdb and Expect, and another for Java programs that uses the Java Virtual Machine Debugger Interface (JVMDI).","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1999-05-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115669265","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. Sitaraman, Maggie Davis, Premkumar T. Devanbu, J. Poulin, A. Ran, B. Weide
{"title":"Reuse research: contributions, problems and non-problems","authors":"M. Sitaraman, Maggie Davis, Premkumar T. Devanbu, J. Poulin, A. Ran, B. Weide","doi":"10.1145/303008.303084","DOIUrl":"https://doi.org/10.1145/303008.303084","url":null,"abstract":"","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"49 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1999-05-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124832638","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. Zand, V. Basili, I. Baxter, M. Griss, Even-André Karlsson, D. Perry
We have made tremendous progress in understanding the critical technology, methods, processes, and organizational factors that lead to effective reuse. Research into new methods and technologies continues unabated. However, far too few software organizations and schools consider systematic reuse as a key part of their programs. Recent developments such as CBSE and 00 patterns do not incorporate key learning from the reuse community. Why does reuse technology transfer seems to be so slow and ineffective? How might we improve the situation?
{"title":"Reuse R&D: gap between theory and practice","authors":"M. Zand, V. Basili, I. Baxter, M. Griss, Even-André Karlsson, D. Perry","doi":"10.1145/303008.303081","DOIUrl":"https://doi.org/10.1145/303008.303081","url":null,"abstract":"We have made tremendous progress in understanding the critical technology, methods, processes, and organizational factors that lead to effective reuse. Research into new methods and technologies continues unabated. However, far too few software organizations and schools consider systematic reuse as a key part of their programs. Recent developments such as CBSE and 00 patterns do not incorporate key learning from the reuse community. Why does reuse technology transfer seems to be so slow and ineffective? How might we improve the situation?","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1999-05-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132617524","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}
Many software development organizations support reuse by moving towards assembling software products using multiuse components that can fit a wide range of products and environments. In order to support the design and integration of multi-use components we are presenting the usage of component interaction adapters. Adapters are used to encapsulate, interconnect and manage multi-use component interactions. Isolating and managing the components’ interactions outside the components using adapters decrease components’ complexity, increase their reusability, and eases their integration.
{"title":"Using adapters to reduce interaction complexity in reusable component-based software development","authors":"D. Rine, N. Nada, Khaled Jaber","doi":"10.1145/303008.303018","DOIUrl":"https://doi.org/10.1145/303008.303018","url":null,"abstract":"Many software development organizations support reuse by moving towards assembling software products using multiuse components that can fit a wide range of products and environments. In order to support the design and integration of multi-use components we are presenting the usage of component interaction adapters. Adapters are used to encapsulate, interconnect and manage multi-use component interactions. Isolating and managing the components’ interactions outside the components using adapters decrease components’ complexity, increase their reusability, and eases their integration.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"99 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1999-05-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124067314","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}
Upcoming spacecraft plan extensive reuse of software components, to the extent that some systems will form product families of similar or identical units (e.g. a fleet of spaceborne telescopes).
{"title":"Toward safe reuse of product family specifications","authors":"R. Lutz","doi":"10.1145/303008.303014","DOIUrl":"https://doi.org/10.1145/303008.303014","url":null,"abstract":"Upcoming spacecraft plan extensive reuse of software components, to the extent that some systems will form product families of similar or identical units (e.g. a fleet of spaceborne telescopes).","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"34 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1999-05-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123187413","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}