Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Toward an engineering discipline of software reuse

1999, IEEE Software

Re se a rche r’s CORNER Th i s a r t i c l e st e m s f ro m p a r t i c i p a t i o n i n a p a n e l se ssi o n a t t h e 1 9 9 7 Sy m p o si u m o n So f t w a re Re u sa b i l i t y, a n d d i sc u sse s o p e n re se a r c h i ssu e s, c l a ssi f i e d b y g o a l a n d b y a p p ro a c h . T owar d an E ngineer ing Dis cipl ine of Sof t war e Reuse ALI M ILI AND SHERIF YACOUB, INSTITUTE FOR SOFTWARE RESEARCH EDWARD ADDY, NASA SOFTWARE INDEPENDENT VERIFICATION AND VALIDATION FACILITY HAFEDH M ILI, UNIVERSITY OF QUEBEC S oft ware developm ent cannot possibly becom e an engineering discipline1 so long as it has not perfected a technology for developing product s from reusable asset s in a rout ine m anner, on an indust rial scale. Soft ware reuse cannot, in turn, achieve this status unless we make the following provisions: a sound scientific foundation that encompasses relevant design principles, widely acceptable engineering standards that compile these principles into working practical solutions, and coherent managerial standards that enable the deployment of these solutions under acceptable conditions of product qualit y and process maturit y. Although successful soft ware reuse experiments are increasingly common,2 success is not the norm, soft ware reuse is not a matter of routine practice, the promises of soft ware reuse remain for the most part unfulfilled, and a number of issues remain worthy of further research. The very idea that soft ware reuse is a legitimate research discipline is a paradox: in all other engineering disciplines, reuse is an integral part of good engineering design Ñso integral that it is not even noteworthy. This paradox raises t wo issues: 22 I EEE So f t w a r e Se p t e m b e r / O c t o b e r 1 9 9 9 0 7 4 0 - 7 4 5 9 / 9 9 / $ 1 0 . 0 0 © 1 9 9 9 I EEE Re se a rche r’s CORNER ♦ Why is soft ware reuse an issue and not, for example, hardware reuse? A question as broad as this can elicit a w ide range of responses. Perhaps t he common denominator of all possible answers is that soft ware assets are t ypically very information-rich; hence, it is difficult to characterize t hem , m atch them, and capture their relevant properties. ♦ How is soft ware reuse different from soft ware design? Good soft ware design advocates designing soft ware from reusable assets and producing software systems with the perspective that they might be reused. Soft ware reuse deals w it h producing reusable assets (domain engineering) and exploiting reusable assets (application engineering), so as to make good soft ware design a rout ine pract ice. Also, because there are quantifiable costs associated w it h t he integrat ion of reuse concerns, these costs have to be weighed against reuse benefit s. Soft ware reuse deals w it h the trade-offs involved in such cost–benefit decisions. These decisions influence bot h t he design process and the qualit y of the produced soft ware design. This article presents some of the research issues that we feel are relevant today. The list is neither exhaustive nor perfectly orthogonal, and necessarily reflects our biases. We discuss, in turn, technical aspects and then managerial aspects that we feel are worthy of research attention. practical research to provide profound insights. ♦ Em pirical m ethods are no excuse for dispensing with analytical methods. We can use empirical methods to validate a careful analysis of the phenomena of interest, but cannot use them as a substitute. For example, if we have determined by analytical means that soft ware costs have the form C = A × SB, where S is a m easure of product size and C a m easure of cost, then we can use empirical means to derive A and B, but we cannot use empirical means to determine whether the cost has the form C = A × SB or the form C = A × S + B. ♦ Scient ific research ult im ately affect s and enhances pract ice. Research on st ruct ured program - It is not always realistic to expect theoretical research to be readily applicable, or practical research to provide profound insights. Pr emis es of a S cient ifi c Appr oach As background, to provide a rationale for w hat could be considered worthy of research attention, we present our premises about the role of scientific research in an engineering domain such as soft ware reuse. Without meaning to get entangled in the endless debate of theory versus practice or science versus engineering, we take the following positions regarding the need for sound technical standards: ♦ Concern for practice is no excuse for poor theory. Good pract ice stem s from good t heory. While theoretical research focuses on understanding and modeling, practical research focuses on converting t he insight s gained from t he m odeling t ask into practical, effective solutions. It is not always realist ic to expect t heoret ical research to be readily applicable; it is equally unreasonable to expect m ing during the 1970s and 1980s centered on the simple yet crucial premise that programs are mathem at ical object s, w hich can be t he subject of formal, precise mathematical reasoning. This research produced a large b ody of know ledge ab out program specifications, verification, construction, and language sem ant ics. Alt hough t here is som e deb ate ab out t he d irect im p act of t his b ody of know led ge on t he d ay-to-d ay p ract ice of p rogram m ing, it undoubtedly has had a profound influence on m any aspects of the program m ing discipline, such as t he way we design and evaluate p rogram m ing languages and tools, t he w ay w e define programming-language semantics, the way we underst and and teach program m ing, t he way we sp ecify and verify p rogram s, and, ult im ately, t he way we pract ice program m ing. Hence, scientific research ultimately enhances practice through subt le but last ing influences. ♦ Scaling up is not always realistic. Because of its em phasis on underst anding, t heoret ical research often uses small-scale examples to focus on the phenomena at hand rather than the idiosyncrasies and complexities of large examples. If we think we can apply our experience with small examples to large ones, we face disappoint m ent if com plexit y im pedes scaling up. An alternative interpretation is that we practice on small examples in order not to tackle large examples; although this might sound farcical, there is solid rationale to it, in conjunction with the next premise. Se p t e m b e r / O c t o b e r 1 9 9 9 I EEE So f t w a r e 23 Re se a rche r’s CORNER ♦ Sim plicit y as a pervasive research goal . We view the goal of scientific research as the relentless discovery of simple models behind seemingly complex observations. A model might be complex for a number of reasons: the phenomenon it is trying to capture is intrinsically complex; the phenomenon is sim ple but we have not yet discovered it s sim plicit y; or t he phenom enon is sim ple but t he approach we are using precludes us from discovering its simplicit y. We can legitimately dismiss a research initiative as being too complex if we can establish that the complexit y stems from the third case— but not if the complexit y stems from the first or second case. In light of these premises, we feel there are a number of issues pertaining to soft ware reuse where current understanding is incomplete and can benefit from further insights. We discuss in some detail the topics where we have ideas, and mention those to which we have little meaningful to contribute. Domain E ngineer ing Is s ues There is increasing recognition in the soft ware reuse communit y that domain engineering is a crucial aspect of soft ware reuse, and for good reason: reuse w ill not happen unless reusable asset s are available, and good dom ain engineering is at the center of this requirement. of their structure and uses them on the basis of their advertised function. ♦ Asset s t hat abst ract a st ruct ure. What m akes these assets worthwhile is the structure they have, and the problem-solving experience that this structure embodies. Archet ypical examples of such assets include programming clichés, design patterns, and requirements clichés. This dichotom y has a profound im pact on t he following four aspects of soft ware reuse; along with each aspect, we discuss outstanding issues that we feel require more research attention. ♦ How assets are represented . An asset that embodies a function should be represented by a function that abstracts its most relevant functional (semantic) properties, whereas an asset that embodies a structure should be represented in a way that highlights its relevant structural (syntactic) properties. Current research on reusable assets does not properly acknowledge this distinction and its impact. ♦ How asset s are m atched . An asset t hat em bodies a funct ion is m atched against a query by testing its functional properties against the functional requirements of the query, using some form of subsum ption or equivalence relation. Matching an asset that em bodies a structure is totally different, in term s of how we represent t he query and how we analyze t he asset to determ ine it s relevance w ith respect to the query. Research on representing queries and assessing relevance must acknow ledge t his dichotom y and recognize its im pact. ♦ How asset s are developed . Design for black-box reuse is primarily a specification issue and is determined by the generalit y of the asset’s specification and the genericit y of its implementation. Design for whitebox reuse, on t he ot her hand, is prim arily determ ined by such design issues as m odularit y, sim plicit y, and structuredness. We would expect design life cycles for reuse to depend a great deal on which reuse policy the asset is designed for (black box or white box)Ñyet current research trends do not make the distinction. ♦ How assets are (re)used . By definit ion, asset s t hat em body a funct ion m ight only be used for black-box reuse, where the user has no cognizance of the asset’s internal structure. Assets that embody a structure may or may not have a function associated w ith them ; t ypically, they are geared toward white-box reuse. Packaging mismatch is the main obstacle to the seamless integration of reusable components. Essence of a reusable asset: structure versus function Victor Basili, G. Caldiera, and H.D. Rombach define a reusable asset as the em bodim ent of som e soft ware development experience.3 This definition encompasses a wide range of assets, but if we focus on those stemming from programming or program design experience, we find t wo categories of software assets: ♦ Asset s t hat abst ract a funct ion . What gives these assets their worth is the function they compute and the service that this function renders in host systems. Archet ypical examples of such assets are mathematical routines (in Fortran, for example) and abstract data t ype implementations (in Ada, for instance). The user of such assets has no cognizance 24 I EEE So f t w a r e Se p t e m b e r / O c t o b e r 1 9 9 9 Re se a rche r’s CORNER Packaging a reusable asset: form versus function We can capture the semantics of a soft ware asset through t wo distinct, nearly orthogonal aspects: its funct ion and it s packaging. While t he form er describes the mapping that it defines bet ween inputs and outputs, the latter describes the protocols that define how the asset receives inputs and delivers outputs. Packaging mismatch is the main obstacle to t he seam less integrat ion of reusable components.4 This matter would benefit from more research, and we advocate adopting a semantics approach (considering it an issue of semantic definition and seeking semantics-based methods to address it), in addition to the more common linguist ic approach (considering it an issue of program m ing language and seeking program m inglanguage constructs to address it). We expect that the impact of a formal semantics approach to packaging will be the same as the impact of formal sem ant ics approaches to capt uring t he funct ion of soft ware assets: It will foster crisper, more streamlined language constructs and a more disciplined use of existing constructs. specialized developm ent of soft ware asset s t hat cover the range of needs of the market; its rationale is to be a one-stop shop for the selected market segm ent. This criterion is consum er-focused and reflects the viewpoint of a (marketing) manager. Of course, these criteria are not mutually exclusive: an ideal domain satisfies all three criteria; a poor dom ain sat isfies none. Dom ain engineering processes are dependent on the way in which the An economy-of-scale rationale justifies why and quantifies to what extent a domain is worthy of a domain engineering effort. Characterizing a domain The first and most crucial step in a domain engineering initiative is to delimit the domain of interest by defining t he set of asset s t hat it com prises. Inherent in any domain definition is an economyof-scale rationale, which justifies why and quantifies to what extent this domain is worthy of a dom ain engineering effort. We can t hink of at least three criteria to delimit a domain for the purposes of a domain engineering initiative, each characterized by a distinct economy-of-scale rationale: ♦ Com m on expertise. This criterion identifies a field of dom ain expertise and caters to it through specialized developm ent of soft ware asset s t hat span the range of applications of the expertise at hand. This criterion is producer-focused and reflects the viewpoint of a domain expert. ♦ Common design .This criterion identifies a problem-solving pattern that is embodied in some generic soft ware assets and caters to it through the development of generic assets that can be specialized for specific needs. This criterion is product-focused and reflects the viewpoint of a programming expert. ♦ Common market . This criterion identifies a segment of the soft ware market and caters to it through domain is defined and delimited—yet this is not traditionally acknowledged. It is helpful to analyze domain engineering processes and their relation to the classification just proposed. It is also useful to quantify the economy-of-scale rationale for the domain, w hich m ight lead, in turn, to cohesion m etrics for domains. Software product lines Perhaps the m ost dom inant form of system atic soft ware reuse today is in soft ware product -line development. This t ype of reuse is often generated by a dom ain delim ited using a com m on-m arket approach to dom ain engineering, and is a natural form of reuse within a single organization. The core of the soft ware product line is the generic (or product-line) architecture. All of the issues related to research in system -sp ecific soft ware architect ures apply also to product -line architect ures; in addition, product-line architectures m ust address the issues of expressing com m onalit y and variabilit y. Some of the open technical questions dealing with soft ware product lines and architect ures include the follow ing: ♦ languages for architecture description, ♦ m et hods for evaluat ing soft ware architectures, ♦ m et hods to evolve a soft ware architect ure without degrading its integrit y, ♦ integrat ion of soft ware architect ures w it h hardware and system-level architectures, ♦ m ethods to m anage the com plexit y of configurat ion m anagem ent on m ult iple versions of components and systems, and ♦ methods to effectively and efficiently test system upgrades with new or different components or with a modified generic architecture. Se p t e m b e r / O c t o b e r 1 9 9 9 I EEE So f t w a r e 25 Re se a rche r’s CORNER FURTHER READI NG T. Biggerst aff and C. Richter, “Reusabilit y Fram ework, Assessm ent, and Direct ions,” IEEE Soft ware, Mar. 1987, pp. 41–49. General recom - mendations for soft ware reuse research, focusing primarily on practical goals. C.W. Krueger, “Soft ware Reuse,” ACM Com put ing Surveys, Vol. 24, No. 2, June 1992, pp. 131–183. An exhaust ive soft ware reuse survey, concluding with a presentation of outstanding research issues. We discuss some of these in this article, suggesting that they remain open issues. H. Mili, F. Mili, and A. Mili, “Reusing Soft ware: Issues and Research Direct ions,” IEEE Trans. Soft ware Eng., Vol. 21, No. 6, June 1995, pp. 528–562. Survey of the state of the art and state of the practice in soft ware reuse, including a discussion of som e research issues dealing m ost ly with technical aspects. R.L. Glass, “Reuse: What ’s Wrong w it h This Picture,” IEEE Soft ware, Mar./ Apr. 1998, pp. 57–59. Presenting the thesis that soft ware reuse has intrinsic limitations that are inherent in the nature of soft ware, hence are not dependent on the state of the art in soft ware reuse. Appl icat ion E ngineer ing Is s ues For a long time, mostly during the 1970s and 1980s,most researchers believed that if only we could learn to build correct programs from specifications, all the problems of soft ware engineering would be solved. The realization that there is more to soft ware engineering than writing correct code came gradually, with the observation that soft ware engineering is a multidisciplinary field and that the most crucial bottlenecks come from organizational and managerial aspects rather than technical aspects. Subsequently (in the early to mid 1980s),many researchers neglected the disciplines of program verification and structured programming and flocked in large numbers to the then-greener pastures of knowledgebased systems, expert systems, and fifth-generation systems. In the meantime, the so-called practicing programmers kept writing C code, and years of neglect did not enhance their understanding of program specification, design, and verification. 26 I EEE So f t w a r e Se p t e m b e r / O c t o b e r 1 9 9 9 Recently, program specification and verification have attracted renewed interest, although they now go by a different set of nam es: program understanding, verification and validation, formal methods, and so on. With hindsight, we feel that the problem with program-verification research was not the research itself but rather the unreasonable expectations placed on it. The same thing is happening today in soft ware component storage and retrieval: after spending several years focusing on this topic as though it was the key to all reuse problems (in a recent literature survey5 we counted about 50 proposed solutions), soft ware researchers have been outdoing themselves lately trying to disclaim this field as vehemently as they can. We feel that rumors regarding the death of this area of research are, if not prem at ure, at least grossly exaggerated. Although we agree that soft ware component storage and retrieval is no longer an important issue in the practice of soft ware reuse, some of the problems it raises are interesting in their own right, and their explorat ion is a wort hw hile research goal in t he sense that it enhances our understanding of relevant products and processes. Among the many outstanding issues that we recognize in soft ware component storage and retrieval is the distinction bet ween retrieval and brow sing. There are t wo ways to use the assets in a soft ware component library: ♦ Retrieval: A user submits a well-defined query to a soft ware library and expects the system to identify all the library assets that satisfy the query (recall) and exclude irrelevant assets (precision). The query t ypically refers to the expected functional properties of candidate assets, or sometimes to structural properties, and it might also include requirements about perform ance criteria. Ret rieval is t ypically deployed in conjunction w ith top-dow n soft ware design. ♦ Brow sing: The user has no predefined concept of desirable functional properties but selects assets on t he basis of general relevance guidelines t hat m ight deal w it h applicat ion dom ain, com put ing platform, structural features, problem-solving knowledge, or ot her criteria. Brow sing is t ypically deployed in conjunct ion w it h bot tom -up soft ware design. There is ample evidence to the effect that brow sing is t he m ost predom inant pat tern of library usage, if only because soft ware reuse is consistent with bottom-up soft ware design; this is ironic because most of the past research dealt with retrieval Re se a rche r’s CORNER rather than browsing.5 Indeed, retrieval assumes that a user has clearly defined requirements stemming from a previously formulated design and is seeking assets that satisfy these requirements. It is far more t ypical for users to brow se through a library to get acquainted with available assets, then formulate a design in such a way as to take the best advantage possible of the existing assets. The distinction bet ween retrieval and brow sing m ust be further explored, w it h an em phasis on gaining a better understanding of brow sing. For exam ple, is brow sing an instance of retrieval where the selection criterion is nonfunctional? Is it a form of retrieval where the emphasis is on recall rather than precision? Is it a form of retrieval where the emphasis is on application domain rather than functionalit y? Do we apply retrieval when we are familiar with a library and brow sing when we are not? and so on) are fairly well-understood, we must pay more attention to turning this understanding into rout ine engineering pract ice. The nat ure of COTS components requires black-box testing to be the primary means of verifying that a COTS component is reliable and fit s t he architect ure of t he system or product line. This black-box test ing should be driven by the functionalit y of the COTS component (to verify that all functions work appropriately), the Most decisions that arise in soft ware reuse can and must be justified by some economic rationale. Component-based software Com ponent-based soft ware developm ent has recent ly been touted as a technology facilit ator. CBSD is enabled by the m aturit y of developm ent environments and programming languages (such as Visual Basic, C++, and JavaBeans) that support both the developm ent of the com ponents them selves and the development of applications using components.6 The following features characterize CBSD in contrast with traditional (custom) soft ware development: ♦ The CBSD process is an interface-centered process in w hich com ponent interfaces play t he major role in plugging components together. ♦ The developm ent process is a com posit ion mechanism in which one assembles an application from components. ♦ An application developed from components relies heavily on t he separat ion of concerns and functionalities of the individual components. This is required to decrease t he interdependency bet ween com ponent s and hence im prove system maintainabilit y and reliabilit y. ♦ When an application uses commercial off-theshelf components, it is much more dependent on the vendor, his support, and his upgrade schedule. COTS-based system development While many of the issues that arise during COTS integration (specification of components, verificat ion and validat ion, com posit ion of com ponent s, system’s operational profile, and system-level fault injection.7 Should protective wrappers be used on COTS products to m inim ize the probabilit y of adverse interaction? What risks are alleviated by using COTS product s (such as cost and reliabilit y), and what risks are amplified (such as future compatibilit y and reliabilit y evaluation)? What are the differences bet ween using COTS product s in real-t im e and em bedded system s from t heir use in ot her t ypes of systems? What complexit y is added to the system through the use of multiple COTS products, and does this complexit y increase the risk of errors as the system evolves? Manager ial Is s ues Although we recognize the importance of organizat ional provisions and t he pragm at ic value of human-resource management, we limit our discussion here to the economic aspects of soft ware reuse. Economic considerations are an important aspect of a soft ware reuse policy, as m ost decisions t hat arise in soft ware reuse can and must be justified by som e econom ic rationale. Also, cost is an integral part of any engineering discipline: the essence of a com petent engineer is not so m uch to be able to design a product as being able to do so economicallyhence, economic considerations are inseparable from good engineering. Return-on-investment models for software reuse Many decisions in the practice of soft ware reuse can be rationalized as investment decisions. At the corporate level, corporate m anagem ent com m its resources to initiate a reuse program and expects to Se p t e m b e r / O c t o b e r 1 9 9 9 I EEE So f t w a r e 27 Re se a rche r’s CORNER want to derive: net present value, payback value, average return on Investment costs Reuse infrastructure book value, internal rate of return, and profit abilit y index. Ot her Periodic costs funct ions include ret urn on inDomain engineering cycle vestment, break-even values, proInvestment costs Domain analysis costs ductivit y gains, and qualit y gains. Periodic costs ♦ Cost factors. For a given inComponent engineering cycle vestm ent cycle and a given ecoInvestment costs Periodic costs Periodic benefits nom ic funct ion, t he set of cost Development for reuse Library overhead Sale of asset factors that are taken into account Periodic benefits in a cost m odel is t he m ost im Catering to projects port ant feat ure of t he m odel: it specifies what aspects of the reuse Periodic benefits decision we want to integrate. Application engineering cycle ♦ Reuse organization. Several Investment costs Periodic costs Periodic benefits organizational models are possible Training Reuse overhead Productivity gains Process impact Reuse risks Q uality gains in soft ware reuse;9 the organizational structure has some impact on how costs are determined, charged, and accounted for. F igur e 1. Software reuse cost models. ♦ Hypotheses. Some cost models neglect integrat ion cost s and assume that the cost of building an aggregate reap benefit s in term s of bet ter product qualit y, of t wo com p onent s is t he sum of building each. higher productivit y, and shorter time to market. At Some cost models assume that soft ware developthe (reuse) department level, a manager might comm ent cost s are linear in t he size of t he product. mit resources to initiate a domain engineering iniOthers fail to take into account the discount rate of tiative, expecting to reap benefits by selling (be it resources, w hile st ill ot hers ignore qualit y gains internally) reusable assets to project teams. Project (b ecause t hey are unable to integrate t hem into team s also com m it resources and take risks w hen t heir equat ion) and focus on product ivit y gains. they adopt a reuse discipline; they expect to reap Vir t ually all cost m od els ignore t he inflat ion of benefits in terms of productivit y, qualit y, and timecode size t hat stem s from soft ware reuse, w hen in liness of project completion. Component developfact reusable code tends to be larger than code deers com m it resources to develop a reusable asset velop ed for a sp ecific single use (due to requireand expect to reap benefits by selling the asset to m ent s of generalit y). project teams. In the following discussion, we anaThis variet y of attributes accounts for the abunlyze soft ware reuse investment cycles and highlight dance of econom ic m odels and show s, paradoxitheir interrelationships. cally, that there too few modelsnot too many. The There has been a great deal of research on the solution is not, of course, to invent more models to econom ics of soft ware reuse.8 Interest ingly, even fill the gaps we have identified but rather to investhough these cost models appear to deal with the tigate generic models that can be specialized along same problem, they in fact differ significantly from the dimensions just discussed. This topic is worthy each other. Some of the features that distinguish beof further investigation along the framework illust ween these cost models include the following: trated in Figure 1; it is easy to see in the figure how ♦ Invest m ent cycle. Most soft ware reuse decithe various models feed into each other. For examsions can be modeled as return-on-investment deple, a corporate manager can assess the impact of cisions. We have identified four distinct investment a reuse initiative by taking into consideration the cycles, as shown in Figure 1. Each one is subject to a cost of the reuse infrastructure as well as domain endifferent economic rationale and can be quantified gineering costs (accumulated across different doby means of a ROI model. mains) and can balance these costs against the ben♦ Economic function. John Favaro 8 identifies five efit s reaped from qualit y and product ivit y gains different functions that an economic model might Corporate cycle 28 I EEE So f t w a r e Se p t e m b e r / O c t o b e r 1 9 9 9 Re se a rche r’s achieved in application engineering. Also, a domain manager can assess the impact of a domain engineering effort by considering the cost of producing reusable asset s against t he benefit s reaped from “selling” (so to speak) these assets to project managers. Appropriate incent ive and reward m echanisms must be put in place to give a concrete meaning to t he concept of selling asset s w it hin a corporate organization. The figure also show s the terms that govern component engineering investments and application engineering investments. This figure can serve as a fram ework for classifying and analyzing cost m odels; perhaps we can also use it to perform domain modeling on soft ware reuse cost estimation. G enerality CORNER G enericity Ada Pascal Immediacy F igur e 2. Generality versus immediacy. Cost models for software reuse life cycles The ROI models discussed earlier are of no use unless we have means to quantify the costs involved. The derivat ion of t he ROI m odels is an analyt ical step, w hereas t heir quant ificat ion is an em pirical step. The follow ing t wo aspects of soft ware reuse costs are worthy of research attention: ♦ Estimating the cost of domain engineering. This includes the dom ain-analysis phase, in w hich domain experts and analysts investigate a particular domain to identify a domain-wide system architecture along with commonalities and variabilities bet ween applicat ions of t his dom ain. However, we must also analyze the costs associated with all the act ivit ies t hat precede asset developm ent. While there are some general estimates of this cost, no accurate models exist. ♦ Estimating the cost of developing for reuse. Once domain analysis is complete, individual assets are specified and developed according to t radit ional development life cycles. Current models do provide for est im at ing t he cost s of asset developm ent (w hich begin as soon as an asset ’s requirem ent s specifications are pinned down): Cocomo 2.010 offers estimates of these costs by means of the RUSE factor, and Jeff Poulin 11 sum m arizes current est im ates of t he RCWR (Relat ive Cost for Writ ing for Reuse). Both RUSE and RCWR are derived from empirical observations that show a worrisome lack of convergence, suggest ing perhaps t hat m ore research is needed in this area. Empirical research is needed to provide better estim ation procedures for these costs. We advocate the deployment of three t ypes of empirical research: controlled experiments, case studies, and analysis of production metrics. A basis for measuring reusability It is important to be able to assess the reusabilit y of a soft ware asset by means of quantitative metrics. Such metrics provide a rationale for deciding when to consider an asset reusable. Populating a library with unusable assets can hurt the library’s perform ance: w hen it is not ret rieved, a nonreusable asset will nevertheless affect the efficiency of the retrieval procedure because one more candidate asset has to be considered. When it is retrieved but subsequently ruled out, a nonreusable asset affects the user’s productivit y because of the wasted effort required to analyze the asset. When a user retrieves and reuses a nonreusable asset, it s poor qualit y hurt s t he system in w hich it is integrated. Hence, measuring asset reusabilit y and enforcing reusabilit y standards have a significant economic rationale. Soft ware asset s have t wo qualit ies t hat enhance reusabilit y and thus, if quantified, can serve as a basis for defining a measure of reusabilit y: ♦ Generalit y enhances reusabilit y by making the asset more widely applicable. ♦ Genericit y enhances reusabilit y by reducing the cost of adapting the asset to its host system. When we design an executable asset for reuse, we m ust st rike a com prom ise bet ween t wo conflicting requirements: generalit y, which provides for making the asset as widely applicable as possible; and immediacy, which advocates building specific assets that can be used w ith little or no instantiation effort. For a given programming notation, these requirements are contravariant (that is, each is satisfied at the expense of the other), as shown (very abstractly) in Figure 2. The role of genericit y (as a feature of programming languages) is precisely to Se p t e m b e r / O c t o b e r 1 9 9 9 I EEE So f t w a r e 29 Re se a rche r’s CORNER T abl e 1 Our R ecommendat ions f or R eus e R es ear ch Approach Theoretical Goal Practical Goal Analytical Function vs. structure COTS integration Form vs. function Measuring reusabilit y Empirical ROI design Domain characterization Soft ware product lines Retrieval vs. brow sing Component-based soft ware COTS integration ROI validation Soft ware reuse cost estimation push the curve away from the center. This figure also show s, very schematically, how these lines could be draw n for t wo languages w it h different levels of genericit y. We feel that the interrelationships bet ween generalit y, genericit y, and immediacy ought to be further explored, and possibly quantified; this might lead to better guidelines on how to strike the compromises that arise in design for reuse, in addition to serving as a basis for reusabilit y assessment. T able 1 sum m arizes our recom m endat ions by classifying them according to research goal and suggested research approach; it also distinguishes technical and managerial issues. The goal of theoretical research is to enhance understanding, whereas t he goal of pract ical research is to use understanding to enhance practice. In terms of research approach, analytical research proceeds by analyzing processes of interest, whereas empirical research proceeds by recording observations and deriving pertinent empirical law s. Such law s may be derived without a complete understanding of the processes at hand. The list of topics here is not exhaustive; it reflects our biases as well as our specific understanding of t he soft ware reuse field. The boxed text “Furt her Reading” on page 26 point s to som e alternat ive opinions in the reuse communit y. ❖ ACKNOWL EDGMENTS We thank Steven Atkinson of West Virginia University for reviewing this article and providing feedback. Ali Mili thanks Mansour Zand for involving him in the report of the SSR ’97 panel session. Finally, w e are grateful to the review ers for their constructive feedback and insights. 30 I EEE So f t w a r e Se p t e m b e r / O c t o b e r 1 9 9 9 REFERENCES 1. S. McConnell, “The Art, Science, and Engineering of Software Development,” IEEE Software, Jan./ Feb. 1998, pp. 120, 118–119. 2. S. Isoda, “Experiences of a Soft ware Reuse Project,” J. System s and Software, Vol. 30, No. 3, Sept. 1995, pp. 171–186. 3. V.R. Basili, G. Caldiera, and H.D. Rombach, “The Experience Factory,” Encyclopaedia of Software Eng., John Wiley & Sons, New York, 1994. 4. R. DeLine, “Techniques to Resolve Packaging Mismatch,” Proc. Sym p. Software Reusability, ACM Press, New York, 1999, pp. 44–53. 5. A. Mili, R. Mili, and R. Mittermeir, “A Survey of Software Reuse Libraries,” Annals Software Eng., Vol. 5, 1998, pp. 349–414. 6. W. Brown and K. Wallnau, “The Current State of CBSE,” IEEE Software, Oct./ Nov. 1998, pp. 37–46. 7. E.A. Addy and M. Sitaraman, “Bridging the Gap between COTS Product Reuse and Formal Methods: A Case Study,” Proc. Sym p. Software Reusability, ACM Press, New York, 1999, pp. 83–91. 8. J. Favaro, “A Comparison of Approaches to Reuse Investment Analysis,” Proc. Fourth Int’l Conf. Software Reuse, IEEE Computer Soc. Press, Los Alamitos, Calif., 1996, pp. 136–145. 9. B. Coulange, Software Reuse, Springer-Verlag, London, 1998. 10. B.W. Boehm et al., “Cost Models for Future Software Lifecycle Processes: COCOMO 2.0,” Annals Software Eng., Vol. 1, Sept. 1995, pp. 57–94. 11. J. Poulin, Measuring Software Reuse: Principles, Practices and Econom ic Models, Addison Wesley Longman, Reading, Mass., 1997. About the Authors Ali Mili is a professor of computer science at West Virginia University, a senior scientist at the Institute for Software Research, and a site director of the NSFsupported Software Engineering Research Center. He holds a PhD in computer science from the University of Illinois at Urbana Champaign and a Doctoratès-Sciences d’Etat from the Université Joseph Fourier de Grenoble. Mili was program cochair of the 1999 Symposium on Software Reusability. He is a member of the IEEE Computer Society and the ACM. Contact him at amili@ softwareresearch.org. Sherif Yacoub is a PhD candidate in computer engineering at West Virginia University and a research assistant at the Institute for Software Research. His research focuses on design patterns, software reuse, software architecture, objectoriented analysis and design, and design quality. Sherif received an MSc in electrical engineering and a BSc in computer engineering from Cairo University, Egypt, where he also lectured in software engineering. Contact him at syacoub@softwareresearch.org. Edward Addy is a research associate and PhD candidate in computer science and electrical engineering at West Virginia University, where he is a member of the NASA/ WVU Software Research Laboratory at the NASA Software Independent Verification and Validation Facility. His research interests include verification and validation, software reuse, software safety, and software risk assessment. Addy has a BS in mathematics (education) from Michigan State University and an MA in mathematics from Wake Forest University. He is a member of the IEEE Computer Society and the ACM. Contact him at eaddy@ csee.wvu.edu. Hafedh Mili is an associate professor of computer science at the University of Québec at Montreal. His areas of interest include software reuse, object-oriented software engineering, information retrieval, and knowledge representation. He holds an engineering degree from École Centrale de Paris and a PhD in computer science from George Washington University. Mili has participated in a number of industry-university projects on software reuse. Contact him at mili@info.uqam.ca. The authors can be reached in care of Sherif Yacoub at the Inst. for Software Research, 1000 Technology Dr., Fairmont, WV 26554; syacoub@ softwareresearch.org.