From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=BAYES_00,INVALID_DATE, MSGID_SHORT autolearn=no autolearn_force=no version=3.4.4 Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!mcvax!ukc!stc!idec!camcon!ijd From: ijd@camcon.co.uk (Ian Dickinson) Newsgroups: comp.lang.ada,comp.lang.misc,comp.ai Subject: Re: Software Reuse -- do we really know what it is ? (long) Message-ID: <668@titan.camcon.co.uk> Date: Mon, 29-Jun-87 05:16:32 EDT Article-I.D.: titan.668 Posted: Mon Jun 29 05:16:32 1987 Date-Received: Sat, 4-Jul-87 17:46:44 EDT References: <4661@utah-cs.UUCP> Organization: Cambridge Consultants Ltd., Cambridge, UK Xref: mnetor comp.lang.ada:424 comp.lang.misc:496 comp.ai:617 List-Id: > Xref: camcon comp.lang.ada:166 comp.lang.misc:164 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 | >> To dance is to live, but the dance of life requires many strange steps << >> Disclaimer: All opinions expressed are my own (surprise!). <<