craig@comp.lancs.ac.uk (Craig Wylie) (07/01/87)
The recent discussion on software reuse has highlighted several points that I would like to take further. The question of what it is has been quite well covered - basically it is what ever you want it to be regarding the reuse of any part of the the software design process. I would like now to concentrate on one small area of reuse, reuse of Software Components, and more particularly the recovery of a component from some form of catalogue. Many of the replies, both to me personally, and to the net have cited 'Libraries', 'Browsers', and 'Intelligent Systems' as methods of retrieving software. I think that the analogy to lending libraries and online bibliographic retrieval is not a poor one but that it does require considerably more thought. Consider an example, in my research into distribution and software engineering I can go to a terminal, call up a bibliographic data base, and search on terms such as 'Reuse', 'Software Engineering', 'Distribution', 'Concurrency' etc.. The fact that these terms are very high level makes the retrieval process much easier, authors may well have included these terms in their keywords or abstracts. The provision of a synonyms dictionary will enhance the system. How can we provide similar power for components ? Obviously the keywords of a text can be mimiced by the provision of keywords from the authors of the software component (or the authors of the design work or any other object that might be reused), however there is no point in retrieving on whether the program contains a FOR loop. The automatic generation of keywords might also help, if not definitive it might certainly act as an aid. Yet how can we do this from languages such as Ada, it is far from proven that it is possible. One of the great powers of bibliographic retrieval is the fact that any paper retrieved will have a list of references, so if the paper found isn't exactly applicable then perhaps one of the referenced papers will be. How might this be mimiced? If we are to continue to use the library analogy then we must derive a way for talking about programs that is accessible to all. Remember even Math is not perfect - there can be more than one mathematical description of the same piece of software. Fuzzy logic and browsers have their place, but rather than citing them as answers we should be looking on them more as techniques once we know what we are dealing with. Sorry about the rather bitty nature of this article -- it has been a flow of thought article, the views are entirely my own. Craig -- UUCP: ...!seismo!mcvax!ukc!dcl-cs!craig| Post: University of Lancaster, DARPA: craig%lancs.comp@ucl-cs | Department of Computing, JANET: craig@uk.ac.lancs.comp | Bailrigg, Lancaster, UK. Phone: +44 524 65201 Ext. 4476 | LA1 4YR