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 / wentzel.ascii < prev    next >
Text File  |  1993-10-19  |  18KB  |  285 lines

  1. Wentzel - 1
  2.  
  3.  
  4. Domain Specific Kits - A More Effective Approach
  5. to Software Reuse
  6.  
  7.  
  8. Kevin D. Wentzel
  9.  
  10. Hewlett Packard Laboratories
  11. 1501 Page Mill Road, Palo Alto, CA 94303
  12. Tel: 415-857-4018
  13. Email: wentzel@hpl.hp.com
  14. Fax: 415-857-8526
  15.  
  16.  
  17. Abstract
  18. Organizations just getting started in software reuse often view large, broad 
  19. coverage, corporate level reuse libraries as the goal of a reuse project.  We 
  20. believe that this is the wrong approach to software reuse and will often 
  21. lead to frustration and failure of pilot programs.  We are researching the 
  22. concept and application of "Domain Specific Kits", including software 
  23. components, application architectures, skeleton applications, 
  24. documentation, and tools for building applications in particular domains, as 
  25. a better route to success in reuse.
  26. Keywords: software reuse, reuse libraries, software kits, domain specific 
  27. kits
  28. Workshop Goals: Exchange ideas on how to design, build and use domain 
  29. specific kits.
  30. Working Groups: domain specific kits, domain engineering, kit 
  31. engineering, reuse technology, reuse process.
  32.  
  33. 1  Background
  34. Kevin Wentzel has been involved in software reuse research as part of Hewlett 
  35. Packard Labs' Software Reuse Department (SRD)  since the department's 
  36. research direction was proposed two years ago.  SRD is a multidisciplinary 
  37. group researching several facets of software reuse including both the technical 
  38. and organizational sides of the discipline.  Kevin manages the technical 
  39. research including experimentally prototyping domain specific kits, developing 
  40. supporting technology for domain specific kits (generation technology, 
  41. component integration technology)  and working with HP divisions to validate 
  42. and spread the results.  Prior to his work in HP Labs, Kevin was a software 
  43. developer in HP product divisions. His first experience in software reuse was in 
  44. 1980 as the developer of a software subsystem for indexed file access which was 
  45. developed for one product and reused in four other HP products.  Kevin helped 
  46. to organize WISR-5 (Palo Alto, CA, 1992), and participated in the domain 
  47. analysis working group.
  48. 2  Position
  49. Organizations just getting started in software reuse often view large, broad 
  50. coverage, corporate level reuse libraries as the goal of a reuse project.  We 
  51. believe that this is the wrong approach to software reuse and will often lead to 
  52. frustration and failure of pilot programs.  We are researching the concept and 
  53. application of "Domain Specific Kits", including software components, 
  54. application architectures, skeleton applications, documentation, and tools for 
  55. building applications in a particular domain, as a better route to success in 
  56. reuse.
  57. 2.1  Libraries Aren't Enough
  58. Many times when we present information about our program on software 
  59. reuse, we are asked "Where is your corporate software library"?  We are not 
  60. building one!  Our studies of several library efforts inside HP and stories we've 
  61. heard from others building libraries tell us that large centralized libraries are 
  62. not the best approach to institutionalizing software reuse in an organization.  
  63. There are strong standards issues with libraries.  These include interface 
  64. standards, environment standards (i.e.: other functions, globals, memory 
  65. management etc.), quality and testing standards, and evolution standards.  A 
  66. loosely run library will be unable to enforce standards on it's contents and will 
  67. run into version control issues among its suppliers and users.  A carefully run 
  68. library requires a large enough overhead that many organizations are unable 
  69. or unwilling to devote the resources needed to build the library and keep it 
  70. running.  Frequently, when money gets tight, library management is one of the 
  71. first areas to be trimmed.
  72. It is often difficult to find needed functionality in a large library.  Searches 
  73. (keyword, plain text etc.) may or may not be successful and often result in too 
  74. many matches.  Even when matches are found, careful evaluation must be 
  75. made to verify suitability.  If strict library standards are not in place, further  
  76. tests may be required to access component reliability, functionality,  and 
  77. performance.  This often results in the "it's easier to do it myself" attitude 
  78. among developers.
  79. Except for certain well known libraries (i.e.: standard C library etc.) library 
  80. searches are usually done during coding when a developer realizes that a 
  81. particular set of functionality may be needed.  This is the wrong phase of 
  82. development for taking advantage of reuse.  The most benefit will come from a 
  83. reuse lifecycle that starts at the design phase.  By the time components are 
  84. sought in coding phase, there will often be environmental constraints, in place 
  85. design decisions, and other decisions already made which cause otherwise 
  86. reusable components to be rejected or require rework before they can be used.
  87. Library systems are often built up from contributed components.  Sometimes 
  88. rewards are offered for contributions to the library.  Even when contributions 
  89. are controlled for documentation and quality, this frequently results in large 
  90. collections of "potentially" reusable subsystems but little incentive to actually 
  91. use what is there.
  92. Our first research in software reuse was based on the idea that if library 
  93. searching and browsing was easier, people would be more likely to use the 
  94. libraries.  We developed a hypertext system [3] for cataloging components in a 
  95. library.  Unfortunately, we found that library users within HP did not see a 
  96. system like ours as their biggest need in reuse technology.
  97. 2.2  Domain Specific Kits - A Better Approach
  98. The successful applications of reuse that we've seen in HP and in other 
  99. companies [4,7,8,11] have been situations where carefully constructed (or 
  100. reengineered) and tuned reusable components are used in a restricted domain 
  101. to construct similar applications either in a product line or as specials for 
  102. particular customers.  As a way to strengthen and institutionalize  this domain 
  103. specific reuse, we are developing a concept of "Domain Specific Kits" as a better 
  104. approach to providing a software reuse solution to application developers.
  105. Our vision of "Domain Specific Kits" is that "Applications will be constructed 
  106. from integrated, domain specific kits composed of: architectural frameworks, 
  107. software components, software "glue", kit use tools, domain specific languages, 
  108. generators, builders, generic applications, usage instructions, and tests."
  109. As the above vision states, a kit is much more than just a library of code 
  110. modules.  It should provide a significant portion of the needed components to 
  111. construct applications in the domain.  By providing an application 
  112. architecture and framework, it can define how applications will be designed.  
  113. Application builders can use generic (example) applications as a starting point 
  114. for building their applications thus beginning with and building on a working 
  115. application.  A kit enforces a "design with reuse" style to application 
  116. construction because when working from the kit, reuse is built in to 
  117. development from the start.
  118. 2.3  Kit Construction
  119. Kits are developed in via a two path process.  It is critically important that the 
  120. kit be appropriate for the application domain it will be applied to, but it is 
  121. just as important that it be appropriate for the application developers who 
  122. will use it to build software within the domain.  Therefore, we have developed 
  123. a kit building process in which includes both domain engineering and "kit 
  124. engineering".  
  125.                                                             
  126. Domain Engineering is analysis, design and construction of software 
  127. requirements in the domain with the goal of understanding, designing and 
  128. building domain specific components, a domain specific architecture, possibly 
  129. a domain specific language, an application framework, and generic 
  130. application(s).  It is a three stage process: 
  131. Domain Analysis [10] is the process of gathering, organizing, representing, and 
  132. clarifying the requirements for applications in the target domain of a given kit.  
  133. The needed representation is not merely a collection of requirements 
  134. representations for individual applications, but one that explicitly represents 
  135. the common features and the variations among the applications the target 
  136. domain.
  137. Domain Design is the process of developing representations of the architectures 
  138. and designs for all the applications in the target domain.  As in the case of 
  139. domain analysis, what is needed is a systematic way of representing both the 
  140. common features and the variations among the applications in question.
  141. Domain Implementation is the process of implementing those kit components 
  142. that will be incorporated and/or instantiated more or less directly into the 
  143. applications to be constructed with a given kit.
  144. Kit Engineering is analysis of kit user (application developer) needs and 
  145. preferred development style with the goal of developing appropriate tools, 
  146. generators, builders, development environment, documentation, etc. to 
  147. optimize developer comfort and productivity with the kit.  It also is a three 
  148. stage process:
  149. Kit Analysis is the process of developing the requirements for a given software 
  150. construction kit, based (among other things) on an explicit characterization of 
  151. the intended users of the kit.  It is important to distinguish between the 
  152. requirements for applications to be built using the kit (developed in domain 
  153. analysis) from the requirements for the kit itself (developed in kit analysis).
  154. Kit Design is the process of developing the architecture and design of a given 
  155. software construction kit.  One important aspect of kit design is designing for 
  156. openness.  While we aim for high levels of reuse in application development, 
  157. we don't expect to achieve 100% reuse in most applications, so kits must be 
  158. designed with the expectation that kit users will need to add (and integrate) 
  159. application specific functionality.
  160. Kit Implementation is the process of implementing a kit design to build a 
  161. particular software construction kit.
  162. An underlying collection of kit support technology will aid in kit construction.  
  163. This supporting technology could include more generic kits (such as user 
  164. interface kits or language (generator) kits), component interconnection 
  165. technology (such as a software bus [1], remote procedure call or distributed 
  166. object system),  and development support technology (such as source code 
  167. control and configuration management tools).
  168. While these steps can be described separately and each will have its own 
  169. deliverables, they usually are not done independently.  Domain analysis and 
  170. Kit analysis can be done with little interaction however the results of these 
  171. steps will drive the next steps in both paths.  For example if kit analysis finds 
  172. that developers will prefer a domain specific language as their application 
  173. building style, domain design must be oriented toward developing a language 
  174. and an application architecture which is appropriate for using a language, 
  175. while kit design will develop a language based kit architecture and find (or 
  176. develop) appropriate tools for a language based kit.  Kit and domain 
  177. implementation overlap significantly, however there will still be separate 
  178. tracks of work for example, kit implementation may be involved with 
  179. developing the kit use infrastructure (i.e.: configuration management etc.) 
  180. while domain implementation will develop domain functionality.
  181. We believe that if domain engineering and kit engineering are carefully defined 
  182. with the right resulting work products, it should be possible to retool a domain 
  183. by developing a different kit for it without repeating the domain analysis or all 
  184. of the domain design and implementation.  We should also be able to (re)use 
  185. the results of kit engineering for a particular domain in a kit for another 
  186. domain.
  187. 2.4  Kit Use
  188. Application developers will use a kit by performing an application needs 
  189. analysis for the particular application their users need.  Their analysis should 
  190. be in the context of the kit, rather than starting from zero ("design with 
  191. reuse").  Application construction will use the kit for overall application 
  192. architecture and all functionality which is covered by the kit.  Application 
  193. specific functionality will have to be designed and developed for user needs 
  194. not covered by the kit or for areas (i.e.: hardware interface) not planned to be 
  195. covered by the kit.  Developers may combine more than one kit to develop 
  196. applications thus common architectures and base technology is important.
  197. 2.5  Kit Support and Evolution
  198. A kit is not expected to be a static entity.  Kits must go through a continuous 
  199. evolution process to stay viable.  Feedback to kit developers will come from kit 
  200. users (application developers) and from application users (perhaps via 
  201. application developers).   Feedback should include information on both 
  202. domain needs (domain engineering track) and on developer style changes (kit 
  203. engineering track).  This feedback will allow the kit to be modified to keep it 
  204. up-to-date and usable over time.
  205. Kits need particular kinds of support.  Different sets of kit users may want 
  206. conflicting changes so decisions need to be made and moderated on how the 
  207. kit will evolve.  Version control and configuration management need to be 
  208. carefully overseen.
  209.  
  210. 3  Our Research
  211. Hewlett Packard Laboratories, Software Reuse Department (SRD) has developed 
  212. a research plan involving research in "Domain Specific Kits" and in the 
  213. environment in which they are developed and used, the "Flexible Software 
  214. Factory"  [5,6].  
  215. Our research in Domain Specific Kits is a two part project.  We are working in 
  216. an internal kit prototype effort to develop our knowledge and technology in 
  217. kit design, development and use, and on pilot projects with HP product 
  218. divisons.
  219. So far, we have developed a simple prototype kit for the domain of "To-Do List 
  220. Management".  This kit is composed of components for display of a To-Do list, 
  221. display and editing of To-Do items, storage of To-Do item, time calculations, 
  222. and user notification.  In most cases, the kit has a selection of components for 
  223. doing each task in different ways.  Some components are optional in the kit for 
  224. example if the application doesn't need notification of due items, the time and 
  225. notification components can be left out of the application.  These components 
  226. all communicate via a software bus.  The application is built by specifying in a 
  227. simple language (lisp expressions) the data layout of a To-Do item, default 
  228. values, and which components to include.  This language is run through a 
  229. generator to build configuration files, make files, and parameterization files for 
  230. the components and the overall application.  Our initial kit users found the 
  231. generative approach valuable.  They were able to get several applications built 
  232. very quickly.  Feedback stressed the importance of openness in a kit to allow 
  233. application builders to add their own components.  It also pointed out the 
  234. need for excellent documentation since the kit user is a level of abstraction 
  235. above normal programming environments and has more difficulty deciphering 
  236. problems. Finally, it reinforced the need for careful kit management since 
  237. changes to the early kit often made applications unbuildable.
  238. To keep this work based in real world problems, we are working with HP 
  239. divisional (product line) development teams to understand their issues and 
  240. problems in software reuse and domain specific kits.  We are now preparing to 
  241. apply our kit research in a divisional domain and context with the dual goals 
  242. of furthering the research and helping the divisional development team build 
  243. its own reuse environment.
  244.  
  245. References
  246. [1]    Brian Beach, Martin Griss, Kevin Wentzel, "Bus-Based Kits for Reusable 
  247. Software", In proceedings, 2nd Irvine Software Symposium, University of 
  248. California, Irvine, Irvine CA., March 1992.
  249. [2]    Gianluigi Caldiera and Victor R. Basili, "Identifying and Qualifying 
  250. Reusable Software Components", IEEE Computer, February 1991.
  251. [3]    [Michael Creech, Dennis Freeze, Martin Griss, "Using Hypertext in Selecting 
  252. Reusable Software Components", In proceedings, Hypertext'91, pages 25-
  253. 38.
  254. [4]    Michael A. Cusumano, Japan's Software Factories, Oxford University Press, 
  255. 1991
  256. [5]    Martin Griss, "A Multi-Disciplinary Software Reuse Research Program", In 
  257. proceedings, 5th Annual Workshop on Institutionalizing Software Reuse, 
  258. October, 1992.
  259. [6]    Martin Griss, "Software Reuse from Libraries to Factories", IBM Systems 
  260. Journal, To be published, Vol 32 no 4, November 1993.
  261. [7]    Guillermo Mayobre, " Using code reusability analysis to identify reusable 
  262. components for the software related to an application domain",  In 
  263. proceedings, 4th  Annual Workshop on Institutionalizing Software Reuse, 
  264. November, 1991
  265. [8]    Alvina Nishimoto, " Program of reuse at manufacturing productivity 
  266. division", In proceedings, 4th  Annual Workshop on Institutionalizing 
  267. Software Reuse, November, 1991
  268. [9]    Ruben Prieto-Diaz, "Making Software Reuse Work: An Implementation 
  269. Model", ACM SIGSOFT Software Engineering Notes, Vol 16 no 3, July 1991.
  270. [10    Ruben Prieto-Diaz, Guillermo Arango, "Domain Analysis and Software 
  271. Systems Modeling", IEEE Computer Soceity Press, 1991.
  272. [11]    Malcom Rix, "Case Study of a Successful Firmware Reuse Program", In 
  273. proceedings, 5th Annual Workshop on Institutionalizing Software Reuse, 
  274. October, 1992.
  275.  
  276. 4  Biography
  277. Kevin Wentzel is a project manager in the Software Reuse Department of HP 
  278. Labs' Software Technology Lab.  Together with Martin Griss, he has proposed 
  279. and built a multi-disciplinary team oriented toward experimental research in 
  280. software engineering and reuse.  Kevin has been with Hewlett Packard for 16 
  281. years, prior to joining HP Labs, Kevin worked in various engineering and 
  282. management roles in several HP divisions developing software products.  Kevin 
  283. has BS and MS degrees in Computer Science from the University of Wisconsin.
  284.  
  285.