\markboth{Abdel-Hamid}{Abdel-Hamid}
%%%%%% TEMPLATE.TEX for WISR'93, version 1.2, 4/22/93 %%%%%%
%%%%%% Updated by Jeffrey S. Poulin, May 1993         %%%%%%
 
\documentstyle[11pt]{article}
 
% Standard Spacing for WISR - do not change!!
%
% Page dimensions.
%
\oddsidemargin  0.26in % Leave enough for binding margin
\evensidemargin 0.26in %
\topmargin      -1.00in % (adjusted for printer bias)
\headheight      .00in  % (no headers)
\headsep         .75in  % (top margin + headers + skip)
\footheight     12.0pt  % ??? (seems to work ok)
\footskip       25.0pt  % ??? ( "   "  )
\textheight     9.425in % (instructions: 9 1/8" min, 9 7/16" max)
\textwidth      6.5in   %
%
% Paragraph changes.
%
 
\markboth{Abdel-Hamid}{Abdel-Hamid}
\pagestyle{myheadings}

\parindent=0pt
\parskip=10pt
%
% can make the title box even smaller
%
\def\@maketitle{\vbox to 2.6in{\hsize\textwidth
    \linewidth\hsize \vfil \centering
    {\large \@title \par}
    \vskip 2em
    {\normalsize
    \begin{tabular}[t]{c}\@author
    \end{tabular}\par}
    \vfil}
}
 
\begin{document}
 
\bibliographystyle{ieeetr}
 
\title{Modeling The Dynamics of Software Reuse: An Integrating System Dynamics
Perspective}

\author{Tarek K. Abdel-Hamid\\
\\
Associate Professor of Information Systems\\
Naval Postgraduate School\\
Code AS/AH\\
Monterey, CA 93943\\
Tel: (408) 656-2686\\
Email: 3991p@vm1.cc.nps.navy.mil\\
Fax: (408) 656-3407\\
}
\date{}
 
\maketitle
 
\begin{abstract}
An integrating System Dynamics approach for modeling software reuse is
proposed. The approach has three unique features. First, it integrates the
multiple functions of the software reuse process, including both the
managerial activities (e.g., setting reuse production/consumption goals,
allocating resources, staffing, etc.) as well as the technical activities
(reusable component identification, generation, consumption, etc.).
Second, the model uses the feedback principles of system dynamics as a
conceptual lens to view and analyze the complex web of dynamically
interacting variables. Third, computer simulation is utilized to handle
the dynamic complexity of the model and to conduct controlled
experimentation.

The model serves as a "learning laboratory" to study the software
reuse phenomenon and gain a better understanding of the interactions and
trade-offs that characterize reuse policy decisions, as well as serve as a
management support tool to evaluate/design organizational reuse policies.

 
\vspace{0.2in}
\noindent
{\bf Keywords:} reuse modeling, reuse management, system dynamics
 
\vspace{0.2in}
\noindent
{\bf Workshop Goals:} Advancing state of the art in reuse dynamic modeling;
Learning.
 
\vspace{0.2in}
\noindent
{\bf Working Groups:} Reuse management, organization, and economics; reuse
process models; education.
 
\end{abstract}
 
\newpage
 
\section{Background}

My work on modeling the dynamics of software reuse is an extension of
an ongoing research program to study, gain insight into, and make
predictions about the dynamics of the entire software development process.
This is being accomplished through the development of dynamic process
models using the techniques of System Dynamics. System Dynamics is the
application of feedback control systems principles to model, analyze, and
understand the dynamic behavior of complex systems. Its origins trace back
to the pioneering work of Jay W. Forrester \cite{forrester61}.

To-date, the focus of my work has been on the study of software
project management \cite{abdel91,abdel89b}.
For example, my colleagues and I have modelled/investigated 
the dynamics of software project staffing \cite{abdel89a};
cost/schedule estimation \cite{abdel93}; quality assurance
economics \cite{abdel89a}; 
and organizational learning \cite{abdel90}.

The current research effort extends the application of the System
Dynamics technique to model the dynamics of software reuse. In contrast to
our project management models which focus on the individual project
lifecycle, the scope here is broadened to capture the operations of a
software development organization as multiple software products are
developed, placed into operation, and maintained over a long period of
time.

 
\section{Position}
 
Experience from working with managers in many environments indicates
that they are generally able to specify the detailed relationships and
interactions among managerial policies, resources, and performance.
However, managers are usually unable to determine accurately the dynamic
behavior implied by these relationships. Human intuition, studies have
shown, is ill-suited for calculating the consequences of a large number of
interactions over time, especially when cause and effect are distant in
time and space \cite{richardson81}.
This can, and often does, lead
to the adoption of policies that prove dysfunctional in the long run.

