Promoting Software Reuse in a Corporate Setting

 

Pedro Esteves Pinto

ppinto@cs.cmu.edu

26-Nov-1998

1. Overview

 Reuse is promoted as one of the most promising weapons against the perpetual software crisis. Recent empirical studies have confirmed this promise [Lim94, Lanergan, Reifer Ch. 1]. Unfortunately, and despite advances in reuse enabling technologies, systematic reuse is still uncommon. As one engineer eloquently puts it in a software engineering discussion group [Pius]:

 I've worked for large consulting organizations. Through them I have done work for many corporations. In some corporations I have seen talk of reuse. In all consulting organizations I have talk[ed] of taking advantage of software developed on one project and using it on another to increase profits.

In no case have I seen much more than talk

 The final hurdles that stand between many software organizations and the benefits of reuse are mostly managerial in nature. In this paper a strategy for implementing reuse in a medium size organization is proposed. This strategy is designed to require few initial resources and provide the foundations for systematic reuse. Despite its lightweight approach the strategy attempts to address most of issues presented above. This strategy defines a framework, metrics allowing cost/benefit analyses and several motivators for reuse. It also proposes a carefully controlled reuse-enabling infrastructure.

The next section provides some background on the evolution of reuse in the software industry. Section 3 presents some key concepts and terminology regarding reuse. This terminology is used throughout the rest of the paper. Section 4 discusses some of the benefits that are generally associated with reuse. The challenges faced by organizations trying to implement reuse are presented on section 5. Section 6 proposes a lightweight reuse strategy. In the context of this strategy some reuse incentives are discussed in section 7. Finally section 8 provides closing remarks on the strategy outlined in section 6.

 

2. Background

 The reuse of work-products is a powerful concept that has been present in the manufacturing world since the industrial revolution. The use of standardized, interchangeable parts is key to modern industrial economies of scale. The large productivity increases resulting from reuse in other industries have been pursued by the Software Industry since as early as 1949 with the first uses of subroutines on the EDSAC at Cambridge University. Large scale software reuse, however, has remained elusive and few breakthroughs have occurred in the half century since the first efforts.

Nevertheless, the increasing gap between software supply and software demand has resulted in great pressure to improve productivity. This pressure has lead to a growing interest in the potential of reuse. Starting with the initial efforts by NEC and Raytheon in the 70s, organizations have become increasingly interested in the benefits associated with reuse. The 80s marked the start of large-scale efforts aimed at promoting reuse such as the STARS program in the USA and the PCTE and REBOOT programs in Europe. In the 90s technological developments such as the popularization of Object Oriented tools and techniques and the emergence of standards for packaging software components removed some of the more technical barriers to reuse.

The next session will define some key reuse concepts and establishes the terminology that will be used through the rest of the paper.

 

  1. Terminology
  2.  While software reuse has existed since the late 40s, early software reuse practices focused on code [Lin, Ch. 2]. Beginning in the 80s, however, the concept of reuse broadened to include reuse of designs, specifications, code, and in general "any information which a developer may need in the process of creating software" [Freeman]. This latter, more general meaning of reuse will be used throughout the rest of this paper. Reusable products or by-products of the software development will be referred to as assets. The individuals or groups that create assets with the explicit purpose of reuse in mind are called producers. The users of these assets are referred to as consumers. When a producer makes an asset explicitly available for reuse, for instance, by placing it in a reuse library, the asset is said to be published.

     

    Asset

    A reusable product or by-product of the software development. Typical examples are code, design, specifications, user documentation, test plans, estimates, etc.

    Reuse

    The use of previously created assets in the development of new software.

    Consumer

    An individual or group reusing previously created assets in the development of software.

    Producer

    An individual or group that creates assets with express reuse purposes in mind.

    Publishing

    Making an asset explicitly available for reuse. Typically this is achieved by placing an asset in a reuse library.

      

  3. Reuse Benefits

 Many benefits have been associated with reuse. Typically these include increases in productivity and quality but there are other, less direct, benefits. These include reduced training and maintenance costs. Some of the most important improvements that can be achieved through reuse are summarized below [Lin Ch 11, NATO Sec. 3].

 

 

 

 

 

 

 

 

