\documentstyle[12pt]{article}
\topmargin=-0.25in
\textheight=8.75in
\oddsidemargin=-0.25in
\evensidemargin=-0.25in
\textwidth=7.0in
 
\begin{document}
\title{The IBM Reuse Program}
\author{Jesus R. Tirso\\
\\
IBM Corporation\\
Reuse Technology Support Center\\
P. O. Box 950, Dept. A80D, Blg. 996\\
Poughkeepsie, NY 12602}

\date{}
\maketitle
 
\begin{abstract}
This paper briefly describes IBM's reuse program.  It covers the
support structure put in place to facilitate integration of reuse into the
development process, the areas of focus, and results to date.

\vspace{0.3in}
\noindent
{\bf Keywords:} reuse, reuse implementation, information reuse,
reuse support
\end{abstract}
 
 
\section{Introduction}
Software reuse is not new, as a matter of fact, it's been practiced in one way
or another by every programmer in every company.  What is new in software
reuse is the recognition that it must be planned for and properly controlled
in order to achieve the promised results of improved quality and productivity.
 
The IBM reuse program aims at institutionalizing reuse across IBM by
integrating mature reuse technologies and processes into IBM's culture.  This
paper discusses what is being done to accomplish this, how it is being done,
and the results to date.
 
\section{The Corporate Reuse Council}
The Corporate Reuse Council (CRC) is made up of representatives from every
line of business within IBM as well as most major sites.  The CRC has gone
through several iterations since it was created in 1986.  In 1989, it was made
up of approximately ten members, all interested in making reuse successful.
It was at this time that the CRC realized that it needed to make information
about reuse available to the software development community at large.  The CRC
developed a ``Reuse Starter Kit'' that grouped together information on
reuse from the general literature as well as providing guidance on specific
issues within IBM.
 
The next step taken by the CRC was to develop a strategy to guide the reuse
effort and to have this strategy accepted and funded by management.  The
strategy was put in place and a structure developed to implement it.  Three
goals were identified:
\begin{enumerate}
\item Integration of mature reuse technology and processes into IBM's culture:
\begin{itemize}
\item Process
\item Education
\item Standards
\item Measurements
\item Tools
\item Parts
\end{itemize}
\item. Significant increases in productivity (delivered product
per unit of effort) and quality through the application of reuse technology,
resulting in reduced product development cycle.
\item Recognized leadership in reuse technology application.
\end{enumerate}
 
Along with the goals, success indicators were identified and the Reuse
Technology Support Center was formed to implement the strategy.
 
\section{The Reuse Technology Support Center}
 
The Reuse Technology Support Center (RTSC) is responsible for implementing
the CRC's reuse strategy.  It is an organization made up of experts from
throughout the corporation addressing specific issues related to software
reuse.  Among these are:
\begin{itemize}
\item Process and technology
\item Tools
\item Parts
\item Education
\item Standards and guidelines
\item Legal and data rights issues
\item Measurements
\item Information reuse
\item Marketing opportunities
\end{itemize}
 
Each of these areas is key to the success of reuse, however, the critical
ingredient is continuous management commitment.
 
Along with this central organization, each site puts in place a
``champion'' with specific reuse responsibilities.  It is this
``distributed'' organization that actually implements and supports the
reuse effort.  Some of these items are discussed below.
\subsection{Process and Technology}
 
The RTSC coordinates the effort of the ``champions''.  It is these
champions who actually drive reuse into the development process at the site.
There is no specific ``process'' for reuse, there is only a need to
focus on reuse during the standard development cycle.
 
The champions typically establish a support structure at the site that
makes reuse the path of least resistance for programmers.  This structure is
usually made up of the following ingredients: \cite{jrt}
\begin{itemize}
\item The champion
\item A site-wide and project specific reuse libraries
\item A review board to approve candidates for these libraries
\item Project reuse leaders with specific reuse responsibilities within
their project
\item Installation of ``corporate'' domain independent reuse libraries
\end{itemize}
 
