%%%%%% TEMPLATE.TEX for WISR'93, version 1.2.1, 10/3/93 %%%%%%
%%%%%% Updated by Jeffrey S. Poulin,  May 1993          %%%%%%
%%%%%% Updated by Larry J. Latour     and               %%%%%% 
%%%%%%            Steve L. Philbrick, October 1993      %%%%%%
%%%%%%
\markboth{Levine}{Levine}
\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   %

\markboth{Levine}{Levine}
\pagestyle{myheadings}
%
% Paragraph changes.
%
\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{Integrating Reuse Into A Software Curriculum}
 
\author{Trudy Levine\\
\\
Fairleigh Dickinson University\\
1000 River Road\\
Teaneck, NJ 07666\\
Tel: (201) 692-2020 (2261)\\
Email: levine@sun490.fdu.edu\\
}
\date{}
\maketitle
\begin{abstract}

At the 5th International Conference on Software Engineering and Knowledge 
Engineering (SEKE'93), a workshop was held on June 18th for the purpose of 
studying the integration of reuse into software education.
We noted the dearth
of software reuse in software engineering programs and textbooks. Topics were 
established for further discussion and evaluation.

\vspace{0.2in}
\noindent
{\bf Keywords:} software reuse, software education, reuse education

\vspace{0.2in}
\noindent
{\bf Workshop Goals:} Learning; networking; advancing the state of software 
education and curriculum with software reuse
 
\vspace{0.2in}
\noindent
{\bf Working Groups:} reuse education, etc.
 
\end{abstract}
 

\newpage
\section{Background}

\subsection{Integrating Reuse Into A Software Curriculum}

Consider the following two major questions:

\begin{itemize}
\item
How can software reuse improve software education?  
\item
How can the study of software reuse be carried into industry?
\end{itemize}


Software reuse promises to aid in the production of reliable and cost efficient
systems.  As such, it should surely be part of a software curriculum.  Even 
more important, perhaps, is the fact that a standardized and controlled method 
of studying reuse, similar to the study of expert work in the social sciences, 
can be a valuable tool in computer science education.

For the purpose of software education, software reuse should include reuse of 
code, specifications, and various types of documentation.  In addition, 
students should be taught and encouraged to reference previously created 
systems and to create new software systems at least partially from previously 
developed components.  This material should be able to be integrated into 
existing software engineering and computer science curriculum without major 
changes. In addition, the construction of previously developed components 
should be available for study, to aid in the development of techniques and 
talent.

As agreed elsewhere in the conference, as software systems grow in size and 
complexity there are increasing occurrences of cost overruns, time overruns, 
and system failures.  Indeed, as more and more critical functions are 
controlled by software systems, the dangers of system failures are rather 
frightening.

Software reuse can aid system reliability in that integrated components will 
probably be better understood, crafted, and tested in the process of designing 
for reuse.  There also can be considerable cost and time savings if components 
can be easily located and integrated.  That could lead to greater reliability 
as well, because it is the time crunch that frequently causes developers to 
take short cuts in designing and testing.  Of course, we do not think reuse is 
a software bullet, nor do we think that it can be achieved easily.  We 
recognize the problems encountered, such as the cost of designing for reuse 
and the difficulties (technical, legal, social, etc.) in using components 
developed outside of an organization.

Designing for reuse as well as designing with reuse pose particular problems in
academia. Teachers do not wish to put their efforts into learning a technology 
that is not yet mature and indeed that may not even be successful. Particularly
in the field of computer science, there is so much new technology to learn 
daily that teachers must ration their time carefully.  Methodologies and 
standardized taxonomies, templates, and metrics have not yet been developed.  
Appropriate textbooks and other course materials have not yet been produced. 
The allocation of course time in academia, via semesters of a few months, may 
not be appropriate for learning reuse material. And, of course, grading in
academia has traditionally penalized students that ``reuse'' others' work.  
Unlike the social sciences, where students are expected to research good 
quality work (evaluated by experts and maintained in a library) and integrate 
this work into their own with appropriate footnotes, computer science courses 
usually have students write code ``from scratch.''  There are exceptions with C 
and FORTRAN libraries, for example, but the level of reuse is small and lightly
documented.

\section{Position}

In trying to answer the two proposed questions, our group made the following 
suggestions:
\begin{enumerate}\itemsep -3pt
  \item Each University should establish a component library. Standards are 
  emerging for library interoperability, and these should be adhered to where 
  possible.(See rig@ballston.paramax.com and ajpo.sei.cmu.edu.) Components of 
  the library can be code, documents, specifications, etc., but standards must 
  be defined and maintained in a specified form.  For example, module headers 
  (that include performance characteristics as well as other information 
  specified by RIG) and test suites of a standard form must be included with 
  all code.  Multiple implementations of the same specification are very 
  valuable, and these should be easy to obtain if a course includes assignments
  of components according to specifications, and the professor stores the 
  specification with a few of the best projects (each with possibly different 
  performance charcteristics).

  A component that is inserted into the library must be approved by a professor
  of an appropriate department and also by a librarian, whose job it is to 
  guarantee that all components satisfy the prescribed format. Components can 
  only be accessed for reading (perhaps code stored in source form, so that 
  anyone can copy it, compile it, and execute it, but not change it in the 
  library).  The librarian only will control changes (possibly deletion) if 
  errors are detected.

  Beginner courses in computer science and software engineering should require 
  the use and documentation of components from this library into assigned 
  projects. New systems would therefore have modules of others that clearly 
  indicate where, when and by whom they were developed.  Later courses should 
  more thoroughly integrate larger and more varied components.

  A black box approach~\cite{Tra90} is very valuable in industry where it is 
  comparable to engineering pluggable components. Program instantiations and 
  transformations have equal importance, similar to the customization of 
  hardware components.  Perhaps, however, a white box approach is most 
  applicable to an educational curriculum spread over a few years.  Thus, a 
  white box approach allows viewing of portions of code, documentations, etc. 
  that illustrate standards and techniques for users to follow and can be 
  incorporated into new systems as long as they are appropriately referenced. 
  This process is similar to the analysis and integration of the research of an
  English major and has some relevance to art and music education.

  \item Encourage faculty development in reuse technology.  One of the ways 
  might be to maintain among ourselves a list of companies that want this 
  technology, so that we can publicize this information to our colleagues.

  \item Encourage development and use of methodologies that support reuse.  
  Object oriented programming does appear to be such a technology, although we 
  recognize that it neither does the whole job, nor comes without a cost. 
  Similar comments can be made about Ada programming.

  \item Develop appropriate software projects, possibly covering several 
  semesters.

  \item Use existing libraries such as ASSET, CARDS, AJPO.

  \item Maintain a list of references to support reuse education in particular.
  Below are references~\cite{Tra90,RETW1,SKS92,BP89a,BP89b} requested by 
  members of the group.  The references where chosen for the specific purpose 
  of reuse education, not for reuse information in general.
\end{enumerate}

\newpage
\subsection{Group Members}
\begin{description}\itemsep -3pt
  \item[Trudy Levine] - FDU 1000 River Road, Teaneck, NJ 07666, 
  levine@sun490.fdu.edu
  \item[Zeb Awan] - Bell Northern Research, Canada 
  \item[Armin Beer] - Siemens Vienna, Austria 
  \item[Frank Coyle] - SMU, coyle@seas.smu.edu
  \item[Jofo Franco] - Telebras Rtd Center, Brazil, franco@cpqd.ansp.br
  \item[Thomas Hemmann] - GMD, hemmann@gmd.de
  \item[Masayufi Ishifawa] - Hitachi Software Engineering Co., Ltd.  
  ishi@eecs.umich.edu
  \item[Trent Jaeger] - Michigan U., jaegert@eecs.umich.edu
  \item[Mike Laux] - Michigan State University, laux@cps.msu.edu
  \item[Toshimi Minoura] - Oregon State University, minoura@cs.orst.edu
  \item[Jeffrey Poulin] - IBM FSC, poulinj@vnet.ibm.com
  \item[David Russell] - Penn State Great Valley, rzn@psugv.psu.edu
  \item[Angi Voss]- GMD, angi.voss@gmd.de
  \item[David Wan] - National Center for High Performance Computing,
  c00dcw00@nchc.edu.tw
\end{description}
%\section{Comparison}
\bibliography{levine}
\section{Biography}

{\bf Trudy Levine} has been writing a column for Ada Letters called Reusable 
Software Components since 1990, which has been reprinted in Crosstalk and 
maintained in several electronic bulletin boards.  She is an Associate 
Professor of Computer Science at Fairleigh Dickinson and a corresponding member
of RIG. She has been trying to augment reuse material in her software 
engineering courses over the last few years and has taught a special topics 
seminar course on software reuse. Her research interests also include conflict 
control and the Ada programming language.
 
\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