Reuse advocates have claimed most of the benefits presented since the inception of the reuse concept. Although intuitively obvious these qualitative benefits have only recently been partially quantified in industry scenarios [Lim94, Lanergan, Reifer Ch. 1]. Reported productivity improvement ranges anywhere from 25% at DEC Corporation up to %2000 at SoftTech [Lin98 Ch. 11]. These increases in productivity led to cost reductions and although there is little consensus on the exact cost reduction percentages, reuse is also almost unanimously pointed out as one of the single most effective cost reduction techniques [Lim98 Ch. 1]. Quality improvements have also been shown to be associated with reuse. HP reported up to 51% defect reduction [Lim94]. Similar results were reported by NEC [NATO].

Overall there is now considerable industry evidence on the benefits of reuse. However these benefits have associated costs – some fixed, some incremental. Systematic reuse is notoriously difficult to implement in a corporate wide faction.

The next section will discuss some of the challenges faced by reuse advocates.

 

  1. Reuse Challenges
  2. Despite the benefits outlined and the tools and techniques made available reuse still provides more challenges than most corporations are able or willing to take on. These challenges can be broadly classified into challenges faced by producers and challenges faced by consumers.

    From the producer’s perspective, the creation of reusable assets can be a formidable task. While developing a reusable asset, the producer must be able to predict the context in which the asset will be reused. The greatly magnified problem context that results leads to much more stringent requirements for reusable assets. Such requirements can include more general designs, better performance, greater extensibility and highly increased needs for support documentation. To make matters worse in typical organizations job performance is a direct function of the timeliness of the last project. The schedule and budget pressures that result from this approach leave very little room for activities not connected to immediate the bottom line. Since producing an asset for reuse is estimated to increase its cost anywhere between 20% and 300% [Lin98, Ch. 6] it seems likely that unless performance and cost measures are reexamined, organizations will continue to concentrate in immediate results.

    Consumers also face important obstacles in their quest to reuse assets. These challenges have been captured by Frakes [Frakes] in his list of failure modes for reuse:

     

    No attempt to reuse

    The consumer does not explore the possibility of reusing assets instead of developing them.

    Part does not exits

    The consumer considers reuse but no asset matching his requirements exists.

    Part is not available

    Although a matching asset exists it was never published by its producer.

    Part not found

    The consumer is unable to find a matching asset, despite the fact that this asset exists and has been published by its producer.

    Part is not understood

    The consumer is able to find a matching asset but this asset is too complex or badly documented to be used.

    Part is not valid

    A comprehensible, matching asset is found but its quality is not sufficient to satisfy the consumer’s requirements

    Part cannot be integrated

    Although a quality asset was found it cannot be integrated into the consumers product.

     

    In order to address the challenges posed by reuse technical and managerial techniques have been developed. In the technology camp the development of Object Oriented (OO) methods and languages was hailed as the solution for reuse problems. Technological hype aside, OO has been shown to be able to facilitate reuse [Lewis, Chen]. The Internet has also contributed greatly to the cause of reuse by providing a rich medium where producers and consumers can interact. The World Wide Web (WWW) has been successfully used by producers to publish their assets, resulting in the creation of a gigantic, virtual database of reusable assets. The recent availability of WWW search engines has provided consumers a very powerful indexing mechanism to this virtual database. Also, standards for packaging assets have emerged making reuse easier. The increasingly popular Design Patterns movement [Gamma] is an example of packaging assets, in this case proven design solutions, in a standard way. Binary standards for software component encapsulation [Booch] have also contributed greatly to reuse leading to the emergence of a software component industry.

    As for managerial techniques some work has been done. Fichman and Kemerer in [Fichman] discuss some of the problems related to proper cost allocation when reuse is being implemented. Numerous economic models for reuse have been developed [Lim96], legal and contractual issues have been analyzed in [Lim96b]. Reifer [Reifer] provides a complete road-map to implementing a reuse program from business case analysis to operational issues.

    The next section will purpose a model for reused tailored to the target organization described in section 1.

     

  3. A light-weight reuse strategy

 Lin in [Lin98, Ch. 7] describes the roles and scope of corporate reuse programs as ranging over three levels: Influencer/Consultant, Librarian/Broker and Producer/Business. The Influencer/Consultant role is usually filled by an individual or group in the organization that acts as a reuse expert, providing advice to local reuse groups and keeping abreast of reuse development within industry or academia. This role has the advantage of requiring few resources is limited in the amount of influence it can exert on an organization’s overall reuse goals.

