
\markboth{Whittle}{Whittle}
\documentstyle[11pt]{article}
\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{Whittle}{Whittle}
\pagestyle{myheadings}


\parindent=0pt
\parskip=10pt
\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{alpha}
\bibliographystyle{ieeetr}

\title{Criteria for Evaluating Reuse Support in Education Courses}

\author{Ben R. Whittle\\
\\
Dept. of Computer Science,\
University of Wales, Aberystwyth,\\
Aberystwyth\\
Dyfed, Wales, UK\\
Tel: (+44) 970 622450\\
Fax: (+44) 970 622455\\
Email: brw@aber.ac.uk\\
\\
}
\date{}

\maketitle

\begin{abstract}

This position paper discusses the criteria that could be used to examine
support techniques for a reuse course based upon traditional lecturing
principles.
A prototype environment is described that is being developed to
support reuse courses at UW Aberystwyth. This development is part of the
larger TIPSE teaching environment project.

\vspace{0.2in}
\noindent
{\bf Keywords:} Component Reuse, Component Description,
Technology Transfer, Reuse Education.

\vspace{0.2in}
\noindent
{\bf Workshop Goals:} Attendance of the workshop will provide me with
the opportunity to ascertain and understand the state of the art in
reuse research and practice. I will be able to bring this knowledge
to bear on my own research, the projects I am involved in,
and report it to the UK through the British
Computer Society Special Interest Group on Reuse, who's newsletter I edit.
The workshop will give me a chance to explain and obtain feedback on
the ideas in my PhD thesis which has recently been submitted.

\vspace{0.2in}
\noindent
{\bf Working Groups:}  Design guidelines for reuse, Reuse and OO
methods, Tools and environments, Education.

\end{abstract}

\newpage

\section{Background}
The University of Wales, Aberystwyth (UWA)
has a long record of reuse research including the Alvey
funded project
ECLIPSE \cite{eclipse}, and the European Esprit funded project DRAGON
\cite{DRAGOON89}. Part of this work at UWA included that of Gautier,
Ratcliffe and Shah on component description languages \cite{ratcliffe,shah}.
UWA involvement in environments research has been particularly influential
in the formation of a teaching environment project, the TIPSE
\cite{tipse_paper,tipse_ada}.
The work in my PhD thesis combines these two fields, looking at
the design of an appropriate a component description language, which I
call the Component Interface DEscriptoR (CIDER), and
an associated toolset
that could be used as a way of introducing students to the ideas of reuse.
Rather than being an academics toy, this language, based on the 3C
model of the reusable component \cite{tracz,tracz_lileanna,latour},
provides an interesting insight
into the use of object-oriented software description for reuse.

In recent years, reuse education has become an important issue.
At the 1992 Reuse Education
Workshop, Mosemann \cite{mosemann} made the comment that reuse education
is:

\begin{quote}
one of our major hurd if reuse is to become common in the lifecycle
of our systems.
\end{quote}

In a similar way to reuse itself, two schools have developed;
these can be termed
`education with reuse'
and `education for reuse'. That is, should people be taught reuse as
part of the existing modules, or should reuse be taught separately.
A lack of agreement on
definitions and the turbulen of an evolving discipline only
add to this debate. The position presented in this paper
stems from ideas formulated during the development of a reuse technique
suitable for both education with reuse and education for reuse.

Rather than describe the development of the CIDER language and its
environment, a subject that will be covered in other academic publications,
this position paper will be used to outline:
\begin{itemize}
\item a set of pragmatic guidelines for choosing techniques to be used in
reuse education,
\item the reasons why I think that a component
description language and its associated environment
is particularly appropriate for this.
\end{itemize}

\section{Position}

\subsection{Capturing  Reuse Principles for Education}
\label{edu}

This section discusses the criteria that could be used to examine
support techniques for a reuse course based upon traditional lecturing
principles.
These criteria are summarised at the end of the
section.

