This paper describes a methodology for designing Open Implementations -software modules that can adapt or change their internals to accommodate the needs of different clients. Analysis techniques are used for capturing domain knowledge, user requirements, and domain properties that influence the module’s eventual implementation. Design techniques are used for determining and refining the interfaces by which clients control the modules implementation strategies. The methodology has evolved over the past two years in several pilot projects.
{"title":"Open implementation analysis and design","authors":"C. Maeda, A-Rom Lee, G. Murphy, G. Kiczales","doi":"10.1145/258366.258383","DOIUrl":"https://doi.org/10.1145/258366.258383","url":null,"abstract":"This paper describes a methodology for designing Open Implementations -software modules that can adapt or change their internals to accommodate the needs of different clients. Analysis techniques are used for capturing domain knowledge, user requirements, and domain properties that influence the module’s eventual implementation. Design techniques are used for determining and refining the interfaces by which clients control the modules implementation strategies. The methodology has evolved over the past two years in several pilot projects.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"42 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":"123326375","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}
E. Guerrieri, M. Griss, D. Lea, P. Sridharan, W. Tracz
At SSR’95, there was a panel entitled “Software Reusability and the Internet.” Since then, there has beerr an explosion of activity on the Internetespeciallywiththe introductionof Jav~ the “battle of the browsers,” and the difision of the Internet. This is alI impacting how we reuse software. This panel investigates how the introduction of Java has improved (or hampered) the institutionalization of sotlware reuse. Furthermore, it will look at how we can enhance systematic reuse through the new tools provided on the Internet.
{"title":"The impact of Java on software reusability","authors":"E. Guerrieri, M. Griss, D. Lea, P. Sridharan, W. Tracz","doi":"10.1145/258368.258426","DOIUrl":"https://doi.org/10.1145/258368.258426","url":null,"abstract":"At SSR’95, there was a panel entitled “Software Reusability and the Internet.” Since then, there has beerr an explosion of activity on the Internetespeciallywiththe introductionof Jav~ the “battle of the browsers,” and the difision of the Internet. This is alI impacting how we reuse software. This panel investigates how the introduction of Java has improved (or hampered) the institutionalization of sotlware reuse. Furthermore, it will look at how we can enhance systematic reuse through the new tools provided on the Internet.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"37 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":"123021814","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 merits of Java* for developing portable, distributed, and (somewhat) secure software solutions both for intemet applications and for embedded systems are well understood. This paper highlights the contents of a proposed book of the same title, co-authored by Professor Doug Lea. The goal of the book is to provide software engineers with examples of how to design, document, and develop high quality “reusable” Java components. We focus on designing “for reuse” and “with reuse,” using the Java language constructs that facilitate reuse. This paper emphasizes interopcrability issues pertaining to distributed, real-time applications.
{"title":"Developing reusable Java components","authors":"W. Tracz","doi":"10.1145/258366.258397","DOIUrl":"https://doi.org/10.1145/258366.258397","url":null,"abstract":"The merits of Java* for developing portable, distributed, and (somewhat) secure software solutions both for intemet applications and for embedded systems are well understood. This paper highlights the contents of a proposed book of the same title, co-authored by Professor Doug Lea. The goal of the book is to provide software engineers with examples of how to design, document, and develop high quality “reusable” Java components. We focus on designing “for reuse” and “with reuse,” using the Java language constructs that facilitate reuse. This paper emphasizes interopcrability issues pertaining to distributed, real-time applications.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"45 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":"127567303","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 to distinguish between two paradigms of software reuse: black box reuse, which consists in reusing components verbatim, without modifying them; and whit e boz reuse, which provides for making modifications to retrieved components before using them. Because software components are very information-rich (i.e. it takes a great deal of information to characterize a component), the chances of an exact match between an available component and a query are in general very slim; hence it is necessary to make provisions for adapting retrieved components to user requirements. This paper discusses a mathematical foundation for carrying out this modification process in a correctnear+preaerving manner.
{"title":"A calculus of program modifications","authors":"R. Mili, M. Frappier, J. Desharnais, A. Mili","doi":"10.1145/258366.258415","DOIUrl":"https://doi.org/10.1145/258366.258415","url":null,"abstract":"It is common to distinguish between two paradigms of software reuse: black box reuse, which consists in reusing components verbatim, without modifying them; and whit e boz reuse, which provides for making modifications to retrieved components before using them. Because software components are very information-rich (i.e. it takes a great deal of information to characterize a component), the chances of an exact match between an available component and a query are in general very slim; hence it is necessary to make provisions for adapting retrieved components to user requirements. This paper discusses a mathematical foundation for carrying out this modification process in a correctnear+preaerving manner.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"66 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":"122166827","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}
Configuration management of compiled software artifacts (programs, libraries, icons, etc.) is a g rowing p roblem as s oftware reuse becomes more prevalent. For an app lication composed from reused libraries and modules to function correctly, all of the required files must be available and be the correct version. In this paper, we present a simple scheme to add ress this problem: content-derived names (CDNs). Computing an object’s name automatically using d igital signatures greatly e ases the problem of disambiguating multiple ve rsions of an ob ject. By using content-derived na mes, developers can ensure that only those software components that have been tested together are permitted to run together.
{"title":"Using content-derived names for configuration management","authors":"J. Hollingsworth, E. L. Miller","doi":"10.1145/258366.258399","DOIUrl":"https://doi.org/10.1145/258366.258399","url":null,"abstract":"Configuration management of compiled software artifacts (programs, libraries, icons, etc.) is a g rowing p roblem as s oftware reuse becomes more prevalent. For an app lication composed from reused libraries and modules to function correctly, all of the required files must be available and be the correct version. In this paper, we present a simple scheme to add ress this problem: content-derived names (CDNs). Computing an object’s name automatically using d igital signatures greatly e ases the problem of disambiguating multiple ve rsions of an ob ject. By using content-derived na mes, developers can ensure that only those software components that have been tested together are permitted to run together.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"24 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":"125260101","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 mechanism presented here can automatically and dynamically change sojtware components by using an enhunced program integration algorithm based on program slicing and labeled graph matching. It can make two kinds of changes by: i) decomposing components’ fimctions and by ii) partially exchanging their functwns with the modification histories of other components. This mechanism enables so@vare components, which are called active components, to modijj themselves into new source codes to meet user requirements by imitating past user modi$cations, so they do not require many modifications and not all components that might be reused in the future need to be prepared in libraries.
{"title":"A mechanism for automatically and dynamically changing software components","authors":"Katsuhisa Maruyama, Kenichi Shima","doi":"10.1145/258366.258417","DOIUrl":"https://doi.org/10.1145/258366.258417","url":null,"abstract":"The mechanism presented here can automatically and dynamically change sojtware components by using an enhunced program integration algorithm based on program slicing and labeled graph matching. It can make two kinds of changes by: i) decomposing components’ fimctions and by ii) partially exchanging their functwns with the modification histories of other components. This mechanism enables so@vare components, which are called active components, to modijj themselves into new source codes to meet user requirements by imitating past user modi$cations, so they do not require many modifications and not all components that might be reused in the future need to be prepared in libraries.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"54 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":"121667266","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 data language is a declarative language that enables database users to access and manipulate data. There are families of related data languages; each family member is targeted for a particular application. Unfortunately, building compilers for such languages is largely an ad hoc process; there are no tools and design methods that allow programmers to leverage the design and code of compilers for similar languages, or to simplify the evolution of existing languages to include more features. Rosetta is a generator of relational data language compilers that demonstrates practical solutions to these problems. We explain how domain analysis identifies primitive building blocks of these compilers, and how grammar-based definitions (ala GenVoca) of the legal compositions of these blocks yields compact and easily-evolvable specifications of data languages. Rosetta automatically transforms such specifications into compilers. Experiences with Rosetta are discussed.
{"title":"Rosetta: a generator of data language compilers","authors":"E. E. Villarreal, D. Batory","doi":"10.1145/258366.258412","DOIUrl":"https://doi.org/10.1145/258366.258412","url":null,"abstract":"A data language is a declarative language that enables database users to access and manipulate data. There are families of related data languages; each family member is targeted for a particular application. Unfortunately, building compilers for such languages is largely an ad hoc process; there are no tools and design methods that allow programmers to leverage the design and code of compilers for similar languages, or to simplify the evolution of existing languages to include more features. Rosetta is a generator of relational data language compilers that demonstrates practical solutions to these problems. We explain how domain analysis identifies primitive building blocks of these compilers, and how grammar-based definitions (ala GenVoca) of the legal compositions of these blocks yields compact and easily-evolvable specifications of data languages. Rosetta automatically transforms such specifications into compilers. Experiences with Rosetta are discussed.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"133 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":"121529193","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}
J. Meekel, T. B. Horton, R. France, Charlie Mellone, Sajid Dalvi
Thispaper &resses how domain analysis served to help create reusable architectures and components in the development of a real-time embealied system. The subject domain is portable winders communication devices. The paper discwrses this experience in terms of discovering and developing reusable @neworkr for this domain. Some interesting differences between this approach and what is usually suggested as a process for developing frameworks are described.
{"title":"From domain models to architecture frameworks","authors":"J. Meekel, T. B. Horton, R. France, Charlie Mellone, Sajid Dalvi","doi":"10.1145/258366.258389","DOIUrl":"https://doi.org/10.1145/258366.258389","url":null,"abstract":"Thispaper &resses how domain analysis served to help create reusable architectures and components in the development of a real-time embealied system. The subject domain is portable winders communication devices. The paper discwrses this experience in terms of discovering and developing reusable @neworkr for this domain. Some interesting differences between this approach and what is usually suggested as a process for developing frameworks are described.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"13 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":"124650263","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}
François Bronsard, D. Bryan, W. Kozaczynski, E. Liongosari, J. Ning, Á. Ólafsson, John W. Wetterstrand
The growing size and complexity of systems has revealed many shortcomings of existing software engineering practices, for example, lack of scalability. This in turn raised interest in component-based and architecture-driven software development. In all likelihood, component-based software will form the foundation on which future systems will be built. The shift toward developing systems from components has been more evolutionary than revolutionary. It has its roots in accepted architectural principles such as layering, modularization, and information hiding. But it also introduces its own principles and concepts and presents new challenges. This paper discusses research ideas and technologies that will facilitate the transition toward component-based software development by leveraging object-oriented middleware technologies such as CORBA and OLE. We also present an innovative component-based development environment to illustrate the ideas we introduce.
{"title":"Toward software plug-and-play","authors":"François Bronsard, D. Bryan, W. Kozaczynski, E. Liongosari, J. Ning, Á. Ólafsson, John W. Wetterstrand","doi":"10.1145/258366.258379","DOIUrl":"https://doi.org/10.1145/258366.258379","url":null,"abstract":"The growing size and complexity of systems has revealed many shortcomings of existing software engineering practices, for example, lack of scalability. This in turn raised interest in component-based and architecture-driven software development. In all likelihood, component-based software will form the foundation on which future systems will be built. The shift toward developing systems from components has been more evolutionary than revolutionary. It has its roots in accepted architectural principles such as layering, modularization, and information hiding. But it also introduces its own principles and concepts and presents new challenges. This paper discusses research ideas and technologies that will facilitate the transition toward component-based software development by leveraging object-oriented middleware technologies such as CORBA and OLE. We also present an innovative component-based development environment to illustrate the ideas we introduce.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"65 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":"117341753","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}
Domain analysis is seen by wme in the reuse community to be a key process for achieving systematic, largescale, reuse. Howeverr the success of a domain analysis is largely dependent upon how well the domain analysis process is carried out. This paper describes a set of heuristics for domain analysis, which summari ses our experience of domain analysis in a palatable way for others. The aim of these heuristics is to provide an inexperienced domain analyst with practical advice about how to cope with problems during the domain analysis process. We explain when and how to apply each heuristic, illustrated with examples taken from the domain analysis case-studies we have performed at RoSEC, a company which manufactures electronic controllers for aircraft engines.
{"title":"A summary of domain analysis experience by way of heuristics","authors":"W. Lam, J. Mcdermid","doi":"10.1145/258366.258386","DOIUrl":"https://doi.org/10.1145/258366.258386","url":null,"abstract":"Domain analysis is seen by wme in the reuse community to be a key process for achieving systematic, largescale, reuse. Howeverr the success of a domain analysis is largely dependent upon how well the domain analysis process is carried out. This paper describes a set of heuristics for domain analysis, which summari ses our experience of domain analysis in a palatable way for others. The aim of these heuristics is to provide an inexperienced domain analyst with practical advice about how to cope with problems during the domain analysis process. We explain when and how to apply each heuristic, illustrated with examples taken from the domain analysis case-studies we have performed at RoSEC, a company which manufactures electronic controllers for aircraft engines.","PeriodicalId":270366,"journal":{"name":"ACM SIGSOFT Symposium on Software Reusability","volume":"149 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":"123269461","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}