[comp.software-eng] reuse information

hobbs@tron.UUCP (Elizabeth T. Hobbs) (06/15/90)

	Some weeks ago...

	In addition to references, I also asked people for their opinions
and experiences with reuse.  A good number of people asked me for this
information (in addition to or instead of references).  Here is a summary 
of what I received.  I've taken the liberty of paraphrasing the replies.  
I hope I've kept the original meaning of the replies.  Please let me know 
if I have not!


   Experiences and Opinions:

	From David Thomas:

	   In Mr. Thomas's opinion, one important consideration for 
	   reusing code is whose code is going to be reused.  Simply 
	   being instructed to reuse code doesn't mean code reuse will 
	   or should happen.  It is better to rewrite poorly written 
	   code.


	From Brad Cox:

	   There is a large group of companies who provide software 
	   components for reuse at various levels, from chip-level objects 
	   (in Smalltalk and Objective-C) to environments of rack-level 
	   objects (ex: Word and Excel).  [Additional reuse articles were 
	   posted in May by Mr. Cox further discussing these components.]


	From Ralph Johnson:

	   He has been using object-oriented programming to build reusable
	   software at the University of Illinois for such domains as
	   operating systems, optimizing compilers, and user interfaces.  
	   Mr. Johnson believes that reusable software can be developed 
	   for almost any domain, the major problem is that reusable 
	   software is very difficult to write.  Just because code runs 
	   doesn't mean its reusable and the only way to discover its 
	   reusability is to try and reuse it.  In Mr. Johnson's opinion,
	   converting code into a good reuse library will take many 
	   man-years but the pay-off is worth it.


	From Mats Weber:

	   Reusable components like lists, AVL trees, large integer 
	   handling, matrix operations, linear programming, etc., have 
	   been successfully used in a number of experimental projects.
	   They were written as needed and made as general as possible 
	   (generality being more important than performance).  In Mr.
	   Weber's opinion, Booch's taxonomy was not found to be very 
	   useful particularly with respect to concurrency.  On another
	   note, one of the worst problems encountered, Mr Weber says, 
	   was with compiler quality, especially with the handling of 
	   generics.  Making reuse happen requires alot of experience 
	   with the language (at least with Ada), and it is hard to 
	   develop the component correctly the first time for all of 
	   its potential uses.


	From Pat (no last name given):

	   In Pat's opinion, software reuse on a large scale is currently
	   impossible.  Few people are thinking about how to capture
	   individuals' experience from crafting software to be able to 
	   reuse this experience.  Most reuse consists of cataloging/
	   storing/reusing functions/subroutines.  Until people can codify 
	   the models experts use to relate these functions/subroutines 
	   there will be no success in software reuse.

	A few excerpts from mail from someone who I will keep anonymous:

	   To support reusability, a system must provide a way of finding 
	   both exact and close matches.  Also, a means for making the 
	   component understandable must be given.  And, there must be a 
	   way to change a close match to an exact one.  

	   Some characteristics of easily reusable components: they have
	   a narrow scope and operate on simple or generic data.  They 
	   are well documented.  They are designed such that areas that
	   are likely to be modified are isolated or abstracted.

	   In some cases, the cost of reusing software will exceed the
	   cost of creating the software.  This may occur if information
	   about a reusable component is inaccurate, the programmer 
	   makes a poor choice when selecting a component to reuse, or 
	   the component is not as reusable as originally thought.

	   The most complex components give the biggest payoff but are 
	   more difficult to develop for reuse and to actually reuse; 
	   the simplest components are, naturally, easier to develop and
	   reuse, but provide the smallest payoff.  The fixed ceiling
	   on this payoff is less than 25%.

	   There are legal considerations as well.  Can software that is
	   developed for a contract (where the customer owns all of
	   software) be reused?  What about public domain software that
	   prohibits its use for gain?
	   

   More Information:

	From Pat:

	   The US Army is sponsoring a project called "Reusable Ada 
	   Packages for Information Systems Development" (RAPID).  
	   Information about the RAPID project can be obtained from 
	   Capt. Jack Rothrock at (703) 285-9043.

	   The Software Engineering Institute (SEI) has a project in
	   domain analysis that is examining the possibility of
	   applying this sort of analysis to the problem of identifying
	   reusable resources (not just code).  At some time an annotated
	   bibliography should be available.  (The contact given was
	   Sholom Cohen at (412) 268-5872.)

	   Dr. Richard S. D'Ippolito from SEI was reccommended as a good
	   person to talk to about a sound engineering basis for doing
	   software in general.

	   A company called American Management Systems has a set of 
	   models of MISs that are built in COBOL and are being used
	   successfully.  AMS can be reached at (703) 841-6000.


	From Cornelia Boldyreff:

	   Check out the ESPRIT project.  There is an article in the
	   November IEEE Software, 1989.

   More References:

	Here are some I missed the first time!

	From Kenny Rubin:

	   A paper of his entitled "Reuse in Software Engineering: An
	   Object-Oriented Perspective", Proceedings of the IEEE COMPCON,
	   Spring, 1990, San Francisco, CA.

	From Ralph Johnson:

	   A paper of his entitled "The Object is Reuse".

	From Steve Barry:

	   A "management-level" article in Nov. 15, 1989 Datamation, p. 
	   87 by Jeff Moad entitled "Cultural Barriers Slow Reusability".


   Some geographic locations of people replying to my original questions
and of people requesting references:

	Maryland, California, New York, Pennsylvania, Illinois, 
	Massachusetts, Ohio, Texas, Switzerland, Netherlands, Finland, 
	Australia, England, Canada, Sweden, Scotland, and Japan.

   I was amazed at the number of people interested in reuse and the wide
diversity in the planned use/definition/goals of "reuse".

   Sorry for the delay in summarizing this information.  I have, 
unfortunately, been busy with other things.

	Terri
	hobbs@tron.bwi.wec.com