Frameworks are an object-oriented reuse technique that are widely used in industry but not discussed much by the software engineering research community. They are a way of reusing design that is part of the reason that some object-oriented developers are so productive. This paper compares and contrasts frameworks with other reuse techniques, and describes how to use them, how to evaluate them, and how to develop them. It describe the tradeo s involved in using frameworks, including the costs and pitfalls, and when frameworks are appropriate.
{"title":"Components, frameworks, patterns","authors":"Ralph E. Johnson","doi":"10.1145/258366.258378","DOIUrl":"https://doi.org/10.1145/258366.258378","url":null,"abstract":"Frameworks are an object-oriented reuse technique that are widely used in industry but not discussed much by the software engineering research community. They are a way of reusing design that is part of the reason that some object-oriented developers are so productive. This paper compares and contrasts frameworks with other reuse techniques, and describes how to use them, how to evaluate them, and how to develop them. It describe the tradeo s involved in using frameworks, including the costs and pitfalls, and when frameworks are appropriate.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"43 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1997-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124937878","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, G. Arango, M. J. Davis, Ralph E. Johnson, J. Poulin, A. Watson
In today marketplace, the competitive software developing shop is the one that can reduce produce delivery time, increase diversity of the product enhance interoperability, and conform to standardization of components. In the past decade, software reuse gradually has started coming into the main stream of research and practice as a viable subfield of software engineering. Reuse practice has a great potential, more than many other on-going activities in software to improve software development process. However,there is not ss much progressas was expected. There have been many papers and articles in technical, professional, as well as trade publications dealing with the issues and prospects, the pros and cons, and the incentives and impediments of soflware reuse.
{"title":"Reuse research and development: is it on the right track?","authors":"M. Zand, G. Arango, M. J. Davis, Ralph E. Johnson, J. Poulin, A. Watson","doi":"10.1145/258366.258428","DOIUrl":"https://doi.org/10.1145/258366.258428","url":null,"abstract":"In today marketplace, the competitive software developing shop is the one that can reduce produce delivery time, increase diversity of the product enhance interoperability, and conform to standardization of components. In the past decade, software reuse gradually has started coming into the main stream of research and practice as a viable subfield of software engineering. Reuse practice has a great potential, more than many other on-going activities in software to improve software development process. However,there is not ss much progressas was expected. There have been many papers and articles in technical, professional, as well as trade publications dealing with the issues and prospects, the pros and cons, and the incentives and impediments of soflware reuse.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"124 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1997-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122033893","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}
Modeling multiple domains is use@l in two ways. Firstly, most of real sof~arw ~sterns are based on more than one domain. In this case, modeiing dqoenderrcies between &mains facilitates better understanding and clearer specljlcation of mferwtce mquiwments for a jiiily of systems. This leaak to a structured and jlexible generic architecture for that family and, therejorw, improves reuse. Secondly, our method encourages one to divide big a%mains into smaller, easier to unabstand and describe subdomairrs. In big domains, w found this an e~ective ww to identlfi reuse opportunities that may not be easi~ observed otherwise. The method described in the paper builds upon wellkrrown concepts of enterprise information architecture, domain analysis and the Domain-Spect~c Sof~are Architecttm (DSM) approach to reuse. We argue tha~ modeling of relationships between the domains is bene>cial 0s it ensures urri$orrnity of sofiware systems across abmains, wduces the cost of sofmare development through inter-domain reuse and rwduces the cost of future sof~arw maintenance. Modeling of multiple, interrelated domains help in planning so@vare Wstems and in applying rwuse at the enterprise level.
{"title":"Modeling multiple domains in software reuse","authors":"S. Jarzabek","doi":"10.1145/258366.258387","DOIUrl":"https://doi.org/10.1145/258366.258387","url":null,"abstract":"Modeling multiple domains is use@l in two ways. Firstly, most of real sof~arw ~sterns are based on more than one domain. In this case, modeiing dqoenderrcies between &mains facilitates better understanding and clearer specljlcation of mferwtce mquiwments for a jiiily of systems. This leaak to a structured and jlexible generic architecture for that family and, therejorw, improves reuse. Secondly, our method encourages one to divide big a%mains into smaller, easier to unabstand and describe subdomairrs. In big domains, w found this an e~ective ww to identlfi reuse opportunities that may not be easi~ observed otherwise. The method described in the paper builds upon wellkrrown concepts of enterprise information architecture, domain analysis and the Domain-Spect~c Sof~are Architecttm (DSM) approach to reuse. We argue tha~ modeling of relationships between the domains is bene>cial 0s it ensures urri$orrnity of sofiware systems across abmains, wduces the cost of sofmare development through inter-domain reuse and rwduces the cost of future sof~arw maintenance. Modeling of multiple, interrelated domains help in planning so@vare Wstems and in applying rwuse at the enterprise level.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"73 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1997-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114615749","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}
Application generators have been demonstrated as a successful approach to achieving software reuse and typically yields higher productivity gains than methods such as component-based reuse. Despite their advantages, industrial software developers are reluctant to adopt these methods due to the lack of tools for constructing generators. This paper presents a framework for the development of application generators. This framework provides a structured design approach and automatic tools for design. The framework consists of a two level design process: The first level is the identification of operations that expresses the fundamental computations of the application domain. The second level is the design of a domain-specific language which allows one to express variations within a family of applications. The domain-specific language is implemented in terms of the operations defined by the first level. We show that the uniform application of partial evaluation enables automatic application generation from a micro-program to its implementation. This framework has been developed in the context of real applications in areas such as Internet services and digital television, and is being developed in conjunction with industrial partners.
{"title":"A framework for application generator design","authors":"Scott Thibault, C. Consel","doi":"10.1145/258366.258408","DOIUrl":"https://doi.org/10.1145/258366.258408","url":null,"abstract":"Application generators have been demonstrated as a successful approach to achieving software reuse and typically yields higher productivity gains than methods such as component-based reuse. Despite their advantages, industrial software developers are reluctant to adopt these methods due to the lack of tools for constructing generators. This paper presents a framework for the development of application generators. This framework provides a structured design approach and automatic tools for design. The framework consists of a two level design process: The first level is the identification of operations that expresses the fundamental computations of the application domain. The second level is the design of a domain-specific language which allows one to express variations within a family of applications. The domain-specific language is implemented in terms of the operations defined by the first level. We show that the uniform application of partial evaluation enables automatic application generation from a micro-program to its implementation. This framework has been developed in the context of real applications in areas such as Internet services and digital television, and is being developed in conjunction with industrial partners.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"38 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1997-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130275838","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 hand-coded 1 results on re-engineering a highly-tuned, memory simulator using the P2 container data structure generator. This application was chosen because synthesizing the simulator’s data structures would not exploit P2’s primary advantage of automatically applying sophisticated code optimization techniques. Thus, we initially believed that using P2 would bean overkill and that P2-generated code would provide no performance advantages over hand-coding. On the contrary, we found that P2 produced more efficient code and that it offered significant advantages to software development that we had had not previously realized.
{"title":"Memory simulators and software generators","authors":"G. Jiménez-Pérez, D. Batory","doi":"10.1145/258366.258410","DOIUrl":"https://doi.org/10.1145/258366.258410","url":null,"abstract":"We present hand-coded 1 results on re-engineering a highly-tuned, memory simulator using the P2 container data structure generator. This application was chosen because synthesizing the simulator’s data structures would not exploit P2’s primary advantage of automatically applying sophisticated code optimization techniques. Thus, we initially believed that using P2 would bean overkill and that P2-generated code would provide no performance advantages over hand-coding. On the contrary, we found that P2 produced more efficient code and that it offered significant advantages to software development that we had had not previously realized.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"26 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1997-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129799153","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 centers around exploring methodologies for developing reusable software, and developing methods and toofs for building with reusable software. In this paper, we focus on reusable software component retrieval methods that were developed and teated in the context of ClassServer, an experimental library tool developed at the University of Qu6bec at Montr6al to explore fssues in software reuse [15]. The methods dfscusaed in tbfa paper fall into two categori~ 1) string search-based retrieval metbod$ and 2) keyword-based retrieval methods. Both kinds of methods have been implemented and tested by researchers, both in the context of software repositories (see e.g. [6,9]) and in the context of more traditional document tibrarles (see e.g. [2,25]). Experiments have shown that keyword-based methods, which require some manual, laborintensive pre-proceashrg, performed only marginally better than the entfrely mechanical strhtgsearch methods (see e.g.[6, 2S]), raising the issue of cost-effectivene= of keyword-based methods as compared to string search baaed methods. In this paper, we describe an implementation and experiments which attempt to brfng the two khtds of methods to a level-playing field by: 1) automating as much of the pre-processing involved hr controlled vocabulary-based methods as possible to address the crds issue, and 2) using a realistic experimental setting in which queries consist of problem statemenlx rather than component specifications, in whjch query results are aggregated over several trials, and in which recaU measures take into account overlapping components. Our experiments showed that string search based methods performed better than semi-controlled vocabulary-based method$ which goes further in the direction of more recent component retrfeval experiments which challenged the superiority of controlled vocabulary based clarification and retrieval of components (see e.g. [61).
{"title":"Another nail to the coffin of faceted controlled-vocabulary component classification and retrieval","authors":"H. Mili, Estelle Ah-Ki, R. Godin, H. Mcheick","doi":"10.1145/258366.258393","DOIUrl":"https://doi.org/10.1145/258366.258393","url":null,"abstract":"Our research centers around exploring methodologies for developing reusable software, and developing methods and toofs for building with reusable software. In this paper, we focus on reusable software component retrieval methods that were developed and teated in the context of ClassServer, an experimental library tool developed at the University of Qu6bec at Montr6al to explore fssues in software reuse [15]. The methods dfscusaed in tbfa paper fall into two categori~ 1) string search-based retrieval metbod$ and 2) keyword-based retrieval methods. Both kinds of methods have been implemented and tested by researchers, both in the context of software repositories (see e.g. [6,9]) and in the context of more traditional document tibrarles (see e.g. [2,25]). Experiments have shown that keyword-based methods, which require some manual, laborintensive pre-proceashrg, performed only marginally better than the entfrely mechanical strhtgsearch methods (see e.g.[6, 2S]), raising the issue of cost-effectivene= of keyword-based methods as compared to string search baaed methods. In this paper, we describe an implementation and experiments which attempt to brfng the two khtds of methods to a level-playing field by: 1) automating as much of the pre-processing involved hr controlled vocabulary-based methods as possible to address the crds issue, and 2) using a realistic experimental setting in which queries consist of problem statemenlx rather than component specifications, in whjch query results are aggregated over several trials, and in which recaU measures take into account overlapping components. Our experiments showed that string search based methods performed better than semi-controlled vocabulary-based method$ which goes further in the direction of more recent component retrfeval experiments which challenged the superiority of controlled vocabulary based clarification and retrieval of components (see e.g. [61).","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"23 4 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1997-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128181903","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 large part of Boeing Defense d Space Groups (D&SG) business is to build sojtware-intensive systems for its government customers such as the U.S. DoD and NASA. Some of these products, such as an Airborne Warning and Control System (AWACS) or an inertial Upper Stage (lUS), exist as long-lived (20+ years) product lines that are more like legacy systems under continuous maintenance than true product lines. Also, the business climate for U.S. aerospace companies over the past several years has stimulated Boeing DdWG to look for ways to reduce system development costs and improve the quality factors for the products it deiivers. Systematic reuse, with its emphasis on domains, competencies, product lines, and architectures is viewed as an enabling technology for achieving those goals. To understand and test application of these concepts, Boeing D&SG kicked off a Hardware and Software Reuse Initiative in August of 1995. As the name implies, ~heD&SG Reuse Initiative must jind ways to apply systematic reuse thattreat hardware and sojlware issues together. Part of the reason for this challenge is that the majority of products that D&SG delivers have signljicant functionality being provided via electronic, electro-optical, or electro-mechanical devices. Another part of the reason is thatD&SG emphasizes “systems thinking” during product development. The point of intersection of hardware and sojiware where systematic reuse perhaps has the greatest leverage is architecture. Therefore, an internal research and development activity under the auspices of the D&SG Reuse Initiative was kicked off in September of 1995 to spec.ijically address architecture issues. One of the jirst observations emerging from this activity was that the lack of Urrforrnip among the vars”ous D&SG groups in descriptions of architecture signt~cantly impedes exchange of technical architecture data and knowledge across groups. This paper discusses an approach to architecture description devised specifically to alleviate that problem in the hope of creating a climate for reuse of open, commercial off-the shelf (COTS) based architectures.
{"title":"Software architecture characterization","authors":"M. J. Davis, Roger B. Williams","doi":"10.1145/258366.258380","DOIUrl":"https://doi.org/10.1145/258366.258380","url":null,"abstract":"A large part of Boeing Defense d Space Groups (D&SG) business is to build sojtware-intensive systems for its government customers such as the U.S. DoD and NASA. Some of these products, such as an Airborne Warning and Control System (AWACS) or an inertial Upper Stage (lUS), exist as long-lived (20+ years) product lines that are more like legacy systems under continuous maintenance than true product lines. Also, the business climate for U.S. aerospace companies over the past several years has stimulated Boeing DdWG to look for ways to reduce system development costs and improve the quality factors for the products it deiivers. Systematic reuse, with its emphasis on domains, competencies, product lines, and architectures is viewed as an enabling technology for achieving those goals. To understand and test application of these concepts, Boeing D&SG kicked off a Hardware and Software Reuse Initiative in August of 1995. As the name implies, ~heD&SG Reuse Initiative must jind ways to apply systematic reuse thattreat hardware and sojlware issues together. Part of the reason for this challenge is that the majority of products that D&SG delivers have signljicant functionality being provided via electronic, electro-optical, or electro-mechanical devices. Another part of the reason is thatD&SG emphasizes “systems thinking” during product development. The point of intersection of hardware and sojiware where systematic reuse perhaps has the greatest leverage is architecture. Therefore, an internal research and development activity under the auspices of the D&SG Reuse Initiative was kicked off in September of 1995 to spec.ijically address architecture issues. One of the jirst observations emerging from this activity was that the lack of Urrforrnip among the vars”ous D&SG groups in descriptions of architecture signt~cantly impedes exchange of technical architecture data and knowledge across groups. This paper discusses an approach to architecture description devised specifically to alleviate that problem in the hope of creating a climate for reuse of open, commercial off-the shelf (COTS) based architectures.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"9 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1997-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132368461","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 classification of code as reused or leveraged is an oversimplification of a problem which forces too many soflware components to be treated as leveraged code. If we at Hewlett Packard-San Diego Division were forced to continue to pay the high cost of traditional leverage for all code that was not absolutely identical in each instantiation, we could not remain competitive. We began to look at the difference between leverage and reuse as a continuum and found that a code classification known as “Mostly Reuse” is very common and can be handled much more efllciently than traditional leverage. This has allowed us to develop derivative products much quicker and cheaper than before.
{"title":"Mostly reuse: another code sharing option","authors":"P. McCoog, Rick Smith","doi":"10.1145/258366.258382","DOIUrl":"https://doi.org/10.1145/258366.258382","url":null,"abstract":"The classification of code as reused or leveraged is an oversimplification of a problem which forces too many soflware components to be treated as leveraged code. If we at Hewlett Packard-San Diego Division were forced to continue to pay the high cost of traditional leverage for all code that was not absolutely identical in each instantiation, we could not remain competitive. We began to look at the difference between leverage and reuse as a continuum and found that a code classification known as “Mostly Reuse” is very common and can be handled much more efllciently than traditional leverage. This has allowed us to develop derivative products much quicker and cheaper than before.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"3 4","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1997-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132737978","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}
For over fifteen years I have made my living by applying the tools and techniques of “adaptive reuse” to the software life cycle of large, complex business systems of all stripes. I am pleased to say that organizations employing adaptive reuse, commonly achieve order of magnitude reductions in the time and cost of their software projects, be they new or existing systems. I want to share with you some of what I have learned, ‘lessons from the real world,” as the sub-title of my book is called [1].
{"title":"The theory and practice of adaptive reuse","authors":"P. Bassett","doi":"10.1145/258366.258371","DOIUrl":"https://doi.org/10.1145/258366.258371","url":null,"abstract":"For over fifteen years I have made my living by applying the tools and techniques of “adaptive reuse” to the software life cycle of large, complex business systems of all stripes. I am pleased to say that organizations employing adaptive reuse, commonly achieve order of magnitude reductions in the time and cost of their software projects, be they new or existing systems. I want to share with you some of what I have learned, ‘lessons from the real world,” as the sub-title of my book is called [1].","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"79 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1997-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123259491","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}
According to proponents of object-oriented programming, inheritance is an excellent way to organize abstraction and a superb tool for reuse. Yet, few quantitative studies of the actual use of inheritance have been conducted. Quantitative studies are necessary to evaluate the actual usefulness of structures such as inheritance. We characterize the use of inheritance in 19 existing C++ software systems containing 2,744 classes. We measure the class depth in the inheritance hierarchies, and the number of child and parent classes in the software. We find that inheritance is used far less frequently than expected.
{"title":"Reuse through inheritance: a quantitative study of C++ software","authors":"J. Bieman, Josephine Xia Zhao","doi":"10.1145/211782.211794","DOIUrl":"https://doi.org/10.1145/211782.211794","url":null,"abstract":"According to proponents of object-oriented programming, inheritance is an excellent way to organize abstraction and a superb tool for reuse. Yet, few quantitative studies of the actual use of inheritance have been conducted. Quantitative studies are necessary to evaluate the actual usefulness of structures such as inheritance. We characterize the use of inheritance in 19 existing C++ software systems containing 2,744 classes. We measure the class depth in the inheritance hierarchies, and the number of child and parent classes in the software. We find that inheritance is used far less frequently than expected.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"27 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1995-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125226976","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}