Thus, one motivation for developing computer-based models of complex
socio-technical systems (such as software reuse), is to have a capability
to reliably and efficiently trace through time the implications of a
complex web of system interactions. By utilizing computer simulation
techniques we, thus, combine, the strengths of the software manager with
the strengths of the computer. The manager aids by specifying
relationships within his/her software reuse environment (e.g., effect of
staff experience on reuse rate), the computer then calculates the
long-term dynamic consequences of these relationships (e.g., on
productivity, quality, etc.).

A second reason for constructing computer-based models, is for
experimentation. Engineers turn to laboratory experiments to learn about
the behavior of complex engineering systems. Our social systems are far
more complex and harder to understand than our technological systems. Why,
then, do we not use the same approach of making computer models of social
systems, such as a software development organization, and conduct
laboratory experiments on these models?

\begin{quote}
(quote) The answer is often stated that our knowledge of social systems
is insufficient for constructing useful models. But what
justification can there be for the apparent assumption that we do
not know enough to construct models but believe we do know enough
to directly design new social systems? ... I am suggesting that
we now do know enough to make useful models of social systems.
Conversely, we do not know enough to design the most effective
social systems directly without first going through a
model-building experimental phase \cite{forrester71}.
\end{quote}

Indeed, over the last three decades the work of Forrester and others
in the System Dynamics field demonstrated both the feasibility and utility
of constructing computer-based models to study complex social systems.
More recently, the technique has been successfully applied to the software
project domain \cite{abdel91}. Using these tools, the
software reuse manager, like the engineer, can have a laboratory in which
he/she can simulate organizational behavior and learn quickly and at low
cost the answers that would seldom be obtainable from trials on real
projects.

Characteristic features of proposed modeling approach. The proposed
approach has three unique features. First, the model integrates the
multiple functions of the software reuse process, including both the
managerial functions (e.g., setting reuse production/consumption goals,
allocating resources, staffing, etc.) as well as the technical activities
of reuse (e.g., reusable component identification, generation,
consumption, etc.). This contrasts with most of the research to-date on
software reuse which tended to emphasize one aspect or problem area in
isolation e.g., domain analysis, organizational rewards, identification/
qualification of reusable components, economics, etc. Clearly such
micro-oriented research does make a useful contribution to our
understanding of the software reuse phenomenon. However, before we can say
that we have a complete understanding, it is necessary to show that our
knowledge of the individual components can be put together in a total
system i.e., an organization can be synthesized, which allows for the
interactions of all the relevant variables and of all the structural
components \cite{griss92}.

\begin{quote}
There is a need to learn what the relationships are between the
technical and non-technical aspects, how one influences the
other, and what makes a reuse program a success or a failure.
Reuse should be seen as a whole, as an integrated system and
therefore addressed as such. To see reuse as a separate and
independent collection of tools, techniques, or methods will only
perpetuate the current status \cite{prieto91}.
\end{quote}

The second unique feature of the proposed modeling approach is the use
of the feedback principles of system dynamics to structure and clarify the
complex set of dynamically interacting variables. Feedback is the process
in which an action taken by a person or thing will eventually affect that
person or thing. A feedback loop is the closed sequence of causes and
effects, from an initial cause, its series of ripples through an entire
chain of causes and effects, until the initial cause eventually becomes an
indirect effect of itself. Circular feedback processes are universal in
social systems, the software engineering domain being no exception
\cite{abdel91}.

The third feature, is the reliance on computer simulation to handle
the dynamic complexity of such a model, and to serve as a "laboratory" for
controlled experimentation.

\begin{quote}
By using a (simulation) model of a complex system, more can be
learned about internal interactions than would ever be possible
through manipulation of the real system. Internally, the model
provides complete control of the system's organizational
structure, its policies, and its sensitivities to various events
\cite{forrester61}.
\end{quote}

Overview of model structure and behavior. The model is quite
detailed, containing more than 200 difference equations. Providing a full
description of the model's structure is, thus, beyond the scope of this
paper. Instead, I provide an overview of the model's five major sectors,
which are shown in Figure 1. At the top of the figure is the software
development and maintenance sector. The function of this sector is to
provide the overall organizational setting within which software reuse is
conducted and managed. It provides a characterization of the modeled
organization's unique software development environment (e.g., size of
project portfolio, average size of projects, type of software, maintenance
backlog, etc.).

