home *** CD-ROM | disk | FTP | other *** search
/ ftp.umcs.maine.edu / 2015-02-07.ftp.umcs.maine.edu.tar / ftp.umcs.maine.edu / pub / WISR / wisr4 / proceedings / detex / frakes.detex < prev    next >
Text File  |  1992-04-29  |  7KB  |  157 lines

  1.  
  2.    Towards A Method of Design for Reuse  
  3.  
  4.    Bill Frakes  
  5.      
  6.    Software Productivity Consortium 
  7.    2214 Rock Hill Rd. 
  8.    Herndon, VA 22070 
  9.  
  10.  
  11.         Abstract
  12.  
  13.    An approach to derive reuse design principles is described.
  14.  
  15.    Keywords:  reuse design, reusable assets
  16.  
  17.  
  18.  
  19. 1  Introduction 
  20.  
  21. One trend in reuse has been a shift in interest from library issues to issues 
  22. involved in the acquisition of reusable assets. I recently surveyed engineers 
  23. and managers from some of the SPC member companies about which reuse issues 
  24. they felt were most crucial to their companies.  The results showed that 
  25. factors related to the creation of reusable assets--design, domain analysis, 
  26. and re-engineering--were perceived to be most important [2]. 
  27.  
  28. Based on this information, and my perception of problems in the reuse area,
  29. I am beginning a project to identify and test principles for the design of 
  30. reusable components. The approach is to identify and organize such 
  31. principles--the more abstract being applicable to more objects. The scope of 
  32. the study will be all lifecycle objects.  The study is based on the assumptions that (1) reuse design principles exist for many different languages and 
  33. environments, (2) that commonalities exist between the principles in those 
  34. environments, and (3) that more general principles can be abstracted from these lower level common principles. 
  35.  
  36.  
  37.  
  38. 2  Reusable Assets 
  39.  
  40. There are three ways to get reusable assets; you can buy them, you can build 
  41. them, or you can re-engineer them.  All of these are dependent on an 
  42. understanding of reuse design.  To build a reusable part, one must know the 
  43. characteristics that will make the part reusable. To re-engineer a part for 
  44. reuse, the part must be changed to have those characteristics.  To buy a 
  45. reusable part, we must know what characteristics to look for.
  46.  
  47. All three are dependent on an understanding of the domain involved. Domain 
  48. analysis is the process of understanding a domain and writing down information 
  49. about it in a somewhat formal way.  Certain reuse design decisions will depend 
  50. on the domain involved.
  51.  
  52. Reuse design principles will also be dependent on the type of the
  53. reusable object.  Test cases, C functions, and Ada packages are all
  54. potentially reusable objects, but some of the methods for making them 
  55. reusable will obviously be specific to their type. Object granularity,
  56. which is also a design discriminator, is subsumed by type.
  57.  
  58. Another factor that will affect reuse design is the environment the
  59. parts are used in. The way the parts are designed for reuse will be
  60. based on assumptions about the environment that they'll be used in. A
  61. good example of this is the Unix shell.  In designing a shell tool
  62. one relies on the standardized byte stream interface. If this interface
  63. didn't exist, the part would have to be designed differently.
  64.  
  65. Thus, one might use the following example faceted scheme to classify reuse 
  66. design principles.
  67.  
  68.   Domain       Type         Environment 
  69. ------------------------------------------ 
  70.   database     function     Unix 
  71.   statistics   package      C 
  72.                test case    Fortran 
  73.                requirement 
  74.  
  75.  
  76. Reuse is one of many design goals and must be traded off with some others.
  77. Reusability is usually inversely related to such design goals as efficiency of 
  78. size and execution.  Both Doug Lea and Mike Vilot have told me that 
  79. simultaneously achieving reusability and execution efficiency in their
  80. libraries is necessary and difficult, but doable.
  81.  
  82. Several researchers [5], [4], [1], [6], have formulated a general model of 
  83. design for reuse -- the 3C's (concept, content, context) model.  This model
  84. provides good insights into the reuse design problem, but does not provide 
  85. detailed design guidance for specific LCO's.  I'm not clear on how much this 
  86. model overlaps with the scheme I'm proposing.  I would like to discuss this 
  87. point at the workshop.
  88.  
  89.  
  90.  
  91. 3  Proposed Study 
  92.  
  93. Phase 1 of the study will be to identify and classify reuse design principles 
  94. into common groups.  The classification will probably be hierarchical with the 
  95. higher levels containing more general design principles and those at the lower 
  96. levels containing principles more specific to given objects.  A principle at 
  97. the highest level, for example, might be:
  98.  
  99.    "Identify and isolate the changeable parts of the reusable item"
  100.  
  101. A lower level principle, specific to a code function in a procedural language 
  102. might be:
  103.  
  104.    "Genericize the function by passing a pointer to the match routine."
  105.  
  106. The result of the first phase of the study will be a survey of existing
  107. reuse techniques and a preliminary classification of those techniques.
  108.  
  109. Phase 2 will be a test of the classification, and principles, on a set of
  110. reusable items.  The output will be a report describing the results of the 
  111. test. This phase would iterate until the investigators were confident of the 
  112. results.
  113.  
  114. Phase 3 would be the writing of a set of guidelines for reusable design.
  115. The information from this project could be used to augment various reuse
  116. products, such as style guides.  The information that would be gained
  117. would also provide attributes of reusable components  that would complement
  118. the reuse certification work that John Knight [3] is doing.  
  119.  
  120.  
  121.  
  122. REFERENCES
  123.  
  124. [1] Edwards, S. "An Approach for Constructing Reusable Software Components in 
  125.     Ada." Technical Report P-2378, Institute for Defense Analyses, 
  126.     September 1990.
  127.  
  128. [2] Frakes, W. "Software Reuse: Payoff and Transfer", Proceedings of AIAA
  129.     Computing in Aerospace 8, October, Baltimore, 1991, pp. 829-831.
  130.  
  131. [3] Knight, J. "Reuse as a technique for achieving high reliability",
  132.     Proceedings of the third annual workshop:  methods and tools for reuse.
  133.     New York State Center for Advanced Technology in Computer Applications and
  134.     Software Engineering, Syracuse University 1990, CASE center technical 
  135.     report no. 9014.
  136.  
  137. [4] Latour, L. "A methodology for the design of reuse engineered Ada 
  138.     components", Ada Letters, vol.11, no.3, pp.103-13, Spring 1991.
  139.  
  140. [5] Tracz-W.  "Modularization: approaches to reuse in Ada", J. Pascal Ada
  141.     Modula-2 (USA). vol 9, no 5, pp. 11-12, 14-25, Sept.-Oct. 1990.
  142.  
  143. [6] Weide, B.W., Ogden, W.F., and Zweben, S.H., "Reusable Software Components,"     chapter in Advances in Computers, M.C. Yovits, ed., 1991, to appear.
  144.  
  145.  
  146. 4  Biography 
  147.  
  148. Bill Frakes is Manager of the Software Reuse Empirical Studies Group at the 
  149. Software Productivity Consortium. Previously, he was a Distinguished Member of 
  150. the Technical Staff and supervisor of the Intelligent Systems Research Group 
  151. at AT&T Bell Laboratories.  He has taught courses on software engineering,
  152. and on knowledge based systems at Rutgers and Columbia. He has an M.S. from
  153. the University of Illinois and an M.S. and Ph.D. from Syracuse University.
  154. He is author of Software Engineering in the Unix/C Environment (Prentice-Hall, 
  155. 1991) and editor of Information Retrieval, Data Structures and Algorithms 
  156. (Prentice-Hall, 1992).
  157.