\markboth{Frakes}{Frakes}
%%%%%% 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{Frakes}{Frakes}
\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{A Graduate Course on Software Reuse,
Domain Analysis, and Re-engineering}

\author{William B. Frakes\\
\\
Virginia Tech\\
Computer Science Department\\
Falls Church, VA 22042\\
Tel: (703) 698-4712\\
Email: frakes@sarvis.cs.vt.edu\\
}
\date{}
 
\maketitle
 
\begin{abstract}
Reuse education has long been recognized as important for the successful 
implementation of reuse.  Yet reuse has traditionally not been taught in 
universities.
In a recent survey, we found that only 13\% of respondents said they had learned
about reuse in school \cite{frakes93}.
A recent workshop addressed this 
issue, and published preliminary suggestions for reuse education for various
populations (upper managers, line managers, technical staff, etc.),  
in different areas (industry, government, academia) \cite{lillie92}.

I participated in this workshop by leading the group on education for domain
analysis.  One of the points made by the group 
was that because of the immaturity of the reuse area, 
seminar courses were probably most appropriate for university
education in reuse.  In the Spring semester of 1993, I taught a graduate level
seminar course on software reuse, domain analysis, and re-engineering at
Virginia
Tech.  This position paper describes the motivation for the 
course, its content, and my
subjective evaluation of it.

\vspace{0.2in}
\noindent
{\bf Keywords:} reuse education, domain analysis, re-engineering.
 
\vspace{0.2in}
\noindent
{\bf Workshop Goals:} to explore the state of the art and 
state of the practice in reuse education, the breadth and
depth of the education "problem", and to compare this work with
similar efforts.
 
\vspace{0.2in}
\noindent
{\bf Working Groups:} reuse education, domain analysis. 
 
\end{abstract}
 
\newpage
 
\section{Position}
 
There were fourteen students in the course, all at the Masters
level.
Some were computer science students and some students in the M.I.S. program.
Like most students  at the Northern Virginia Campus of Virginia Tech, they
were
part time students employed by various companies in the area.  Most have many
years of practical experience in the computer industry.

The grading for the class was as follows: exercises 20\%,
midterm
40\%, class project 35\%,  class  participation 5\%.

I selected  the Hooper and Chester, {\em 
Software Reuse: Guidelines and Methods} text \cite{hooper91} 
for the course since
it
was the only book on reuse which was not just a collection of readings, and
the
book had been positively reviewed in ReNews.    I also assigned many papers
from
the reuse literature.  The students gave the book a low rating.  In
general, they found the assigned papers much more useful.

Below is the topic outline for the course.  I invited
several expert guest speakers.  This was very successful both as motivation for
the students and as a source of information.

\begin{itemize}
\item
Reuse Introduction
\item
Reuse Management \& Measurement
\item
Design for Reuse -- Guest Speaker: C. Braun
\item
Reuse Libraries -- Guest Speaker: C. Lillie
\item
Domain Analysis - Guest speakers: R. Prieto-Diaz, S. Wartik
\item
Generative Reuse
\item
Re-engineering
\item
Commercial Sources, Asset Quality
\end{itemize}

I assigned exercises for the above topics in an attempt to make the
abstract concepts more tangible.  Some of these were:

\begin{itemize}
\item
Reuse Design and Re-engineering:  Each student designed a reusable code
component, and a non-code component.  They were later 
asked to re-engineer these to make
them more reusable, and to design a quality assurance procedure for them.
Many
of the students found design for reuse difficult and confusing.
\item
Reuse Libraries:  Students were given accounts on the Asset and Adanet reuse
library systems and asked to write an evaluation of them.   They were also asked
to
create an enumerated, faceted, and free text classification of 20 Unix
tools.
Students did not find either Asset or Adanet very usable.  In general they
did very well on the classification tasks.
\item
Domain Analysis: Students were asked to do a domain analysis of sorting
routines, and of another domain they were familiar with.  
The lack of a complete
prescriptive method for domain analysis was a problem, as it is in practice.
\item
Reuse Measurement:  Each student was asked to use RL \cite{frakes90}
to measure reuse in C code.
\end{itemize}

Each student was required to do a project, write a report on
it, and make a 20 minute presentation to the class.   These projects covered
various areas of reuse.  Some of the more interesting were:

\begin{itemize}
\item
Design of a reusable code collection for imaging and information
retrieval.
\item
Re-engineering C into C++, a case study.
\item
A comparison of domain analysis methods (FODA and Prieto-Diaz).
\item
Legal Issues and reuse.
\item
Japanese software factories.
\end{itemize}

In summary, though much of the material in the area is still uncertain, in
general the course was successful.  The students gave 
the course an overall rating of
3.5 (3=good, 4=excellent).  They did not like the Hooper and Chester text.
There is a need for better texts in this 
area.   The guest speakers were considered
to be very effective.  Students without a strong background in compilers and
formal methods found some of the material 
on reuse design 
and generative methods
hard to follow.  The exercises and projects were helpful in making the abstract
material more tangible.


\bibliography{frakes}
 
\end{document}