Having defined a particular organizational setting, we can next model
the specific software reuse activities of interest. These are captured in
two highly interdependent sectors, a reusable components production
sector, and a reusable components consumption sector. The production
sector models the reusable components repository and the production
process that populates it. Factors affecting the reusable component
deposition rate include the degree of functional overlap between
applications in the domain, organizational reuse support, learning,
schedule pressures, perceived costs, and organizational goals. Two things
to note here. First, that most of these factors are dynamic, that is, they
can change over time. And second, the distinction between reality and the
perception of reality (e.g., as in "perceived" costs).

Similarly, the reuse consumption sector captures the reuse consumption
rate and its determinants. These include: perceived benefits of reuse,
repository size, reuse support, learning, overlap between applications,
and schedule pressure.

The software production, maintenance, and reuse activities are all
very much affected, and they themselves affect, the size and
characteristics of the organization's human resource. The human resource
sector captures the hiring and firing of staff, staff resource allocation,
training, turnover, etc.

Finally, the management policy sector provides the leverage points in
the model through which management can affect the software reuse process.
Possible managerial interventions include setting reuse goals, allocating
resources, organization, etc.

As suggested above, the software reuse process, like most
organizational systems, is characterized by a complex network of
interconnected feedback loops. As an example, two simple feedback loops
are depicted in Figure 2. The lower loop is a positive self-reinforcing
feedback loop. It shows how reuse can increase an organization's software
development productivity, which would increase the organization's software
delivery rate, this in turn can lead to the generation of more reusable
components, which ultimately can lead to even higher reuse rates.

This self-reinforcing loop is counterbalanced by the negative feedback
loop that is also shown. This second loop shows that a high level of reuse
would decrease the amount of new/original software components developed,
which, in turn, decreases the opportunities for developing reusable
components. A reduction in the production of reusable components could
then slow down or even decrease reuse.

Which of the two loops is dominant? To answer this question, we rely
on the simulation capability of the model. A simulation run is shown in
Figure 3. It shows that the two feedback loops of Figure 2 interact in a
non-linear fashion. A linear-type interaction would have led to constantly
increasing or decreasing reuse consumption and production rates (depending
on which of the two loops is more dominant). Instead, the simulation shows
that initially the positive feedback loop dominates. That is, in the early
phases of a software reuse effort, when the reuse rate is relatively low,
the reuse process "feeds on itself" to produce a period of accelerating
growth.

Eventually, however, growth slows down. In this simulation run, this
happens way before the organization reaches its theoretical reuse
potential (which in this particular case is 60% reuse). This results from
the balancing influence of the negative feedback loop. For as the reuse
rate goes higher and higher, the amount of new/original code being
developed decreases. This leads to smaller and smaller depositions to the
repository. And because older reusable components are continuously being
retired from the repository, the repository's size levels off, and even
starts decreasing slightly (as shown in the figure). As this happens, the
reuse rate follows.

Model Utility. The model will serve as a "learning laboratory" to
study the software reuse phenomenon and gain a better understanding of the
interactions and trade-offs that characterize reuse policy decisions, as
well as servs as a management support tool to evaluate/design
organizational reuse policies.

\section{Comparison}

Most of the research to-date on software reuse has tended to emphasize
one aspect or problem area e.g., domain analysis \cite{prieto90},
incentives \cite{tracz87,holibaugh93},
identification/qualification of reusable components \cite{caldiera91},
economics \cite{gaffney92}, etc. In this research
effort I build upon and extend what has been learned about the "pieces" of
the software reuse phenomenon to construct a holistic dynamic model of the
software reuse process that would allow us to study the complex set of
interactions and trade-offs that characterize the process.

\bibliography{abdel-hamid}
 
\section{Biography}

Dr. Tarek K. Abdel-Hamid is an Associate Professor of Information Systems
at the Naval Postgraduate School. Before joining NPS, he spent two and a
half years at the Stanford Research Institute. He is an advisor to NASA's
Jet Propulsion Laboratory (since 1988) on the development of
computer-based tools for software project management. He received the B.S.
degree in aeronautical engineering from Cairo University, Cairo, Egypt, in
1972, and the Ph.D. in management information systems from MIT in 1984.
His research interests focus on software project management, software
reuse, and system dynamics. He has authored or coauthored more than 30
papers on these topics and is the coauthor of Software Project Dynamics:
An Integrated Approach (Prentice-Hall, 1991). Dr. Abdel-Hamid is a member
of the ACM, SIM, IEEE-CS, and the System Dynamics Society.

 
 
\end{document}