In an educational environment specialising in the training
of software engineers, it is important to stress
the underlying principles of programming over and
above the practice and idiosyncrasy of one language or method.
These principles can be reinforced by practical use and experience
of example techniques. The example technique must
transparently embody the principles of the research.
It would also be an advantage if the technique was widely used in
practice and contained state of the art research work\footnote{
It is unlikely that a language that is widely used will contain
recent research.}.

In industrial use a reuse language that is used as part of a design
process or
method must have (Krueger \cite{krueger}) as small  a cognitive distance
as possible.
Cognitive distance is the amount of
intellectual effort that a software designer needs to understand a
software system
so that, for example, it may be taken from
one stage of development to the next. Cognitive distance is
correlated to the reusability of a component. The idea of
understandability can
also be applied to the description language itself, that is the language
should itself present little problem for the student to understand.

Having said that the principles of reuse are abstract,
it is necessary to demonstrate these principles through an exemplary
concrete medium, in this case the reuse language.
The area chosen to demonstrate a
technique should be complete
or a conceptually complete subset of a larger model.
It should build on existing techniques, for example
using the language with which the students are most familiar.
Students must be able to see that the technique is of use.
To satisfy this latter goal the technique should be appropriate for
use within small
projects. For example, a student should be able to reuse components
or groups of components
using the technique and follow this through to the implementation
languages with which he is familiar.


