TY - JOUR
T1 - Reusing Software
T2 - Issues and Research Directions
AU - Mili, Hafedh
AU - Mili, Fatma
AU - Mili, Ali
N1 - Funding Information:
F. Mili was supported by grants from the National Science Foundation, and the School of Engineering and Computer Science, Oakland University.
Funding Information:
A. Mili was supported by grants from NSERC and the School of Graduate Studies and Research of the University of Ottawa (Ottawa, Canada).
Funding Information:
H. Mili was supported by grants from the Centre de Tech-nologie Tandem de Montreal (C’ITM), a division of Tandem Computers Inc., Cupertino, Calif, the Natural Sciences and Engineering Research Council (NSERC) of Canada, and the Fonds pour la Creation et 1’Aide B la Recherche (FCAR) of Qutbec, and Centre de Recherche en Informatique de Mon-trtal (CRIM) through the MACROSCOPE initiative and the Quebec Ministry of Higher Education’s SYNERGIE programme (IGLOO Project).
PY - 1995/6
Y1 - 1995/6
N2 - Software productivity has been steadily increasing over the past 30 years, but not enough to close the gap between the demands placed on the software industry and what the state of the practice can deliver [22], [39]; nothing short of an order of magnitude increase in productivity will extricate the software industry from its perennial crisis [39], [67]. Several decades of intensive research in software engineering and artificial intelligence left few alternatives but software reuse as the (only) realistic approach to bring about the gains of productivity and quality that the software industry needs. In this paper, we discuss the implications of reuse on the production, with an emphasis on the technical challenges. Software reuse involves building software that is reusable by design and building with reusable software. Software reuse includes reusing both the products of previous software projects and the processes deployed to produce them, leading to a wide spectrum of reuse approaches, from the building blocks (reusing products) approach, on one hand, to the generative or reusable processor (reusing processes), on the other [68]. We discuss the implication of such approaches on the organization, control, and method of software development and discuss proposed models for their economic analysis. Software reuse benefits from methodologies and tools to: 1) build more readily reusable software and 2) locate, evaluate, and tailor reusable software, the last being critical for the building blocks approach. Both sets of issues are discussed in this paper, with a focus on application generators and OO development for the first and a thorough discussion of retrieval techniques for software components, component composition (or bottom-up design), and transformational systems for the second. We conclude by highlighting areas that, in our opinion, are worthy of further investigation.
AB - Software productivity has been steadily increasing over the past 30 years, but not enough to close the gap between the demands placed on the software industry and what the state of the practice can deliver [22], [39]; nothing short of an order of magnitude increase in productivity will extricate the software industry from its perennial crisis [39], [67]. Several decades of intensive research in software engineering and artificial intelligence left few alternatives but software reuse as the (only) realistic approach to bring about the gains of productivity and quality that the software industry needs. In this paper, we discuss the implications of reuse on the production, with an emphasis on the technical challenges. Software reuse involves building software that is reusable by design and building with reusable software. Software reuse includes reusing both the products of previous software projects and the processes deployed to produce them, leading to a wide spectrum of reuse approaches, from the building blocks (reusing products) approach, on one hand, to the generative or reusable processor (reusing processes), on the other [68]. We discuss the implication of such approaches on the organization, control, and method of software development and discuss proposed models for their economic analysis. Software reuse benefits from methodologies and tools to: 1) build more readily reusable software and 2) locate, evaluate, and tailor reusable software, the last being critical for the building blocks approach. Both sets of issues are discussed in this paper, with a focus on application generators and OO development for the first and a thorough discussion of retrieval techniques for software components, component composition (or bottom-up design), and transformational systems for the second. We conclude by highlighting areas that, in our opinion, are worthy of further investigation.
KW - OO software development
KW - Software reuse
KW - adapting reusable components
KW - building reusable components
KW - managerial aspects of software reuse
KW - software component retrieval
KW - software reuse measurements
UR - http://www.scopus.com/inward/record.url?scp=0029325224&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=0029325224&partnerID=8YFLogxK
U2 - 10.1109/32.391379
DO - 10.1109/32.391379
M3 - Article
AN - SCOPUS:0029325224
SN - 0098-5589
VL - 21
SP - 528
EP - 562
JO - IEEE Transactions on Software Engineering
JF - IEEE Transactions on Software Engineering
IS - 6
ER -