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 / wisr6 / proceedings / ascii / henniger.ascii < prev    next >
Text File  |  1993-10-19  |  14KB  |  262 lines

  1.     Henniger - 1
  2.  
  3.     Henniger - 1
  4.  
  5.  
  6. From Software Reuse 
  7. to
  8. Example-Based Design
  9.  
  10.  
  11. Scott Henninger
  12.  
  13. Department of Computer Science & Engineering
  14. 115 Ferguson Hall, 880115
  15. University of Nebraska
  16. Lincoln, NE  68588-0115
  17. Tel: (402) 472-8394
  18. Email: scotth@cse.unl.edu
  19. Fax: (402) 472-7767
  20.  
  21.  
  22. Abstract
  23.  
  24. In this position paper, I address three separate issues.  The first has to do 
  25. with an overly restricted scope in current software reuse work.  Example-
  26. based design refers to a superset of software reuse in which components 
  27. are viewed as examples that can be used to explore previous design 
  28. solutions and provide a concrete context for learning system concepts, in 
  29. addition to providing material for software reuse.  The second issue is that 
  30. we need ways of better understanding the process of using examples as a 
  31. basis for design.  A preliminary process model is presented and ways of 
  32. incorporating example-based design into the design process are suggested.  
  33. Third, repositories and tools for relevant information is an important  
  34. element in example-based design.  Shortcomings of current software 
  35. retrieval systems are outlined, and solutions are briefly presented.
  36.  
  37.  
  38. Key Words: software reuse, reuse environments, software design, reuse 
  39. process retrieval, software repository.
  40.  
  41. Workshop Goals: Learn more about reuse in corporate settings, refine my 
  42. views on example-based design, increase the awareness and knowledge 
  43. base on cognitive barriers to reuse.
  44.  
  45. Working Groups:  tools and environments, reuse process models, domain 
  46. analysis/engineering, reuse and OO methods
  47.  
  48.  
  49. 1   Background
  50.  
  51. My involvement in the software reuse field has focused on the development of 
  52. tools to aid the process of software reuse.  My dissertation work involved the 
  53. construction and evaluation of a retrieval tool, named CodeFinder, that 
  54. combined a connectionist-based retrieval model with tools for iterative query 
  55. construction to support retrieval and exploration of repositories.  A series of 
  56. empirical studies was conducted on a repository consisting of over 1800 
  57. components.  This study revealed that the re-use of source code was only one 
  58. way that subjects made use of the repository.  Subjects also searched for 
  59. specific functionality to understand how existing features worked, extracted 
  60. design information that was used to create code from scratch, and located 
  61. parts where their code needed to fit into the existing system.  The components 
  62. therefore served as concrete examples that facilitated the development process.  
  63. These findings have led me to begin broadening the view of software reuse and 
  64. repository tools to include these example-based techniques, and explore other 
  65. ways in which examples can improve the design and development process.
  66.  
  67.  
  68. 2   Position
  69.  
  70. The traditional definition of software reuse has centered on the notion that a 
  71. software object is reused in a new system [5,6].  This makes sense, as the 
  72. objective is to use the results of previous design efforts, but it also takes an 
  73. overly restrictive view of how existing software artifacts can facilitate the design 
  74. process. Take, for example, a situation in which a designer needs a technique 
  75. that arranges a listing of e-mail messages so that replies to previous messages 
  76. are indented.  The designer uses a network news reader that performs just this 
  77. function for news messages.  Looking at the source code for the news reader, the 
  78. designer finds out how messages are arranged and indented, but the 
  79. environment for the news reader differs enough from the e-mail system that 
  80. the code cannot be re-used.  The designer goes back to the e-mail application 
  81. and designs the message arrangement facility from scratch, but with an 
  82. improved understanding of how it should be done.
  83.  
  84. Has the designer engaged in software reuse?  By most traditional definitions of 
  85. reuse, no.  Software reuse must re-use the software.  But if we reformulate the 
  86. question to ask whether the design process has been facilitated, then we must 
  87. believe that something good has happened.  The designer consulted an existing 
  88. example that transformed an ill-defined design task into a straightforward 
  89. coding task.  The traditional definition of software reuse cannot easily 
  90. accommodate activities that do not involve physical reuse.  I believe that 
  91. repositories of existing code can support a much wider range of activities. For 
  92. example, a working piece of code can be used to explore previous design 
  93. solutions and can provide a concrete context for learning system concepts in 
  94. addition to providing material for software reuse.  For these reasons, I assert 
  95. that the software reuse community needs to broaden its scope and pursue an 
  96. example-based design methodology for its research context.  As I define it, 
  97. example-based design is the process of using existing examples of design 
  98. artifacts to facilitate the design process, where the re-use of existing design 
  99. artifacts is one of many possibilities.
  100.  
  101. 2.1  Technical Issues for Example-Based Design
  102.  
  103. The current wisdom in software reuse research and practice has been leaning 
  104. toward the position that managerial issues are the dominant barrier to 
  105. software reuse.  This position asserts that current reuse methods and tools are 
  106. adequate.  It is my conviction that while managerial and incentive issues need 
  107. to be more fully explored, significant cognitive barriers to the reuse of code 
  108. remain largely unexplored and unresolved.  Current technical solutions to 
  109. these problems have not yet reached the critical point where the effort 
  110. involved in re-using code or other design artifacts (such as specifications) is 
  111. equal to or less than creating design artifacts from scratch.  Software reuse and 
  112. example-based design does not come for free, and we need to build a better 
  113. understanding of the costs of building and using repositories of code and other 
  114. design artifacts.
  115.  
  116. To understand these costs, we must first seek to develop models of example-
  117. based design.  Development of such models will facilitate an understanding of 
  118. how the design process is impacted when examples are an integral part of the 
  119. design process.  Figure 1 is a starting point toward this understanding [2].  It 
  120. identifies three cognitive processes involved 
  121.                                               
  122. Figure 1:  The Process of Using Examples in Design.
  123.  
  124. in example-based design and their relationships.  This diagram in not 
  125. intended as a comprehensive model of software development, but as a 
  126. stepping stone to the development of a model of example-based design.  While 
  127. more comprehensive models have been developed [4], this model provides a 
  128. flavor for the kinds of models needed to advance an understanding of the 
  129. example-based design process.
  130.  
  131. This figure also underscores the need for process models and development 
  132. methodologies that incorporate reuse and exploring the corporate repository 
  133. for ideas and code.  We need models of how existing systems can be used as a 
  134. basis for new systems, not just in terms of re-using existing source code, but in 
  135. terms of using and building on ideas and features of previous systems.  
  136. Designers need to see existing systems as their first option, and programming as 
  137. a last resort.  From a systems design standpoint, such a development 
  138. methodology would greatly benefit from information about how successful 
  139. different features in previous systems were.  Was the feature used in its 
  140. intended manner?  Did users report trouble using it?  Feedback of this kind is 
  141. an important ingredient for the evolution of better software systems.
  142.  
  143. 2.2  Retrieval Tools for Example-Based Design
  144.  
  145. Another limiting element of the software reuse perspective concerns restricting 
  146. library components to those meeting reusability certification requirements.  
  147. The certification process is an excellent means for developing quality reusable 
  148. code, but the costs of developing code and deigns that transcend the current 
  149. development project have proven to be quite high, perhaps prohibitively so.1  
  150. Intermediate levels are needed that involve lower costs, while delivering 
  151. relevant examples of working code, regardless of whether it meets reusability 
  152. standards.  Because example-based design is concerned more with using 
  153. examples to facilitates design, and not just re-using artifacts, the certification 
  154. constraint can be relaxed to allow levels of certification and non-certified 
  155. components into the repository, with appropriate labeling to inform designers 
  156. of a component's certification properties.
  157.  
  158. Lifting the ban on non-certified components places an extra burden on the 
  159. repository.  Finding relevant examples in large repositories requires 
  160. sophisticated retrieval tools.  Current techniques for retrieving software 
  161. components for reuse have failed in two important ways:  First, most 
  162. techniques have focused on elaborate retrieval models that require information 
  163. to be structured in sophisticated ways.  Second, retrieval tools have been based 
  164. on the assumption that users have a well-defined retrieval need and can easily 
  165. construct an appropriate query.
  166.  
  167. The construction of a repository and the method used to retrieve objects in it 
  168. are closely related.  For example, a retrieval system that uses hierarchical 
  169. categorization as its basis for retrieval must use a repository that is organized 
  170. hierarchically.  The costs and benefits of the requisite information structure 
  171. must be weighed carefully before choosing a retrieval method.  Choosing a 
  172. method that requires a highly structured repository will dramatically increase 
  173. the costs of building a repository.  Lower cost methods are needed that allow 
  174. repositories to be constructed at low cost and combined with intelligent 
  175. retrieval methods that can make use of low-structure repositories.
  176.  
  177. Retrieval needs for software designers span a continuum from well-defined 
  178. look-up ("what's the parameter structure for sort in Common Lisp?") to ill-
  179. defined design problem ("how would one go about designing an intelligent e-
  180. mail reply facility?") [4].  Well-defined problems can be easily solved with 
  181. current database and string matching technologies.  Finding relevant 
  182. information for ill-defined problems is as much a matter of supporting the 
  183. problem solving process as it is retrieval mechanics.  The retrieval process in 
  184. these cases is a learning process, where the users learn about the structure and 
  185. contents of the repository and refine their information need as they query and 
  186. browse the information space.  This indicates the crucial need for flexible 
  187. querying methods that allow the iterative refinement of queries.
  188.  
  189. To this end, I have developed a software retrieval tool named CodeFinder that 
  190. couples a retrieval model relying on very little a-priori structuring with a semi-
  191. intelligent tool for extracting components and key terms from existing source 
  192. code files [3,4].  Codefinder uses a connectionist-based retrieval method that 
  193. can induce relationships among repository objects without the need for 
  194. elaborate repository structuring.  Codefinder supports iterative refinement of 
  195. information needs through a technique called retrieval by reformulation [7], 
  196. which provides methods for incrementally defining queries and browsing the 
  197. repository.  Although empirical results have shown this method to be 
  198. adequate, CodeFinder also provides facilities that can help users incrementally 
  199. construct a more structured repository.  These re-structuring tools take effect 
  200. in the process of finding relevant information so that the resulting structures 
  201. evolve in the context of use as opposed to an arbitrary categorization created 
  202. by a repository administrator that may or may not reflect the needs of the 
  203. users.
  204.  
  205.  
  206. 3   Comparison
  207.  
  208. The concept of example-based design is complementary to much of the 
  209. software reuse literature, which has focused exclusively on re-using source code.  
  210. Some have begun to research how specifications and other design artifacts can 
  211. be re-used, but none have explored alternative ways in which a repository of 
  212. examples can be used to facilitate the design process.  This position paper also 
  213. augments current research in certifying reusable components [1] by 
  214. acknowledging that a continuum of certification can exist in an example-based 
  215. design strategy.
  216.  
  217. References
  218.  
  219. [1]    G. Caldira, V.R. Basili, "Identifying and Qualifying Reusable Software 
  220. Components", IEEE Computer, 24(2), Feb. 1991, pp. 61-70.
  221.  
  222. [2]    G. Fischer, S.R. Henninger, D.F. Redmiles, "Cognitive Tools for Locating and 
  223. Comprehending Software Objects for Reuse", Thirteenth International 
  224. Conference on Software Engineering (Austin, TX), ACM, IEEE, Los Alamitos, 
  225. CA, 1991, pp. 318-328.
  226.  
  227. [3]    S. Henninger, "Retrieving Software Objects in an Example-Based 
  228. Programming Environment", Proceedings SIGIR '91 (Chicago, IL), ACM, 1991, 
  229. pp. 251-260.
  230.  
  231. [4]    S.R. Henninger, Locating Relevant Examples for Example-Based Software 
  232. Design, Unpublished Ph.D. Dissertation, Department of Computer Science, 
  233. University of Colorado, 1993.
  234.  
  235. [5]    R. Prieto-Diaz, "Implementing Faceted Classification for Software Reuse", 
  236. Communications of the ACM, 35(5), May 1991.
  237.  
  238. [6]    T.A. Standish, "An Essay on Software Reuse", IEEE Transactions on Software 
  239. Engineering, SE-10(5), Sept. 1984, pp. 494-497.
  240.  
  241. [7]    M.D. Williams, "What Makes RABBIT Run?", International Journal of Man-
  242. Machine Studies, 21, 1984, pp. 333-352.
  243.  
  244.  
  245. 4   Biography
  246.  
  247. Scott Henninger is an Assistant Professor in the Department of Computer 
  248. Science and Engineering at the University of Nebraska.  He received a BSEE from 
  249. the University of Southern California in 1983.  The next five years were spent 
  250. as a development engineer working on flight control systems and mainframe 
  251. storage subsystems.  He then returned to academics, earning a Ph.D. in 
  252. Computer Science, with a certificate in Cognitive Science, from the University 
  253. of Colorado in May, 1993.  His dissertation was on retrieval tools for software 
  254. reuse repositories, and his current interests, all from a human factors 
  255. standpoint, are in software reuse environments, requirement and specification 
  256. technologies, design issues for multi-media systems, and cognitive, 
  257. organizational, and social issues in the design and development of software.
  258.  
  259. 1Some would claim that building any software system is prohibitively high, much 
  260. less building reusable components while building a system.
  261.  
  262.