The Librarian/Broker role implies the creation and maintenance of a reusable assets library. The group appointed to this role is not responsible for the development of reusable assets. Instead the group certifies assets submitted by producers and publishes these assets on a reuse library. This role requires more resources than the Influencer/Consultant role but it also has the potential to contribute more to the organization reuse strategy by providing a standardized, certified organization-wide repository of reusable assets.

Finally the Producer/Business role accumulates the responsibilities of the previous roles and in addition also creates, maintains and procures assets. The emphasis of this role is helping organizations consume as opposed to helping them produce. Although this approach requires more resources than the previous ones it also has the advantage of greater control of the reusable asset creation process.

In the context of the organization described in Section 1, the Librarian/Broker role seems to be the one that better that balances risks and benefits. By starting with a small organizational unit responsible for setting up and maintaining a reuse library, a basic infrastructure for reuse is provided. At the same time major resource commitments are postponed until more information on actual reuse costs and benefits is available. Once this information is known, it is possible to decide if progressing to a Producer/Business role is appropriate. The organizational unit proposed, henceforth referred as reuse group, could initially be staffed with only one or two engineers. It is essential, however, for these engineers to be highly respected and experienced. Besides the obvious advantages of competency staffing the reuse group with top-people sends a message of commitment to the success of the reuse program.

The responsibilities of the reuse groups include:

 

 

 

 

 

 

 

These responsibilities are further discussed below.

  

    1. Maintaining a library of reusable assets
    2. The existence of a centralized, well-managed reusable assets library address some of the difficulties faced by consumers in their attempt to locate reusable assets. It is fundamental though, for this library to be kept under strict control so as to avoid redundant or low quality assets from being added. These measures will increase the trust consumers place in the items contained in the library. The use and enforcement of a clear structure for the library will also reduce the effort necessary for consumers to locate a reusable asset (or to conclude the asset does not exist). It is recommended for the reusable assets in the library to be kept under version control so as to allow for the existence of multiple revisions of the same asset.

       

    3. Developing reuse policies and standards
    4. A degree of commonality and coherence should be sought in the assets published in the library. This ensures that consumers can more easily understand new assets and at the same time provides a common language for producers and consumers. The reuse group should create standards enforcing this commonality and provide them to producers. The reuse group should also clearly state its policies regarding additions and removals to the reuse library so as to avoid misunderstandings and wasted efforts on the part of producers and consumers. Policies for the maintenance of the reusable assets should be stated up-front. Given the importance maintenance considerations have on the acceptance of reusable assets [Lin98 Ch. 8] it is recommended that the reuse group policies include the guarantee that all assets in the library will have active maintainers.

       

    5. Surveying and documenting reuse opportunities in the organization
    6. The reuse group should survey the needs of the organization in terms of reusable assets. These needs should be documented so as to provide potential producers with a list of useful reuse opportunities.

       

    7. Certifying assets submitted for publishing
    8. This is one of the most important responsibilities of the reuse group. If consumers are to trust the assets in the reuse library some control has to be imposed in their quality. The recommended process for this certification is to do a preliminary screening rejecting assets that are irrelevant, redundant or do not adhere to the reuse standards. After this a peer review of the asset should be conducted. The reuse group should be empowered to select appropriate elements outside of the group to participate in the review. Guidelines for the review process can be found in [Fagan]. The purpose of this review is not only detecting defects that might have slipped through the producers tests but also to involve experts from outside the group in the asset publishing process. This creates some level of shared ownership on the library.

      Finally it is recommended for the assets in the library to be rated in terms of number of successful reuse instances [Brechbiel]. This measure provides consumers with an indication of the risk of using certain assets.

       

    9. Editing a newsletter that serves a communication medium between producers and consumers
    10. In order to notify the consumer community of changes to the contents of the reuse library a newsletter is suggested. The newsletter can serve as a forum where the needs of consumers are debated and as a public recognition vehicle for producers that have contributed to the library. It can also be used to educate the organization on the benefits of reuse. Additionally an informal b-board might also be established to create a reuse culture not dependant on geographical or organizational ties.

       

    11. Collecting metrics on reuse costs and benefits

 To understand the efficiency and effectiveness of the reuse program it is necessary to measure the level and cost of reuse. The quality of the reuse library should also be measured so that improvement plans can be made. Finally measurement can also be used to align employee and organizational goals regarding reuse. In the context of the Goal Question Metric [Basili] paradigm the following metrics are recommended [Lin98 Ch. 19].

 

 

