[comp.lang.ada] software re-use -- do we really know what it is

ijd@camcon.co.uk (Ian Dickinson) (07/10/87)

[Sorry if you are seeing this article for the second time.  Our modem blew up
 just after I posted,  so I don't know whether or not it got out.  We have
 now been off the air for ~ 1 week,  so if (a) the article was posted,  and (b)
 there were any responses,  would some kind soul mail them to me?

 Thanks in advance and apologies once more,
 Ian.
]

Clearly from foregoing discussions,  software re-use at the code level does
present significant problems:
	* there is a trade-off - sometimes quite severe - between generality
	  and efficiency

	* we can never be quite sure of the routine doing exactly what we need
	  in a given circumstance

	* management of libraries is difficult, as is retrieval

	* routines in one language are not portable (without effort) to
	  another.

So what's the _real_ problem?  I think that we are trying to define re-use at 
too *low* a level.  What we really want to re-use are ideas - algorithms,
standard ways of performing defined operations, etc,.

Hence a solution:  we somehow encode _abstractions_ of the ideas and place
these in the library - in a form which also supplies some knowledge about the
way that they should be used.  The corollary of this is that we need more
sophisticated methods for using the specifications in the library.  
(Semi)-automated transformations seem to be the answer to me.

Thus we start out with a correct (or so assumed) specification,  apply
correctness-preserving transormation operators,  and so end up with a correct
implementation in our native tongue (Ada, Prolog etc, as you will).  The
transformations can be interactively guided to fit the precise circumstance.

The advantages are:
	* library specifications are easier to understand,  hence easier to
	  maintain

	* the library can contain a smaller number of more general routines,
	  since essentially similar operations can be encoded as one library
	  entry

	* the additional knowledge can be used to provide an intelligent
	  interface for browsing and retrieval

	* routines can be transformed to many different languages.


I see this field as essentially a synthesis between AI and software 
engineering,  and potentially of benefit to both.

[Credit]  I originally got this idea from my supervisor: Dr Colin Runciman
@ University of York.  I have been tinkering around with it in my spare time
a bit since then.  Who knows,  maybe one day I'll get to work on it
seriously (dream on :-) !!).
-- 
Ian Dickinson    Cambridge Consultants Ltd, AI group     (0223) 358855 [U.K.]
uucp:    ...!seismo!mcvax!ukc!camcon!ijd                 or:  ijd%camcon.uucp
>>     Disclaimer:  All opinions expressed are my own (surprise!).         <<
>> To dance is to live,  but the dance of life requires many strange steps <<