Languages are an area that the student/engineer
understands as most of their practical experience will
involve the use of programming languages that are used to `describe'
or implement algorithms.
One could argue that a language based component description
technique could be used to  represent software for reuse.  Indeed the
language used could be the same  as that used in practical programming
exercises, however it is widely agreed that,
as Cramer {\it et al.} state in \cite{cramer},
programming languages are
not suitable for component description for reuse.

In summary, the technique used to encourage reuse should:
\begin{itemize}
\item transparently embody the principles of reuse,
\item ideally be widely used in
practice and contain state of the art research work,
\item not be at the implementation level,
\item be easy to understand in itself,
\item present a complete, workable system,
\item relate to the students' other work, and thus demonstrate the
applicability
of reuse.
\end{itemize}

\subsection{A Component Description Language \& Environment
as an Example of Reuse}

In this section I describe a prototype environment that is being developed to
support reuse courses at UW Aberystwyth. This development is part of the
larger TIPSE teaching environment project.

The approach to reuse education proposed in this position statement is a
traditional lecture course backed up with practicals.
I envisage a lecture course covering the key principles of reuse at
different levels of the lifecycle, together with an explanation of the
tools and techniques that can be used to achieve this. This course would
be applicable to advanced undergraduates, postgraduates and could be collapsed
into a one week intensive course for industry.

The component description environment will be used as the practical
element of the course. This gives the course participant the chance
to use some of the tools and techniques, learning their use first hand.
The most important part of the environment is support for a
design level language for component description.
Using the design level ensures that the student does not immediately
think of the reusable component as source code, but as a representation
of an idea, and as a relationship between a set of other ideas.
Around this central reusable component representation and it's
associated editor, there are  reuse tools allowing the reuser to browse,
select and edit reusable components in textual and graphical form.
Finally there are a series of source code language editors and translation
programs allowing a mapping too and from the design level description.

Going back to the summary in the section above, we can see how the
component description and environment I have just described will provide
a support for reuse education.

\begin{itemize}
\item {\bf transparently embody the principles of reuse.}
The principles of reuse are perhaps  a matter of philosophical debate.
However
the language I have briefly introduced implements the 3C model of the
reusable component, and the environment contains tools which display the
key ideas of reuse, cataloging, browsing, selecting, and configuring
components.

\item {\bf ideally be widely used in
practice and contain state of the art research work.}
The environment is extensible and can therefore contain both those tools
and techniques widely used in practice together with recent research.

\item {\bf not be at the implementation level.}
�The component language is at the design level.

\item {\bf be easy to understand in itself.}
�The component description language has been designed to be
�orthogonal, with a relatively small set of constructs. Each
�language mechanism and
�construct has a well defined syntax and distinct semantic
�purpose.

\item {\bf present a complete, workable system.}
�The  combination of the component description language with the
�environment tools gives a complete solution. The small scale of
�the toolset insulates the student from the learning curve of
�larger industrial strength environments. The environment has a
�similar look and feel to the support environment that the
�students will have  used on other courses.

\item {\bf relate to the students' other work, and thus demonstrate the
applicability of reuse.}
      The provision of the mapping programs enable a student to
      transfer the component descriptions into implementation language
      scripts, in our case C++ and Ada. This translation enables the
      student to relate the design level reuse work to source code in
      languages that they know and understand. The ability to produce
      more than one language is an advantage, clearly demonstrating that
      reuse is not language specific, and enabling students to see the
      relationship between semantically similar mechanisms in different
      languages.

\end{itemize}

\section{Comparison}
In the sections above I have presented my ideas for the evaluation of
reuse course support material, and suggested one approach to this
problem, a component description language with a support environment.
In this section I will briefly discuss some of the other approaches to
reuse education. A direct technical comparison is not possible as the
approaches differ in the method of teaching. This comparison serves to
highlight the differences between the approaches, and the reason for my
position.

The failure to adopt a widespread practice of software reuse
must in part be attributed to the educators.
The education of tomorrows software engineers must tread a fine line
between educating for the tools and skills of today, and enlightening
and explaining the techniques of tomorrow.
Despite the large body of research into reuse and the large number of
projects in this area (see \cite[section 1.3]{hooper} for example),
there is  only evidence of a few entire course
modules devoted to reuse. For example, Gray  \cite{gray_reuse} talks
about a
practical course, using Ada for reuse based software
engineering. However  the majority of courses are for advanced students,
such as
the seminar module run by Bill Frakes at the Software Engineering Guild.
This is similar to the module
at the Norwegian Institute of Technology in
Trondheim \cite{gs-csee92},
resulting from their involvement in the  REBOOT project.
Another is a nine lecture course module at the University of Durham,
that concerns Software Design and Reuse
\footnote{This description of
Boldyreff's course is taken from
a news message in a summary to a request for reuse textbooks posted by
news@cybernet.cse.fau.edu on 12th February 1993}.
Other courses mention reuse, in passing,
but with little practice
of the techniques.
Whilst it is certain that the methods and models necessary to teach
reuse provide a wealth of available and acceptable material, see
\cite{vanscoy} for example,
reuse course modules do not exist.
This is due, in part, to the lack of industrial
acceptance of reuse, but must  surely be short sighted in educational
terms.

The position taken here is that a traditional approach with lecture
courses will be necessary in some institutions and for industry, where
the aim of the course is to relay information rather than encourage
debate. This lecture based approach will not be sufficient without a
supporting base of practical examples of reuse. These practical examples
can be offered as part of an integarted teaching environment, reducing
the students learning curve and encouraging reuse as a standard part of
the programming experience.

One of the key arguements that many people raise against reuse education
is that the reuse domain is not yet mature or well enough defined to
support this. I submit that at the
level of detailed design and component reuse, which has been developing
for over 25 years, the domain is mature enough
to support a the development of a course in the fundamentals of  reuse.


\bibliography{whittle}

\section{Biography}
{\bf Ben Whittle} graduated in Agricultural Economics from UW
Aberystwyth in
1989. He subsequently completed a masters in Computer Science and was
invited to proceed to research for a PhD in Software Engineering.
Foremost among Mr Whittle's research interests are component reuse and
reuse education, these subject provide
the basis of his recently submitted PhD thesis. He is also interested in
teaching support, and has been active in the development of the
Aberystwyth teaching environment, the TIPSE.
Mr Whittle is a member of the British
Computer Society Reuse special interest group committee and the editor
of the group newsletter.

\end{document}