The champion is also responsible for coordinating education, ensuring
installation of required tools, and establishing appropriate standards for the
libraries.
\subsection{Tools}
Although reuse can easily be done without tools, the need for a tool that
allows sharing reusable software is a benefit.  Within IBM, a tool exists that
allows sharing libraries across sites.  This tool provides a faceted taxonomy
for classifying the reusable parts.
 
The corporate libraries are available to all via this tool and individual
sites are encouraged to make their site libraries available to others via the
tool.  The idea here is to capture the expertise available at each site via
the reusable software library and make it available to others who may need
that expertise.  Currently, the libraries are primarily code and related
supporting information but several sites are moving toward other reusable
resources.
\subsection{Parts}
As mentioned above, parts are available from several sources:
\begin{itemize}
\item Corporate libraries provided by funded ``parts centers''.
\item Sites that build libraries for their domain.
\item Projects that build libraries for an even narrower domain.
\end{itemize}
 
These parts are all shared via the tool described above.  Standard
``quality'' definitions exist that all parts must adhere to.  There are
three levels defined:  ``as-is'', ``complete'', and
``certified''.  The major difference among the three levels is the
amount of information provided and, most importantly, the level of support
offered for the parts.  All corporate libraries are ``certified'' which
implies complete documentation and stringent support agreements.
\subsection{Education}
Education is a critical issue in software reuse.  Programmers have been in
school for a long period of time, always taught not to reuse.  It doesn't come
out as clearly as that, it is more along the lines of being punished for using
someone else's work!  The type of education that is required has to
focus on several audiences:
\begin{description}
\item[Managers] need to be educated on costs of reuse and expectations.
\item[Programmers] need to be educated on how to write reusable software,
how to change their
existing ``process'' to maximize reuse, how to exploit specific
languages for reuse, etc.
\item[Facilitators] that is the champions, project reuse leaders, etc.,
need to be educated on how to overcome inhibitors, how to identify reusable
software, how to identify reuse opportunities, etc.
\end{description}
 
Courses are currently available or under development to address these topics
and audiences.
\subsection{Standards and Guidelines}
There are many different types of standards and guidelines required to make
reuse successful.  Some have already been mentioned, e.g., quality
definitions.  The RTSC is addressing this item by developing standards and
guidelines that address a wide range of topics, including:
\begin{itemize}
\item Classification of components
\item Quality standards
\item Development guidelines
\item Testing Considerations
\item Measurements
\end{itemize}
\subsection{Measurements}
Measurements is another topic being addressed by the RTSC.  The need for ways
to measure reuse and its impact on quality and productivity is well known.
The group addressing measurements is moving toward establishing a common set
of definitions and metrics to be used throughout IBM.  Along with this effort,
tool requirements to automate data gathering and analysis are also being
developed.  The first suggested metric is called the Full Utility
Ratio \cite{jrt} which gives credit for reusing
others software as well as making your software reusable.
\subsection{Information Reuse}
An additional item being investigated by the RTSC is ``information
reuse'', i.e., not code.  The RTSC is looking at reuse of documentation,
designs, tests, plans, graphics, etc..
\section{Conclusion}
To date, there are close to thirty sites involved, at different levels of
success.  They are involved in both reusing parts from ``corporate''
libraries as well as building their own libraries and sharing them with other
sites.  One such site, Myers Corners Laboratory, has shown tremendous results
in a short period of time. \cite{jrt}
 
 
The CRC meets on a regular basis, typically twice a year.  During the
meetings, specific topics are covered and inhibitors to further progress are
identified.  The RTSC is charged with overcoming these inhibitors and ensuring
the continued progress toward achieving the CRC's goals.
 
\bibliographystyle{plain}
\bibliography{tirso}
 
\section{About the Author}
Jesus R. Tirso, IBM Corporation, Dept. A80D, Bldg.  996,
P. O. Box 950, Poughkeepsie, New York 12602, works in IBM's Reuse
Technology Support Center, focusing on process and technology transfer.
Previously, he was the reuse coordinator at Myers Corners Laboratory.  He has
held several positions in design and development in the MVS Operating System
Products organization at Myers Corners Laboratory.  He received his B. S.
degree in computer science from Rutgers University, New Brunswick, New Jersey,
in 1982.
\end{document}

