A Framework for Analysing Reuse Knowledge Muthu Ramachandran School of Computing, Creative Technologies and Engineering, Leeds Beckett University, Leeds LS6 3QS, UK Email: m.ramachandran@leedsbeckett.ac.uk Ian Sommerville Department of Computing Lancaster University Lancaster, LA1 4YR Abstract Practical reuse guidelines can play a major role in the production of potentially reusable components and can also provide designers with a means to assess and improve components reusability. Automating practical guidelines and some of the problems of development for reuse have not so far been addressed. There has been some work on reuse guidelines but they mostly emphasise general advice and often unrealisable. This paper concentrates on our approach for automating practical reuse guidelines and provides a framework for developing reusable components. 1. Introduction Component reuse has the potential to increase software productivity and quality if we can design for it. Reuse isn't only concerned with assembling a system from reusable components but is also concerned with identifying and developing such components. The earlier process is known as development with reuse and the later process is known as development for reuse which aims to produce potentially reusable components. The production of reusable components depends on automation and tool support. Our major problems are concerned with identifying reusability attributes and automating the process of development for reuse. Reuse guidelines can provide a basis for solving the problem of defining the characteristics of reusable components. However, existing reuse guidelines emphasise general advice and often ambiguous. Therefore we need to formulate better defined and automatable reuse guidelines. Practical reuse guidelines can represent design heuristics and rationales that are need to be considered when constructing reusable components. There have been previous studies on reuse guidelines (Hollingsworth [6]; Weide et al. [11]; Hooper and Chester [7]; Booch [1]; Gautier and Wallis [5]; Braun and Goodenough [2]; Dennis [3]), but these authors emphasise general advice including documentation and management issues; their guidelines are sometimes unrealisable and contradictory. We have formulated a set of practical and objective guidelines for the development of reusable components, and presented an alternative view to that of Booch's notion of reusable components (Sommerville and Ramachandran [10]; Ramachandran [9]). Our guidelines fall into two main categories: 1. Language-oriented reuse guidelines: Guidelines emphasising the effective use of language features. 2. Domain-oriented reuse guidelines. Guidelines emphasising design heuristics that are relevant to a specific application domain. In this paper, we concentrate on how practical guidelines can be automated for checking the characteristics of a reusable component. An important advantage of such practical guidelines is that we can assess components objectively and automatically. We use reuse guidelines to: • Identify the characteristics of a reusable component. • Assess, improve and analyse the reusability of a compoent against a set of guidelines. • Represent the application domain knowledge and language knowledge effectively in a tool set. Guidelines for automation are represented in two distinct ways: • Wherever possible, a rule-based representation is used so that it is clear when a guideline should be applied. We