Goal1: Evaluate the cost effectiveness of the reuse program

Q1: How much do reusable assets cost?

M1: S cost of submitted asseti

 

Q2: How much are reusable assets saving?

M1: S ((cost of asseti * number or reuses of asseti) –

cost (avg. integration effort of asseti * number or reuses of asseti))

 

Goal2: Evaluate the quality of the reuse library

Q1: How adequate is the content of the library?

M1: number of assets reused

M2: number of missing assets (assets requested by consumers but not yet available)

M3: number of assets in the library

 

Q2: How good are the assets in the library?

M1: Defect density of reused assets in library

M2: Avg. reusability score (consumers are required to rate the ease of reusability of assets)

 

Q3: How easy is it to reuse assets?

M1: S (avg. integration effort of asseti) / S size of asseti

 

 Goal3: Evaluate performance of employee as producer or manager of producers.

Q1: How much effort has the employee saved as a producer?

M1: S employee assets (cost of asseti * number or reuses of asseti

cost (avg. integration effort of asseti * number or reuses of asseti) – cost of asseti)

 

Q2: How much effort has the employee saved as a manager of producers?

M2: S managed employees (S employee assets (cost of asseti * number or reuses of asseti

cost (avg. integration effort of asseti * number or reuses of asseti) – cost of asseti))

 

  1. Incentives for reuse
  2.  The model proposed in the last section relies on the assumption that it is possible to generate reusable assets even when no elements of the organization are specifically allocated to this task. In a typical organization this assumption is probably unrealistic. Without incentives or management involvement potential producers are not likely to commit the amount of effort reusable high quality assets require.

    The model incorporates three types of incentives: changes in the performance evaluation criteria, public recognition and opportunities for achievement. If potential producers are to understand what is expected of them, it is necessary for the criteria for performance evaluation to reflect management priorities. By explicitly tying performance evaluation to the usefulness of the contributed reusable assets, management expectations are made clear – the more effort is saved by a producer’s reusable asset the better his performance is considered. This criteria applies not only to producers but also to their managers. The goal is to make production of reusable assets an integral part of employee’s responsibilities. For this reason direct cash incentives are not used. Reuse asset development should not be considered an extra activity and for this reason it should not be separately rewarded.

    The second approach to promoting the construction of reusable assets is through public recognition. The proposed model uses a newsletter to publicly acknowledge the contributions of producers.

    The last and potentially most powerful motivator in the model is the sense of achievement that can result for a producer when one of his assets is published. In a 1983 study Fitz-enz showed that Data Processing (DP) professionals are primarily motivated by achievement [Fitz-enz] (salary is awarded a modest 10th position in the scale of motivators). The rigor of the certification process contributes to this sense of accomplishment. A parallel can be made between a producer publishing an asset and a researcher publishing a paper. Both are subject to a rigorous peer review of the quality of their work and both have no immediate rewards from passing this review. It is doubtful that simply giving researchers cash incentives for published material could increase the quality of research papers. Instead high quality papers bring their authors prestige and new opportunities for career advancement. The organization should make sure that this is also the case for publishers of high quality assets since the possibility for growth is the second most important motivators for DP professionals [Fitz-enz].

     

     

    The incentives advanced until now are applicable only to producers. The model is silent in what respects to rewarding consumers for reusing assets. The rational for this is that the ultimate goal of the reuse group is not to increase reuse but to increase productivity. Consumers are made aware of the benefits of reuse, provided with high quality assets and guaranteed that support is available for these assets. Obstacles to reuse are removed but the task of deciding when reuse is appropriate is left to the consumer. Consumers should still be evaluated only with regard to their productivity and the quality of their work and left to find the optimal path to these goals. Theoretically this path will include reuse. If it does not, then the assumptions regarding the role of reuse in the organization may have to be reviewed.

     

  3. Closing remarks
  4.  The strategy proposed does not address all the issues regarding reuse. Important techniques such as domain analysis or domain engineering [Lin98, Ch. 23] are not explicitly discussed. This does not mean that these techniques are not considered important. The goal of the strategy was to introduce reuse and to provide a solid framework for future reuse efforts. After this framework is in place and as the organization gains insight into its reuse needs, a more proactive approach to reuse can be taken. This will probably mean a transition of the reuse group to a Producer/Business role [Lin98, Ch. 7] with a corresponding increase in the number of resources available to the group. Hopefully the organization will then be both willing and able to invest in domain analysis and engineering efforts and take explicit advantage of product lines [Lin98, Ch. 23]. At this point reuse can start to be an integral part of an organization’s business strategy as opposed to being a simple cost reduction technique.

     

  5. Bibliography

  

