Systematic reuse of code has been proposed as a promising means to address the legendary productivity increase in software development. While object-oriented programming languages are, by nature, well suited for reusability-based development of applications, additional mechanisms to effectively reuse code are necessary.Effective reuse of code requires a rich collection of designed-for-reuse software components and knowledge on how to locate them in a repository, adapt them if needed, and even create new ones based on information provided by other components exploiting similar characteristics.The application of techniques and methods from artificial intelligence to software engineering is one mechanism through which reusability of software might be achieved. By abstracting and encoding the expertise of experienced software engineers into knowledge bases together with software components, system developers can gain effective access to the artifacts in the software repository as it evolves over time.Under this perspective, a novel method is presented. The method uses genericity (a technique that allows a module to be defined with parameterized types), and employs a special form of Case-Based Reasoning (a method of solving problems based on the transfer of past experience to new problem situations) in order to make object-oriented code reusable.Using established correspondences (links) and experiences from previous situations, the system semi-automatically finds a good match (e.g., a class) in the repository to the user's requirements, possibly adapting it to specific needs. Adaptation is based on specifying type parameters while making the necessary method modifications. This process is also reversible (generic classes from specific ones). Finally, the repository is enriched with the new component(s) and process knowledge, followed by an automatic appropriate reorganization.The method presented in this thesis has been evaluated through a prototype implementation, which addresses the reuse of C++ code. The prototype system runs on SparcStations and Sun 4 series under Unix. The language used for the implementation is a Prolog-like language called MegaLog. Additionally, a usage experiment performed in order to get an indication on the usage characteristics of the prototype system.The proposed method integrates ideas and techniques from various fields like knowledge representation, software engineering and machine learning. It addresses only technical issues for the effective reuse problem. To be practical, reuse must address not only technical but managerial, economic, legal, cultural, and technology transfer issues.In considering the application of the method in practical situations several operational characteristics need to be resolved, like synonym handling, the provision of an undo operation, etc.Future research could include a study on the extensibility of our method for reusing applications, not just code. Concerning the retrieval of similar past cases and their adaptation, additional types of similarity should ...
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.
customersupport@researchsolutions.com
10624 S. Eastern Ave., Ste. A-614
Henderson, NV 89052, USA
Copyright © 2024 scite LLC. All rights reserved.
Made with 💙 for researchers
Part of the Research Solutions Family.