Basili

Basili V. R., Briand L. C., Melo W. L., "How reuse influences productivity in object-oriented systems," Communications of the ACM, vol. 39, no. 10, pp 104-116, Oct. 1996

 

Booch

Box D., Booch G., "Essential COM", Addison-Wesley Object Technology Series, 1998

 

Brechbiel

Brechbiel F., "Framework for certification of reusable software components (draft)", Department of Defense Center for Software Reuse Operations (CSRO), Falls Church, VA Sept. 1992

 

Chen

Chen D. –J and Lee P. J., "On the study of software reuse using reusable C++ components," Journal of Systems & Software, vol.20, no. 1, pp 19-36, Jan. 1993

 

Fagan

Fagan Michel E., "Advances in Software Inspections", IEEE Transactions in Software Engineering, Volume SE-12, Number 7, July 1986, pages 744-751

 

Fichman

Fichman R. and Kemerer C. F., "Activity Based Management of Component-Based Software Development", 1998

 

Fitz-enz

Fitz-enz J., "Who is the DP Professional ?", Datamation Magazine, January 1983

 

Frakes

Frakes W. B., "An Empirical Framework for Software Reuse Research", presented at Proceeding of the Third Annual Workshop: Methods and Tools for Reuse, Syracuse, NY 1990

 

Freeman

Freeman P., "Reusable software engineering a statement of long-range research objectives," Department of Information and Computer Science, University of California at Irvine, Irvine, CA, Technical Report 159, 1980

 

Gamma

Gamma E., Helm R., Johnson R, Vlissides J., "Design Patterns – Elements of Reusable Object-Oriented Software", Addison-Wesley Professional Computing Series, 1994

 

Lanergan

Lanergan Robert G. and Grasso Charles A., "Software Engineering With Reusable Designs and Code", IEEE Transactions on Software Engineering, Vol. SE-10, #5, September, 1984

 

Lewis

Lewis J. A, Henry S. M., Kafura D. G. and Schulman R. S., "On the relationship between the object-oriented paradigm and software reuse: An empirical investigation," Journal of Object –Oriented Programming, vol. 5, no. 4, pp 35-41, July-Aug 1992

 

 

 

Lim94

Lim Wayne C., "Effects of Reuse on Quality, Productivity, and Economics", IEEE Software; 11, 5, 23-30; 1994

 

Lim96

Lim W. C, "Reuse Economics: A Comparison of Seventeen Models and Directions for Future Research", 4th International Conference on Software Reuse, April 23-26, 1996

 

Lim96b

Lim W. C, "Legal and Contractual Issues in Software Reuse", 4th International Conference on Software Reuse, April 23-26, 1996

 

Lim98

Lim, Wayne C., "Managing Software Reuse", Prentice Hall, 1998

 

NATO

"Nato Standard for Management of Reusable Software Component Library", Vol. 2

 

Pius

Message posted in comp.software-eng news group. Available from DejaNews at:

http://x12.dejanews.com/getdoc.xp?AN=414668158&CONTEXT=912572398.1694236712&hitnum=4

 

Reifer

Reifer, Donald J., "Practical Software Reuse", Wiley Computer Publishing, 1997