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 / wisr7 / proceedings / txt / all-papers.txt next >
Text File  |  1995-08-17  |  637KB  |  12,717 lines

  1. Functional Representation for Reusable Components
  2.  
  3. Dean Allemang and Beat Liver
  4.  
  5. Research & Development
  6. Swiss Telecom PTT
  7. 3000 Berne 29,Switzerland
  8. Tel: +41 31 338 4472
  9. Email: allemang@vptt.ch
  10.  
  11. Abstract
  12.  
  13. In this research abstract we outline the framework ZD for constructing 
  14. libraries of reusable software components. The work is inspired by 
  15. functional representation of physical devices [1], but has undergone 
  16. considerable changes while being adapted to support software 
  17. engineering. The approach is a formal one, in that the semantics of the 
  18. representations is based on proofs of program correctness. This makes it 
  19. particularly easy to compare it to more `classical' software engineering 
  20. approaches.  In particular,we contrast our approach to the construction 
  21. of software libraries based on `local certifiable modules' [2]. We have 
  22. shown that while the goals of local certifiable modules constitute a 
  23. sound basis on which to build a mature software industry, 
  24. unfortunately, dedication to local certifiability constrains the grain size 
  25. of the library components too severely to allow the desired flexibility.  In 
  26. the ZD framework, we resolve this problem with a method called proviso 
  27. propagation. Local certifiable modules place the proof process at module 
  28. creation time; ordinary proofs of correctness place the proof process at 
  29. configuration time (or later).  Proviso propagation divides the proof 
  30. process - the majority of the proof is done at library creation time, 
  31. except for the proviso propagation, which is done at configuration time.  
  32. In this way, ZDretains much of the flexibility of freely combinable 
  33. modules, while retaining capability to provide provably correct software.
  34.  
  35. Keywords: Reuse, formal verification, modular design, program modeling.
  36.  
  37. Workshop Goals: Comparison of our models to requirements of other SE 
  38. methodologies.
  39.  
  40. Working Groups: Design guidelines for reuse - general, reuse and formal 
  41. methods, reuse handbook.
  42.  
  43. 1   Background
  44.  
  45. Dean Allemang began his contribution to software reuse with his 
  46. dissertation in 1990. The goal of that work was to represent the 
  47. knowledge required to `understand' a program.  The work was based on 
  48. the Functional Representation work done by Chandrasekaran and 
  49. Sembugamoorthy on representing mechanical devices.  Since that time, 
  50. Dean Allemang and Beat Liver at Swiss Telecom PTT Research and 
  51. Development have extended the method described there to include 
  52. support for software configuration, diagnosis, debugging and repair. This 
  53. work will culmintate in Mr. Liver's Ph.D. dissertation, which will include 
  54. an implementation of the software modeling language ZD.
  55.  
  56. 2   Position
  57.  
  58. Since the industrial revolution, most manufacture of mechanical devices 
  59. is done on the basis of the assembly-line - a large number of identical 
  60. parts are produced, and assembled into the final product. But the final 
  61. products are not all identical - there are a number of options and 
  62. models from which the customer may choose, and these impact the 
  63. manufacturing process.  Software, on the other hand,is typically done on 
  64. a custom-order basis; each piece of software is tailored to the needs of its 
  65. end users. The dream of software engineering is that the software 
  66. industry might one day have the flexibility and productivity of more 
  67. mature mechanical industries.
  68.  
  69. A common problem with mass-production of software or mechanical 
  70. devices is quality control - how do we know that the device produced 
  71. willp erform as advertised, especially in safety or security critical 
  72. situations? In order for software to be able to satisfy quality control 
  73. constraints, it is necessary that we have a reliable method for specifying 
  74. what software is to do, and of determining whether it achieves this goal.
  75.  
  76. In order to satisfy these two goalsof a mature software industry, Weide et 
  77. al [2] propose local certifiable modules. Alocal certifiable module is a 
  78. reusable piece of software,whose correctness can be verified in purely 
  79. local terms;that is, its own specification, its own code, and the 
  80. specification of the programs it calls directly. A library of such 
  81. components could be built and certified; then writing a program is 
  82. merely a matter of selecting the necessary components, com posing them 
  83. together,verifying that the specifications of services match the 
  84. specifications of requirements. The local certifiability guarantees that the 
  85. resulting composite program does what its specification promises.
  86.  
  87. 2.1  ZD and Software Configuration
  88.  
  89. In order to avoid reducing all problems to a single implementation level,
  90. software is normally understood at several levels of abstraction.This 
  91. concept is well-known to any experienced programmer, and is supported 
  92. by a number of methods in modern programming languages. This means 
  93. that a library of reusable components must also have components at 
  94. various levels of abstraction;the configuration of a new system will be 
  95. explainable at several levels simultaneously, depending on the 
  96. configuration decisions made during its construction. This means that a 
  97. representation of the specifications of reusable components as well as the 
  98. requirements will have to have a mechanism for mediating between 
  99. description languages at different levels of abstraction.
  100.  
  101. We have designed ZDafter functional modeling languages used for 
  102. describing physical devices at several levels of abstraction [1]. We have 
  103. formalized the change of abstraction levels by using the notion of 
  104. representation functions from ALPHARD [3]. Each module in ZD mediates 
  105. an explanation in some state description language (SDL). For any 
  106. implementation choice, a function maps from the abstract language to 
  107. the chosen concrete language. For example, for an array implementation
  108. of a stack,the high-level (in terms of stack operators) expression 
  109. `empty(S)' is translated into the concrete expression `stack:top = 0'.
  110.  
  111. [Figure 1: Afunctional prototype. The prototype has services (top,square 
  112. boxed), and an implementation (middle,round box), which specifies 
  113. what it requires of other devices (bottom, square boxes again).
  114.  
  115. Figure 2: Schematic configuration of a functional decomposition - a 
  116. functional prototype - from a library of functional prototypes. 
  117. Functional prototypes from the library are shaded; figures shown in 
  118. dotted lines are to be determined; and the components new to first three 
  119. stages are shown in bold.]
  120.  
  121. A reusable component in ZD is called a functional prototype, after the 
  122. use of the term in CAD research [4]. Figure 1 show the coarse structure of 
  123. a ZD functional prototype.  On the top of the diagram is a specification 
  124. of the service provided by the prototype; in the middle is an 
  125. implementation that achieves this specification (only one is shown in 
  126. the figure, but in principle, there can be several implementations per 
  127. prototype).  Finally, each implementation specifies some requirements 
  128. for other services upon which it will call.  The requirements and the 
  129. service will not be at the same level of abstraction - thus associated with 
  130. each implementation is a representation function.
  131.  
  132. Just as in the case of local certifiable components, configuration of a 
  133. program in ZD involves making a selection of a number of such 
  134. prototypes, and matching them together,as shown in figure 2. In general, 
  135. a library user cannot expect the specifications of one service to match 
  136. the requirements of another exactly - hence we introduce `glue code' [2] 
  137. to connect them. Glue code is shown as extra implementations in the 
  138. figure.
  139.  
  140. 3   Limits on Configuration
  141.  
  142. So far, there is no apparent advantage to using ZD over a system of 
  143. certifiable components - in fact, if we were to certify our functional 
  144. prototypes, the two approaches would be identical. The
  145. primary difference between ZD and local certifiable components is that 
  146. each service specification of ZD includes a predicate called its proviso, 
  147. which specifies a context in which the use of this prototype is valid.  
  148. Unlike the specification of the prototype (or of the local certifiable 
  149. module),the proviso is not merely matched to the requirement 
  150. specification of the client program. Verification of the proviso is subject 
  151. to a more comprehensive proof mechanism. The details of how provisos
  152. are propagated in ZD can be found in [5].
  153.  
  154. The ramifications of having a proviso that is checked at configuration 
  155. time is that features of the program that are only known at 
  156. configuration time may take part in the verification process.  Requiring 
  157. that a module be certified in advance of any possible use is quite a 
  158. severe constraint to place on a module; the use of the proviso allows this 
  159. constraint to be relaxed. Of course,this relaxation has a price - the 
  160. proviso must be proven at configuration time. The trade-off between a 
  161. too-rigid library,and intractable proviso verification is the art of writing 
  162. good reusable modules and provisos.
  163.  
  164. A short example should illustrate how this trade-off works.  Iteration is a 
  165. common action that many programs have to do over and over again. 
  166. Consider a module called passive_iterator. It takes two arguments - an 
  167. ordered set of items,and a fragment of code. The iterator runs the code 
  168. on each item in the set, and guarantees that although the order of 
  169. the set might be changed, its contents will not. A local certifiable version 
  170. of passive_iterator would be guaranteed to satisfy this specification, for 
  171. any input set and action.
  172.  
  173. If the desired action were to re-arrange the set (say, shift every 
  174. element one to the right), then an action that moves a single item could 
  175. be used. But the integrity of the set depends upon the order in which the 
  176. iterator traverses it - it is impossible to anticipate during library 
  177. construction which actions might be desired. Thus passive_iterator alone 
  178. cannot be encapsulated as a local certifiable module. Weide solves this 
  179. problem by using an active iterator instead of a passive one,and by 
  180. encapsulating the action into the specification of the reusable module 
  181. [6]. This makes for a local certifiable module, but the shift action is 
  182. already included - the client cannot decide what new ordering of the set 
  183. he wants.
  184.  
  185. ZD, on the other hand, can encapsulate a passive iterator.  Indeed there 
  186. is a condition on the action - not just any action may be used in 
  187. conjunction with the ZD passive iterator total_loop [7].  The action itself 
  188. must be instantiated from the library - along with the function 
  189. prototype for the action, a proviso for its correct use is retrieved.  In the 
  190. case of a simple action to move an item from one place to another,the 
  191. proviso requires that the target of the move be `empty'. Since each item 
  192. will be moved, checking that this proviso is satisfied is more complicated 
  193. than simply checking that it is guaranteed by the requirement 
  194. specification. In general, this involves the invocation of a theorem prover 
  195. to show that the proviso is satisfied at every iteration of the loop. In this 
  196. case, the proviso can be checked quite easily from a formal statement of 
  197. the principle of induction, without an exponential proof structure. This 
  198. process of verifying a proviso in its context is called Proviso Propagating 
  199. and Proving (PPP).
  200.  
  201. 4   Comparison
  202.  
  203. The value added to local certifiable components by ZD is the capability 
  204. to buy flexibility of modules, by paying with computational 
  205. effort(theorem proving, in the worst case) at configuration time.  
  206. Modules that are local certifiable can be treated in ZD by specifying a 
  207. null proviso; even very simple provisos can buy big gains in flexibility, as 
  208. the preceding example showed.
  209.  
  210. The PPP algorithm has already been worked out and implemented, in a 
  211. system called Dudu [5] running in InterLisp on a Xerox 1108/9. Dudu 
  212. used a functional representation that preceded ZD to recognize the 
  213. difference between correct and incorrect student programs in a tutorial 
  214. setting.
  215.  
  216. In our current work we are resolving a number of the details of the ZD 
  217. formalism to specify how the connections between requirements and 
  218. specifications can be formalized, and under exactly what circumstances 
  219. a proviso must be propagated [8]. Our goal is to implement ZD in such a 
  220. way that the proviso propagation algorithm from Dudu can be rebuilt, 
  221. along with support for configuration of the form shown in figure 2.  
  222. Further applications include modeling of distributed systems [9] and 
  223. fault isolation [10].  ZD will then become a language in which function 
  224. prototypes can be written, and the details of the trade-off 
  225. betweenflexibility and design-time computational expense can be more 
  226. systematically studied,in the context of a growing library of semi-local 
  227. certifiable prototypes.
  228.  
  229. References
  230.  
  231.  [1]Sembugamoorthy, V. and Chandrasekaran, B., "Functional 
  232. Representation of Devices and Compilation of Diagnositc Problem-Solving 
  233. Systems," in Experience, Memory and Reasoning (J. Kolodner and 
  234. C.Riesbeck, eds.), pp. 47-73, Lawrence Erlbaum Associates, 1986.
  235.  
  236.  [2]B. W. Weide, W. F. Ogden, and S. H. Zweben, "Reuseable software 
  237. components," in Advances in Computers (M. C. Yovits, ed.), vol. 33, 
  238. pp.1-65, Academic Press, 1991.
  239.  
  240.  [3]W. Wulf, R. London, and M. Shaw, "Abstraction and Verification in 
  241. Alphard: Introduction to Language and Methodology," in ALPHARD: Form 
  242. and Content (M. Shaw, ed.), Computer Science Monograph, pp. 15-60, 
  243. Springer, 1981.
  244.  
  245.  [4]Y. Umeda and T.Tomiyama, "A CAD for Functional Design," in 
  246. Working Notes of the AAAI'93 Workshop "Reasoning about Function", 
  247. (Washington DC), 1993.
  248.  
  249.  [5]D. T. Allemang, Understanding Programs as Devices. PhD thesis, The 
  250. Ohio State University, 1990.
  251.  
  252.  [6]B. W. Weide, S. H. Edwards, D. E. Harms, and D. A. Lamb, "Design and 
  253. specification of iterators usingthe swapping paradigm," IEEE Transactions 
  254. on Software Engineering, vol.20, pp. 631-643, August 1994.
  255.  
  256.  [7]D. T. Allemang,"Functional Representation and Program Debugging," 
  257. in Proc. of the 6th Knowledge-Based Software Engineering Conference, 
  258. (Syracuse, NY), IEEE Computer Society Press,1991.
  259.  
  260.  [8]B. Liver and D. T. Allemang, "AFunctional Representation for Software 
  261. Reuse and Design," Software Engineering and Knowledge Engineering, vol. 
  262. in press, 1995.  Special Issue on Evolutionary Approaches to Software 
  263. Engineering.
  264.  
  265.  [9]B. Liver, "Working-around Faulty Communication Procedures using 
  266. Functional Models," in Working Notes of the AAAI-93 Workshop 
  267. "Reasoning about Function", (Washington DC), 1993.
  268.  
  269. [10]B. Liver,"Modeling Software Systems for Diagnosis," in Working Notes 
  270. of the 5th Int. Workshop on Principles of Diagnosis, 1994.
  271. Difference-Based Engineering
  272.  
  273. Sidney C. Bailin
  274.  
  275. CTA Incorporated
  276. 6116 Executive Boulevard, Suite 800
  277. Rockville, MD 20852
  278. Tel: (301)816-1451
  279. Email: sbailin@cta.com
  280.  
  281. Abstract
  282.  
  283. This position paper describes a concept, Difference Based Engineering, 
  284. which is an attempt to bring reuse out of the specialty arena. I try to 
  285. reformulate the reuse concept so that it explicitly addresses the concerns 
  286. and needs of working software andsystem engineers and, even more, 
  287. managers with profit and loss responsibility.
  288.  
  289. Keywords: Deltas, case-base, engineering analysis
  290.  
  291.  
  292. Workshop Goals: Stay abreast ofwhat others in the field are doing. 
  293. Promulgate a view of reuse that emphasizes evolution and the unique 
  294. characteristics of software.
  295.  
  296. Working Groups:Reuse management,organization and economics;Domain 
  297. analysis/engineering; Tools and environments
  298.  
  299. 1   Background
  300.  
  301. After 8 years of research and development in domain analysis and reuse 
  302. methodology and tools, we decided to turn Capturetm into a 
  303. commercial product.  No sooner had we convinced the Board of Directors 
  304. to go for it,than the second thoughts began. This is not surprising for a 
  305. company that has thrived on Government contracts since its inception; 
  306. but it has forced us to do a continual selling job both within and outside 
  307. our company _ not on the goodness of reuse, but on whether there is 
  308. really a market for such technology. It's a tough question, and in this 
  309. position paper I summarize where it has led us.
  310.  
  311. 2   Position
  312.  
  313. My basic position is that we have to stop thinking of reuse as a thing in 
  314. itself to be promoted and sold. Why? Well,because it's become a fetish, 
  315. and a lot of people are not especially turned on by it. One of the things 
  316. we did was hire a consultant to do a market analysis. He called a bunch 
  317. of people and asked them a lot of questions about their software 
  318. environment needs,and right in the middle of the questionaire he stuck 
  319. an inconspicuous question about the desirability and importance of 
  320. reuse (so that the interviewees wouldn't catch on that that was the real 
  321. topic).  Their typical answer - "Yes, reuse would be nice, Iguess, but it's 
  322. not high on the agenda." To which the knee-jerk reaction of the plug-
  323. pullers here was, "You see, it (our productization effort) was a mistake, 
  324. let's pull the plug."
  325.  
  326. We all know that polls are skewed by the way the questions are 
  327. asked.And the problem is that this poll asked a question like,"Would you 
  328. care for an extra dollop of extra-rich high-fat chocolate syrup essence on 
  329. your sundae?"So of course the answer was, "Well, yeah, I guess, since you 
  330. offered."
  331.  
  332. But what if we ask the question in a different form, such as: "Would you 
  333. place a high priority on staying in business?"
  334.  
  335. Let me formulate this a little more soberly. We need to think of reuse as 
  336. a fundamental aspect of disciplined engineering _ and to derive from 
  337. that the "compelling reason to buy" that must be articulated when 
  338. marketing new technology [2]. One such argument might be, "You're 
  339. going broke. You're profits are down, you're laying people off, your 
  340. industry is consolidating - this technology can give you a competitive 
  341. edge,or at least competitive parity in a rapidly evolving world." I think 
  342. that's a pretty compelling reason to buy.
  343.  
  344. Of course, the devil is in the details :  To which purpose, I offer the 
  345. concept of Difference-Based Engineering (see the figure at the end of this 
  346. paper). The concept is simple: streamline the system and software 
  347. engineering process byconstructing new systems as deltas of existing 
  348. systems. A problem (i.e., a set of requirements fora system) comes in, 
  349. and the first thing the engineer asks is, "Have we done this before - do we 
  350. have a solution?" If the answer is yes, we're done. If the answer is, "Not 
  351. quite," then the next question is, "How is what we've done before 
  352. different from what we need to do now?  What approaches can we take 
  353. to adapt what we've done before? What would have to change, and what 
  354. are the implications/ramifications of making such changes?"
  355.  
  356. It is in answering these questions that the system/software engineering is 
  357. performed.The Capture tool - and reuse technology in general - is 
  358. intended to provide knowledge to help in obtaining answers to these 
  359. questions, rapidly and reliably; credibly, rather than through guess-work.
  360.  
  361. Of course,to some extent most engineering organizations and individuals 
  362. do this already. But they don't do it systematically,and therefore they 
  363. don't benefit from the labor-minimizing consequences.  The objective of 
  364. introducing a Difference-BasedEngineering process is that you no longer 
  365. build systems, you build deltas, and this becomes the institutionalized 
  366. approach.
  367.  
  368. 3   Comparison
  369.  
  370. My position that reuse is really a fundamental aspect of disciplined 
  371. engineering is similar to Ruben Prieto-Diaz's at last year's reuse 
  372. conference in Rio, where he predicted the Disappearance of Software 
  373. Reuse by the year 2000 [3].
  374.  
  375. My emphasis on Darwinian survival is similar to the themes developed 
  376. by Brad Cox [1].However, his vision of a system development industry 
  377. based on "software ICs" is quite different from my
  378. view. I maintain that software - by its very nature - is the medium in 
  379. which we tend to dump complexity and, in particular, unprecedented 
  380. requirements. To Cox (Ithink), that is a pathology in need of fixing. To 
  381. me, it is the very role of software in our society.
  382.  
  383. The Difference Based Engineering paradigm is really just an example of 
  384. the case-based reasoning paradigm first developed by Schank [4] and 
  385. now a full-fledged field of AI. For many years I have
  386. referred to Capture as a case-based approach to domain engineering. By 
  387. coining this new term I am hoping for a slightly different emphasis - a 
  388. case-based approach to system building, in which
  389. domain analysis plays an important role.This, to me, is the essence of 
  390. software reuse, but it tends to get lost in the forest of techniques and 
  391. tools, conferences and curricula that we develop.
  392.  
  393. 4   Biography
  394.  
  395. Sidney C. Bailin is a Vice President of Engineering at CTA, Inc. where he 
  396. heads up the Software Development Automation Group.  He has worked 
  397. in the field of reuse and, more generally, automating aspects of the 
  398. software development process, for the past 10 years.  Prior to this he 
  399. worked as both a systems and a software engineer in a variety of 
  400. domains including electronic funds transfer, operating systems, 
  401. computer communications,office automation, and satellite ground 
  402. systems. His academic background is in mathematical logic, and a 
  403. principal emphasis in his current work is engineering as a reasoning 
  404. activity, and the introduction of automated reasoning into the software 
  405. development process in a way that is compatible with mainstream 
  406. software skills and practice.
  407.  
  408. References
  409.  
  410. [1]B. Cox. Planning the Software Industrial Revolution. IEEE Software, 
  411. November 1990.
  412.  
  413. [2]G. A. Moore. Crossing the Chasm: Marketing and Selling Technology 
  414. Products to Mainstream Customers. Harper Collins, 1991.
  415.  
  416. [3]R. Prieto-Diaz. The Disappearance of Software Reuse. In Third 
  417. International Conference on Software Reuse. IEEE Computer Society Press, 
  418. 1994.
  419.  
  420. [4]R. Schank. Dynamic Memory: The Theory of Reminding and Learning 
  421. in Computers and People. Cambridge University Press, 1982.
  422. Tradeoffs in Packaging Reusable Assets
  423.  
  424. Kevin M. Benner
  425.  
  426. Andersen Consulting
  427. 100 S. Wacker Dr.
  428. Chicago, IL 60606
  429. Email: kbenner@andersen.com
  430.  
  431. Abstract
  432.  
  433. Within a comprehensive reuseplan, one of many decisions that an 
  434. organization must make is how to package assets for reuse. When an 
  435. asset is packaged it is done be striking some balance between four 
  436. delivery vehicles: people,deliverables (i.e., any sort of work product), 
  437. tools, and processes. This position paper addresses the tradeoffs that an 
  438. organization makes when deciding how to package assets for reuse. In 
  439. general, these decisions are basedon the business environment in which 
  440. reuse will be performed and the importance that it places on each of the 
  441. following values: flexibility,productivity, speed of delivery, cost of 
  442. delivery, investment cost, evolvability over time, and distributability. 
  443. This paper will describe specific commitments that selected Andersen 
  444. Consulting organizations have made based on their business 
  445. environment.
  446.  
  447. Keywords: Reuse processes, management, economics
  448.  
  449. Workshop Goals: Learning; networking; exchanging information on recent 
  450. reuse experiences.
  451.  
  452. Working Groups: reuse process models, management andeconomics.
  453.  
  454. 1   Background
  455.  
  456. CSTaRis currently leading an effort to raise the level of reuse within 
  457. Andersen Consulting using existing technology which will then prepare 
  458. the way for new reuse technology as it becomes available. The general 
  459. goal of this reuse initiative is to guide, lead, direct, cudgel, push, and 
  460. entice Solution Centers and other large development organizations (e.g., 
  461. large regional offices) within Andersen Consulting to integrate reuse as a 
  462. fundamental part of their development and maintenance activities.  A 
  463. fundamental problem to date in achieving this end is that most 
  464. organizations are significantly preoccupied with meeting their more near 
  465. term objectives, and thus do not have the resources to dedicate toward 
  466. reorienting themselves to be more reuse-centric. The goal of this 
  467. initiative is to provide as many leverage points as possible so that 
  468. organizations can step up to reuse in a planned way,leveraging existing 
  469. knowledge on how reuse should best be accomplished. This reuse 
  470. initiative is focused on the following four broad categories of activities: 
  471. creating knowledge capital to enable reuse, partnering with organizations 
  472. to make them more reuse-centric,evaluating current and future reuse 
  473. activities, and proselytizing about reuse throughout the firm.
  474.  
  475. 2   Position
  476.  
  477. 2.1  Introduction
  478.  
  479. To date Ihave had the opportunity to become familiar with several 
  480. different reuse-based development efforts within the firm.  One of the 
  481. most interesting aspects of these reuse efforts is how they package assets 
  482. to enable reuse. An asset may be packaged via any combination of the 
  483. following delivery vehicles: people,deliverables (i.e.,any sort of work 
  484. product), tools, and processes.When one is creating a reusable asset,one 
  485. decides how much to rely on each of these  vehicles. This decision is 
  486. ultimately driven by a trade-off between competing delivery values. 
  487. These delivery values are: flexibility,productivity, speed of delivery, cost 
  488. of delivery, investment cost, evolvability over time, and distributability. 
  489. This paper will describe in moredetail the basic nature of these delivery 
  490. vehicles and then describe how asset packaging approaches maximize 
  491. some values at the expense of others.
  492.  
  493. 2.2  Asset Packaging and Delivery Vehicles
  494.  
  495. Asset packaging is achieved by deciding some balance between 
  496. complimentary delivery vehicles.  As stated above,these vehicles are 
  497. people, deliverables, tools, and processes. People are the most important 
  498. element of asset packaging. This element is the only one which can 
  499. standalone. In fact, reuse of people and their skills has always been one 
  500. of the strengths of AC. The greatest advantage of people is their inherent 
  501. flexibility.  At the extreme,people who have some specialized knowledge
  502. often are able to apply it to solve the problem at hand. And when the 
  503. problem is well suited to
  504. their specialized knowledge,they are particularly effective and 
  505. productive at solving it. People also have the capacity to evolve their 
  506. knowledge over time based on previous experiences. Relative to our 
  507. delivery values,an organization relying solely on people is limited in 
  508. several ways.  Because knowledge resides within the 
  509. individual,investments to improve this knowledge is spent on the 
  510. individual whom may leave the organization thus taking the investment 
  511. with him/her. Assuming the person stays,there are still only so many 
  512. people with the knowledge,thus people become the limiting factor,
  513. potentially limiting opportunities if their knowledge is necessary and 
  514. they are not available. Distribution of this knowledge is another issue. In 
  515. the case of knowledge held by people, its distribution is fairly limited 
  516. based on the typical bandwidth in human communication. Finally,
  517. there is the boredom factor. If people are forced to be too specialized and 
  518. are used only to work in their specialized area, thus maximally reusing 
  519. their knowledge,they get tired of doing this and will leave or demand to 
  520. do other things. In either case, we lose the asset.
  521.  
  522. Informally, people invariably leverage their knowledge by incorporating 
  523. tools, deliverables, processes,and other people so as to reduce their work 
  524. and increase their overall productivity. Systematizing this, by making 
  525. specific organizational commitments to develop and maintain these 
  526. other delivery vehicles is an essential part of any reuse strategy.
  527.  
  528. The most common approach to systematic reuse is to focus on 
  529. deliverables (including various intermediate work products). 
  530. Characterizing what a deliverable is, is not an easy task. This is because 
  531. deliverables have several dimensions to how they are represented. What 
  532. choices one makes within each dimension greatly influences: the cost of 
  533. creating the deliverable, the utility of reusing the deliverable,and the 
  534. knowledge necessary to use the deliverable.The choices made within 
  535. these dimensions are also a critical part of ones reuse strategy since it 
  536. will effect the overall balance between the alternative delivery vehicles. 
  537. The dimensions of a deliverable are:
  538.  
  539. Formality - How formally should an asset be represented?(e.g., informal, 
  540. structured, semi-formal, and formal documents )
  541.  
  542. Lifecycle deliverable - An asset may be characterized in terms of any of 
  543. its lifecyle deliverables or intermediate work products (e.g., domain 
  544. specifications, requirement documents including use cases and scenarios, 
  545. system specifications, conceptual models, working models, designs, code, 
  546. test plans, project management plans, process models,etc.). The most 
  547. import ones for reuse are domain models, architectures, and component 
  548. specifications.
  549.  
  550. Domain specificity - What is the intended domain of the asset? How 
  551. generically has the asset been represented? Examples include specific 
  552. technicalarchitectures, industry solutions, business functions, and 
  553. product lines.
  554.  
  555. Form - How are variable and nonvariablep ortions of an asset delineated? 
  556. (e.g., black box assets, white box assets, generic assets, parameterized 
  557. assets, generated assets, informal template-like assets, etc.)
  558.  
  559. Clearly,all of our delivery values play into the decisions one makes 
  560. within the above dimensions on how to represent a deliverable. 
  561. Increased flexibility,productivity, speed of delivery, evolvability, and 
  562. distributability all come at the expense of investment costs. These 
  563. decisions though are not linear (i.e., investments in some areas will have 
  564. much higher payoffs then in others). It is critical that one look at the 
  565. business case to see where the payoffs will come. The stability of the 
  566. business environment and the variability among potential clients are 
  567. only some of the influences on which values to weight the most.
  568.  
  569. The next delivery vehicle of packaged assets is tools. Tools are a common 
  570. mechanism for embodying deep knowledge about a deliverable and how 
  571. to use it. A given deliverable by itself may not be very valuable if it is 
  572. hard to create and use. Tools can automate or assist in the use of a 
  573. deliverable asset, thus reducing the amount of knowledge one needs in 
  574. order to use it effectively.
  575.  
  576. Tools do not necessarily need to be paired with deliverables. Another 
  577. common pairing is tools and process. In this situation,tool(s) embody 
  578. deep knowledge of the process. As people use the tools, they are also 
  579. implicitly adhering to the process embodied in it.
  580.  
  581. The final delivery vehicle of packaged assets is process. One of the things 
  582. AC has always been a leader in is the application of well-defined, 
  583. repeatable processes within the software development lifecycle. This 
  584. same conceptcan be specialized to working with reusable assets.  One of 
  585. the things that an individual learns when they become a specialist is not 
  586. just deep knowledge about something, but also detailed procedural 
  587. knowledge on how to apply that knowledge. At an informal level, when 
  588. one mentors with an expert,one is both learning the knowledge of this 
  589. expert, as well as the process on how they apply it.  The process delivery 
  590. vehicle is an explicit representation of this process knowledge, which is 
  591. then available for reuse by non-experts.
  592.  
  593. 2.3  Experiences with Asset Packaging
  594.  
  595. Given this general characterizationof asset packaging and the delivery 
  596. vehicles for achieving it, consider the following organizations within 
  597. Andersen Consulting and their existing reuse efforts: Utilities 
  598. Industry,Communications Industry, Denver Office, and CSCOE. In the 
  599. Utilities Industry, the principle reusable assets are various versions of 
  600. Customer /1. As a packaged asset, Customer/1 uses people and selected 
  601. deliverables as the delivery vehicles. The expertise which the Utilities 
  602. Industry is reusing based on Customer /1 was gained over time by 
  603. working on a variety of engagements. In those engagements, both the 
  604. reusable assets were created and the people who know how to use the 
  605. asset were trained (i.e.,by virtue of building the asset they were trained 
  606. in how to use it). Only a limited amount of effort was put into 
  607. generalizing deliverables to make them easier to reuse. Reuse was based 
  608. on the strong similarity of problem shared by most utilities. Because of 
  609. the similarity of problem, the solutions were potentially reusable across 
  610. utilities. Since the deliverables have not been packaged in a particularly 
  611. general form, one relies on the developers to understand what aspects of 
  612. Customer /1 can be easily changed.
  613.  
  614. This form of deliverable reuse is "clearbox" reuse [this is my term]. Clear 
  615. box reuse is a less desirable alternative to either black box or white box 
  616. reuse. Clear box reuse means that one reuses an asset by making changes 
  617. to what ever portion of its insides one needs to change in order to make 
  618. it do what you want it to do.This type of reuse is necessary when the 
  619. developers of the asset have not packaged the asset such that it provides 
  620. any guidance on what portions of it have been designed to be 
  621. customized/adapted. The danger of this type of reuse is that one could 
  622. change some portion of the asset which should not be changed (e.g., 
  623. some hidden design assumption).  This danger is mediated by limiting 
  624. who can reuse the asset to only people who are intimately familiar with 
  625. it.  This approach also leaves one vulnerable to creating many variant 
  626. versions of the same asset thus reducing future reusability.
  627.  
  628. The pairing of these two delivery vehicles, people and deliverables,has 
  629. resulted in a packaged asset which is fairly flexible, productive, and 
  630. quick when applied to appropriate problems. The greatest limitation is 
  631. that only people who are intimately familiar with the asset can decide if 
  632. the problem is appropriate. Additionally, only these people can use the 
  633. asset effectively. Granted new people can be trained on the asset, but 
  634. this is a time consuming activity requiring multiple uses of the asset
  635. on multiple engagements before enough knowledge is distributed to the 
  636. trainee. This is a serious problem for future Customer /1 based 
  637. engagements.
  638.  
  639. The Communications Industry tells an almost identical story on the 
  640. development and use of BPP1 and BPP2. The only difference between the 
  641. two is that the Communications Industry is creating a solution center 
  642. which will keep together people who are familiar with the reusable asset. 
  643. The intent is to both ensure necessary asset experts are available to 
  644. support the creation and use of assets, as well as provide an 
  645. environment for training future experts. This should also result in a 
  646. dedicated producer organization which supports multiple engagement 
  647. teams.
  648.  
  649. CSCOE differs from both of the above cases in several important ways. 
  650. First, CSCOE is an established solution center leveraging the expertise of 
  651. people with on-going relationships to assets developed by CSCOE. Second, 
  652. CSCOE's principle asset, UCT, is fairly mature - encapsulating a well 
  653. understood body of services (i.e.,technical architecture services). The 
  654. advantage of such maturity is that it is stable and thus presents the 
  655. opportunity to package the asset for blackbox reuse. Third, UCT is more 
  656. than just a set of reusable deliverables,it also includes tools and
  657. processes which are integral to using UCT.
  658.  
  659. CSCOE has segmented its operations to support (1) maintenance and 
  660. enhancement of UCT and (2) utilization of UCT. The utilization projects 
  661. include: PRA, NSP, and several custom jobs.  Unique to CSCOE is its 
  662. concentration on the use of UCT as the technical architecture for all 
  663. projects.  This concentration develops specialized skills in CSCOE 
  664. personnel on how to best use UCT when building an application. Relative 
  665. to our delivery values this concentration maximizes productivity, speed 
  666. of delivery,and distribution of knowledge. Specific compromises are 
  667. made with respect to flexibility. UCT is "the technical architecture".  If a 
  668. project can not be done on the technical architecture it is not done by 
  669. CSCOE (i.e., they walk away from business,a radical concept in this firm). 
  670. An additional cost which CSCOE commits to is ongoing investment in 
  671. UCT. This investment is required to ensure that it evolves as the business 
  672. environment changes. Part of this planned evolution is a clear 
  673. articulation of what services UCT will provide. All users of UCTcan expect 
  674. these common services. Variabilities were not initially well characterized 
  675. by CSCOE, but over time CSCOE has supported selected alternative 
  676. components (e.g., UCT initially only supported one type of database and 
  677. one type of window painter, now it supports several alternatives).
  678.  
  679. The Denver Office has had a vision similar to CSCOE regarding the use of 
  680. a common technical architecture and the development and use of tools 
  681. for working within that environment.  This visionis known as the 
  682. Application Software Factory (ASF). One of the differences between the 
  683. two, besides being on a different technical architecture, is that ASF 
  684. demonstrates a more aggressive approach toward advanced tools to aid 
  685. the developer.  ASFhas made significant investments (funded by 
  686. individual engagements) to develop specialized development tools which 
  687. have had a demonstrated increase in productivity of 4-5x and an even 
  688. more dramatic improvements in reliability. Another difference between 
  689. the two is that the Denver Office has not at this time adopted the 
  690. solution center model. Without such a model,or at least some explicit 
  691. mechanism for maintaining and improving their assets,use of their assets 
  692. will become progressively more difficult as people who are familiar with 
  693. the asset move on.
  694.  
  695. 2.4  Conclusion
  696.  
  697. When individual people leverage past experiences and previously created 
  698. deliverables, tools, and processes, this is referred to as ad hoc reuse. 
  699. When the organization institutionalizes the creation and use of 
  700. deliverables, tools, and processes by people with specialized skills, the 
  701. organization is on its way to performing systematic reuse.  The idea is to 
  702. make an organizational commitment to a specific balance of these four 
  703. knowledge delivery vehicles and then build up a development process 
  704. around these such that they are maximally leveraged with respect to the 
  705. delivery values the organizations values (i.e.,some specific valuation of 
  706. flexibility, productivity,speed of delivery, cost of delivery, investment 
  707. cost, evolvability overtime, and distributability). The reuse efforts 
  708. described above have adopted a particular balance.  One outstanding 
  709. issue, among many, is to develop a model of specific business 
  710. environments and these four delivery vehicles such that it can 
  711. prescriptively state what the ideal balance should really be for that 
  712. environment.
  713.  
  714. 3   Comparison
  715.  
  716. In general this work is concerned with assessing the effectiveness of 
  717. current reuse practices and using this information as a first step toward 
  718. increasing the overall reuse level of an organization.  This work leverages 
  719. a variety of previous works including: [1], [2], and [3].
  720.  
  721. References
  722.  
  723. [1]"STARSConceptual Framework for Reuse Processes (CFRP)," tech. rep., 
  724. Advanced Research Projects Agency (ARPA), 1992.
  725.  
  726. [2]V. Basili and H. Rombach, "Support for Comprehensive Reuse," Tech. 
  727. Rep. UMIACS-TR-91-23, University of Maryland, College Park, Md., 
  728. February 1991.
  729.  
  730. [3]P. Kulton and A. Hudson, "A Reuse Maturity Model," in Proceeding of 
  731. the Fourth Annual Workshopon Software Reuse, November 1991.
  732.  
  733. 4   Biography
  734.  
  735. Dr. Kevin Benner is a researcher at Andersen Consulting's Center for 
  736. Strategic Technology Research (CSTaR)Software Engineering Lab (SEL). 
  737. Within SEL, he is a leader of Andersen's reuse program to change their 
  738. development practices to be more reuse centric. Thus far,the reuse 
  739. program has focused principally on affecting Andersen's organizations, 
  740. policies, processes, and people. A secondary goal is to lay the ground 
  741. work for technology based reuse solutions as they become available.  Dr.  
  742. Benner is also co-principle investigator of the Knowledge-Based Software 
  743. Assistant Advance Development Model.  The KBSA/ADM is an effort to 
  744. integrate the latest ideas in knowledge-based software engineering into a 
  745. next generation CASE tool for object-oriented development of software 
  746. components.
  747.  
  748. Dr. Benner's research interests include: software development 
  749. environments, software reuse,specification languages, specification 
  750. development, validation and transformations.  Prior to joining CSTaR in 
  751. 1993, he was a research assistant atthe University of Southern 
  752. California/Information Sciences Institute from 1988 to 1993 where he 
  753. completed his graduate degree. His work there was
  754. within the ARIESproject and was concerned with the development and 
  755. validation of formal specifications. Prior to this he was an officer at the 
  756. Air Force's Rome Laboratory where he was the technical lead on the KBSA 
  757. program from 1985 to 1988.
  758. Understanding OOP Language Support for Reusability
  759.  
  760. Robert Biddle and Ewan Tempero
  761.  
  762. Department of Computer Science
  763. Victoria University of Wellington
  764. Wellington, NEW ZEALAND
  765. Tel: +64 4 471-5328
  766. Fax: +64 4 495-5232
  767. Email: fRobert.Biddle,Ewan.Temperog@Comp.VUW.AC.NZ
  768.  
  769. Abstract
  770.  
  771. Object-oriented programming (OOP)has been widely acclaimed as a 
  772. technology that will support the creation of reusable software. 
  773. However,the practical impact has so far been limited. We believe success 
  774. has been limited because of widespread misunderstandingof the way the 
  775. technology supports reusability. In this position paper,we introduce our 
  776. analysis of the connection between OOP and reusability. In particular,we 
  777. show that inheritance does support reusability, but not in the way 
  778. commonly supposed. More generally, we claim better understanding 
  779. about language support for reusable software is necessary.
  780.  
  781. Keywords: Reusability, Object-Orientation, Programming Languages
  782.  
  783. Workshop Goals: Develop Models for Reusability, Analyse and 
  784. Understand Programming Language Support
  785.  
  786. Working Groups: Reusability vs. Reuse, Reusability Support Models, Reuse 
  787. and OO Methods, Reuse Handbook
  788.  
  789. 1   Background
  790.  
  791. Object-oriented programming (OOP)has been widely acclaimed as the 
  792. technology that will support the creation of reusable software [1]. 
  793. However,it is also true that the amount of reusable software is not as vast 
  794. as the marketing hyperbole associated with the object-oriented 
  795. bandwagon led us to expect. So what has gone wrong?
  796.  
  797. There are many definitions of what software reuse means, but most 
  798. involve some variation of "the use of engineering knowledge or artifacts 
  799. from existing systems to build new ones" [2]. This definition 
  800. encompasses many diverse areas, from application generators, to domain 
  801. analysis, to design patterns, to classification and search, to management 
  802. [3, 4]. Our interest is in the use of existing code. In particular, we want to 
  803. establish precisely how different language features impact the reusability 
  804. of code.  As Meyer has said: "any acceptable solution must in the end be
  805. expressible in terms of programs, and programming languages 
  806. fundamentally shape the software designers' way of thinking" [5]. We 
  807. have been looking at this issue from the point of view of specific 
  808. languages and specific features [6, 7,8] .
  809.  
  810. 2   Position
  811.  
  812. We believe the lack of success of OOP is due not any particular 
  813. shortcoming in the technology,but to widespread misunderstanding of 
  814. the way the technology supports reusability.  In this position paper, we 
  815. briefly outline our analysis of the connection between object-orientation 
  816. and reusability. We begin with a discussion of what it means for software 
  817. to be reusable. While reusability is an understood aim in programming 
  818. language design,it is seldom discussed directly; we have found that 
  819. discussing it directly helps our analysis. In the next section,we discuss  
  820. the important features of OOP. We regard OOP as "design by 
  821. analogy",which we believe offers a concise, consistent,and hype-free 
  822. description of the object-oriented paradigm, and provides a foundation 
  823. forunderstanding the support of reusability. Finally we discuss the key 
  824. issue of the role of inheritance in software reusability. We show that 
  825. inheritance does support reusability,but does so in ways that are not well 
  826. understood, and not in the ways usually claimed.
  827.  
  828. 2.1  Reusability and Reuse
  829.  
  830. We believe the first step to a better understanding of this topic is 
  831. recognising the distinction between software reuse and reusable software. 
  832. Software reuse is an activity that takes place afterward, when software 
  833. was initially created in the past. To best support this,reusable software 
  834. must be created beforehand in such a way that it is later easy to reuse.
  835.  
  836. It is our broad aim to better understand howto support reusability. 
  837. Towards this, we wish to analyse language structures, and also develop a 
  838. language independent model for reusability support.
  839.  
  840. We refer to the code that we want to reuse as the component,and this is 
  841. used by other code that we call the context.  For our purpose, reusable 
  842. software consists of components that can be successfully used by all 
  843. relevant contexts without change and with the minimum of effort.
  844.  
  845. A context is relevant if it can use functionality in the component.  
  846. However, the functionality may not be accessible by the context.Typical 
  847. reasons for this are: unhelpful encapsulation, namespace conflicts,and 
  848. dependence on irrelevant or inaccessible components.  A reusable 
  849. component therefore must be designed to avoid such limitations. We 
  850. refer to this property as generality.
  851.  
  852. Where a context invokes a component to make use of some 
  853. functionality,nothing but the functionality should matter. In fact,there 
  854. may be no requirement that it be provided the same way every time. 
  855. The weaker the binding between the context and the component,the 
  856. more components can be used in that context. The strength of the 
  857. binding required between the context and the component represents the 
  858. flexibility of the binding.
  859.  
  860. Finally,a context invoking a component connects two different sets of 
  861. assumptions and behaviour.  Care must be taken to prevent connections 
  862. where assumptions and behaviour are sufficiently misaligned that the 
  863. results are not well defined. Prevention of this kind of mistake requires 
  864. concern for safety.
  865.  
  866. 2.2  Object-Orientation and Reusability
  867.  
  868. To best understand how OOP involves reusability,it is important to 
  869. understand just what OOP is all about. In fact,we believe there are two 
  870. elements in the foundations of OOP, one technical and the other more 
  871. philosophical.  Both have significant practical implications.
  872.  
  873. The more technical foundation of OOPconcerns an evolutionary process 
  874. in program design and programming language support.  From a 
  875. historical perspective, OOP may be seen as the confluence of various 
  876. threads of development in program design: some involving the design of 
  877. control, others involving the organisation of data. The more 
  878. philosophical foundation of OOP goes deeper,and directly addresses one 
  879. of the most fundamental issues in programming: organising complexity.  
  880. There are two key ideas involved.  The first idea is that we should design 
  881. programs by analogy.  That is, we should organise our programs using 
  882. structures like the structures in the application domain. The second idea 
  883. is that most application domains, like the real world, are commonly 
  884. regarded as structured as entities and actions on entities.
  885.  
  886. In the world of entities and actions, it is typical that both entities and 
  887. actions are involved in many different contexts.  Entities are used for 
  888. various purposes, and the same action may be applied to various 
  889. entities.  Accordingly, when we design by analogy, we are likely to use 
  890. structures that either have already been needed and designed before, or 
  891. that will needed in the future. Either way, there are obvious advantages 
  892. of reusability.
  893.  
  894. The more technical foundations of OOP also support reusability, 
  895. particularly via encapsulation.  Encapsulation means that the object is a 
  896. capsule, whereby the behaviour and state are bound together as a unit, 
  897. with the only access being the designated operations. For the object to be 
  898. reusable in different (perhaps as yet unknown) contexts, it is necessary to 
  899. make certain that the behaviour cannot be interfered with.  Moreover, it 
  900. might be useful to use the context code together with a different 
  901. implementation of the object, then the reusability of the context code is 
  902. of interest.  Accordingly it is important that the context code cannot 
  903. depend upon the implementation of the object at all, and this can be 
  904. enforced by encapsulation.
  905.  
  906. 2.3  Classes
  907.  
  908. It is a big organisational step from seeing the world as consisting of 
  909. entities to seeing the world as classes of entities; it can also be a 
  910. problematic step. Every thing is distinct, but we consider many things to 
  911. have such similar operations and behaviour we regard them as mere 
  912. instances of the larger class. In the real world, however, there are many 
  913. ways to classify things,and the ways are not always consistent. Some OOP 
  914. languages allow dynamic organisation of objects into classes; others 
  915. require the programmer to deal will classification conflicts at the design 
  916. stage, and make classes explicit in the program - this typically allows 
  917. more efficient implementation. Whichever approach is taken,there are 
  918. strong organisational reasons to structure objects into classes: it fosters
  919. reusability, because code can be written for any instance of a class,rather 
  920. then for one particular object.
  921.  
  922. 2.4  Composition
  923.  
  924. Perhaps the most common way that two different entities can be 
  925. statically structured together is by composition: where one object is used 
  926. as a component part of the other. This is common in the real world, 
  927. where technology and nature build larger things using smaller things. We 
  928. model this in programs, and so OOP languages typically allow the 
  929. construction of objects by implementing them using several other 
  930. objects. This facility thus makes further use of the reusability of objects 
  931. and classes, especially because a wide variety of larger kinds of objects 
  932. can be constructed using other classes in various ways. Moreover, the end 
  933. result is the creation of more objects and classes, allowing further 
  934. reusability still.
  935.  
  936. 2.5  Inheritance
  937.  
  938. One of the ways we deal with thereal world is by organising objects with 
  939. similar operations and behaviour into classes.  As discussed above, 
  940. simple classification cannot always adequately represent the necessary 
  941. complexities. One such situation occurs when there are objects that do 
  942. seem to belong in a class, except for some specialised operations and 
  943. behaviour. In the real world this leads to taxonomical hierarchies,with a 
  944. general category at the top which is then divided and sub-divided into 
  945. increasingly specialised cases.
  946.  
  947. In OOP, this kind of classification hierarchy is usually represented 
  948. directly with inheritance. This is undoubtably the most celebrated 
  949. mechanism in OOP languages,but also the most misunderstood.
  950.  
  951. The main idea is that object of a more specialised class inherits the 
  952. operations and behaviour and operations of a more basic class.  The 
  953. usual claim is that this is a big advantage because it involves
  954. reusing the operations and behaviour of the base class. It does involves 
  955. reusing the base class, but it is not a big advantage.  After all, the base 
  956. class can be reused perfectly well by using composition.  For example, a 
  957. manager might be regarded as having a component that is an employee.
  958.  
  959. The real advantage of inheritance is gained because the new class 
  960. conforms to the interface of the base class. That is: any place an object 
  961. of the base class can be used,an object of the specialised class can too. 
  962. Accordingly,any context code that takes objects of the base class can also 
  963. be used with objects of the specialised class. For example, if a manager is 
  964. regarded as a specialised form of employee, any program that uses 
  965. employees will also work with managers. This is the real advantage of 
  966. inheritance: it makes the context code reusable.
  967.  
  968. Some OOP discussion distinguishes inheritance and polymorphism.  
  969. Inheritance can mean that objects of the specialised class conform to the 
  970. base class interface in a primitive way by ignoring any specialised 
  971. behaviour. Polymorphism then implies the extra step, where specialised 
  972. objects conform to the base class interface,but retain their specialised 
  973. behaviour.  The nature of the advantage is the same flexibility in both 
  974. cases, simply allowing lesser or greater reusability of the context code.
  975.  
  976. Inheritance and polymorphism are used to represent classification 
  977. hierarchies in the application domain, but can also play a role in 
  978. program organisation.  Where a class of objects may have several 
  979. different implementations, they can be regarded as specialised cases of 
  980. an abstractclass.  The abstract class itself has no behaviour, but specifies 
  981. an interface to which inheriting classes conform. The advantage is that 
  982. context code may then be written in terms of the abstract class, and then 
  983. used with any inheriting class. In this way the context code will be 
  984. reusable with any implementation of the class,even if several 
  985. implementations are used within one program. Abstract classes are also 
  986. the basis of Object-Oriented Frameworks [9]. In this approach, a high-
  987. level design is written as a program that consists only of abstract classes, 
  988. and the design is applied to particular situations by providing 
  989. implementations of the abstract classes. In this way the advantages of 
  990. reusability can be extended to the program design level, as well as the 
  991. program implementation level.
  992.  
  993. 2.6  OOP and Reusability Support
  994.  
  995. Earlier we outlined our working model for reusability support. In these 
  996. terms,the key features of OOP can be described as follows:
  997.  
  998. Encapsulation: ensures safety of connecting context and component, so 
  999. ensuring both are reusable elsewhere.
  1000.  
  1001. Composition:  allows generality in object implementation contexts, so 
  1002. that the context is reusable with other component implementations, and 
  1003. equivalently that components may be reusable with various contexts.
  1004.  
  1005. Inheritance: enables flexibility of coupling context and component, so 
  1006. that the context may be reusable with components of conforming 
  1007. interfaces.
  1008.  
  1009. These relationships between OOPand reusability have some important 
  1010. implications for object-oriented design. Most importantly,program 
  1011. designers hoping to achieve reusability must understand how OOP can 
  1012. help deliver it. The process of object-oriented design is largely one of 
  1013. class identification and class organisation. At any point in the design,it 
  1014. is reasonable to consider whether, and how well, the reusability caters for 
  1015. future reuse.
  1016.  
  1017. In particular,there are significant implications of our observations about 
  1018. inheritance and reusability. Because inheritance supports reusability of 
  1019. context code, programmers should take care to design context code to 
  1020. take advantage of this support, and thus facilitate later reuse. We believe 
  1021. this is the major implication of inheritance for program designers, but 
  1022. also suspect it is not widely understood.
  1023.  
  1024. Throughout the design process, understanding how OOP can deliver 
  1025. reusability will can illuminate attractive options, and help lead to 
  1026. success.
  1027.  
  1028. 3   Comparison
  1029.  
  1030. While there have been a number of discussions on reusability, very few 
  1031. consider the impact of language features on the reusability of software. 
  1032. Those that do tend to blur the distinction between reuse of software and 
  1033. reusability of software, often using both concepts in the same sentence as 
  1034. if they are synonyms [1, 10].  As a consequence,any comments that do 
  1035. pertain to reusability are overlooked.
  1036.  
  1037. Although the distinction between software reuse and reusable software is 
  1038. often confused, it is generally accepted that effort must be made in the 
  1039. creation of code if it is to be made easier to reuse. This is generally 
  1040. referred to as "design for reuse". Such discussions tend to focus on 
  1041. general advice and heuristics for making classes more reusable[9] or 
  1042. higher-level class organizations that have been found to have been useful 
  1043. in the past [11]. Other efforts such as the "adaptive software"
  1044. approach [12] support reusability with strategies and tools that use 
  1045. structures within the code, but that work at a level above the code. 
  1046. While all these approaches are important, and offer significant assistance 
  1047. in the creation of reusable code,in our own work we have been primarily 
  1048. concerned with support at the programming language level.
  1049.  
  1050. References
  1051.  
  1052.  [1]B. Meyer,"Reusability: the case for object-oriented design," IEEE 
  1053. Software , pp. 50-64, Mar. 1987.
  1054.  
  1055.  [2]W. Frakes and S. Isoda, "Success factors for systematic reuse," 
  1056. IEEESoftware, pp. 14-22, September1994.
  1057.  
  1058.  [3]I. Software, "Special issue on systematic reuse," September 1994.
  1059.  
  1060.  [4]T. J. Biggerstaff and A. J. Perlis, eds., Software Reusability, vol. 1. New
  1061.   York: ACM Press, 1989.
  1062.  
  1063.  [5]B. Meyer,"Genericity versus inheritance," in 1986 Object-Oriented 
  1064. Programming Systems, Languages, and Applications Conference 
  1065. Proceedings (N. Meyrowitz, ed.), pp. 291-405, Oct. 1986. Published as 
  1066. ACM SIGPLAN Notices, 21(11), November 1986.
  1067.  
  1068.  [6]P.Andreae, R. Biddle, and E. Tempero, "Understanding code 
  1069. reusability:Experience with C and C++," New Zealand Journal of 
  1070. Computing, vol. 5, pp. 23-38, Dec. 1994.
  1071.  
  1072.  [7]R. Biddle, E. Tempero, and P. Andreae, "Object oriented programming 
  1073. and reusability," Tech. Rep. CS-TR-95/6, Victoria University of 
  1074. Wellington, 1995.
  1075.  
  1076.  [8]R. Biddle and E. Tempero, "Reusability and inheritance," Tech. Rep. 
  1077. CS-TR-95/8, Victoria University of Wellington, 1995.
  1078.  
  1079.  [9]R. E. Johnson and B. Foote, "Designing reusable classes," Journal of 
  1080. Object-Oriented Programming, June/July 1988.
  1081.  
  1082. [10]J. Micallef, "Encapsulation, reusability and extensibility in object-
  1083. oriented programming languages," Journal of Object-Oriented 
  1084. Programming, pp. 12-36, April/May 1988.
  1085.  
  1086. [11]E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: 
  1087. Elements of Reusable Object-Oriented Software. Addison-Wesley 
  1088. Professional Computing Series,Addison-Wesley, 1995.
  1089.  
  1090. [12]K. J. Lieberherr,I. Silva-Lepe, and C. Xiao, "Adaptive object-oriented 
  1091. programming using graph-based customization," Communications of the 
  1092. ACM, pp. 94-101, May 1994.
  1093.  
  1094. 4   Biographies
  1095.  
  1096. Robert Biddle is a faculty member in the Computer Science department 
  1097. of Victoria University of Wellington,New Zealand. He is involved in 
  1098. research on software reusability,distributed systems management, and 
  1099. mathematics education.  He teaches courses on object-oriented 
  1100. programming, and human-computer interaction. He received a Ph.D. in 
  1101. Computer Science in 1987 from the University of Canterbury in 
  1102. NewZealand; previously he received B.Math and M.Math degrees from the 
  1103. University of Waterloo in Canada. He has also worked as a programmer 
  1104. for Bell Northern Research, Systems Dimensions, and the Government of 
  1105. Canada.
  1106.  
  1107. Ewan Tempero is a faculty member in the Computer Science of Victoria 
  1108. University of Wellington, New Zealand. His main research interest is 
  1109. examining how programming languages features affect the production of 
  1110. code. His current focus is the impact programming languages, 
  1111. particularly object-oriented languages,have on the reusability of the 
  1112. resulting code. He is also interestedin various aspects of distributed 
  1113. systems. He received a Ph.D.in Computer Science from the University of
  1114. Washington in 1990.
  1115. Second Order Reusable Libraries and Meta-Rules for Component 
  1116. Generation
  1117.  
  1118. Ted J. Biggerstaff
  1119.  
  1120. Microsoft Research
  1121. One Microsoft Way
  1122. Redmond, WA 98052-6399
  1123. Tel: (206) 936-5867
  1124. Email: tedb@microsoft.com
  1125.  
  1126. Abstract
  1127.  
  1128. I discuss the scaling limitations inherent in libraries of static 
  1129. reusable components and motivate the difficulties by an example. I 
  1130. suggest that these limitations are not solvable in the context of 
  1131. today╒s programming language representations. Finally, I propose a 
  1132. different kind of reuse library called a ╥second order reuse library.╙ 
  1133. Such libraries extend conventional libraries of static components by 
  1134. the addition of ╥meta-components╙ that transform the structure of 
  1135. the static components by introducing feature variations into the 
  1136. static components. I will argue that second order libraries can 
  1137. overcome the limitations inherent in conventional libraries of static, 
  1138. concrete components. Greater detail on the organizational 
  1139. characteristics required of such meta-components is provided  in 
  1140. Biggerstaff 94.
  1141.  
  1142. Keywords: Concrete components, repositories, limitations, payoff, 
  1143. scaling, generation, transformations.
  1144. Workshop Goals: To explore the notions of new representational 
  1145. abstractions for reuse components and the concomitant requirement 
  1146. for generative architectures to support those abstractions.
  1147. Working Groups: Domain analysis/engineering representations, or 
  1148. possibly reuse and OO methods and technology.
  1149.  
  1150. 1   Background
  1151.  
  1152. I organized the first workshop/conference on reuse in Newport, RI 
  1153. (1983). Since then, I have done research on reuse and related topics 
  1154. (e.g., design recovery) and this has resulted in a number of books, 
  1155. papers and systems. Most recently, I have been working in the area 
  1156. of representations that can enhance the reusability of components 
  1157. and yet allow most of the reuse to happen automatically. This work 
  1158. has led me to consider the limitations of the concrete representations 
  1159. (i.e., mainstream programming languages) for reusable components 
  1160. and to seek ways around the limitations they introduce. The concept 
  1161. of second order reuse libraries, which  include transformation-based 
  1162. components, arose from this work.
  1163.  
  1164. 2   Position
  1165. 2.1  Hypothesis
  1166.  
  1167. The first hypothesis of this paper is that structurally static reusable 
  1168. components (i.e., components that allow program construction only 
  1169. via the strategies of functional composition and forward refinement 
  1170. based on parametric substitution) are not adequate to solve the 
  1171. scaling problem [1,2]. As a consequence, classes, abstract classes, 
  1172. templates, and similar mechanisms are inadequate tools for 
  1173. developing reuse systems.  
  1174.  
  1175. The second hypothesis of this paper is that meta-components a.k.a. 
  1176. meta-rules1 (i.e., rules that transform and revise the design of static 
  1177. components) are required to overcome the scaling problem. The 
  1178. hallmark of a meta-rule, in addition to the fact that it revises the 
  1179. design of a static component, is that the operational logic of a meta-
  1180. rule may be based on design information that exists outside of the 
  1181. code proper, e.g., a property of a part of the application computation. 
  1182. Such design information might be derivable from the code but such 
  1183. derivations typically require a difficult process of inference and 
  1184. often require evidential reasoning (i.e., fuzzy reasoning) and 
  1185. guessing. A further hallmark is that the effect of meta-rules is often 
  1186. global across one or more components. 
  1187.  
  1188. I will use the term ╥Second Order Reuse System╙ for libraries that 
  1189. contain meta-rules in addition to static components2. By implication 
  1190. then, a ╥First Order Reuse System╙ is one that contains only static 
  1191. components -- components that can be composed and specialized but 
  1192. not architecturally revised in an automated fashion.
  1193.  
  1194. I will present a small example of the kind of structural revision 
  1195. typical of meta-rules to motivate the need for them and to illustrate 
  1196. their nature.
  1197.  
  1198. 2.2  Problems with composition of static components
  1199.  
  1200. Reuse systems that are based on static components rely on several 
  1201. mechanisms to create the structure of the resulting program:
  1202.  
  1203. Ñ Component composition: Large scale application program structures 
  1204. are formulated by the assembly of the static reusable components. 
  1205. This is the fundamental strategy for building up and enriching the 
  1206. structure of the target program.
  1207.  
  1208. Ñ Forward refinement: Forward refinement is a substitution-based 
  1209. strategy that rewrites the body of a component (e.g., a macro 
  1210. component or a template component) by substituting the 
  1211. component╒s arguments for references to the formal parameters 
  1212. within the body of the component. Forward refinement is often used 
  1213. to support component composition. In contrast to function calls, 
  1214. forward refinement typically happens before run time and alters the 
  1215. structure of the source program.
  1216.  
  1217. Ñ Specialization: Specialization reduces the generality of components 
  1218. by pruning parameters and paths on the basis of constant or known 
  1219. data values used within the program. An example of a type of 
  1220. specialization is currying functions based on knowing the data value 
  1221. of one of a function╒s parameters. Specialization is a kind of forward 
  1222. refinement that is also a highly constrained form of partial 
  1223. evaluation.
  1224.  
  1225. The key problem with first order reuse libraries is that all 
  1226. composition, refinement, and specialization activity is localized to 
  1227. predetermined areas of a target program. However, many design 
  1228. features that one would like to treat as separable components are 
  1229. global in their effect and transformational in their nature. That is, 
  1230. they are not static components that can be locally composed, refined, 
  1231. or specialized but rather they are second order components. They are 
  1232. operations on static components and very often their effects need to 
  1233. be felt globally over the whole target program. The exact range of 
  1234. their effect cannot be determined a priori but rather is often 
  1235. dependent on the structure of the application program in which they 
  1236. are used. They revise and modify basic static components to 
  1237. incorporate new feature variations and to coordinate global feature 
  1238. variations among the (often many) affected components. 
  1239.  
  1240. 2.3  An example of the problem
  1241.  
  1242. The need for meta-components is illustrated by the design of a 
  1243. hypothetical Integrated Development Environment (IDE3) which one 
  1244. might like to build from reusable parts. IDEs are evolving toward 
  1245. architectures that perform most of their operations (e.g., compiling or 
  1246. program revision) incrementally. This incrementality becomes more 
  1247. and more important as the size of the target programs (i.e., the 
  1248. programs developed using the IDE) grow larger and larger and the 
  1249. overhead associated with batch-oriented operations (e.g., compiling) 
  1250. becomes more and more onerous. Such incrementality forces 
  1251. customization of the IDEs╒ architectures and this customization 
  1252. introduces requirements for many variations of common static 
  1253. components, that is, combinatorially many variations of what is 
  1254. conceptually a single abstract component. The need for such 
  1255. variability makes it difficult for reuse libraries with static 
  1256. components to accommodate the resulting requirements without 
  1257. combinatorially exploding (i.e., providing a hand built reusable 
  1258. component variant for each combination of features that might be 
  1259. needed). The alternative to combinatorial explosion of the component 
  1260. library is a strategy that builds all of the feature variations into 
  1261. highly general components and requires run-time data to be used to 
  1262. sort out which pathways out of the complex warren of possible 
  1263. pathways are applicable to a specific application of the component. 
  1264. Thus, only a small portion of the features are required in any specific 
  1265. application context. These general components come with so much 
  1266. overhead baggage that their performance typically fails to meet the 
  1267. application requirements and with such mind numbing complexity 
  1268. that they are difficult to maintain and change. 
  1269.  
  1270. Neither of these options is acceptable. The software development 
  1271. organization is trapped between exploding growth of their 
  1272. component library and declining performance and maintainability of 
  1273. their target systems. I am claiming that the way out of this trap is to 
  1274. provide a small number of basic static components that capture the 
  1275. general abstractions to be reused and then add to those static 
  1276. components some meta-components (or meta-rules) that revise or 
  1277. massage the static components to include just those features that are 
  1278. needed for any given application context. 
  1279.  
  1280. Let us look at an example of one such feature variation and analyze 
  1281. the kind of meta-component needed to accommodate it. The 
  1282. following example illustrates a design feature that is motivated by 
  1283. IDE incrementality. This is only one of a large number of interacting 
  1284. features that are motivated by incrementality in IDEs. 
  1285.  
  1286. 
  1287.  
  1288. Figure 1 illustrates the kind of data structures typical of an IDE 
  1289. system. In this case, we have two pointer attributes -- Type and 
  1290. DeepType -- within the IDE data structures. These attributes 
  1291. reference remote parts of a target program. DeepType is the inferred, 
  1292. most basic type of the variable or expression to which it is 
  1293. associated. Type is the data type as declared by the user. Various 
  1294. parts of the IDE (e.g., the compiler subsystem and often the display 
  1295. subsystem) will need to use these and similar attributes. Further, the 
  1296. computation of such attributes for a large program is often 
  1297. computationally quite expensive. Therefore, they are often computed 
  1298. once and the values cached in data structures associated with the 
  1299. target variables or expressions. The algorithms for performing the 
  1300. costly operations (e.g., inferring the deep type from the surface type) 
  1301. are known and are likely to be components in a reusable library. 
  1302. However, a problem arises from using such components in the 
  1303. context of an incremental IDE system. Changes made interactively by 
  1304. the user from the IDE╒s editor (e.g., changing the foo typedef) may 
  1305. invalidate the cached value for DeepType attribute of the expression 
  1306. ╥x = a + b ;╙. 
  1307.  
  1308. Consider the following pseudo-code (a vast simplification of a real 
  1309. IDE design): 
  1310. 1. Infer type of operands and operator of current expression;
  1311. 2. Cache results in expression description;
  1312. 3.  .......
  1313. 4. Respond to user edit actions;
  1314. 5. Use expression type information to compile expression;
  1315.  
  1316. Steps 1 and 2 compute the DeepTypes and cache them. This is an 
  1317. expensive operation because it may have to chain through many 
  1318. levels of definitions. It is typically a batch oriented operation where 
  1319. the batch size may be a single function or a full .c file. Step 3 may 
  1320. potentially use the DeepType for some orthogonal purpose. For 
  1321. example, the display subsystem may use the DeepType information 
  1322. to compute display properties of certain kinds of program structures. 
  1323. Step 4 is the user interface subsystem and it services the user who 
  1324. may be using the editor to change the program. For example, the 
  1325. user might decide to change ╥typedef int foo╙ to ╥typedef double foo╙, 
  1326. which will invalidate the DeepType value for the expression ╥x = a + 
  1327. b ;╙.
  1328.  
  1329. Clearly, the design of this pseudo code (which ideally would be 
  1330. assembled from reusable components) has to be altered to 
  1331. accommodate this potential for invalidation of the deep type 
  1332. attributes and it must be altered in a coordinated and global manner. 
  1333. It is important to note that the property of whether or not deep 
  1334. types need to be recomputed in step 5 must be determined on the 
  1335. basis of the properties of steps 3 and 4 and these properties may be 
  1336. very difficult to determine in any automated way. In this case, 
  1337. recomputation is necessary. So, steps 1 through 5 must be revised (in 
  1338. a globally coordinated way) so that some logic is introduced to deal 
  1339. with the invalidation actions and then later, to recompute the deep 
  1340. type values when they are needed. There are a variety of designs 
  1341. (i.e., meta-rules) that might be chosen to perform this revision. For 
  1342. example, an invalidation field might be introduced at the item level, 
  1343. the function level, or the module level to indicate that the deep types 
  1344. must be recomputed. Similarly, depending upon how much work the 
  1345. invalidation code does to narrow down the specific entities that need 
  1346. to have their deep types recomputed, the actual deep type 
  1347. recomputation can have a broad range of complexity and 
  1348. computation costs. On the one hand, it can be fairly broad and 
  1349. include extra items whose deep type does not actually need to be 
  1350. recomputed in order to simplify the invalidation code. Alternatively, 
  1351. the recomputation code may be much more narrow and only expend 
  1352. computational resources where they are really needed, at the cost of 
  1353. greater complexity in the invalidation code. 
  1354.  
  1355. In general, the variety of invalidation designs is quite wide and often 
  1356. highly application specific. Consequently, it seems unlikely that any 
  1357. first order reuse library (i.e., one containing only static components) 
  1358. would be able to cope with the potential variety that might be 
  1359. needed. Further, the invalidation feature and its design variations 
  1360. are only one class of a variety of similar features that are motivated 
  1361. by IDEs that emphasize incrementalism. This rich variety lends even 
  1362. more weight to the argument that first order reuse libraries will not 
  1363. suffice to solve the library scaling problem.
  1364. 2.4  Conclusions
  1365.  
  1366. The conclusions from this line of reasoning are:
  1367.  
  1368. 1.    First order reuse libraries (i.e., those containing only static, 
  1369. concrete components) will fail to solve the scaling problem;
  1370. 2.    Programming constructs built in conventional languages (e.g., 
  1371. abstract classes, templates, etc.) will fail to solve the scaling problem; 
  1372. and
  1373. 3.    Second order reusable libraries will be required to solve this 
  1374. problem, i.e., libraries that provide the ability to write general 
  1375. transformations to manipulate the designs of the static components 
  1376. in ways that generate feature variations of the static, concrete 
  1377. components. 
  1378. 3  Comparison
  1379. Batory et al and Neighbors [1,3] have both effectively created second 
  1380. order reuse libraries with each having slightly differing emphases. 
  1381. See Biggerstaff 94 [2] for a more detailed comparison. Similarly, 
  1382. Kiczales et al 91 [4] have in effect produced a mechanism that is 
  1383. capable of being applied to the creation of second order reuse 
  1384. libraries. The emphasis of their research, however, is focused more 
  1385. on allowing clean, simple abstractions without paying the price of the 
  1386. implementation inefficiency that often accompanies such 
  1387. abstractions. Their technique is to open up the implementation of the 
  1388. compiler and allow the user to engineer high performance 
  1389. implementations based on his special knowledge of his application 
  1390. context. 
  1391. References
  1392.  
  1393. [1]    Batory, D., Singhal, V., Sirkin, M. and Thomas, J. ╥Scalable 
  1394. Software Libraries.╙ Symposium on the Foundations of Software 
  1395. Engineering. Los Angeles, CA, December, 1993.
  1396.  
  1397. [2]    Biggerstaff. T.╥The Library Scaling Problem and the Limits of 
  1398. Concrete Component Reuse,╙ Third International Conference on 
  1399. Software Reuse, November, 1994, Rio de Janeiro, Brazil.
  1400.  
  1401. [3]    Neighbors, J.M. Software Construction Using Components, PhD 
  1402. Dissertation, University of California, Irvine, CA, 1980.
  1403.  
  1404. [4]    Kiczales, G., des Rivieres, J. and Daniel G. Bobrow, The Art of the 
  1405. Metaoject Protocol, MIT Press, 1991.
  1406.  
  1407. Biography
  1408.  
  1409. Ted J. Biggerstaff is Research Program Manager of the Intentional 
  1410. Programming Project at Microsoft Research Laboratories. He is 
  1411. responsible for exploring ways of enhancing reuse capabilities of 
  1412. application development. Before coming to Microsoft, he was Director 
  1413. of Design Information at MCC where he led the research and 
  1414. development of the DESIRE design recovery system. Before that, he 
  1415. worked for ITT's programming laboratory (on reuse) and Boeing 
  1416. Computer Service's Advanced Technology and Application Division 
  1417. (on CASE tools). He received a Ph.D. in Computer Science from the 
  1418. University of Washington in 1976. He is a member of ACM, IEEE 
  1419. Computer Society, IEEE Software magazine Industrial Advisory 
  1420. Board, and the Washington Technology Center Software Review 
  1421. Board.
  1422.  
  1423. 1 I will call these components meta-components when I wish to 
  1424. emphasize their component-oriented role in reuse and meta-rules 
  1425. when I wish to emphasize their operational behavior.
  1426. 2 For abstractly similar ideas, see [4].
  1427. 3 IDEs minimally contain an editor, compiler, and debugger. An 
  1428. example of an IDE is Microsoft╒s VC++.
  1429.  
  1430. RAMP: A Reusable Application Module Process
  1431.  
  1432. Eric W. Booth
  1433.  
  1434. Computer Sciences Corporation
  1435. System Sciences Division
  1436. 7700 Hubble Drive
  1437. Lanham-Seabrook, Maryland 20706
  1438. Tel: (301) 794-2013
  1439.  Fax: (301) 794-2280
  1440. Email:  ebooth@csc.com
  1441.  
  1442. Abstract
  1443. Introducing systematic software reuse into the software engineering 
  1444. process often conflicts with the primary driver of delivering the current 
  1445. system on schedule and within budget. Developing for reuse can 
  1446. lengthen the schedule and increases the cost in the short term. However, 
  1447. until making this up-front investment, an organization cannot realize 
  1448. the schedule and budget benefits of developing with reuse. Resolving this 
  1449. conflict requires changing the traditional view of the software 
  1450. engineering to facilitate the development and evolution of what we call 
  1451. Reusable Application Modules, or RAMs. 
  1452.  
  1453. This paper presents CSC╒s RAM Process (RAMP) which is based on the best 
  1454. practices among System Sciences Division╒s most successful reuse projects 
  1455. and on the current research and development that is taking place 
  1456. throughout the software reuse community.
  1457.  
  1458. Keywords: process, software engineering, life cycle
  1459.  
  1460. Workshop Goals: to discuss current reuse technology trends with 
  1461. researchers (particularly in the area of generative systems) and to share 
  1462. technology transition and insertion experiences with researchers and 
  1463. fellow practitioners.
  1464.  
  1465. Workshop Groups: reuse process models, product-line development, 
  1466. institutionalizing reuse, generative reuse systems
  1467.  
  1468. 1 Background
  1469. As a practitioner involved in software reuse technology transfer and 
  1470. insertion, I have taken part in and observed several software reuse efforts 
  1471. throughout Computer Sciences Corporation (CSC) System Sciences 
  1472. Division (SSD). We document each reuse success in papers, history 
  1473. reports, and corporate reprints. However, to be useful for future projects, 
  1474. a reuse guidebook, capturing the best practices and outlining a 
  1475. comprehensive process model was required. CSC/SSD sponsored a multi-
  1476. year IR&D effort, combining our reuse ╥best practices╙ with the promising 
  1477. reuse research into, Systematic Software Reuse: A Guidebook for 
  1478. Developing Cost Effective Systems [1]. This position paper summarizes 
  1479. one aspect of CSC╒s guidebook: the Reusable Application Module Process 
  1480. (RAMP) model, comprising three separate, parallel disciplines: domain 
  1481. engineering, library management, and application engineering.
  1482.  
  1483.  
  1484. CSC╒s RAMP Model: A Systematic Software Reuse Process
  1485.  
  1486. 2 Position: RAMP Overview
  1487.  
  1488. CSC╒s RAMP model provides a framework for planning and managing the 
  1489. parallel domain engineering and library management activities in 
  1490. addition to the more standard application engineering activity. This 
  1491. framework identifies and relates the objectives, activities, and products 
  1492. among the three parallel disciplines. RAMP identifies the major technical 
  1493. activities involved in implementing a systematic software reuse program 
  1494. and provides a list of typical products from each activity. RAMP also 
  1495. provides some flexibility in selecting how each activity is accomplished, 
  1496. based on the availability of legacy systems, domain experts, reuse process 
  1497. experts, and schedule constraints. The choices of methods, tools, and 
  1498. products are specified as part of a plan developed during context 
  1499. analysis.
  1500.  
  1501. 2.1  Domain Engineering
  1502.  
  1503. The focus of domain engineer-ing is much broader than application 
  1504. engineering, encom-passing families of systems and multiple clients. 
  1505. Individual clients typically are unwilling to incur the overhead of 
  1506. creating a general solution; however, they usually are willing to reap the 
  1507. benefits of domain engineering (e.g., meeting 95% of their requirements 
  1508. at 50% of the cost). Organizations can accom-plish this through 
  1509. investment within specific business areas. However, systems may be large 
  1510. and complex and the investment can be both high-cost and long-term. 
  1511. High-investment and long----term return translate into high risk. Therefore, 
  1512. domain engineering may be funded separate from application 
  1513. engineering and the risk mitigated by adopting an evolutionary 
  1514. approach to establishing a domain engineering capability.
  1515.  
  1516. Domain engineering , a term gaining acceptance in the industry, is a life 
  1517. cycle process for evaluating current systems and determining the 
  1518. potential for creating reusable assets.  The adoption of the term domain 
  1519. engineering is the result of an expanding definition for the original term 
  1520. domain analysis.  Domain analysis methods have expanded to include 
  1521. various levels of detail and different software life cycle activities.  Some 
  1522. definitions of domain analysis include aspects of domain requirements 
  1523. definition, requirements analysis, and the creation of a generic design.  
  1524. Other domain analysis methods even include domain implementation 
  1525. as a validation activity.Therefore, the preferred term domain engineering 
  1526. (DE) encompasses all life cycle activities associated with evaluating, 
  1527. selecting, or creating reusable assets:
  1528.  
  1529. ß    Context AnalysisDefines the domain or business area of interest, 
  1530. collect collect (and possibly improve upon) available resources related to 
  1531. the domain, and plan the overall domain engineeringDE effort.
  1532.  
  1533. ß    Domain AnalysisDefine the features and capabilities of a class of 
  1534. related software systems, within the domain, and develop a general set of 
  1535. requirements for the ╥product family.╙1 The requirements are described 
  1536. with special consideration of the commonality between systems and the 
  1537. variability among systems.
  1538.  
  1539. ß    Domain DesignDefine the generic design(s) or software 
  1540. architecture(s) of a family of systems within the domain, called domain-
  1541. specific software architecture(s)s (DSSA). This activity defines static and 
  1542. dynamic properties, component architecture, and interconnection 
  1543. protocols.
  1544.  
  1545. ß    Domain ImplementationCreate reusable source code level assets by 
  1546. translating generic requirements, into a solution that fits into the 
  1547. framework of one or more DSSAs. This entails mapping the domain 
  1548. language into a form that implements a DSSA. It is important to note 
  1549. that the ╥reusable source code level assets╙ may comprise a translator or 
  1550. generator that that embodies knowledge of the DSSA and translates the 
  1551. abstract domain language to the concrete third-generation language [2].
  1552.  
  1553. ß    Asset TestingEvaluate if the product is right (based on previous 
  1554. domain products) and if it is the right product (based on domain, 
  1555. business needs, and user requirements).
  1556.  
  1557. 2.2  Library Management
  1558.  
  1559. Library management is the process of growing an asset (or product) 
  1560. library and the process of tracking, evaluating, and maintaining a 
  1561. collection of assets, or a product line. There is a tight interaction 
  1562. between the domain engineering and library management efforts. For 
  1563. each library management effort there are several active application 
  1564. engineering projects.
  1565.  
  1566. While library management is an important aspect of RAMP, it is 
  1567. important to emphasize that libraries are not the reuse solution, rather 
  1568. they are an important component of a systematic reuse program. It is 
  1569. possible to have an effective reuse program, which produces a substantial 
  1570. return on investment, with relatively few numbers of components and 
  1571. without any sophisticated automated library tools. The important 
  1572. ingredients for success are targeting what goes into a library and how the 
  1573. library╒s contents are used. Producing a reuse library is a worthless 
  1574. investment, unless there has been an accompanying change in the 
  1575. management and technical culture which makes the use of the library 
  1576. an integral part of the software development process.
  1577.  
  1578. The library management effort is an iterative process, applied across 
  1579. domain engineering products. The library management activities are 
  1580. grouped into a 3-P model2:
  1581.  
  1582. ß    PopulatingControl what goes in the library. This includes defining 
  1583. the process of how assets are selected for inclusion into (or removal 
  1584. from) the library.
  1585.  
  1586. ß    PublishingControl what is allowed out of the library, but also to 
  1587. ±sellε the assets to the consumers. This includes establishing an efficient 
  1588. capability for the consumer to locate, evaluate, and retrieve the 
  1589. necessary assets and related information. 
  1590.  
  1591. ß    PolishingControl what (and how) changes are made to the assets 
  1592. and to the library tool(s). This process must include the continual 
  1593. evaluation of strategic goals and the impact of change on multiple 
  1594. application engineering systems, to assure that the library and its 
  1595. management system can adapt quickly to a changing business 
  1596. environment.
  1597.  
  1598. 2.3  Application Engineering
  1599.  
  1600. Application engineering is the term used to describe the typical software 
  1601. development process that is evolving to incorporate the increasing levels 
  1602. and the expanding scope of software reuse. The application engineering 
  1603. life cycle is the process of composing, generating, operating, and 
  1604. maintaining a software system from an existing base of reusable assets. 
  1605. Software systems, or applications, are engineered in the context of a 
  1606. domain to satisfy a specific client═s need.
  1607.  
  1608. Two key reuse activities are consumption of reuse assets and the 
  1609. identification of new assets that are candidates for reuse. Assets from one 
  1610. or more libraries are consumed throughout the application engineering 
  1611. life cycle. Reuse consumption is composing or generating one system 
  1612. with assets, in contrast to domain engineering that is building assets for 
  1613. multiple systems. Reuse identification occurs when assets are unavailable 
  1614. to meet a client requirement. This systematic reuse consumption and 
  1615. identification changes the roles, activities, inputs, constraints, and 
  1616. products for each activity of the traditional software engineering life 
  1617. cycle:
  1618.  
  1619. ß    System Requirements Definition and DesignDetermine if the system 
  1620. is within an established domain, select a discrete set of requirements 
  1621. from the domain model which represent a client═s needs, and allocate 
  1622. those requirements to application components based on a domain 
  1623. specific system architecture. Any deficiencies in the domain model are 
  1624. identified.
  1625.  
  1626. ß    Software Requirements DefinitionFocus is on the requirements new 
  1627. to the domain model and derive project specific software requirements 
  1628. specifications for each new application component.
  1629.  
  1630. ß    Software DesignSelect a DSSA, identify the software components, 
  1631. interfaces, and relationships necessary to satisfy the system requirements 
  1632. and specifications.
  1633.  
  1634. ß    Software ImplementationTranslate the instantiation of a generic 
  1635. software architecture into executable code (a high-order language (HOL), 
  1636. Fourth Generation Language (4GL), or other executable solution) and to 
  1637. perform initial testing.
  1638.  
  1639. ß    Software and System TestFormally verify each component, 
  1640. subsystem, and the overall system against the software and system 
  1641. requirements.
  1642.  
  1643. 2.4  RAMP Model Summary
  1644.  
  1645. In software engineering, maintenance is historically defined as ±all the 
  1646. other previous activities repeated.ε In this sense the RAMP model more 
  1647. closely resembles software maintenance rather than software 
  1648. development. However, RAMP introduces a key change in the process. 
  1649. Traditional software development and maintenance are project or 
  1650. system oriented; that is, the activity is focused on one instance of a 
  1651. system. RAMP is concerned with developing and maintaining a class of 
  1652. systems within a targeted domain. As such RAMP is fundamentally 
  1653. different from both the traditional development and maintenance 
  1654. processes.
  1655.  
  1656. 3  Comparison
  1657.  
  1658. This view of a systematic software reuse process is an aggregation and 
  1659. organization of methods and techniques developed in the reuse 
  1660. community and employed on projects in SSD. For example, we have used 
  1661. elements of Feature-Oriented Domain Analysis (FODA) [3] for domain 
  1662. engineering, the Basic Interoperability Data Model [4] for library 
  1663. management,  and concepts from DRACO [5] for application generation. 
  1664. These are methods which may be employed within the context of a 
  1665. systematic software reuse process. The two activities that RAMP effort 
  1666. most closely resembles are the SEI╒s Model-Based Software Engineering 
  1667. (MBSE) [6] and the STARS Conceptual Framework for Reuse Processes [7]. 
  1668.  
  1669. References
  1670.  
  1671. [1]    Booth, E.W. and Bowen, G.M, Systematic Software Reuse: Guide To 
  1672. Building Cost Effective Systems, internal publication, Computer Sciences 
  1673. Corporation, 1995.
  1674. [2]    Biggerstaff, T.J., ╥The Limits of Concrete Component Reuse,╙ 
  1675. Proceedings of the Sixth Annual Workshop on Software Reuse, Owego, NY, 
  1676. Nov. 1993. 
  1677. [3]    Kang, K.C., Cohen, S.G., Hess, J.A., Novak, W.E, and Peterson, A.S., 
  1678. Feature-Oriented Domain Analysis (FODA) Feasibility Study, Technical 
  1679. Report CMU/SEI-90-TR-21, November 1990.
  1680. [4]    Hobbs, E.T., et al., A Basic Interoperability Data Model for Reuse 
  1681. Libraries (BIDM),  Reuse Library Interoperability Group, IEEE Standards 
  1682. Committee, P1420.2 Software Reuse, April 1993.
  1683. [5]    Neighbors, J. M., ╥DRACO: A Method for Engineering Reusable 
  1684. Software Systems,╙ Software Reusability, eds.: T. Biggerstaff and A. Perlis, 
  1685. ACM, New York, NY, 1989, pp. 295-320.
  1686. [6]    Withey, J.V., Model-Based Software Engineering (MBSE) Draft, 
  1687. Technical Report CMU/SEI-93-TR-xx, Software Engineering Institute, 
  1688. November 1993.
  1689. [7]    Creps, D., STARS Conceptual Framework for Reuse Processes (CRFP) 
  1690. Volume I: Definition Version 3.0, Unisys STARS Technical Report STARS-
  1691. VC-A018/001/00, October 1993.
  1692.  
  1693. Biography
  1694.  
  1695. Mr. Booth is a Senior Computer Scientist at CSC in the Applied 
  1696. Technology Department supporting the NASA╒s Data Systems Technology 
  1697. Division's Reusable Software Library project. He works closely with SSD 
  1698. Software Process Improvement Center and CSC Corporate Technology 
  1699. Center to define, train, and transition systematic software reuse into 
  1700. CSC╒s process. Prior to his current assignment, Mr. Booth's responsibilities 
  1701. have included software development on NASA space applications, 
  1702. including satellite simulators, where he developed a DSSA, a domain-
  1703. specific specification language, and an application generator. Mr. Booth 
  1704. received his MS in Computer Science from Johns Hopkins University.
  1705.  
  1706. 1 A product family is used here to refer to a set of systems which are 
  1707. logically the same, but differ in order to meet specific user requirements 
  1708. (cost, configurations, country, regulations, size, safety, or other 
  1709. differentiating factors).
  1710. 2 The 3-P model is an instance of the class of all 3-character models.
  1711.  
  1712. Software Reuse in High Performance Computing
  1713.  
  1714. Shirley Browne
  1715.  
  1716. University of Tennessee
  1717. 107 Ayres Hall
  1718. Knoxville, TN 37996-1301
  1719. Tel: (615)974-5886
  1720. Fax: (615) 974-8296
  1721. Email: browne@cs.utk.edu
  1722.  
  1723. Jacki Dongarra
  1724.  
  1725. University of Tennessee and Oak Ridge National Laboratory
  1726. Email: dongarra@cs.utk.edu
  1727.  
  1728. Geoffrey Fox
  1729.  
  1730. Syracuse University
  1731. Email: gcf@npac.syr.edu
  1732.  
  1733. Ken Hawick
  1734.  
  1735. Syracuse University
  1736. Email: hawick@npac.syr.edu
  1737.  
  1738. Tom Rowan
  1739.  
  1740. University of Tennessee and Oak Ridge National Laboratory
  1741. Email: rowan@msr.epm.ornl.gov
  1742.  
  1743. Abstract
  1744.  
  1745. Although high performance computingarchitectures in the form of 
  1746. distributed memory multiprocessors have become available, these 
  1747. machines have not achieved widespread use outside of academic 
  1748. research environments. The slowness in adopting high performance 
  1749. architectures appears to be caused by the difficulty and cost of 
  1750. programming applications to run on these machines. Economical use of 
  1751. high performance computing and subsequent adoption by industry will 
  1752. only occur if widespread reuse of application code can be achieved. To 
  1753. accomplish this goal, we propose strategies for achieving reuse of 
  1754. application code across different machine architectures and for using 
  1755. portable reusable components as building blocks for applications.
  1756.  
  1757. Keywords: high performance computing, parallel and distributed 
  1758. computation, linear algebra, distributed memory multiprocessor
  1759.  
  1760. Workshop Goals: Advance state of reuse of parallel software
  1761.  
  1762. Working Groups: Tools and environments, Education
  1763.  
  1764. 1   Background
  1765.  
  1766. We have been involved in the development of the Netlib mathematical 
  1767. software repository (http://www.netlib.org) and of much of the reusable 
  1768. software available from Netlib and the National HPCC Software Exchange 
  1769. (NHSE) (http://www.netlib.org/nse/).  The NHSE is a recent effort to 
  1770. construct a distributed virtual repository of all the software produced by 
  1771. the High Performance Computing and Communications (HPCC) program. 
  1772. As part of the NHSE, we have developed the InfoMall technology transfer 
  1773. program (http://www.infomall.org/) which identifies reusable HPCC 
  1774. technologies and makes them available to industry. In the area of 
  1775. parallel computing, we have carried out pioneering work in 
  1776. programming applications on parallel computers and in determining 
  1777. how to make the resulting codes portable across different parallel 
  1778. architectures.
  1779.  
  1780. 2   Position
  1781.  
  1782. High performance computing involvesthe use of parallel computing 
  1783. systems to solve computationally intensive applications. Some of these 
  1784. applications, termed Grand Challenges, address fundamental problems 
  1785. in science and engineering that have broad economic and scientific 
  1786. impact.  Examples include global climate modeling,materials simulation 
  1787. at the molecular level, coupled structural and airflow simulation for 
  1788. aircraft, and mapping of the human genome. The computational 
  1789. requirements of these problems have pushed the physical limits of how 
  1790. fast processors can operate and have focused effort on increasing the 
  1791. number of processors in a multiprocessor.  Consequently, emphasis is 
  1792. being placed on developing parallel algorithms and software that are 
  1793. scalable,meaning that they continue to perform their tasks efficiently as 
  1794. the number of processors is increased.
  1795.  
  1796. Parallel computing will realize its full potential only if it is accepted and 
  1797. adopted in the real world of industrial applications. Cost-effective 
  1798. parallel computing will require that the specialized hand coding of 
  1799. parallel programs gives way to widespread reuse of parallel software.  
  1800. Although specialized hand coding can achieve peak performance on 
  1801. thetarget architecture, a small loss in performance will be acceptable to 
  1802. achieve a more productive software development environment.
  1803.  
  1804. Reuse of parallel software involves the following aspects:
  1805.  
  1806. Portability and scalability of application codes.  Because writing parallel 
  1807. programs requires substantial effort and investment, it is unacceptable 
  1808. to rewrite for every current and future parallel architecture. Code that is 
  1809. portable and scalable, however, will run with high efficiency on almost 
  1810. all current and anticipated future parallel architectures.
  1811.  
  1812. Use of fundamental building blocks. A large number of scientific and 
  1813. engineering applications rely heavily on a small core of linear algebra 
  1814. routines. Scalable, portable, efficient, and easy-to-use versions of these 
  1815. routines will provide the fundamental building blocks for applications.
  1816.  
  1817. We propose a strategy for promoting software reuse in high performance 
  1818. computing that includes the following components:
  1819.  
  1820. 1. A classification scheme for applications thatmaps an application to a 
  1821. problem class, rather than to a machine architecture, and the 
  1822. development of high level software systems based on this classification.
  1823.  
  1824. Fox, together with other researchers,has developed a classification scheme 
  1825. for applications that includes the categories synchronous, 
  1826. looselysynchronous, asynchronous, and embarrassingly parallel [1]. After 
  1827. a developer maps an application to a particular class, he should express 
  1828. that application in a programming language that has features optimized 
  1829. for that class, rather than for a particular machine architecture. Using a 
  1830. language such as Fortran 77 or C enhanced with message-passing 
  1831. obscures the parallelism that is inherent in a problem. Expressing a 
  1832. problem in a parallel language that is nearer the problem than to the 
  1833. target machine automatically enhances reuse because the resulting 
  1834. program may be more easily ported to a variety of parallel machines.
  1835.  
  1836. 2. Development of high-level parallel languages for writing scalable, 
  1837. portable code.
  1838.  
  1839. High Performance Fortran (HPF) [2] has been agreed on as a new industry 
  1840. standard data parallel language. The synchronous and embarrassingly 
  1841. parallel application classes may be expressed straightforwardly in HPF. 
  1842. Researchers are working on extensions to HPF to handle the irregular 
  1843. structure of loosely synchronous problems[3]. HPF compilers will be able 
  1844. to obtain good performance for the same code on a variety of parallel 
  1845. architectures [4]. Asynchronous problems cannot be expressed in a data 
  1846. parallel language and will require different algorithmic and software 
  1847. support built on top of message passing.
  1848.  
  1849. 3. Adoption of the Message Passing Interface (MPI) portable message-
  1850. passing standard.
  1851.  
  1852. The MPI standard defines the syntax and semantics for a core of library 
  1853. routines useful for writing portable message-passing programs in Fortran 
  1854. 77 or C [5].  MPI forms a possible target for compilers of high-level 
  1855. languages such as HPF.
  1856.  
  1857. 4. Development of a scalable linear algebra library for distributed 
  1858. memory multiprocessors.
  1859.  
  1860. Researchers led by Jack Dongarra at the University of Tennessee are 
  1861. developing the ScaLAPACK library of subroutines for performing linear 
  1862. algebra computations on distributed memory multiprocessors [6, 7]. 
  1863. When completed the library will contain subroutines for performing 
  1864. dense, banded, and sparse matrix computations. Among the important 
  1865. design goals are scalability, portability,flexibility,and easy of use. All 
  1866. communication in a ScaLAPACK library routine is handled within the 
  1867. distributed Level 3 Basic Linear Algebra Subroutines (BLAS) and the Basic 
  1868. Linear Algebra Communication Subroutines (BLACS), so that the user is 
  1869. isolated from the details of the parallel implementation. Specially 
  1870. tunedversions of the BLAS and the BLACS may be implemented by the 
  1871. manufacturer of a parallel architecture to achieve near peak 
  1872. performance for matrix computations.
  1873.  
  1874. 5.Dissemination of software and information related to high 
  1875. performance computing via the National HPCC Software Exchange 
  1876. (HPCC).
  1877.  
  1878. The NHSE has a software submission and review procedure that classifies 
  1879. software submissions and evaluates them according to a set of criteria 
  1880. that includes scope, completeness, documentation, construction, 
  1881. correctness, soundness, usability, and efficiency [8]. Roadmaps to HPCC 
  1882. software and technologies are being developed that will assist the user in 
  1883. locating and understanding relevant reusable components. For 
  1884. example,a roadmap that illustrates the use and application of the High 
  1885. Performance Fortran (HPF)language has been developed 
  1886. (http://www.npac.syr.edu/hpfa/).  Educational and technology transfer 
  1887. materials and activities are also being undertaken by the NHSE.
  1888.  
  1889. 3   Comparison
  1890.  
  1891. The Archetype Working Groupat CalTech 
  1892. (http://www.etext.caltech.edu/) is developing a library of parallel 
  1893. program archetypes with the aim of reducing the effort required to 
  1894. produce correct and efficient parallel programs. A parallel program 
  1895. archetype is a program design strategy appropriate for a restricted class 
  1896. of problems. The design strategy includes the software architecture for 
  1897. the problem class, archetype-specific information about how to derive a 
  1898. program from its specification,methods of reasoning about correctness 
  1899. and performance, suggestions for test suites, and suggestions for 
  1900. performance tuning on different architectures. An archetype identifies 
  1901. the common computational and communication structures of a class of 
  1902. problems and provides development methods specific to those 
  1903. structures. So far archetypes have been developed for mesh 
  1904. computations and for spectral methods. Archetypes are proposed as an 
  1905. alternative to reuse libraries. The Archetype Group argues that reuse 
  1906. libraries are inadequate for parallel programming because they are 
  1907. language and run-time system specific and because of difficulties with 
  1908. parallel composition of library procedures. Our approach has been to 
  1909. develop portable subroutine libraries in Fortran,which is the 
  1910. predominant programming languagefor scientific computing, and to 
  1911. isolate the applications programmer from the details of the parallel 
  1912. implementation.
  1913.  
  1914. The High Performance C++ (HPC++) project is attempting to extend 
  1915. industry stand ard object oriented software ideas to the world of 
  1916. massively parallel computing 
  1917. (http://www.extreme.indiana.edu/hpc++/index.html).  Parallel 
  1918. extensionsto the C ++ programming language include pC++, a data 
  1919. parallel programming language that combines HPF style programming 
  1920. with object oriented techniques, and CC++, a task parallel extension to 
  1921. C++ suited to both distributed and parallel applications. The HPC++ 
  1922. project is also working to extend the Object Management Group's CORBA 
  1923. and IDL specifications to support application servers running on 
  1924. massively parallel computers. Such extensions will support language 
  1925. interoperability between C++ based parallel programming systems and 
  1926. MPI implementations. Work on parallel object oriented programming 
  1927. languages complements our work on data parallel problem architectures 
  1928. and on high performance linear algebralibraries.  We have developed 
  1929. LAPACK++, an object-oriented C++ extension of LAPACK 
  1930. (http://www.netlib.org/c++/lapack++). The object oriented approach 
  1931. provides an extensible framework for incorporating extensions of LAPACK, 
  1932. such as ScaLAPACK++ for distributed memory architectures.
  1933.  
  1934. Researchers at Rice University are developing the D System,which is a set 
  1935. of tools for machine-independent data parallel programming 
  1936. (http://www.cs.rice.edu/fortran-tools/DSystem/DSystem.html) [9]. The 
  1937. tools support development of programs in Fortran D, an abstract, 
  1938. machine-independent parallel programming language. The D System 
  1939. editor allows theprogrammer to interactively parallelize existing Fortran 
  1940. code, and the data mapping assistant helps the programmer choose 
  1941. good decompositions for data structures. Because data parallel compilers 
  1942. perform aggressive program transformations, the relationship between 
  1943. the source program and ob ject program may be difficult for the 
  1944. programmer to understand. Thus,the D System debugging and 
  1945. performance analysis tools support analysis in terms of the source 
  1946. program. Fortran D is a predecessor to HPF, and features of the D System 
  1947. are expected to carry over to environments for HPF and other data 
  1948. parallel languages.We speculate that the D System might be extended to 
  1949. support our problem classification scheme andto partially automate 
  1950. selection and use of linear algebra components.
  1951.  
  1952. References
  1953.  
  1954. [1]G. Fox,R. Williams, and P. Messina, Parallel Computing Works. Morgan 
  1955. Kaufmann, 1994. Accessible on-line at 
  1956. http://www.infomall.org/npac/pcw/.
  1957.  
  1958. [2]"High Performance Fortran language specification, version 1.1," Tech. 
  1959. Rep. CRPC-TR92225, High Performance Fortran Forum,Nov. 1994. 
  1960. Available at http://softlib.rice.edu/CRPC/softlib/TRs_online.html.
  1961.  
  1962. [3]K.  Dincer,  K.  Hawick,  A.  Choudhary,  and  G.  Fox,  "High  
  1963. Performance Fortran and  possible  extensions  to  support  conjugate  
  1964. gradient  algorithms," Tech.  Rep.  SCCS-703,  Northeast  Parallel  
  1965. Architectures  Center,  Syracuse  University. Available  at 
  1966. http://www.npac.syr.edu/techreports/.
  1967.  
  1968. [4]Z. Bozkus, A. Choudhary, G. Fox, T. Haupt, and S. Ranka, 
  1969. "CompilingHPF for distributed memory MIMD computers," Tech. Rep. 
  1970. SCCS-507, Northeast Parallel Architectures Center, Syracuse University. 
  1971. Available at http://www.npac.syr.edu/techreports/.
  1972.  
  1973. [5]J.  Dongarra,  S.  Otto, M.  Snir,  and  D.  Walker,  "An  introduction  
  1974. to the  MPI stan-dard,"  Tech.  Rep.  UT-CS-95-274,  University  of  
  1975. Tennessee,  Jan.  1995. Available  at http://www.netlib.org/tennessee/.
  1976.  
  1977. [6]J. Dongarra and D. Walker, "Software libraries for linear algebra 
  1978. computation on high-performance computers," Tech. Rep. ORNL-TM-
  1979. 12404, Oak Ridge National Laboratory, Aug. 1993. Available at 
  1980. http://www.netlib.org/tennessee/.
  1981.  
  1982. [7]J. Choi, J. Demmel, I. Dhillon, J. D. S. Ostrouchov, A. Petitet, K. 
  1983. Stanley, D. Walker, and R. C. Whaley, "ScaLAPACK: a portable linear 
  1984. algebra library for distributed memory computers," Tech. Rep. UT-CS-95-
  1985. 283, University of Tennessee, Mar.1995.  Available at 
  1986. http://www.netlib.org/tennessee/.
  1987.  
  1988.  
  1989. [8]S. Browne,  J. Dongarra,  K. Kennedy,  and T. Rowan,  "Management of 
  1990. the NHSE  - a  virtual,  distributed digital  library,"  in  Digital  Libraries  
  1991. '95,  (Austin, Texas),  June 1995.   Also  available  as  University  of  
  1992. Tennessee  Technical  Report  UT-CS-95-287  at 
  1993. http://www.netlib.org/tennessee.
  1994.  
  1995. [9]V. Adve, A. Carle, E. Granston, S. Hiranandani, K. Kennedy, C. Koelbel, 
  1996. U. Kremer, J. Mellor-Crummey, C.W. Tseng, and S. Warren, "Requirements 
  1997. for data-parallel programming environments,"IEEE Transactions on 
  1998. Parallel and DistributedTechnology, vol. 2, pp. 48-58, Fall 1994. Also 
  1999. available at http://softlib.rice.edu/CRPC/softlib/TRs_online.html as 
  2000. CRPC-TR944378-S.
  2001.  
  2002. 4   Biographies
  2003.  
  2004. Shirley Browne is a Research Associate and Adjunct Professor in the 
  2005. Computer Science Department at the University of Tennessee, where she 
  2006. is a member ofthe Netlib Development Group. Her research interests are 
  2007. in replicated database issues for a scalable information infrastructure 
  2008. and in information system support for software reuse. She received a 
  2009. Ph.D. in Computer Sciences from Purdue University in 1990.
  2010.  
  2011. Jack Dongarra holds a joint appointment as Distinguished Professor of 
  2012. Computer Science in the Computer Science Department at the University 
  2013. of Tennessee (UT) and as Distinguished Scientist in the Mathematical 
  2014. Sciences Section at Oak Ridge National Laboratory (ORNL) under the 
  2015. UT/ORNL Science Alliance Program.  He specializes in numerical 
  2016. algorithms in linear algebra, parallel computing, use of advanced-
  2017. computer architectures, programming methodology, and tools for 
  2018. parallel computers. Other current research involves the 
  2019. development,testing and documentation of high quality mathematical 
  2020. software. He was involved in the design and implementation of
  2021. the software packages EISPACK, LINPACK, the BLAS, LAPACK, ScaLAPACK, 
  2022. Netlib/XNetlib, PVM/HeNCE, MPI andthe National High-Performance 
  2023. Software Exchange,and is currently involved in the design of algorithms 
  2024. and techniques for high performance computer architectures. He 
  2025. received a Ph.D. in Applied Mathematicsfrom the University of New 
  2026. Mexico in 1980.
  2027.  
  2028. Geoffrey Fox is an internationally recognized expert in the use of parallel 
  2029. architectures and the development of concurrent algorithms.  He leads a 
  2030. major pro ject to develop prototype high performance Fortran 
  2031. (Fortran90D) compilers. He is also a leading proponent for the 
  2032. development of computational science as an academic discipline and a 
  2033. scientific method. His research on parallel computing has focused on 
  2034. development anduse of this technology to solve large scale 
  2035. computational problems. Fox directs InfoMall,which is focused on 
  2036. accelerating the introduction of high speed communications and 
  2037. parallel computing into New York State industry and developing the 
  2038. corresponding software and systems industry. Much of this activity is 
  2039. centered on NYNETwith ISDN and ATM connectivity throughout the state 
  2040. including schools where Fox is leading developments of new K-12 
  2041. applications that exploit modern technology. Fox is currently a Professor
  2042. of Computer Science and Physics at Syracuse University and director of 
  2043. NPAC, The Northeast Parallel Architectures Center.He obtained his PhD 
  2044. from Cambridge, England and spent 20 years at Caltech where he was 
  2045. Professor and Associate Provost for educational and academic 
  2046. computing.
  2047.  
  2048. Ken Hawick is a research scientist at the Northeast Parallel Architectures 
  2049. Center (NPAC) at Syracuse University,working in the areas of 
  2050. computational scienceand high performance computing, and in 
  2051. information technology for industry. He formerly headed the Numerical 
  2052. Simulations Group at the Edinburgh Parallel Computing Centre in 
  2053. Edinburgh, Scotland.
  2054.  
  2055. Tom Rowan is a Collaborating Scientist in University of Tennessee's 
  2056. Computer Science Department and Oak Ridge National Laboratory's 
  2057. Mathematical Sciences Section. His primary research interests are in the 
  2058. areas of numerical analysis and mathematical software. Much ofhis 
  2059. research has focused on developing algorithms and software for 
  2060. automatic detection of instability in numerical algorithms and for 
  2061. optimization of noisy functions. He received his Ph.D. from the 
  2062. University of Texas at Austin in 1990.
  2063. A Program Editor to Promote Reuse
  2064.  
  2065. Paolo Bucci
  2066.  
  2067. Department of Computer and Information Science
  2068. The Ohio State University
  2069. 2015 Neil Avenue
  2070. Columbus, OH 43210
  2071. Tel: (614)292-1152
  2072. Email: bucci@cis.ohio-state.edu
  2073.  
  2074. Abstract
  2075.  
  2076. A software engineer's mental model of software is influenced  by many 
  2077. factors, including the application, the programming language, and even 
  2078. the programming environment. In particular, all programmers have to 
  2079. interact with a program editor, i.e., a tool to enter, modify, and view 
  2080. programs. This tool plays a role in shaping the way programmers think 
  2081. of software and of the software development process. In this position 
  2082. paper we explore the impact of the program editor on the programmer's 
  2083. view of software, and in particular those aspects thathave direct 
  2084. relevance for safe and successful software reuse.
  2085.  
  2086. Keywords: Programming environment, software reuse, software education, 
  2087. reuse education
  2088.  
  2089. Workshop Goals: Learning, networking
  2090.  
  2091. Working Groups: Design guidelines for reuse, tools and 
  2092. environments,education
  2093.  
  2094. 1   Background
  2095.  
  2096. For the past decade,the Reusable Software Research Group (RSRG) at the 
  2097. Ohio State University has been exploring various aspects of software 
  2098. reuse, and in particular a component-based reuse technology for software 
  2099. engineering. This has resulted in the RESOLVEframework, language and
  2100. discipline for component engineering [1].
  2101.  
  2102. Several of the ideas developed by the group have found their way into 
  2103. software courses at OSU and elsewhere. Efforts are under way to redesign 
  2104. and restructure the OSUsoftware curriculum to reflect the need for a 
  2105. software education aimed at a modern integrated component-based view 
  2106. of software engineering. The success of this new approach will depend in 
  2107. part on the availability of appropriate tools to assist the programmer in 
  2108. the development and composition of software systems.
  2109.  
  2110. This position paper describes some of the issues involved in the design of 
  2111. a program editor that will be able not only to support, but also to 
  2112. promote a disciplined, organized view of software that emphasizes good 
  2113. "component engineering" habits.
  2114.  
  2115. 2   Position
  2116.  
  2117. Program editors usually are seen by programmers as simple, somewhat 
  2118. unsophisticated tools that do not (and are not expected to) provide 
  2119. assistance beyond the features of, say, a text editor. In part, this is due to 
  2120. the fact that most programmers form, from the beginning, a mental 
  2121. model of software as plain text. They learn to program with text editors 
  2122. that give them complete freedom and usually little guidance during the 
  2123. processof program development, and they never consider how much 
  2124. more an editor could and should provide.
  2125.  
  2126. In this paper, however, we take the position that a carefully designed 
  2127. program editor could be quite sophisticated in providing assistance 
  2128. tothe programmer. This would free programmers from uninteresting (but 
  2129. essential) concerns, while appropriately guiding them towards better 
  2130. programming practices and productive software reuse.
  2131.  
  2132. As discussed in the next sections,there are many ways in which a 
  2133. program editor could support software reuse. It is important to realize, 
  2134. however, that for the editor to have a real impact on software reuse,and 
  2135. essentially on the way programmers think,it is necessary for the editor to 
  2136. be designed with this goal in mind. Furthermore, experience with other 
  2137. programming environments, such as structure editors and syntax-
  2138. directed editors, suggests that such an editor would be more likely to 
  2139. succeed in its goals and to be accepted by programmers if it were used 
  2140. from the beginning in the training of software engineers.  This is before 
  2141. programmers have the opportunity to form in appropriate mental 
  2142. models and before they learn unsafe programming habits. A well-
  2143. designed editor that truly promotes software reuse and that supports 
  2144. safe, disciplined programming practices could also be useful in helping 
  2145. experienced programmers make the transition from old habits to more 
  2146. modern approaches to software engineering and software reuse.
  2147.  
  2148. Throughout this paper we will refer to a program editor (or simply an 
  2149. editor) as the tool used to enter,modify, and view programs.
  2150.  
  2151. 2.1  The editor should provide a consistent, high-level view of software
  2152.  
  2153. Program editors provide the programmer with a view of what software is 
  2154. and how it can be manipulated. This view contributes to themental 
  2155. model of software that the programmer forms while editing. The mental 
  2156. model that the editor projects depends essentially on two things: the
  2157. representation used to display software components, and the kinds of 
  2158. operations the editor provides to the user to manipulate, modify, and 
  2159. combine components.  For example, a text editor that displays programs 
  2160. as simple text,and that provides only text-editing operations, promotes a 
  2161. model of software as plain text with no other structure or abstraction.
  2162.  
  2163. Programmers are affected by themo del of software presented by the 
  2164. editor. When interacting with the editor,their thinking is inevitably 
  2165. biased towards the structures they are editing and the transformations 
  2166. that are allowed by the editor.
  2167.  
  2168. If software systems are to be constructed by explicitly combining reusable 
  2169. components [2], the editor must not only allow the editing of 
  2170. components, but also their retrieval and composition, and this in as 
  2171. uniform and consistent away as possible. It has to make sure that 
  2172. components can be reused based on their abstract specifications and 
  2173. without the need to know the details of their implementation. It must 
  2174. also ensure that components are reused only where appropriate.  In 
  2175. other words, the editor needs to actively promote a component view of 
  2176. software,as opposed to a text view of software, and it has to allow only 
  2177. safe operations on components.
  2178.  
  2179. For the above goals to be achievable, the editor needs to present a higher-
  2180. level model of software than the currently available editors such as text 
  2181. editors or syntax-directed, structure editors. It is essential that the 
  2182. representation be abstract, and that the operations allowed operate at a 
  2183. conceptual (and not just syntactic) level, so the programmer can clearly 
  2184. see what each entity in the program does, and can think in terms 
  2185. ofabstract concepts instead of syntactic units, or just sequences of 
  2186. characters.
  2187.  
  2188. 2.2  The editor should promote (even enforce) a good programming 
  2189. discipline
  2190.  
  2191. It has been recognized that programming for reuse and with reuse 
  2192. requires a disciplined approach on the part of software engineers [3]. 
  2193. Clearly,we want to allow programmers to think about conceptual 
  2194. problems rather than spending time worrying about those aspects of 
  2195. principles and guidelines that can be enforced by the editor (not to 
  2196. mention syntax and other statically checkable properties of software).
  2197.  
  2198. The editor can be seen as a tool to guide software engineers through the 
  2199. hard task of writing programs by ruthlessly pruning the space of all 
  2200. possible programs, eliminating those that do not satisfy certain rules or 
  2201. that do not obey certain disciplines.  In this way, the editor allows only 
  2202. syntactically and static semantically correct programs. But more 
  2203. importantly,it supports the user in the application of appropriate 
  2204. programming disciplines. Especially during the training stage,an editor 
  2205. that enforces a good programming discipline can be an invaluable tool 
  2206. in teaching appropriate programming habits, from the beginning.
  2207.  
  2208. Existing editors vary in the amount of freedom (or lack of guidance) they 
  2209. give to the programmer: from text editors that have no restrictions 
  2210. (leaving the burden completely on the programmer),to syntax-directed 
  2211. editors that enforce syntactic correctness of the program and possibly 
  2212. include some static semantic checking.In any case, most such editors do 
  2213. notconsider the possibility of helping users follow safe programming 
  2214. disciplines.
  2215.  
  2216. 2.3  The editor should support safe reuse techniques and prevent unsafe 
  2217. ones
  2218.  
  2219. As an example of an "unsafe" (though commonly used) reuse technique, 
  2220. consider source code scavenging. In most cases, programmers copy a 
  2221. fragment of code and then proceed to modify the copy to make it fit the 
  2222. new context and new purpose. This process is the source of many subtle 
  2223. and not-so-subtle mistakes,due to lack of a full understanding of the 
  2224. code being copied and of the differences in the contexts of the original 
  2225. code and the copy.
  2226.  
  2227. The idea of copying and pasting arbitrary segments of source code is 
  2228. clearly encouraged by text editors and the text mental model. However, 
  2229. commonly used editors do not provide any support or guidance to assist 
  2230. programmers in the safe application of this form of reuse. Part of the 
  2231. problem is the fact that code scavenging is based on copying a code 
  2232. fragment whenever its (textual) representation is similar to the (textual) 
  2233. representation of the code that has to be written. Given this, it is almost 
  2234. impossible to conceive of any assistance the editor might provide.  On 
  2235. the other hand, if the editor provides a higher-level view of code, and if 
  2236. it promotes source code reuse of similar conceptual units (as opposed to 
  2237. syntactic units that only share similar representations), then it can 
  2238. attach to the copied unit all the context information necessary to give it 
  2239. a meaning,and this information can be used by the editor to guide the 
  2240. programmer in adapting it to the new context.  In this way,unsafe 
  2241. scavenging of text fragments can be prevented, while the safer, editor-
  2242. assisted reuse of conceptual units can be supported.
  2243.  
  2244. 3   Comparison
  2245.  
  2246. Program editors have been an active area of research for over 30 years,so 
  2247. there is an extensive body of literature on the subject,with many 
  2248. different approaches and points of view. There is an ongoing debate 
  2249. between advocates of text editors and supporters of syntax-directed, 
  2250. structure editors. The common observation is that experienced 
  2251. programmers are comfortable with text editing capabilities, and are not 
  2252. willing to accept the restrictions imposed by structure editors; while 
  2253. novices find the help and guidance provided by structure editors helpful 
  2254. [4, 5]. Still others support editors that combine the characteristics of 
  2255. both text and structure editors [6, 7]. Our claim here is that both text 
  2256. and parse trees are inadequate models of software for effective support of 
  2257. reuse; specifically, text and parse trees are too low level.
  2258.  
  2259. Other researchers [5, 8] have recognized the importance of the 
  2260. programmer's mental model of software for the success of a syntax-
  2261. directed editor.  Theyhave speculated that the obvious lack of 
  2262. popularity of existing syntax-directed,structure editing environments 
  2263. among experienced programmers is due to poor design of editors, 
  2264. particularly their user interface and the view of software that is 
  2265. promoted.
  2266.  
  2267. Some researchers [9] have advocated using structure editors to reinforce 
  2268. concepts of good programming methodology in novice programming 
  2269. courses. However, noone seems to have taken the more pro-active 
  2270. position that program editors have the potential to help shape the way 
  2271. programmers learn to think about software and about how it is 
  2272. developed. Hence,researchers typically advocate designing editors to 
  2273. satisfy the demands ofto day's programmers, e.g., supporting text editing 
  2274. features. Otherwise,experienced programmers will not use them. In 
  2275. contrast,our view is that editors should be designed with the goal of 
  2276. assisting,and even leading, programmers in the process of program 
  2277. development. We believe that such editors could promote software reuse 
  2278. and contribute positively to training in reuse.
  2279.  
  2280. References
  2281.  
  2282. [1]M. Sitaraman and B. W. Weide, eds., "Special Feature: Component-
  2283. Based Software Using RESOLVE," ACM SIGSOFT Software Engineering Notes, 
  2284. vol. 19, pp. 21-67, Oct. 1 994.
  2285.  
  2286. [2]B. W. Weide,W. F. Ogden, and S. H. Zweben, "Reusable software 
  2287. components," in Advances in Computers (M. C. Yovits, ed.), vol. 33, 
  2288. Academic Press, 1991.
  2289.  
  2290. [3]J.Hollingsworth, Software Component Design-for-Reuse: A Language 
  2291. Independent Discipline Applied to Ada.  PhD thesis, Dept. ofComputer 
  2292. and Information Science, The Ohio State University, Columbus, OH, 1992.
  2293.  
  2294. [4]S. Dart, R. Ellison, P. Feiler, and A. Habermann, "Software Development 
  2295. Environments," Computer, vol. 20, pp. 18-28, Nov. 1987.
  2296.  
  2297. [5]S. Min|r,"Interacting with Structure-Oriented Editors,"International 
  2298. Journal of Man-Machine Studies, vol. 37, pp. 399-418, Oct. 1992.
  2299.  
  2300. [6]R. Waters,"Program Editors Should Not Abandon Text Oriented 
  2301. Commands,"ACM SIGPLAN Notices, vol.17, pp. 39-46, July 1982.
  2302.  
  2303. [7]R. Bahlke and G. Snelting, "Design and Structure of a Semantic-Based 
  2304. Programming Environment," International Journal of Man-Machine 
  2305. Studies, vol. 37, pp. 467-479, Oct. 1992.
  2306.  
  2307. [8]J. Welsh and M. Toleman, "Conceptual Issues in Language-Based 
  2308. Editor Design," International Journal of Man-Machine Studies, vol. 37, 
  2309. pp. 419-430, Oct. 1992.
  2310.  
  2311. [9]D. Garlan and P. Miller, "GNOME: An Introductory Programming 
  2312. Environment Based on a Family of Structured Editors," ACM SIGPLAN 
  2313. Notices, vol. 19, pp. 65-72, May 1984. Proceedings of the ACM 
  2314. SIGSOFT/SIGPLAN Software Engineering Symposium on Practical Software 
  2315. Development Environments.
  2316.  
  2317. Biography
  2318.  
  2319. Paolo Bucci is a doctoral student in the Department of Computer and 
  2320. Information Science at The Ohio State University. He received his 
  2321. undergraduate degree in computer science from Universita degli Studi, 
  2322. Milan, Italy in 1986,and his M.S. in computer science from Ohio State in
  2323. 1989. His current research interests include software design and 
  2324. reuse,programming environments, programming languages, and 
  2325. education.
  2326.  
  2327. Mr. Bucci gratefully acknowledges financial support from the National 
  2328. Science Foundation (grant number CCR-9311702) and the Advanced 
  2329. Research Projects Agency (contract number F30602-93-C-0243, monitored 
  2330. by the USAF Materiel Command, Rome Laboratories, ARPA order number
  2331. A714).
  2332. Design Deltas in Reusable Object-Oriented Design
  2333.  
  2334. Greg Butler
  2335.  
  2336. Centre Interuniversitaire en Calcul Mathematique Algebrique
  2337. Department of Computer Science
  2338. Concordia University
  2339. Montreal, Quebec, H3G 1M8 Canada
  2340. Tel: (514)848-3031
  2341. Tel: (514)848-3000
  2342. Fax: (514) 848-2830
  2343. Email:gregb@cs.concordia.ca
  2344.  
  2345. with Peter Grogono, Li Li, Ra jjan Shinghal, Ono Tjandra
  2346.  
  2347. Department of Computer Science
  2348. Concordia University
  2349. Montreal, Quebec, H3G 1M8 Canada
  2350.  
  2351.  
  2352. Abstract
  2353.  
  2354. Reusable object-oriented design aims to describe and classify designs and 
  2355. design fragments so that designers may learn from other peoples' 
  2356. experience. Thus, it provides leverage for the design process. The field 
  2357. includes software architectures, application frameworks, design patterns, 
  2358. and the design of class libraries. The field is young with many open 
  2359. problems that still need to be researched.  This position paper opens a 
  2360. discussion on "design deltas" to describe increments of change in designs 
  2361. that arise in software evolution,between versions of software,and in 
  2362. adaptation during  white-box reuse.
  2363.  
  2364. Keywords: Reuse, design, framework, design pattern, architecture, formal 
  2365. methods
  2366.  
  2367. Workshop Goals: Learning; networking; clarifying "design deltas";
  2368.  
  2369. Working Groups:reuse of designs, reuse and OOmethods, formal methods, 
  2370. design guidelines for reuse _ C++
  2371.  
  2372. 1   Background
  2373.  
  2374. My background in computer algebra systems is described in my WISR6 
  2375. position paper [1]. These experiences convinced me that a more flexible 
  2376. environment, using a single language, C++, is needed to research the 
  2377. issues of software architectures and their integration for computer 
  2378. algebra systems.  Also, there is a greatneed from researchers in algebraic 
  2379. algorithms for a software library. Since moving to Concordia University 
  2380. at the end of 1991, my research has focussed on C++ libraries and 
  2381. frameworks, issues of reuse, and issues of reliability (which includes 
  2382. correctness).
  2383.  
  2384. In the past two years I have been actively leading a discussion group at 
  2385. Concordia on C++ programming and object-oriented design. These have 
  2386. recently split into two discussion groups, the latter concentrating on 
  2387. design patterns. Ialso teach a course on object-oriented design based on
  2388. OMT [14] that also includes material on reuse.
  2389.  
  2390. On the research side there is ongoing work on application frameworks for 
  2391. combinatorial enumeration [6] and deductive databases [2] are in
  2392. preliminary stage of construction with the help of students: we are still 
  2393. learning how to develop and document frameworks - much more 
  2394. practical implementation needs to be done;
  2395.  
  2396. use of design patterns for development and documenting software 
  2397. (especially frameworks) is the focus of several student projects, and the 
  2398. discussion group on object-oriented design;
  2399.  
  2400. survey of reusable object-oriented designlooked at reuse of design 
  2401. artifacts: how they were developed, how they were reused, and how they 
  2402. were described/documented/specified and classified [7];
  2403.  
  2404. trends in software engineering for which there was documented empirical 
  2405. evidence for their cost benefits were surveyed [3]: this included 
  2406. improvements in process quality and product quality, software reuse at 
  2407. the level of code component, frameworks, and application generators, 
  2408. and the use of formal methods and other modeling notations;
  2409.  
  2410. document understanding for reverse engineering was investigated with 
  2411. colleagues[5, 4] to consider whether reverse engineering of legacy systems 
  2412. could benefit from knowledge extracted automatically from paper 
  2413. documents: we are concentrating on data flow diagrams.
  2414.  
  2415. In recognition of the importance of software evolution, at the WISR7 
  2416. workshop I wish to focus onhow to describe design increments and clarify 
  2417. the notion of what is a "design delta".
  2418.  
  2419. 2   Position
  2420.  
  2421. The conclusions from [7] contain my position on research directions in 
  2422. reusable object-oriented design:
  2423.  
  2424. " One clear conclusion is that reusable design artifacts are the result of 
  2425. evolution and iteration. This is especially true for application 
  2426. frameworks and class libraries - the concrete artifacts, where all details 
  2427. must be spelt out.
  2428.  
  2429. " Another clear conclusion is that models and notations play several 
  2430. important roles. The abstract artifacts are themselves models, but even 
  2431. for them the role of models and notations extends much further.
  2432.  
  2433. Models and notations are an aid to communication.
  2434.  
  2435. Models and notations improve understanding through precision, 
  2436. conciseness, and visual cues.
  2437.  
  2438. A model or documentation template often providesa checklist of the 
  2439. information needed to fully understand or reuse a design artifact. For 
  2440. example, these may include:
  2441.  
  2442. - responsibilities of each participant;
  2443.  
  2444. - collaborations amongst participants;
  2445.  
  2446. - purpose of the artifact; and
  2447.  
  2448. - preconditions for applicability.
  2449.  
  2450. " There are many open problems for architectures, frameworks, micro-
  2451. architectures, and, to a lesser degree,for the design of class libraries. We 
  2452. have broadly categorized these into problems of retrieval, understanding, 
  2453. and evaluation.
  2454.  
  2455. " Retrieval problems are those related to the classification and 
  2456. description of design artifacts,as well as the problem of enlarging our 
  2457. catalogue of known reusable design artifacts.
  2458.  
  2459. " Each of the following is aimed towards enlarging and organizing our 
  2460. knowledge of design artifacts. This provides a base from which to retrieve 
  2461. design artifacts and also provides a conceptual classification scheme 
  2462. that forms the basis of the attributes mentioned in retrieval queries. 
  2463. Although we have seen examples of work on each of these areas in this 
  2464. survey,there is much more that needs to be done still.
  2465.  
  2466. A taxonomy of design artifacts provides a map of the space of artifacts, 
  2467. their commonality and their differences. This organizes our 
  2468. knowledge,helps designers to appreciate the breadth of choices and 
  2469. trade-offs, and may guide the discovery or invention of new artifacts,and 
  2470. assist the development of design notations and languages.
  2471.  
  2472. Classification of individual artifacts according to their significant or 
  2473.  distinguishing features aids our understanding of that individual 
  2474. artifact and contributes to the development of the taxonomy.
  2475.  
  2476. Cataloguing the existing design artifacts requires assistance from industry 
  2477. to release details of the design of their systems. Our understanding of 
  2478. software architectures and application frameworks depends heavily on 
  2479. enlarging the base of examples in the catalogue, particular to assist the 
  2480. development of a taxonomy. The invention and discovery of new designs 
  2481. is also a part of this open problem.
  2482.  
  2483. " Understanding problems are those related to reducing the effort by a 
  2484. reuser to understand a design artifact and to understand how to reuse a 
  2485. design artifact.
  2486.  
  2487. Documentation styles and standards are required to ensure that all 
  2488. information needed by reusers is documented, and to present the 
  2489. information to reusers in a timely fashion: that is, precisely when they 
  2490. need it.
  2491.  
  2492. The spiral approach of patterns tailors the timing and volume of 
  2493. information that a reuser of a framework is presented with. The 
  2494. documentation templates for design patterns ensures that each item of 
  2495. necessary information is provided, and that examples of use are also 
  2496. included.
  2497.  
  2498. Documentation of architectures and class libraries is still in need of good 
  2499. styles and standards.
  2500.  
  2501. Formal specification and description of design artifacts claim to provide 
  2502. improved precision, conciseness, and reasoning. Each of which may 
  2503. improve understanding.  Most of the work on the description of design 
  2504. artifacts has been done by practitioners who do not share a  belief in the 
  2505. merit of formal specifications: they used natural language and diagrams 
  2506. for their documentation.  As a consequence there is only a small body of 
  2507. work on how to formally specify design artifacts. There is scope for 
  2508. further work in this area.
  2509.  
  2510. Experimental validation of claims that certain do cumentation or 
  2511. specification styles do improve understanding in practice is required. All 
  2512. asp ects of research into software development need a firm experimental 
  2513. foundation.
  2514.  
  2515. " Evaluation problems include thoseof comparing design artifacts, those 
  2516. concerned with the evolution of artifacts, and the problems of evaluating 
  2517. design artifacts.
  2518.  
  2519. Metrics for design artifacts are in very short supply. The correlation 
  2520. between metrics and the desirable qualities of a design also needs to be 
  2521. established quantitatively. The metrics research community is large and 
  2522. active so we predict that a stream of new design metrics will be 
  2523. forthcoming. There is also a strong interest from practitioners who are 
  2524. establishing quality assurance programmes and are collecting the 
  2525. necessary data to confirm any correlation between measurement and 
  2526. quality.
  2527.  
  2528. Specifying and describing the evolution of a design and the differences 
  2529. between designs may require a notion of a "design delta" to capture the 
  2530. increment of change or difference. Alternatively, evolution could be 
  2531. viewed transformationally,and the increment would be a description of 
  2532. the transformation. Ralph Johnson and his students call these 
  2533. transformations "refactorings". Given the importance of evolution, 
  2534. refinement,and iteration to design and reuse, this is a major open 
  2535. problem for reusable object-oriented design. "
  2536.  
  2537. It is this last point: the importance of the notion of a "design delta" for 
  2538. describing the evolution of a design (just as a source code delta is used 
  2539. in software configuration management [16] to describe the differences 
  2540. between versions of code) that I think deserves more study at WISR7.
  2541.  
  2542.  
  2543. 3   Comparison
  2544.  
  2545. The notion of a "design delta" is related tomany existing concepts. Each 
  2546. of which might help us clarify a precise definition of the notion.
  2547.  
  2548. Refactoring describes a reorganisation of the class hierarchy for an object-
  2549. oriented system [8] as a means of identifying reusable classes or 
  2550. frameworks. Johnson and Opdyke [12, 11] have catalogued several 
  2551. refactorings as transformations on the class hierarchy.
  2552.  
  2553. Programming-by-difference constructs a design increment by 
  2554. specialisation of asuperclass. So the equation
  2555.                             design = subclass n superclass
  2556. or one can view the subclass definition alone as the "design delta".
  2557.  
  2558. Mixins are a purer form of programming-by-difference. A mixin is a 
  2559. design increment.
  2560.  
  2561. Adaptation in software reuse allows controlled change via instantiation 
  2562. or specialisation,and allows uncontrolled editing of source code: perhaps 
  2563. editing to produce a "design delta" provides controlled white-box reuse 
  2564. which lies between these two extremes.
  2565.  
  2566. Increments in Cleanroom software development are documented in a 
  2567. construction plan that divides the system development into vertical 
  2568. increments instead of the traditional horizontal breakdown into 
  2569. subsystems. Each vertical increment describes a working system,though 
  2570. with a subset of the behavior, and should correspond to a part of the 
  2571. top-level black box and a part of the usage model and usage profile [9].
  2572.  
  2573. Change management   inthe PRISM software process model [10] 
  2574. documents changes in staff, policies, laws, processes or systems on sheets 
  2575. that record dependency, resource, and status information.
  2576.  
  2577. Design steps are the actions taken during design in response to the 
  2578. identification of issues and their resolution via arguments for and 
  2579. against in the model of Potts and Bruns [13]. Design increments are 
  2580. implicit in the model as paths (sequences of arcs) relating two design 
  2581. artifacts.
  2582.  
  2583. Re-engineering  in the most simple case at the design level involves two 
  2584. designs  D and D0 for a common specification S, so although the designs 
  2585. differ (by a design delta) there is a context which is invariant: the 
  2586. specification of their observable behaviour.
  2587.  
  2588. Transformational software development maps a specification S to a 
  2589. design (and eventually to an implementation) D via a sequence of 
  2590. transformations f which are guaranteed to preserve semantic correctness. 
  2591. A change in specification to S0 leads to a new design D0. It would be 
  2592. convenient if a design increment D0 n D was f(S0 n S), however there are 
  2593. two obstacles: The change in specification may require a change in the 
  2594. choice of transformations; and, even if that does not occur, we would 
  2595. require the incrementof change in the specification to itself  be a 
  2596. specification (of something meaningful) in order to apply f.
  2597.  
  2598. Composition operators such as in Z schema calculus [15] can describe 
  2599. increments of change in specifications as specifications. It is common Z 
  2600. practice to separate the specification of typical behaviour (the 
  2601. AddBirthday schema) from error-handling described in terms of 
  2602. successful execution (the Success schema) and error-type (the 
  2603. AlreadyKnown schema).
  2604.  
  2605.               RobustAddBirthdayb=(AddB irthday^ Success) _ AlreadyKnown:
  2606.  
  2607. References
  2608.  
  2609.  [1]G.Butler, Reusable reliable software components for computer algebra. 
  2610. Position paper for the 6th AnnualWorkshop on Software Reuse to be held 
  2611. in Owego, November 2-4, 1993.
  2612.  
  2613.  [2]G.Butler, Datalog and Two Groups and C++, to appear in Proceedings 
  2614. of the Second International Conference on Artificial Intelligence and 
  2615. Symbolic Mathematical Computing,Cambridge, UK, August 3-5, 1994.
  2616.  
  2617.  [3]G.Butler, Technical trends in industrial software engineering: Quality, 
  2618. reuse, modelling,submitted.
  2619.  
  2620.  [4]G. Butler, P. Grogono, R. Shinghal, I.A. Tjandra, Analyzing the logical 
  2621. structure of data flow diagrams in software documents, to appear in 
  2622. Proceedings of Third International Conference on Document Analysis and 
  2623. Recognition, Montreal, Canada, August 14-16, 1995.
  2624.  
  2625.  [5]G. Butler, P. Grogono, R. Shinghal, I.A. Tjandra, Knowledge and the 
  2626. recognition and understanding of software documents, submitted.
  2627.  
  2628.  [6]G. Butler and C.W.H. Lam, The preliminary design of an object-
  2629. oriented framework for combinatorialenumeration, to appear in 
  2630. proceedings of the Colloquium on Object Orientation in Databases and 
  2631. Software Engineering, 62nd Congress of ACFAS, May 16-17, 1994, 
  2632. Montreal.
  2633.  
  2634.  [7]G. Butler, L. Li and I.A. Tjandra, Reusable object-oriented 
  2635. design,submitted.
  2636.  
  2637.  [8]R.E. Johnson and B. Foote, Designing reusable classes, Journal of 
  2638. Object-Oriented Programming 1 (1988) 22-35.
  2639.  
  2640.  [9]Even-AndreKarlsson, Reuse and cleanroom, 1st European Industrial 
  2641. Symposium on Clean-room Software Engineering, 26-27 October, 1993, 
  2642. Copenhagen.
  2643.  
  2644. [10]N.H.Madhavji,Environment evolution: The PRISMmodel of changes, 
  2645. IEEE Trans. Software Eng. 18, 5 (May 1992) 380-392.
  2646.  
  2647. [11]William F. Opdyke, Refactoring Object-Oriented Frameworks, Ph.D. 
  2648. Thesis, University of Illinois at Urbana-Champaign, 1992.
  2649.  
  2650. [12]W.F. Opdyke adR.E. Johnson, Refactoring: An aid in designing 
  2651. application frameworks and evolving object-oriented systems, 
  2652. Proceedingsof the Symposium on Object-Oriented Program-ming 
  2653. Emphasizing Practical Applications (SOPPA), September 1990.
  2654.  
  2655. [13]C. Potts and G. Bruns, Recording the reasons for design decisions, 
  2656. Proceedings of the 10th International Conference on Software Engineering, 
  2657. IEEE Computer Society Press, Los Alamitos, CA, 1988, pp. 418-427.
  2658.  
  2659. [14]J. Rumbaugh, M. Blaha, W. Premerlani, F. Eddy, W. Lorenson, Object-
  2660. Oriented Modelling and Design, Prentice Hall, 1991.
  2661.  
  2662. [15]J.M. Spivey, The Z Notation: A Reference Manual, Prentice Hall,1992.
  2663.  
  2664. [16]Walter F. Tichy, RCS - A system for version control, July 1985, 19 
  2665. pages.
  2666.  
  2667. 4   Biography
  2668.  
  2669. Gregory Butler is Associate Professor in Computer Science and a member 
  2670. of Centre Interuniversitaire en Calcul Mathematique Algebrique 
  2671. (CICMA)at Concordia University, Montreal,Canada. His research interests 
  2672. are reusable object-oriented design, software architectures, C++ libraries 
  2673. and frameworks for computer algebra systems which integrate 
  2674. knowledge-based facilities. He obtained his PhD from the University of 
  2675. Sydney in 1980 for work on computational group theory. He spent 
  2676. 1976/77 at ETH, Zurich as part of his doctoral studies, and for two years, 
  2677. 1979-1981, was a postdoctoral fellow at McGill and Concordia 
  2678. Universities in Montreal. He was on the faculty of the Department of 
  2679. Computer Science at the University of Sydney from 1981 to 1990. He has 
  2680. held visiting positions at the University of Delaware and Universitat 
  2681. Bayreuth.
  2682. Evolutionary Metrics Adoption Method for Reuse Adoption
  2683.  
  2684. Patricia Collins & Barbara Zimmer 
  2685.  
  2686. Hewlett Packard Software Initiative 
  2687. 1501 Page Mill Road, Bldg. 5M
  2688. Palo Alto, CA 94303
  2689. Tel: (415) 857-2681, 857-4894
  2690. Email: collins@ce.hp.com, zimmer@ce.hp.com
  2691.  
  2692.  
  2693. Abstract
  2694.  
  2695. Adoption of reuse metrics using an evolutionary approach is well 
  2696. matched to organizational readiness for metrics in managing reuse 
  2697. adoption..
  2698.  
  2699. In Hewlett-Packard, groups are using an evolutionary development 
  2700. and delivery lifecycle [4] to manage reuse risks and to address the 
  2701. very real limits in an organization's ability to adapt to changes.  We 
  2702. have developed a method for reuse metrics adoption that reflects 
  2703. this evolutionary approach.  The metrics identification method is a 
  2704. refinement of Basili's Goal-Question-Metric paradigm.[1]  We have 
  2705. extended the Goal Statement activity to include explicit alignment of 
  2706. reuse goals with business goals.   The questions and metrics 
  2707. identification are highly focused.  The focus is guided by the desire to 
  2708. manage the risk of the reuse adoption and the limits of the 
  2709. organization in adopting metrics; therefore, those questions and 
  2710. metrics most likely to aid the organization in managing their reuse 
  2711. risks are identified and adopted first.
  2712.  
  2713.  In reuse adoption and institutionalization, cultural and 
  2714. organizational issues can determine the success of the effort.  For 
  2715. that reason, reuse metrics can play a particularly important role in 
  2716. communications for building and reinforcing partnerships, assessing 
  2717. and ensuring customer satisfaction, communicating value, and 
  2718. monitoring impact and progress.
  2719.  
  2720. Keywords: software metrics, reuse metrics, reuse management, GQM 
  2721. paradigm, metrics implementation, evolutionary lifecycle
  2722.  
  2723. Workshop Goals: Exchange learnings in incremental reuse adoption, 
  2724. including adoption models and methods, the role of metrics and 
  2725. alternative means of managing reuse.
  2726.  
  2727. Working Groups:
  2728. Patricia:
  2729. 1.    Reuse process models
  2730. 2.    Domain analysis/engineering
  2731. 3.    Reuse and OO methods and technology
  2732. Barbara:
  2733. 1.    Reuse management, organization and economics
  2734. 2.    Reuse maturity models
  2735. 3.    Useful and collectible metrics
  2736.  
  2737. 1   Background
  2738. In the HP Software Initiative, Patricia Collins served initially as a 
  2739. reuse process improvement consultant, pioneering the use of domain 
  2740. analysis and utilizers' needs analysis methods within HP.   While she 
  2741. is still considered a corporate resource for reuse process knowledge, 
  2742. she now also partners with R&D groups to develop roadmaps, plans, 
  2743. and implementations for reuse adoption and institutionalization that 
  2744. address reuse processes and methods, process improvement adoption 
  2745. methods (including change management), reuse metrics, reusable 
  2746. architecture and design methods, and organization redesign.
  2747. Barbara Zimmer has been working in partnership with several HP 
  2748. R&D groups to plan and implement software metrics programs in 
  2749. reuse organizations.  She has written an extensive review of software 
  2750. reuse activities in HP that has been used as a valued reference by HP 
  2751. groups exploring software reuse.
  2752.  
  2753. 2   Position
  2754.  
  2755. For the past five years, organizations in Hewlett-Packard have been 
  2756. moving from leverage of software between successive products to 
  2757. systematic reuse of software among products being developed in 
  2758. very close succession, or even in parallel.  The need for reuse is not 
  2759. in question, since there are few proposed alternatives for achieving 
  2760. the diverse business goals of these organizations.  Typically, the 
  2761. move from leverage to systematic reuse is motivated by a need for 
  2762. higher productivity, decreased time-to-market, increased rate of 
  2763. innovation, and/or limited resources.
  2764.  
  2765. This paper describes a few of our specific innovations in software 
  2766. metrics adoption methods. The HP Software Initiative's Evolutionary 
  2767. Reuse Metrics Adoption (ERMA) Method refines the work of others in 
  2768. goal, question, and metrics (GQM) identification and implementation, 
  2769. as well as the management of this change (metrics adoption) in the 
  2770. organization.  This paper focuses on innovations in the identification 
  2771. and implementation parts of the method.  
  2772.  
  2773. Traditionally, the GQM method has involved full enumeration of 
  2774. goals, then questions whose answers can help evaluate progress 
  2775. toward the goals, and then metrics that can be used to answer the 
  2776. questions.  Organizations new to using metrics to manage reuse 
  2777. adoption are easily overwhelmed by this exhaustive method.  This 
  2778. can result in lost momentum for metrics adoption or circumventing 
  2779. the GQM process entirely in favor of metrics that may contribute 
  2780. nothing to managing toward their critical goals.
  2781.  
  2782. The ERMA method keeps the GQM process highly focused on 
  2783. delivering metrics that provide information needed to manage 
  2784. progress toward critical goals.  The innovations of ERMA are:
  2785. -    Explicitly state the goals as well-formed, strategic objectives
  2786. -    Identify which objectives require metrics support for progress 
  2787. toward that objective to be managed.  Include reasons metrics are 
  2788. critical for each goal selected. 
  2789. -    Identify 1 or 2 key assessment questions for the objective(s). 
  2790. The assessment questions are well formed (i.e., they align with the 
  2791. well-formed objective, and the answer to the question                
  2792. enables the organization to assess progress toward the objective).
  2793. -    Identify criteria for what metrics will be used (e.g. 
  2794. organization's readiness, collectibility).
  2795. -    Identify 1 or 2 metrics for the question(s) deemed to be most 
  2796. critical for managing reuse adoption.
  2797.  
  2798. The essence of our contribution is thus a pruning of the GQM 
  2799. expansion process, the support for distinguishing between 
  2800. assessment and understanding questions, and evolutionary 
  2801. identification and implementation appropriate to incremental reuse 
  2802. adoption.  In practice, we contribute significantly by facilitating the 
  2803. development of well-formed objectives, an essential first step in the 
  2804. GQM process. We describe these innovations through representative 
  2805. examples from our experiences in reuse metrics adoption.
  2806.  
  2807. 2.1  Goal Clarification
  2808. Establishing reuse goals that are aligned with business goals is a new 
  2809. activity for HP engineering organizations.  In one organization that 
  2810. was exploring the potential for designing and developing a reusable 
  2811. measurement platform, the first step was to conduct a domain 
  2812. analysis (DA), which  included the explicit delineation of DA goals.  
  2813. We developed and delivered a domain analysis workshop that first 
  2814. focused on  the overall business goals, then  aligning the reuse goals 
  2815. with those business goals, and finally aligning the domain analysis 
  2816. goals with the reuse and business goals .  The workshop participants 
  2817. represented four related, but traditionally independent product line 
  2818. organizations which develop and manufacture test equipment.
  2819.  
  2820. In order to understand what approach (e.g., reuse) might adequately 
  2821. support a business goal, we interviewed stakeholders in each 
  2822. organization who understood business and market trends, current 
  2823. practices, internal and external constraints, and what was possible to 
  2824. achieve. The interviews allowed us to assure the business goal 
  2825. statements were aligned with the intentions of the organizations.  For 
  2826. example, one organization╒s breakthrough goal was to shorten the 
  2827. time-to-profit for the customer.  We explored how HP products could 
  2828. impact time-to-market in the customer╒s R&D use of the equipment, 
  2829. and how they could impact time-to-profit in the customer╒s 
  2830. manufacturing use of the equipment.  We then brainstormed how 
  2831. reuse could be focused to support this manufacturing customer, and 
  2832. developed sample reuse requirements (e.g., ╥The test equipment 
  2833. domain architecture must support optimized throughput in the 
  2834. customer╒s manufacturing use of the equipment.╙).  Throughout this 
  2835. analysis, we developed, in parallel, product development and reuse 
  2836. objectives; appropriate targeted utilizers for the reusable assets; 
  2837. implications for product capabilities and marketing; and assessed the 
  2838. appropriateness of our objectives against constraints.
  2839.  
  2840. In the domain analysis workshop, we explicitly asked each of the 
  2841. stakeholders to identify the product line business goals to which 
  2842. their reuse initiative would contribute.   The responses included 
  2843. decreased time-to-profit, decreased time-to-market, and improved 
  2844. inter-product compatibility.  Using the ERMA method, we asked the 
  2845. group to prioritize the business goals and explore options for which 
  2846. goals would be used to guide the domain analysis project, as well as 
  2847. the subsequent domain architecture and asset engineering projects.  
  2848. We stated the overall reuse goal and the specific domain analysis 
  2849. goals as a well-formed objectives:
  2850. -    The desired outcome is explicitly stated.
  2851. -    The attainment of the outcome is observable and assessable.
  2852. -    The statement is clearly written and readily understandable by 
  2853. all stakeholders.
  2854. -    The undertaking associated with achieving the objective is 
  2855. within the charter of the organization.
  2856. -    The desired outcome is aligned with the organization's business 
  2857. goals.
  2858. -    The time for achieving the outcome is explicit.1
  2859.  
  2860. Stating goals as well-formed objectives has been a very important 
  2861. and challenging task.  Most organizations are not experienced in 
  2862. developing well-formed objectives. We have found that most teams 
  2863. need facilitation in eliciting a statement of the objective in terms of a 
  2864. desired outcome where progress toward that outcome will be 
  2865. assessable.
  2866.  
  2867. As the next step in the ERMA method at the DA workshop, we 
  2868. established questions, and then metrics for this project using the 
  2869. ERMA method (discussed further in the following sections).  At a 
  2870. management checkpoint for the domain analysis, the project's 
  2871. objectives were presented in the context of the business goals and 
  2872. the progress was assessed using the metrics.  This contributed 
  2873. significantly to the organization's ability to manage their continued 
  2874. investment in the DA effort.  The use of project objectives aligned 
  2875. with business goals and focused metrics derived from well-formed 
  2876. objectives supported the team's efforts to communicate with their 
  2877. management teams from a business frame of reference.  The project 
  2878. sponsors supported the reported results and recommendations.
  2879.  
  2880. 2.2  GQM for Reuse
  2881. Another organization was frustrated in managing their investments 
  2882. in reuse and their approach in communicating the value of their 
  2883. efforts in developing and delivering reusable assets.  The 
  2884. organization is a large, central asset production and management 
  2885. group with teams for developing and evolving assets, as well as 
  2886. supporting distribution and integration of the assets in products.  
  2887. Because value is traditionally assessed in this organization by the 
  2888. success of the HP product in the marketplace, there were no metrics 
  2889. in place that would assess the value of an organization whose 
  2890. contribution to products was considered indirect.
  2891.  
  2892. We began the reuse metrics adoption process by assisting the 
  2893. organization in developing well-formed objectives for each project 
  2894. and for the two departments in which these projects were being 
  2895. undertaken.  At first, each project team produced a long list of 
  2896. desired outcomes because they were unaccustomed to prioritizing 
  2897. and pruning their list of responsibilities.  We used the strategic 
  2898. business goals and overall organization objectives to prioritize and 
  2899. trim the list to a critical few objectives.  Then the stakeholders 
  2900. learned to restate their desired outcomes as well-formed objectives.  
  2901. Using a synthesis of methods described by Basili and Grady, we 
  2902. brainstormed sets of questions the group could use to assess progress 
  2903. toward the objectives.  We then identified two types of questions.  
  2904. Assessment questions directly inquire about progress toward the 
  2905. objective.  Understanding questions assist the analyst in 
  2906. understanding terminology, concepts, and implications for the 
  2907. objective.  The stakeholders learned to distinguish between 
  2908. assessment questions (e.g., ╥Is the time (in engineering-months) to 
  2909. design a product╒s software decreasing with increased use of the 
  2910. reusable framework?╙) and understanding questions (e.g., ╥What do 
  2911. we mean by inter-product compatibility?╙).  
  2912.  
  2913. 2.3  Evolutionary GQM
  2914. When a sister organization approached metrics adoption, they were 
  2915. just beginning a reuse initiative.  They were planning the project to 
  2916. develop and deliver a reusable architecture, then a steady stream of 
  2917. reusable frameworks scheduled to deliver value to product 
  2918. development teams with limited resources.  With this group, we 
  2919. developed a set of goals and then pursued the critical few for which 
  2920. the stakeholders believed metrics might help them to manage better.  
  2921. Then we developed one or two critical questions for each goal for 
  2922. which management help was most needed.  
  2923.  
  2924. This evolutionary GQM approach is based on the same principles as a 
  2925. pruned search algorithm [3].  We establish a ╥cost╙ for pursuing a 
  2926. particular goal, question or metrics; and attempt to get the most 
  2927. return for implementing a particular metric.  The team established 
  2928. criteria for pursuing one goal, question or metric over another.  
  2929. These criteria (in order of priority) included that they would pursue 
  2930. a path if
  2931. 1.    The organization has a strong need to manage progress toward 
  2932. the associated goal.
  2933. 2.    The information needed to manage progress is not currently 
  2934. available.
  2935. 3.    Having answers to the associated assessment question would 
  2936. significantly improve the organization╒s ability to manage progress 
  2937. toward the goal.
  2938. 4.    The cost/benefit of implementing the metric is acceptable to 
  2939. the organization.
  2940.  
  2941. Of the important business goals for which the reuse effort was a 
  2942. tactic the group identified three critical goals, for which metrics could 
  2943. contribute substantially to managing progress.  Asking only one or 
  2944. two key questions about each goal led them to a small set of metrics 
  2945. that were feasible and would provide the data needed for analysis.  
  2946. Future phases of evolutionary metrics adoption will employ the same 
  2947. method to implement and utilize additional metrics.
  2948.  
  2949. 3  Comparison 
  2950. Reed [5] has reported on a metrics effort at Digital Equipment 
  2951. Corporation which is similar in its goal and strategic planning 
  2952. orientation and in its emphasis on communication as a critical success 
  2953. factor to metrics adoption.  They do not attribute critical importance 
  2954. to the cultural and organizational factors which we feel make an 
  2955. incremental approach to metrics adoption imperative at HP.  Grady 
  2956. [2] has documented various metrics efforts within HP which used the 
  2957. GQM paradigm.  This experience base has led us to a more "pruned'' 
  2958. approach to the GQM tree and to a greater emphasis on alignment 
  2959. with business goals.  May and Zimmer [4] discuss the benefits of 
  2960. Evolutionary Product Development in managing the risks of software 
  2961. development.  The method uses small incremental product releases 
  2962. or builds, frequent delivery of the product to users for feedback, and 
  2963. dynamic planning that can be modified in response to this feedback.  
  2964. Successful implementation of this model in many HP organizations 
  2965. has helped shaped the incremental approach we are using in reuse 
  2966. metrics.  Basili's [1] Goal-Question-Metric model is the basis for our 
  2967. approach and has been widely applied with varying results. 
  2968.  
  2969. References
  2970.  
  2971. [1]    Basili, V. & Weiss, D.M. ╥A Methodology for Collecting Valid 
  2972. Software Engineering Data╙, IEEE Trans. Software Engineering, Vol. 
  2973. SE-10, no. 3, November 1984, pp. 728-738
  2974. [2]    Grady, B. Practical Software Metrics for Project Management 
  2975. and Process Improvement, Prentice-Hall, 1992.
  2976. [3]    Lowerre, B. Pruned Search in Speech Recognition, Ph.D. 
  2977. Dissertation, Carnegie-Melon University, 1994.
  2978. [4]    May, E. and Zimmer, B. Evolutionary Product Development at 
  2979. Hewlett-Packard, Hewlett-Packard, 1994.
  2980. [5]    Reed, J. ╥Software Metrics and Policy Deployment╙, Proceedings 
  2981. of the Applications of Software Measurement Conference╩, 1994
  2982.  
  2983. Biography
  2984. Patricia Collins has been at HP 15 years.  She was a speech 
  2985. recognition researcher in HP Laboratories, then served as project 
  2986. manager for various software systems and software engineering 
  2987. environment research projects.  She has been a reuse consultant in 
  2988. HP's Software Initiative for 4 years.  She holds an MSEE from 
  2989. Stanford University and a BA in mathematics and philosophy from 
  2990. Dickinson College. 
  2991.  
  2992. Barbara Zimmer has been at HP 12 years.  After 6 years as a 
  2993. financial/business analysis, she moved to R&D to work with the 
  2994. software process assessment group.  The results of these assessments 
  2995. of SW development processes in HP R&D laboratories were 
  2996. instrumental in convincing HP management to launch the Software 
  2997. Initiative.  Within the SWI, she has focused on technology transfer 
  2998. and communications activities, including a number of internal 
  2999. publications of various aspects of software development as well as a 
  3000. Software Quality and Productivity Guide. Her current work focuses 
  3001. on working directly with HP R&D group partners on various aspects 
  3002. of software development.  She has a BA in Communications and MBA 
  3003. from the University of Washington.
  3004.  
  3005. 1 The time limit may be stated as occurring before an event, but is 
  3006. often stated as being accomplished by a specific date or within a 
  3007. timeframe.
  3008.  
  3009. Representing Domain Models Graphically
  3010.  
  3011. Margaret (Maggie) J. Davis
  3012.  
  3013. Boeing Defense & Space Group
  3014. P.O. Box 3999, MS 87-37
  3015. Seattle, WA 98124-2499
  3016. Tel: (206)773-3980
  3017. Fax: (206) 773-4946
  3018. Email: mjdavis@plato.boeing.com
  3019.  
  3020. Abstract
  3021.  
  3022. Transitioning domain analysis to experienced systems and software 
  3023. engineers would be eased by the availability of automation supporting 
  3024. graphical modeling. Further,it would be even more useful if the domain 
  3025. modeling seemed to be an extension to the graphical modeling the 
  3026. engineers are already performing. Commercial support 
  3027. (ObjectMaker,PTech) does exist for customizing a graphical modeling tool 
  3028. but it is either relatively expensive to license or takes a considerable 
  3029. amount of additional code. The approach taken was to put together 
  3030. NASA's CLIPS and Motif in a prototype that would be suitable for 
  3031. experiments integrating domain analys is with different
  3032. graphical modeling methods.
  3033.  
  3034. Keywords: Reuse, Domain Analysis, Graphical Representation
  3035.  
  3036. Workshop Goals: Learning; networking; gathering information on 
  3037. successful reuse technology transitions
  3038.  
  3039. Working Groups: reuse process models; reuse technology transition; and 
  3040. management; reuse and OO methods and technology
  3041.  
  3042. 1   Background
  3043.  
  3044. Ms. Margaret (Maggie) J. Davis is the technical lead for reuse on the 
  3045. Boeing STARS project, which is sponsored by ARPA under USAF contract. 
  3046. Ms. Davis has served in a lead capacity on the Boeing STARSproject since 
  3047. its award in 1988. Maggie is also principal investigator for a Boeing 
  3048. internal research and development project promoting domain-specific 
  3049. reuse awareness within the company and experimenting with 
  3050. graphicalrepresentations of domain analysis models. World Wide Web 
  3051. technology is being used to promote reuse awareness by providing a 
  3052. forum for user questions as well as an information resource. Facilities of 
  3053. NASA's CLIPSexpert systems shell and Motif are being used to create a 
  3054. family of tools for graphical representation of domain models. This 
  3055. family will in turn be used as the base for domain graphical modeling 
  3056. trials by Boeing projects.
  3057.  
  3058. 2   Position
  3059.  
  3060. 2.1  Problem Description
  3061.  
  3062. In my experience so far,transitioning of domain analysis concepts and 
  3063. techniques to experienced software or systems engineers proceeds more 
  3064. smoothly if the "process" already in use is augmented rather than 
  3065. replaced. These "processes" are sometimes collections of analysis and 
  3066. modeling techniques known to be useful in the particular application 
  3067. area of the team or sometimes are commercially-available end-to-end 
  3068. software development methodologies such as P+.
  3069.  
  3070. Quite often these processes rely on graphical representations to 
  3071. communicate results and concepts to other team members, 
  3072. management, and customers. The learning curve for domain analysis 
  3073. can be less steep if a way can be found to augment a team's familiar 
  3074. graphical representations to include the necessary information for 
  3075. domain modeling.At a minimum, differentiating commonality from 
  3076. variability is required.
  3077.  
  3078. If a team is already performing analyses closely related to semantic 
  3079. modeling, KAPTUR can be used. In the embedded software milieu of most 
  3080. of Boeing's business,this is not the case. More often, entity-relationship 
  3081. models, data flow, control flow, stimulus-response networks , or 
  3082. architectural structures are depicted. Some teams or groups have 
  3083. adopted (and adapted to their needs) object-oriented analysis methods 
  3084. such as Rumbaugh or Coad defines.  Such groups are more open to 
  3085. domain analysis because they have been become familiar with the is-a 
  3086. concept. However,all these object-oriented analysis techniques promote 
  3087. unique graphical representations,no one of which seems to include 
  3088. depicting commonality versus variability explicitly.
  3089.  
  3090. Of the graphical models that can be encountered, software architecture 
  3091. representations pose a particularly knotty problem. Unlike electronic 
  3092. design, there is no standard symbology nor even a few competing defacto 
  3093. standards. Worse, architecture graphical models are often created as 
  3094. diagrams using whatever drawing package was at hand. The semantics 
  3095. associated with each symbol shape can vary within the diagram or 
  3096. across a series of diagrams that make a complete model.
  3097.  
  3098. As a technologist attempting to intro duce domain analysis and 
  3099. modeling concepts into a group or team's way of working, it would be 
  3100. extremely useful to have at one's fingertips a graphical modeling 
  3101. program that worked either on a Unixor a PC platform and that 
  3102. supported customization for different methods or techniques. This 
  3103. customization would address three areas:
  3104.  
  3105. Symbol presentation characteristics,
  3106.  
  3107. Data attributes associated with each symbol,
  3108.  
  3109. Methodology semantics.
  3110.  
  3111. 2.1.1 Symbol presentation characteristics
  3112.  
  3113. The symbol presentation semantics cover visual characteristics assigned 
  3114. to each methodology concept to be depicted:
  3115.  
  3116. shape such as rectangle, oval, diamonds, lines;
  3117.  
  3118. style such as line thickness or fill;
  3119.  
  3120. size such as height and width;
  3121.  
  3122. whether a user-entered text string should be displayed with a symbol 
  3123. instance;
  3124.  
  3125. whether a symbol instance can be resized by the user; and
  3126.  
  3127. whether a symbol instance can be reshaped such as from a square to a 
  3128. rectangle.
  3129.  
  3130. 2.1.2 Data attributes associated with each symbol
  3131.  
  3132. To elevate the tool from a mere drawing package to supporting graphical 
  3133. modeling, it is necessary to have the ability to associate data attributes 
  3134. with each symbol instance. For instance, if a symbol represented an 
  3135. abstract data type, itwould be useful to associate with that symbol 
  3136. dynamic characteristics such as timing and sizing expressions that could 
  3137. be used in subsequent simulations predicting performance.
  3138.  
  3139. Besides assigning a label for prompting the user for entry of a value for 
  3140. an attribute, it may also be useful to designate:
  3141.  
  3142. whether the user must supply a value or not;
  3143.  
  3144. what is the type of the attribute (text, integer, float, ...);
  3145.  
  3146. a range of legal values; and
  3147.  
  3148. a default value.
  3149.  
  3150. 2.1.3 Methodology semantics
  3151.  
  3152. Methodology semantics cover checking validity of data item values at 
  3153. instance creation or update, checking the validity of instance deletion, 
  3154. and a set of modeling characteristics that are manifested through user 
  3155. interaction with the tool.These user interaction semantics cover details 
  3156. such as:
  3157.  
  3158. whether symbol instances can be parents of other diagrams;
  3159.  
  3160. whether symbols can contain, overlap, or touch other symbols; and
  3161.  
  3162. whether symbols must be connected to other symbols.
  3163.  
  3164. 2.2  Approach Being Used
  3165.  
  3166. Commercial tools (e.g., ObjectMaker, PTech) are available that support 
  3167. certain customization characteristics listed above. When licensed to 
  3168. permit customization, either their cost is high or customization is a long 
  3169. and involved process.  Thus, the decision was made to bring together
  3170. NASA's CLIPS with MOTIF/X Windows to create prototype suitable for 
  3171. experimentation with various graphical model representations.
  3172.  
  3173. CLIPS is an embeddable expert system shell that provides an inference 
  3174. engine and an object language. Using CLIPS thus provides an opportunity 
  3175. to save individual models in  files that can be subsequently manipulated 
  3176. or analyzed by other CLIPS applications. CLIPS is a lso available for Unix, 
  3177. MacIntosh, and PC platforms.
  3178.  
  3179. MOTIF/X Windows may not have been the best choice - it was what was 
  3180. at hand. It does make it possible to provide the drawing and data entry 
  3181. capabilities familiar to software engineers.
  3182.  
  3183. 2.3  Major lessons learned so far
  3184.  
  3185. Motif programming is tedious. Implementing dialog boxes, menus, and 
  3186. buttons with Motif widgets is a fairly straightforward data definition 
  3187. task. There is a large amount of detail to keep consistent. GUI builders 
  3188. can help manage the detail. Neither GUI builders nor application 
  3189. definition languages provide any assistance in implementing the 
  3190. drawing area. Implementation of drawing, selection, sizing, shaping, 
  3191. andplacement of symbols requires copious amounts of code and 
  3192. knowledge of two-dimensional geometry.
  3193.  
  3194. Customization takes copious amounts of data. For each symbol defined, 
  3195. it is necessary to provide 16 to 64 separate customization decisions. 
  3196. These decisions are coded into CLIPS objects and used by the tool 
  3197. framework to dynamically configure an instance of the tool family. To 
  3198. simplify the customization activity that a technologist would have to 
  3199. perform, a generator was constructedusing the KAMEL tool created under 
  3200. the Boeing STARS project. This application of KAMEL queries the 
  3201. technologist for the customization decisions for each symbol, queries the 
  3202. technologist for the customization decisions that involve more than one 
  3203. symbol (connection, containment, ...), and then generates from those 
  3204. decisions the symbol customizations as CLIPS objects.The KAMEL 
  3205. application took about 16 hours to construct where the majority of the 
  3206. work involved writing the generator function. The effort was worthwhile 
  3207. since it ensures all the keywords are correct and the methodology-unique 
  3208. data is consistently applied. The KAMEL application also made it easier 
  3209. to specify the customizations that cross symbols. All of these had been 
  3210. problems when customization files were hand crafted.
  3211.  
  3212. Buy rather than build if at all reasonable. It has been an interesting 
  3213. learning experience to discover what it means to support data-driven 
  3214. customization of a graphical modeling tool frame-work. But, that effort 
  3215. has consumed more resource than was expected.
  3216.  
  3217. 3   Biography
  3218.  
  3219. Maggie Davis is Reuse Technology Area Lead for the Boeing 
  3220. STARSprogram, participating in joint STARS activities and leading the 
  3221. Boeing-specific reuse technology development.  Maggie is also principal 
  3222. investigator on a Boeing internal research and development project 
  3223. promoting reuse and transitioning reuse technology. Other Boeing 
  3224. applied research projects Maggie has participated in include applying 
  3225. object-oriented and knowledge-based techniques to the problem of 
  3226. system integration testing, using graphical user interfaces to support 
  3227. timing and sizing analyses, and authoring a guidebook for the Air Force 
  3228. on software specification techniques. Prior to her Boeing career, Maggie 
  3229. worked as a scientific and systems programmer. Maggie holds a M.S. in 
  3230. Computer Science from the University of Delaware.
  3231.  
  3232. Measuring the benefits of Software Reuse
  3233.  
  3234. Prem Devanbu and Sakke Karstu
  3235.  
  3236. Software and Systems Research Laboratory
  3237. AT&T Bell Lab oratories
  3238. Murray Hill, NJ 07974 USA
  3239. Email: prem,karstu@research.att.com
  3240.  
  3241. Abstract
  3242.  
  3243. How much can be saved by using existing software components when 
  3244. developing software? With the increasing adoption of reuse methods and 
  3245. technologies,this question becomes critical.  However, accounting for the 
  3246. actual cost savings due to reuse may be difficult. It would be desirable to 
  3247. measure the savings indirectly by analyzing the code for reuse of 
  3248. components. The central focus of our work is the development of some 
  3249. properties that (we believe) should hold of any reasonable measure of 
  3250. reuse benefit. We explore the relationship between several existing 
  3251. approaches to reuse measurement and these properties. We have 
  3252. developed an "expanded source" measure as an indirect measure for 
  3253. reuse benefit, and evaluate it theoretically, using our properties; we have 
  3254. also built tools to gatherour measures and the previously proposed ones, 
  3255. and done some preliminary empirical work using some public domain 
  3256. windowing software.
  3257.  
  3258. Keywords: metrics, indirect, axioms
  3259.  
  3260. Workshop Goals: Learning; networking.
  3261.  
  3262. Working Groups:reuse process models, reuse education, application 
  3263. generators.
  3264.  
  3265. 1   Background
  3266.  
  3267. As reuse efforts mature,it is very important to demonstrate to 
  3268. management and funding agencies that reuse makes good business sense; 
  3269. to this end, it is necessary to have methods to gather and furnish clear 
  3270. financial evidence of the benefits of reuse in real projects. Thus, we need 
  3271. to define good metrics that capture these benefits.
  3272.  
  3273.  
  3274. We can think of reuse benefit of a project or system, as being the 
  3275. normalized (percentage) financial gain due to reuse. This is an example 
  3276. of an external process attribute (see [1]),concerned with an external 
  3277. input (money) into the software development process. Unfortunately,the 
  3278. direct measurement of the actual financial impact of reuse in a system 
  3279. can be difficult. There are different types of reuse - reuse of 
  3280. specifications, of design, and code.  Specification and design processes 
  3281. often have informal products (such as natural language documents) 
  3282. which can be quite incommensurate. Even in reuse of code, there are 
  3283. different modus operandi, from the primitive "cut, shred, and paste",
  3284. to the formal, controlled language based approaches provided in 
  3285. languages such as C++. In any case, to determine cost savings, one may 
  3286. have to ask individual developers to estimate the financial benefit of the 
  3287. code that they reused. This information may be unreliable and 
  3288. inconsistent.
  3289.  
  3290. There has been a body of work in the area that addresses this issue: a 
  3291. variety of methods for measuring the degree of reuse in a system have 
  3292. been proposed [2, 3, 4, 5, 6].
  3293.  
  3294. 2   Position
  3295.  
  3296. Fortunately,one of the key approaches to reuse is the use of features such 
  3297. as functions and modules in modern programming languages. In this 
  3298. context, one can find evidence of (some kinds of) reuse directly in the 
  3299. code; thus, it may be possible to find an indirect measure of the benefits 
  3300. of software (code) reuse directly in the code. Measures derivable directly 
  3301. from the code are internal measures; this paper, then, is concerned with 
  3302. the problem of finding an indirect, internal measure, in the code of a 
  3303. system, of an external process attribute, namely, reuse benefit. Following 
  3304. Weyuker [7] in the field of complexity measures, we develop some 
  3305. general properties or axioms that (we argue) should apply to any 
  3306. measure of reuse benefit. Although (for reasons discussed above) it is 
  3307. difficult to develop a direct, external measure of reuse benefit, these 
  3308. axioms give us a yardstick to evaluate candidate internal measures.
  3309.  
  3310. Fenton [1] categorizes software measures along two orthogonal axes. The 
  3311. first is the process/product axis: a metric may measure an attribute of 
  3312. software product, (e.g., quality of code), or an attribute of software 
  3313. process (e.g., cost of design review meetings). Another, orthogonal axis is 
  3314. the internal/external axis. A metric may measure an internal attribute 
  3315. (e.g., the number of loops in a module), or an external attribute (e.g., 
  3316. maintainability of a module). Our goal is to develop a reasonable way of 
  3317. measuring the actual financial impact of reusing software. By Fenton's 
  3318. categorization, this is an external process attribute.  We would like to 
  3319. measure reuse benefit as a normalized (we shall explain later why we 
  3320. choose to normalize) measure of the degree of cost savings achieved by 
  3321. adopting software reuse. Thus, we define Rb, the reuse benefit of a system 
  3322. S, as follows:
  3323.  
  3324.                            cost-of-developing-S-without-euse  -
  3325. (1) Rb(S) =                                        cost-of-developing-S-with-reuse
  3326.                           ---------------------------------------------------------------------------------
  3327.                                             cost of S without reuse
  3328.  
  3329. It can often be difficult to get a reasonable direct measure of Rb. In cases 
  3330. like this, software metricians have used indirect measures. For example, 
  3331. the external process attribute of maintainability is often measured 
  3332. indirectly1by internal product measures of complexity such as 
  3333. cyclomatic complexity. Likewise,the internal product measure of software 
  3334. size (in units of NCSL) is considered be a reasonable indirect measure of 
  3335. the external process attribute of maintenance cost. Following this 
  3336. approach, we are concerned with the development of an indirect 
  3337. internal measurement of Rb, the normalized reuse benefit of a system 
  3338. S,from the product, by searching the source code of S for instances of 
  3339. language-based reuse such as subroutine calls. The desire for an indirect 
  3340. benefit is one reason we choose a normalized measure. The relationship 
  3341. of the actual benefit to the source code may be much more 
  3342. implementation dependent than the normalized benefit: the actual cost 
  3343. of each line of code is likely to depend much more on the project than 
  3344. the relative cost for each line of code.
  3345.  
  3346. With such an indirect measure,there is a risk that we are not really 
  3347. measuring what we seek to measure; we would therefore like to validate 
  3348. our indirect measure in some way.  One approach to validating indirect 
  3349. measures is to perform empirical studies.  Aparallel (or prior) approach, 
  3350. proposed by Weyuker [7] and others is to enumerate some formal 
  3351. properties that should hold of any measure (direct or indirect) of the 
  3352. attribute in question. Weyuker used this approach to evaluate several 
  3353. internal measures of complexity.  Of course, we are using this approach 
  3354. differently than Weyuker: she "axiomatized2" properties of a complexity 
  3355. internal measure,and evaluated several internal complexity measures 
  3356. againstthese properties. We are seeking to "axiomatize" an external 
  3357. measure_reuse benefit_and use these "axioms" to evaluate and develop 
  3358. indirect internal measures of reuse benefit. In addition, measuring reuse 
  3359. benefit is quite different from measuring complexity; thus many of her 
  3360. axioms aren't relevant in our context. However,her Property 4 
  3361. (implementation dependence) is critically important in measuring reuse, 
  3362. and in fact, we reformulate and strengthen Property 4 in several ways 
  3363. applicable specially to measures of reuse benefit. In the full paper, we 
  3364. present a set of 10 axioms that formalize desirable properties of internal 
  3365. metrics that seek to indirectly measure reuse benefit.
  3366.  
  3367. 3   Related Work
  3368.  
  3369. There are many models and metrics is the literature that try to evaluate 
  3370. the relative benefit achieved by reuse in a software system. In the full 
  3371. paper, we describe 2 main types of measures: the producer-consumer 
  3372. models of [8, 9, 10, 3, 6],and the reuse level measures of Frakes and Terry 
  3373. [2]. The former category gives weight to the actual size (NCSL) of the 
  3374. reused portion of the system. The latter suggests a reuse requency 
  3375. measure that gives weight to the number of times a component is used 
  3376. or reused. Both these measureshave been used in actual systems, and 
  3377. theresults have been reported by the authors. The axioms we report in 
  3378. [11] are applicable to both these measures,although in the case of [9] 
  3379. (and in [2]) some system-specific interpretations may be needed, since 
  3380. Poulin's measures involve some subjective accounting (Poulin, however 
  3381. gives detailed guidance on the accounting to minimize variance). Our 
  3382. properties serve as a formal framework in which these different measures 
  3383. can be compared. In [11], we undertake such a comparison, and propose 
  3384. a new measure that combines attractive elements from both these 
  3385. categories.
  3386.  
  3387. Indirect measures are also used often in the physical and social sciences. 
  3388. For example the attribute of temperature is measured indirectly by the 
  3389. length of a mercury column in a thermometer.  We use the quotation 
  3390. marks here because these are not necessarily axioms in the formal 
  3391. mathematical sense, but rather a list of properties that would appear to 
  3392. most people to hold of the measures in question.
  3393.  
  3394. 4   Conclusion
  3395.  
  3396. This paper is concerned with the indirect measurement of the benefit of 
  3397. software reuse by observing reuse occurrences in code. We have proposed 
  3398. a set of desirable properties of reuse benefit measures. In the full paper 
  3399. [11], we fully describe and justify these properties; we evaluate existing 
  3400. measures with respect to these properties;we propose a new measure of 
  3401. software reuse, which conforms more closely to our proposed properties; 
  3402. we also identify some basic difficulties in measuring reuse benefit that 
  3403. appear to be intractable. In addition to this theoretical evaluation,we 
  3404. have constructed the tool infrastructure to gather data on our measures 
  3405. and the other measures suggested in the literature by direct analysis of 
  3406. ANSI C and C++ systems.We have done a pilot study using some public-
  3407. domain windowing software.We are currently pursuing cross-validation 
  3408. of these internal metrics data with external process attributes. This 
  3409. validation should shed some light on the appropriateness of our 
  3410. axiomatization.
  3411.  
  3412. References
  3413.  
  3414.  [1]N. E. Fenton, Software Metrics: A Rigorous Approach. Chapman & 
  3415. Hall, 1991.
  3416.  
  3417.  [2]W. Frakes and C. Terry, "Reuse level metrics," in Third International 
  3418. Conference on Software Reuse, pp. 139-148, 1994.
  3419.  
  3420.  [3]J. J. E. Gaffney and Cruickshank, "Economic impact of software 
  3421. reuse," in Fourteenth Inter-national Conference on Software Engineering, 
  3422. IEEE Press, 1992.
  3423.  
  3424.  [4]J. Poulin,"Survey of approaches to reusability metrics," Tech. Rep. 14 
  3425. March, Federal Systems Company IBM, 1994.
  3426.  
  3427.  
  3428.  [5]J. Poulin,"Measuring software reusability,"in Third International 
  3429. Conference on Software Reuse, pp. 126-138, 1994.
  3430.  
  3431.  [6]Y.-F. Chen andB. K. a= nd Kiem-Phong Vo, "An Objective Reuse Metric: 
  3432. Model   and Methodology," in Fifth European Software Engineering 
  3433. Conference, 1995.
  3434.  
  3435.  [7]E. J. Weyuker, "Evaluating software complexity metrics," IEEE 
  3436. Transacations on Software Engineering, vol. 14, no. 9, pp. 1357-1365, 
  3437. 1988.
  3438.  
  3439.  [8]T. Bollinger and S. Pfleeger, "Economics of reuse: issues and 
  3440. alternatives, " Information and SoftwareTechnology, vol. 32,no. 10, pp. 
  3441. 643-652, 1990.
  3442.  
  3443.  [9]J. Poulin,J. Caruso, and D. Hancock, "The business case for software 
  3444. reuse," IBM Systems Journal, vol. 32, no. 4, pp. 567-594, 1993.
  3445.  
  3446. [10]J. J. E. Gaffney and T. A. Durek, "Software reuse - key to enhanced 
  3447. productivity: some quantitative models,"Information and Software 
  3448. Technology, vol.31, no. 5, pp. 258-267, 1989.
  3449.  
  3450. [11]P.Devanbu and S. Karstu, "Measuring the benefits of software reuse," 
  3451. tech. rep., AT&TBell Laboratories, 1994.
  3452.  
  3453. 5   Biography
  3454.  
  3455. Premkumar T. Devanbu is a member of the Software and Systems 
  3456. Research Laboratory at AT&T Bell Laboratories in Murray Hill, New Jersey. 
  3457. He is the creator of the GENOA/GENII system, which was used to 
  3458. implement GEN++, the first widely distributed meta-analysis tool for C++ 
  3459. programs. His research interests include static analysis, reverse 
  3460. engineering, application generators, dynamic analysis, applications of AI 
  3461. to software engineering and software tools.  He received a Ph.D. in 
  3462. Computer Science from Rutgers University in 1994.
  3463.  
  3464. Sakke Karstu is a member of the Center for Experimental Computation at 
  3465. Michigan Technological University in Houghton,Michigan. He has 
  3466. developed several tools with GEN++, including a reuse analyzer used in 
  3467. this research and a static slicer, which is used to calculate slice based 
  3468. cohesion measures. His research interests include software metrics and 
  3469. their utilization in commercial software development. He received a MS 
  3470. in computer science from Michigan Technological University in 1994.
  3471.  
  3472. A Case Study of Software Architecture Life Cycle Processes
  3473.  
  3474. David Dikel, Carol Terry, David Kane, Bill Loftus
  3475.  
  3476. Applied Expertise
  3477. 1925 North Lynn Street
  3478. Suite 802
  3479. Arlington, VA 22209
  3480. Tel: (703)516-0911
  3481. Email:ddikel@aecorp.com, cterry@aecorp.com
  3482. dkane@aecorp.com,william.loftus@kant.wpl.com
  3483.  
  3484.  
  3485. Abstract
  3486.  
  3487. A growing number of technologists believe that an architecture-based 
  3488. approach to software development can enable smaller teams to build 
  3489. better products faster and maintain those products more effectively. 
  3490. However, growing experience indicates that the primary problems to 
  3491. evolving and maintaining a long-standing architecture are 
  3492. organizational, not technical. Applied Expertise will conduct a case study 
  3493. of Bell Northern Research's Transmission System's architecture to learn 
  3494. how the organizational challenges of maintaining a software architecture 
  3495. once fielded were overcome.
  3496.  
  3497. Keywords: architecture, product-line, organizational processes, case study
  3498.  
  3499. Workshop Goals: learning; networking; receiving feedback and input on 
  3500. our case study.
  3501.  
  3502. Working Groups:reuse management, organization and economics.
  3503.  
  3504. 1   Background
  3505.  
  3506. The Applied Expertise team has long-standing experience with software 
  3507. reuse. Dave Dikel's 1987 case studies of commercial Ada use identified 
  3508. reuse as a key driver for adopting Ada. [1] Since then, Dikel has 
  3509. developed and worked with customers to implement reuse-related 
  3510. operating concepts, strategies and plans for NASA, Department of Defense 
  3511. and Fortune 500 clients. For example, Dikel drafted key elements of 
  3512. DOD's plan for its Software Reuse Initiative (SRI), submitted to Congress 
  3513. in April 1994. Dikel led a case study for the ARPA Software Technology 
  3514. for Adaptable,Reliable Systems (STARS) focusing on software reuse criteria 
  3515. within Bell Canada's Trillium capability model. Later AE's team, 
  3516. including Carol Terry, Dave Kane and Dikel, captured and applied Bell 
  3517. Canada's use of Trillium to manage risks related to software reuse. 
  3518. Terryhas also published widely on software reuse metrics. Sponsored by 
  3519. NASA, Dikel and Terry, both help to lead the Reuse Library 
  3520. Interoperability Group (RIG), Terry as Vice Chair of TC6 and Dikel,as Vice 
  3521. Chair of the Executive Board. Kanemanages the RIG Secretariat for STARS. 
  3522. Kane has also performed domaim analysis for information systems.
  3523.  
  3524. Since the mid 80's William Loftus has also maintained an important role 
  3525. in DoD's STARSprogram.  As an AE Senior Associate, Loftus helped 
  3526. developed a software reuse strategy for a major Wall Street firm. Mr. 
  3527. Loftus recently completed a major software re-engineering project for a 
  3528. Fortune 500 firm, on time and below budget, leveraging software reuse 
  3529. and object oriented programming technologies. Terry manages AE's 
  3530. support to DoD's Interoperability Vision Working Group for SRI. Under 
  3531. this contract, Loftus and Terry lead the design of a technical reference 
  3532. model and concept of operations for reuse library interoperability for the 
  3533. DoD Software Reuse Initiative.
  3534.  
  3535. 2   Position
  3536.  
  3537. 2.1  Problem
  3538.  
  3539. Architecture-based software development is an emerging technology. [2] 
  3540. A growing number of technologists believe that an architecture approach 
  3541. can enable smaller teams to build better products faster and maintain 
  3542. those products more effectively. There is a growing body of knowledge 
  3543. about how to design and build a software or systems architecture, as 
  3544. evidenced in programs such as the Software Technology for Adaptable, 
  3545. Reliable Systems (STARS). The STARS program has developed and 
  3546. increased the maturity,visibility and viability of architecture-based 
  3547. software engineering technology.
  3548.  
  3549. Growing experience indicates that the primary problem in 
  3550. implementing, evolving and maintaining a long-standing architecture is 
  3551. often organizational, not technical. [3]  Introducing an architecture-
  3552. based approach and achieving product-line reuse can require an 
  3553. organization to make major changes that affect not only technology, but 
  3554. its very management structure. Even though the perceived benefits of 
  3555. this technology are great,the risk of moving to this technology is also 
  3556. perceived as high for both managers and for the technology champions 
  3557. who are driving the effort. 
  3558.  
  3559. There are few case-studies that providedirections to use, re-use, maintain 
  3560. and terminate these architectures. As a result, the organizational 
  3561. problems, issues, and solutions that can be learned from the long-term 
  3562. users of a software architecture are not widely known. For these and 
  3563. other reasons, it is important that these long-term software architectures 
  3564. be studied to learn how these organizational challenges can be overcome.
  3565.  
  3566. 2.2  Our Work
  3567.  
  3568. Applied Expertise (AE) is conducting a case study to uncover the key 
  3569. organizational elements in successfully evolving a product-line 
  3570. architecture.  This work builds on a 1993 case study of Bell Canada's 
  3571. Trillium that identified several examples of long-term, successful 
  3572. software architectures within the telecommunications industry.  One 
  3573. such example is Bell Northern Research (BNR) Switching Systems' 
  3574. evergreen architecture. First fielded in 1975,the architecture adapted to 
  3575. vast technological changes,and was used to build a range of products 
  3576. from simple office switches to toll switches that serve entire countries.
  3577.  
  3578. AE's study will inspect BNR's Transmission product-line architecture. The 
  3579. study team will develop a focused set of hypotheses from the work 
  3580. ofGrady Booch, the Software Engineering Institute (SEI) and 
  3581. others,consisting of the key elements necessary for successfully evolving 
  3582. along-term product-line architecture. For example, one hypothesis might 
  3583. be:
  3584.  
  3585. Successfully evolving a product-line architecture requires a ruthless focus 
  3586. on simplification, clarification and minimalization. [4]
  3587.  
  3588. To provide depth, we plan to involve the intended audience for our 
  3589. products in the design and review of the initial study by forming an 
  3590. advisory group. This will increase the efficiency of our research and the 
  3591. impact of the products. The advisory group includes stakeholders in 
  3592. industry and government who have a strong interest and/or experience 
  3593. base in using an architecture-based approach to developing software. 
  3594. The group will review the initial hypotheses for the study,and will also 
  3595. collaboratively review and discuss the findings of the study.
  3596.  
  3597. 3   Comparison
  3598.  
  3599. Most current software architecture research efforts focus on defining and 
  3600. building an architecture and the skills and tools necessary for 
  3601. implementation. The Domain Specfic Software Architecture (DSSA) is a 
  3602. good example ofsuch an approach. A major thrust of this effort is to use 
  3603. software architectures to create applications inan automated fashion. [5]
  3604.  
  3605. There is a growing amount of anecdotal evidence that organizational 
  3606. issues are a major obstacle to the institutionalization of softwarereuse. 
  3607. There is some work that addresses these factors,including Grady Booch's 
  3608. forthcoming book, Object Solutions: Managing the Object Oriented 
  3609. Project. [4] However, we have found few formal case studies covering the 
  3610. topic. Further,while Booch addresses software architectures in some 
  3611. depth, the primary focus of his work is object-oriented project 
  3612. management.
  3613.  
  3614. Our approach will establish new ground by investigating the 
  3615. organizational issues surrounding the software architecture life-cyclewith 
  3616. more structure and rigor than has been done previously.
  3617.  
  3618. References
  3619.  
  3620. [1]D. Dikel,"Tracking the use of ada in commercial applications," Tech. 
  3621. Rep. 387-001-001,Ad-damax Corporation, 1987.
  3622.  
  3623. [2]D. E. Perry and A. L. Wolf, "Foundations for the study of software 
  3624. architecture," ACMSIG-SOFT, October 1992.
  3625.  
  3626. [3]P. Collins,"Software reuse at hewlett-packard," 1995.
  3627.  
  3628. [4]G. Booch, Object Solutions: Managing the Object-Oriented Project. 
  3629. unpublished, 1995.
  3630.  
  3631. [5]W. H. Christine Braun and T. Ruegsegger, "Domain specific software 
  3632. architectures - commands and control," 1993.
  3633.  
  3634. 4   Biography
  3635.  
  3636. Dave Dikel is Vice President and director of research at Applied 
  3637. Expertise.He currently directs work for DoD, NASA, and industry, focusing 
  3638. on software reuse, software risk management and technology transition, 
  3639. including projects for the Advanced Research Projects Agency, NASA, Loral 
  3640. and Hewlett-Packard. Mr. Dikel led a landmark study of Bell-Canada's 
  3641. Trillium software capability model. Mr. Dikel earned international 
  3642. distinction for his work in sizing and analyzing the Ada market and for 
  3643. his case studies of Ada,and other emerging technologies. He founded the 
  3644. ACM SIGAda Commercial Ada Users Working Group. Mr. Dikel earned a 
  3645. bachelor's degree in philosophy and physical sciences at the University 
  3646. of California, San Diego.
  3647.  
  3648. Carol Terry is a Research Engineer at Applied Expertise, Inc. where she 
  3649. leads software engineering research and policy analysis for customers in 
  3650. government and industry. Her current research areas are software reuse 
  3651. and architecture-based development, technology transfer,and software 
  3652. risk management. Ms. Terry has a master's degree in information 
  3653. systems with a concentration in software engineering from Virginia 
  3654. Polytechnic Institute and State University, where she achieved                                  
  3655. distinction for research in software reuse and metrics.
  3656.  
  3657. David Kane isa Software Engineer at Applied Expertise. He has developed 
  3658. information systems for a variety of government organizations, and has 
  3659. created an innovative technology transfer workshop for Hewlett-Packard. 
  3660. His research interests include risk management and software process 
  3661. improvement for small organizations.  Mr.  Kane has a bachelor's degree 
  3662. in computer science - mathematics from the State University of New York 
  3663. at Binghamton.
  3664.  
  3665. William Loftus is an Applied Expertise Senior Associate. Mr. Loftus 
  3666. performs major systems design, development and software reuse 
  3667. assessment work for Applied Expertise. Mr.Loftus is a certified Sun 
  3668. Microsystems consultant.He has given many seminars and presentations 
  3669. on advanced software technology and has been published in a number of 
  3670. journals. At Unisys,Mr. Loftus received several awards and 
  3671. commendations for his contributions to the Unisys advance software 
  3672. program and the DoDAda Command Environment (ACE). He earned a 
  3673. bachelor EDs degree and a master's degree in computer science from 
  3674. Villanova University.
  3675. Good Mental Models are Necessaryfor Understandable Software
  3676.  
  3677. Stephen H. Edwards
  3678.  
  3679. Dept. of Computer and Information Science
  3680. The Ohio State University
  3681. 395 DreeseLab
  3682. 2015 Neil Avenue
  3683. Columbus, Ohio 43210-1277
  3684. Tel: (614)292-5841
  3685. Email:edwards@cis.ohio-state.edu
  3686. URL: http://www.cis.ohio-state.edu/edwards
  3687.  
  3688. Abstract
  3689.  
  3690. People form internal mental models of the things they interact with in 
  3691. order to understand those interactions. This psychological insight has 
  3692. been used by the human-computer interaction (HCI) community to 
  3693. build computer systems that are more intuitive for end users, but it has 
  3694. not yet been applied to the problems of software designers, programmers, 
  3695. and maintainers. In fact, conventional programming languages do little 
  3696. to help client programmers develop good mental models of software 
  3697. subsystems. The main problem is that the conventional wisdom that 
  3698. software modules are merely a syn-tactic mechanism for organizing 
  3699. declarations and controlling visibility is wrong. This skewed view of the 
  3700. nature of software modules limits their utility as effective building-blocks 
  3701. for creating large, complex software systemsthat are comprehensible to 
  3702. human readers. To constitute effective building-blocks,modules must 
  3703. present simple mental models to the softwa reprofessionals involved in 
  3704. assembling them into larger modules,and ultimately into complete 
  3705. software systems. Because a module has no real semantic denotation of 
  3706. its own, there is no way for one to imagine such building-blocks as 
  3707. contributing to the understandability of the software comprising them.
  3708.  
  3709. Keywords: Mental model, module, programming language, 
  3710. understandability
  3711.  
  3712. Workshop Goals: Cross-fertilization of ideas with other researchers; 
  3713. building on the results of WISR6; keeping abreast of other on going reuse 
  3714. work; advancing the theoretical foundations of software reuse.
  3715.  
  3716. Working Groups: reuse and formal methods, design guidelines for reuse, 
  3717. reuse and OO meth-ods, component certification.
  3718.  
  3719. 1   Background
  3720.  
  3721. The Reusable Software Research Group at the Ohio State University has 
  3722. been exploring the technical problems of software reuse for the past 
  3723. several years, focusing on a disciplined approach to software engineering 
  3724. as a possible solution. The key goal of ensuring that this discipline of 
  3725. software construction will scale up to large systems has led the RSRG to 
  3726. center on the concept of supporting modular reasoning or local 
  3727. certifiability at the component level [1, 2,3].  In short, the client of a 
  3728. reusable component or subsystem should only have to consider a 
  3729. bounded amount of information (i.e., local, rather than global) when 
  3730. reasoning about whether that component is the correct one to choose, 
  3731. and whether it is being used correctly. A specific software discipline that 
  3732. ensures that all components have this property is described by 
  3733. Hollingsworth [4].
  3734.  
  3735. In addition to the requirement for local certifiability from a technical 
  3736. perspective, however, good reusable software must also support effective 
  3737. (and modular) human understanding from a psycho-logical perspective. 
  3738. This position paper claims that current programming languages do not 
  3739. offer any support for human understanding of programs. This claim is 
  3740. further developed elsewhere by Edwards [5], where a proposed solution is 
  3741. also detailed.
  3742.  
  3743. 2   Position
  3744.  
  3745. In interacting with the environment, with others, and with the artifacts
  3746. of technology, people form internal, mental models of themselves and 
  3747. ofthe things with which they are interacting. These models provide 
  3748. predictive and explanatory power for understanding the interaction. 
  3749. These statements hardly need be said, for they are consistent with all 
  3750. that we have learned about cognitive processes and,within [the book 
  3751. Readings in Human-Computer Interaction], represent the major 
  3752. underlying conceptual theme. Nonetheless, it does not hurt to repeat 
  3753. them and amplify them,for the scope of the implications of this view is 
  3754. larger than one might think.
  3755.        - Donald Norman [6, p. 241]
  3756.  
  3757. As Donald Norman indicates, the human-computer interaction (HCI) 
  3758. community has benefited from exploring the implications of mental 
  3759. models. This perspective has aided their ability to create more usable, 
  3760. understandable user interfaces for computer programs, as exemplified by 
  3761. the popular "desk top" metaphor.
  3762.  
  3763. Researchers also have used the concept of mental models to examine 
  3764. how programmers design new software [7][8][9] and understand existing 
  3765. software [10][11]. The next logical step,as it was for the HCI community, 
  3766. is to ask how focusing on mental models can help us create software that 
  3767. is more usable and understandable to programmers. This is particularly 
  3768. important in the coming age of "software reuse, "where software parts 
  3769. will be written with the goal of being utilized by different programmers 
  3770. in quite disparate contexts.  Unfortunately,asking questions about how 
  3771. programming languages support the formation of effective mental 
  3772. models leads one to conclude that conventional programming languages 
  3773. are inadequate for constructing large, sophisticated software systems that
  3774. are "understandable."
  3775.  
  3776. 2.1  Why Conventional Languages Fail
  3777.  
  3778. In short, modern programming languages have evolved from their 
  3779. predecessors with the primary purpose of describing instructions to 
  3780. computers.  They were never designed to help explain to people the 
  3781. meaning of the software that they can describe. This has led to two 
  3782. critical problems with programming languages today: modules are 
  3783. considered to be purely syntactic constructs with no independent 
  3784. meaning,and those parts of programs that are deemed meaningful 
  3785. (usually procedures, in imperative languages) have a "hierarchically 
  3786. constructed" meaning.
  3787.  
  3788. First,most modern programming languages have some construct that is 
  3789. intended to be the primary "building-block" of complex programs. This 
  3790. building-block may be called a "module,"a "package," a "structure," or a 
  3791. "class." Unfortunately, these constructs are rarely given meaningful 
  3792. semantic denotations. Conventional wisdom in the computer science 
  3793. field indicates that these constructs are primarily for grouping related 
  3794. definitions, controlling visibility, and enforcing information hiding.
  3795. For example, when speaking of module-structured languages like Ada or 
  3796. Modula-2, Bertrand Meyer states:
  3797.  
  3798. In such languages, the module is purely a syntactic construct, used to 
  3799. group logically related program elements; but it is not itself a 
  3800. meaningful program element, such as a type, a variable or a procedure, 
  3801. with its own semantic denotation.[12, p. 61]
  3802.  
  3803. In this view, there is no way forone to make such building-blocks 
  3804. contribute directly to the understandability of the software comprising 
  3805. them. While object-oriented languages usually give a stronger meaning to 
  3806. the notion of a "class,"they also fail to provide any vision of how the 
  3807. meaning of individual classes can contribute to a broader understanding 
  3808. of the software systems in which they are embedded.
  3809.  
  3810. Second, those program elements that are given a real semantic 
  3811. denotation are often given a meaning that is "hierarchically 
  3812. constructed,"or synthesized. In other words, the meaning of a particular 
  3813. program construct, say a procedure, is defined directly in terms of its 
  3814. implementation_a procedure "means" what the sequence of statements 
  3815. implementing it "means." The meaning of its implementation is defined 
  3816. in terms of the meanings of the lower-level procedures that it calls. Thus, 
  3817. a procedure's meaning is "constructed" from the meanings of the lower-
  3818. level program units it depends on,and the meanings of those lower-level 
  3819. units in turn depend on how they are implemented,
  3820. and so on.
  3821.  
  3822. This simple synthesis notion of how meaning is defined bottom-up is 
  3823. adequate from a purely technical perspective. It is also very effective 
  3824. when it comes to describing the semantics of layered programming 
  3825. constructs. Unfortunately, it is at odds with the way human beings form 
  3826. their mental representations of the meaning of software parts [5].
  3827.  
  3828. The result of these two features of programming languages is that they 
  3829. are inadequate for effectively communicating the meaning of a software 
  3830. building-block to people (programmers, in particular). The semantic 
  3831. denotations of programming constructs in current languages only relate 
  3832. to how a program operates. They fail to capture what a program is 
  3833. intended to do at an abstract level, or why the given implementation 
  3834. exhibits that particular abstract behavior. In order to address these 
  3835. concerns, it is necessary to assign meaning to software building-blocks, to 
  3836. separatethe abstract description of a software part's intended behavior 
  3837. from its implementation,and to provide a mechanism for explaining 
  3838. why the implementation of the part achieves behavior consistent with 
  3839. that abstract description.
  3840.  
  3841. 2.2  Why Comments Alone are not Enough
  3842.  
  3843. When trying to provide simple mental models for software components, 
  3844. the question ofthe effectiveness of comments arises. Thorough 
  3845. commenting of a component interface can allow a software designer to 
  3846. document the conceptual model of the part and pass this model on to 
  3847. other professionals using that part. In addition to the possibility of 
  3848. informal written descriptions of conceptual models, comments also 
  3849. allowthe inclusion of formally defined behavioral specifications. Entire 
  3850. specification languages, such as ANNA [13], have been designed to 
  3851. support complete or partial formal specifications via structured 
  3852. comments.
  3853.  
  3854. Unfortunately, this is really only enough to capture (most often, 
  3855. informally) the external behavior advertised in a component's 
  3856. specification.To truly embrace the perspective instigated by mental 
  3857. models, one must also provide support for forming mental models of the 
  3858. implementation of a software component, how that implementation 
  3859. works, and why it gives rise to the abstract description in its 
  3860. specification. Software implementations typically rely on more 
  3861. information to operate correctly than is represented in the source code 
  3862. alone in a conventional language [14, pp 70-74][15, pp. 47-48]. Consider 
  3863. an abstract data type, where an implementation level "representation 
  3864. invariant" or its equivalent is proposed to capture some of this 
  3865. information. This,in addition to a model of the representation of the 
  3866. exported data type and behavioral descriptions of all internally declared 
  3867. operations, makes up a maintainer's mental model of a component 
  3868. implementation.
  3869.  
  3870. Further, however, one must also account for the maintainer's mental 
  3871. model of why that implementation conforms to its specification - the 
  3872. basis for explaining why the behavior of the inner, more detailed mental 
  3873. model can be interpreted as being consistent with that predicted from 
  3874. the specification's more abstractly described cover story. This 
  3875. information is usually associated with an "abstraction function," 
  3876. "abstract relation," or "type correspondence" that explains the 
  3877. relationship between the representation of a given data type and its 
  3878. abstract specification. Similar information must be recorded about the 
  3879. relationship between module-level state variables in the
  3880. implementation and those visible in the specification.
  3881.  
  3882. Certainly it is possible to lay out a comprehensive plan for how to 
  3883. document all of this information via structured,formal or informal 
  3884. comments. Once all of this information is captured in the software
  3885. component itself, it is even possible to start asking questions about 
  3886. whether the component is being used correctly:
  3887.  
  3888. Does this implementation actually conform to that specification?
  3889.  
  3890. From the client's point of view,is she using the given component 
  3891. "correctly" (i.e., in accordance with its professed abstract model)?
  3892.  
  3893. Will a proposed maintenance change introduce new defects by violating 
  3894. the expectations of the remainder of the implementation, asexpressed in 
  3895. the representation invariant(s)? Will it invalidate the reasons why the 
  3896. implementation currently conforms to the specification?
  3897.  
  3898. Unfortunately, to lay out this comprehensive commenting plan, one 
  3899. mustgo to a great deal of trouble to provide a firm foundation for it. 
  3900. Indeed, one must understand all of the information that must be 
  3901. represented, and have a firm grasp of the theoretical underpinnings of 
  3902. how valid answers to questions like those above are generated. In doing 
  3903. this, the researcher steps far beyond the idea
  3904. of "simply commenting the code," and runs head on into the same 
  3905. problem of how to (formally) address support for mental models in a 
  3906. meaningful way.
  3907.  
  3908. 2.3  Correcting the Deficiency
  3909.  
  3910. The ACTI model proposed by Edwards [5] is centered around the notion 
  3911. of a "software subsystem," a generalization of the idea of a module or a 
  3912. class that serves as the building-block from which software is 
  3913. constructed. A subsystem can vary in grain size from a single module up 
  3914. to a large scale generic architecture.  ACTI is designed specifically to 
  3915. capture the larger meaning of a software subsystem in a way that 
  3916. contributes to human understanding, not just the information necessary 
  3917. to create a computer-based implementation of its behavior.
  3918.  
  3919. ACTI is not a programming language, however. It is a formal, theoretical 
  3920. model of the structure and meaning of software subsystems. It has two 
  3921. features that specifically address the inadequacies of conventional 
  3922. languages:
  3923.  
  3924. 1. In ACTI, software subsystems (building-blocks) have an intrinsic 
  3925. meaning; they are not just syntactic constructs used for grouping 
  3926. declarations and controlling visibility. This meaning encompasses an 
  3927. abstract behavioral description of all the visible entities within a 
  3928. subsystem.
  3929.  
  3930. 2.The meaning of a software subsystem is not, in general, hierarchically 
  3931. constructed. In fact, it is completely independent of all the alternative 
  3932. implementations of the subsystem.
  3933.  
  3934. Thus, ACTI provides a mechanism for describing what a subsystem does, 
  3935. not just how it is implemented. The meaning provided for a subsystem 
  3936. is a true abstraction - a "cover story" that describes behavior at a level 
  3937. appropriate for human understanding without explaining how the
  3938. subsystem is implemented. Further, ACTI provides a formally defined 
  3939. mechanism, called an interpretation mapping, that captures the 
  3940. explanation of why an implementation of a subsystem will give rise to 
  3941. the more abstractly described behavior that comprises the meaning 
  3942. attributed to the subsystem - in short, an explanation for why the cover 
  3943. story works.
  3944.  
  3945. 3   Comparison
  3946.  
  3947. Edwards [5] presents a thorough comparison of several programming 
  3948. languages that are representative of best current practices: RESOLVE [16, 
  3949. 1],OBJ [17], Standard ML [18],and Eiffel [12]. As typical of current efforts, 
  3950. most of these languages do little to support the formation or 
  3951. maintenance of effective mental models of software parts. The complete 
  3952. analysis, including a detailed check list of software structuring and 
  3953. composition properties supported by some or all of these languages,
  3954. is available electronically [5]. Other efforts to provide better support for 
  3955. mental models has concentrated primarily on adding (possibly 
  3956. structured) comments to component specifications, the inadequacy of 
  3957. which is described in Section2.2.
  3958.  
  3959. References
  3960.  
  3961.  [1]B. W. Weide, W. F. Ogden, and S. H. Zweben, "Reusable 
  3962. softwarecomponents," in Advances in Computers (M. C. Yovits, ed.), vol. 
  3963. 33, pp.1-65, Academic Press, 1991.
  3964.  
  3965.  [2]B. W. Weide and J. E. Hollingsworth, "Scalability of reuse technology 
  3966. to large systems requires local certifiability," in Proceedings of the Fifth 
  3967. Annual Workshop on Software Reuse, October 1992.
  3968.  
  3969.  [3]B. W. Weide, W. D. Heym, and W. F. Ogden, "Procedure calls and local 
  3970. certifiability of component correctness," in Proceedings of the Sixth 
  3971. Annual Workshop on Software Reuse (L. Latour, ed.), Nov. 1993.
  3972.  
  3973.  [4]J.Hollingsworth, Software Component Design-for-Reuse: A Language 
  3974. Independent Discipline Applied to Ada.  PhD thesis, Dept. of Computer 
  3975. and Information Science, The Ohio State University, Columbus, OH, 1992.
  3976.  
  3977.  [5]S. Edwards, A Formal  Model  of  Software  Subsystems.  PhD  thesis,  
  3978. Dept. of  Computer  and  Information  Science,  The  Ohio  State  
  3979. University,  Columbus, OH,  1995. Also  available  as  technical  report  
  3980. OSU-CISRC-4/95-TR14, by  anonymous FTP from ftp://ftp.cis.ohio-
  3981. state.edu/pub/tech-report/1995/TR14-DIR,  or  through  the  author's 
  3982. home page.
  3983.  
  3984.  [6]D. A. Norman, "Some observations on mental models," in Readings In 
  3985. Human-Computer Interaction: A Multidisciplinary Approach (R. M. 
  3986. Baecker and W. A. S. Buxton, eds.), pp.241-244, San Mateo,CA: Morgan 
  3987. Kaufmann Publishers, Inc., 1987.
  3988.  
  3989.  [7]R. Guindon, H.Krasner, and B. Curtis, "Breakdowns and processes 
  3990. during the early activities of software design by professionals," in 
  3991. Empirical Studies of Programmers (E . Soloway and S. Iyengar,eds.), pp. 
  3992. 65-82, Ablex, 1985.
  3993.  
  3994.  [8]D. B. Walz, J. J. Elam, H. Krasner, and B. Curtis, "A methodology for 
  3995. studying software design teams: An investigation of conflict behaviors in 
  3996. the requirements definition phase," in Empirical Studies of Programmers 
  3997. (E. Soloway and S. Iyengar, eds.), pp. 83-99, Ablex, 1985.
  3998.  
  3999.  [9]R. L. Glass,"The cognitive view: Adifferent look at software design," in 
  4000. Software Conflict: Essays on the Art and Science of Software Engineering, 
  4001. pp. 25-31, Englewood Cliffs, NJ: Yourdon Press, 1991.
  4002.  
  4003. [10]R. W. Holt, D.A. Boehm-Davis, and A. C. Schultz, "Mental 
  4004. representations of programs for student and professional programmers," 
  4005. in Empirical Studies of Programmers (E. Soloway and S. Iyengar,eds.), pp. 
  4006. 33-46, Ablex, 1985.
  4007.  
  4008. [11]D. C. Littman,J. Pinto, S. Letovsky, and E. Soloway, "Mental models 
  4009. and software maintenance,"in Empirical Studies of Programmers (E. 
  4010. Soloway and S. Iyengar, eds.), pp.80-98, Ablex,1986.
  4011.  
  4012. [12]B. Meyer, Object-Oriented Software Construction. NewYork, NY: 
  4013. Prentice Hall, 1988.
  4014.  
  4015. [13]D. Luckham,F. W. von Henke, B. Krieg-Bruckner, and O. Owe, ANNA: A 
  4016. Language for Annotating Ada Programs. New York, NY: Springer-Verlag, 
  4017. 1987.
  4018.  
  4019. [14]B. Liskov and J. Guttag, Abstraction and Specification in Program 
  4020. Development. The MIT Electrical Engineering and Computer Science 
  4021. Series, Cambridge, MA: MIT Press, 1986.
  4022.  
  4023. [15]P.Bucci, J. E. Hollingsworth, J. Krone, and B. W. Weide, 
  4024. "Implementing components in RESOLVE," ACM SIGSOFT Software 
  4025. Engineering Notes, vol. 19, pp. 40-52, Oct. 1994.
  4026.  
  4027. [16]B. W. Weide et al., "Special feature: Component-based software using 
  4028. RESOLVE," ACM SIGSOFT Software Engineering Notes, vol. 19, pp. 21-67, 
  4029. Oct. 1994.
  4030.  
  4031. [17]J. A. Goguen, "Principles of parameterized programming," in 
  4032. Software Reusability, Volume I: Conceptsand Models (T. J. Biggerstaff and 
  4033. A. J. Perlis, eds.), pp. 159-225, New York, NY: ACM Press,1989.
  4034.  
  4035. [18]R. Milner, M. Tofte, and R. Harper, The Definition of Standard ML. 
  4036. Cambridge, MA: MIT Press,1990.
  4037.  
  4038. Biography
  4039.  
  4040. Stephen H. Edwards is a Senior Research Associate in the Department of 
  4041. Computer and Information Science at the Ohio State University. His 
  4042. research interests include formal models of software structure, software 
  4043. composition, software reuse,software engineering, the use of formal 
  4044. methods in programming languages,and information retrieval 
  4045. technology.He is also currently the Archive Administrator for the 
  4046. Reusable Software Research Group at OSU. Dr. Edwards is a recent 
  4047. graduate from OSU, having received a Ph.D. in computer and 
  4048. information science in March,1995.  Prior to working at OSU, he was a 
  4049. research staff member at the Institute for Defense Analyses, where he 
  4050. worked on software reuse activities, simulation frameworks, active 
  4051. databases, and Ada programming issues.
  4052.  
  4053. Mr. Edwards gratefully acknowledges financial support from the National 
  4054. Science Foundation (grant number CCR-9311702) and the Advanced 
  4055. Research Projects Agency (contract number F30602-93-C-0243, monitored 
  4056. by the USAF Materiel Command, Rome Laboratories, ARPA order number
  4057. A714).
  4058. Life Cycle Interaction in 
  4059. Domain/Application Engineering
  4060.  
  4061. David Eichmann and Carl Irving*
  4062.  
  4063. Repository Based Software Engineering Program, Box 113
  4064. Research Institute for Computing and Information Systems
  4065. University of Houston - Clear Lake
  4066. 2700 Bay Area Blvd.
  4067. Houston, TX 77058
  4068. Tel: (713) 283-3875
  4069. Fax: (713) 283-3869
  4070. Email: eichmann@rbse.jsc.nasa.gov
  4071. WWW: http://ricis.cl.uh.edu/eichmann/
  4072. RBSE on the Web: http://rbse.jsc.nasa.gov/eichmann/rbse.html
  4073.  
  4074. Abstract
  4075. The interactions between the life cycles for domain engineering and 
  4076. application engineering are not commonly recognized. We discuss the 
  4077. nature of these interactions and how they are reflected 
  4078. in a specific large reengineering project.
  4079.  
  4080. Keywords:  domain engineering, application engineering, software 
  4081. processes, reengineering
  4082.  
  4083. Workshop Goals:  To obtain feedback on a collaboration and do some 
  4084. technology transfer.
  4085.  
  4086. 1   Background
  4087. 1.1  Introduction
  4088. The increasing emphasis in large, government software engineering 
  4089. projects on engineering domains, rather than engineering specific 
  4090. systems holds a promise of reduced costs, faster fielding of systems 
  4091. and a host of other anticipated benefits. However, this transition to a 
  4092. new perspective on software life cycles is not without side-effects. In 
  4093. particular, we have found that the separation of development into a 
  4094. domain engineering cycle and an application engineering cycle is not 
  4095. as clear and distinct as might be imagined.
  4096. The Repository Based Software Engineering (RBSE) project at the 
  4097. Research Institute for Computing and Information Systems (RICIS) 
  4098. has been working for a number of years in the area of software 
  4099. reuse and more recently, in the reengineering of legacy systems as 
  4100. an aspect of reuse [3]. The purpose of RBSE is the support and 
  4101. adoption of software reuse through repository-based software 
  4102. engineering in targeted sectors of industry, government, and 
  4103. academia. The project consists of two principal activities, a repository 
  4104. initiative and reuse engineering initiative. RICIS conducts research 
  4105. and development for both initiatives. MountainNet operates ELSA as 
  4106. the publicly accessible aspect of the repository initiative [4].
  4107. The reuse engineering initiative at RICIS focuses on the support of 
  4108. specific software projects as they transition to a reuse oriented 
  4109. development and maintenance paradigm. One such project is the 
  4110. Reusable Object Software Engineering (ROSE) project, involving the 
  4111. Rockwell Space Operations Company (RSOC) (including UNISYS as a 
  4112. major subcontractor), the Software Technology Branch of the 
  4113. Information Systems Directorate of NASA (NASA/STB) and the RBSE 
  4114. research group. ROSE is a reengineering effort being developed to 
  4115. provide an economical and effective modern implementation of the 
  4116. Shuttle Flight Design and Dynamics (FDD) systems in order to 
  4117. supplant the costly legacy systems which have evolved since the 
  4118. early days of the Shuttle program.
  4119. The ROSE project is intended to apply modern software engineering 
  4120. techniques in order to reproduce the systems╒ functionality in a 
  4121. consistent object-oriented architecture and design framework. The 
  4122. project applies a reuse-based dual lifecycle process in order to 
  4123. achieve efficiency and consistency across the software products as a 
  4124. whole.
  4125.  
  4126. 1.2  The ROSE Lifecycle in a Nutshell
  4127. The ROSE project is a reuse-based dual-lifecycle software 
  4128. development project. The ROSE lifecycle (or lifecycles, to be exact 
  4129. since there are separate domain engineering and application 
  4130. engineering lifecycles) is based upon a collapse of the Clear Lake 
  4131. Lifecycle Model (CLLCM) [5] from eight phases to four. The 
  4132. fundamental division of responsibilities between domain and 
  4133. application perspectives can be summarized as follows:
  4134.  
  4135. The domain engineers scope the domain, identify the potential 
  4136. applications and establish a common ╥domain language.╙ Domain 
  4137. Analysis is composed of domain survey, business analysis, concept 
  4138. development, domain scoping and domain modeling sub-phases.
  4139.  
  4140. Domain Design is a design effort for one common architecture to the 
  4141. domain. The design process includes explicit searches for reusable 
  4142. components at various levels of abstraction and provides for reverse 
  4143. engineering of portions of the legacy system in order to serve as 
  4144. (positive or negative) ╥inspiration.╙ The paradigm is for one 
  4145. architecture to cover the domain which can then be tailored by 
  4146. pruning unneeded features and grafting extensions on an application 
  4147. by application basis.
  4148.  
  4149. Domain Implementation focuses on the implementation and testing 
  4150. of the architecture components in an orderly fashion prioritized in 
  4151. such a way to support the application implementation efforts. 
  4152. Implementation of architecture components includes their 
  4153. integration to the degree that this is possible without a complete 
  4154. application.
  4155.  
  4156. 
  4157. Application Analysis is a twofold extension process of the Domain 
  4158. Analysis product set. Following concept exploration of the 
  4159. application, the set of requirements and models produced by the 
  4160. domain engineers is pruned down to form a starting subset of the 
  4161. application requirements. This set is then extended through a 
  4162. requirements gathering process in order to obtain a full set of 
  4163. application requirements.
  4164.  
  4165. Application Design is concerned with the selection of architecture 
  4166. subsets that match the application requirements and constraints 
  4167. followed by a design process similar to that applied during Domain 
  4168. Design ╨ but only for additions and modifications to the architecture.
  4169.  
  4170. Application Implementation uses exactly the same process as Domain 
  4171. Implementation but applied to the application-specific components 
  4172. remaining to be developed. Integration testing of the application is 
  4173. meant to follow-on from the testing performed during Domain 
  4174. Implementation: their union forms one seamless integration activity.
  4175.  
  4176. The application and domain maintenance processes are designed as a 
  4177. two-tiered hierarchy where the customer interacts with Application 
  4178. Maintenance which in turn makes requests of the Domain 
  4179. Maintenance process as needed. Both processes are similar but differ 
  4180. where it comes to the impact of change requests on domain products.
  4181.  
  4182. ROSE is scheduled as a number of ╥delivery increments╙ where a 
  4183. significant portion of the product set is delivered on a regular basis 
  4184. and the project╒s performance is reevaluated. This division has 
  4185. interesting effects on the evolution of the projects╒s maturity with 
  4186. respect to its dual-lifecycle organization. On one hand, transitions 
  4187. from one increment to the next are excellent times to implement 
  4188. upgrades in lifecycle models. On the other, the relative proximity of 
  4189. the next scheduled delivery make incremental changes from a 
  4190. relatively conventional initial process a necessity. ROSE is evolving 
  4191. towards a mature dual-lifecycle organization, having started from 
  4192. more humble traditional point-solution beginnings. It should be 
  4193. noted that the lifecycle presented in figure 1 is the result of the 
  4194. current delivery increment╒s labors and is expected to be 
  4195. institutionalized as of the next increment.
  4196. 2   Position
  4197. The software lifecycle is a complex set of interrelated activities. Some 
  4198. in our field claim to understand the nature of the relationships 
  4199. between the phases of the lifecycle and the roles involved in 
  4200. traditional ╥point-solution╙ approaches to software development. 
  4201. However, newer and arguably more productive reuse-based process 
  4202. models such as the ╥dual-lifecycle╙ approach to software 
  4203. development where two perspectives (domain engineering and 
  4204. application engineering) are employed raise new uncertainties about 
  4205. the way the lifecycles (and their individual phases) fit together.
  4206.  
  4207. Our experience with the ROSE project has allowed us to witness the 
  4208. establishment and implementation of a reuse-based dual-lifecycle 
  4209. software development organization on a non-trivial scale. The choice 
  4210. and tailoring of initial ╥theoretical╙ models (e.g., the CLLCM) into the 
  4211. practical processes that ROSE team members use on a day-to-day 
  4212. basis give insight into the structure and interactions within working 
  4213. teams using this approach.
  4214.  
  4215. The introduction of a second lifecycle to the overall development 
  4216. process introduces new ways in which the phases of the lifecycle 
  4217. influence each other. The traditional ╥point-solution╙ lifecycle implies 
  4218. that the various phases of the lifecycle influence each other in a 
  4219. ╥producer-consumer╙ sense: earlier phases produce products which 
  4220. are picked-up, interpreted and transformed (╥consumed╙) by later 
  4221. ones. Influences can exist when considering both products and 
  4222. processes present in the lifecycles, as shown in Table 1.
  4223.  
  4224.  
  4225. Table 1: Some Process Influences with Examples        
  4226. Influence    Medium    Example
  4227. Application Analysis is a consumer of Domain Analysis products
  4228.     Product    Domain requirements and models
  4229. Domain Analysis is influenced by the Application Analysis process: 
  4230. The products of Domain Analysis must be compatible with adaptation 
  4231. as performed by Application Analysis    Process    The initial 
  4232. process employed by ROSE Domain Analysis captured requirements 
  4233. as a classified ╥flat╙ set of requirements. This later evolved into a 
  4234. hierarchical classification as such a structure facilitates the job of 
  4235. application analysts through the manipulation of requirement 
  4236. hierarchies as a whole rather than individually. The change was 
  4237. directly related to the needs of the Application Analysis process.
  4238. Domain Analysis influences Domain Design as far as the expression of 
  4239. variability in the domain    Product    The scope (i.e. applications) 
  4240. of the requirements and constraints with the (explicit or implicit) 
  4241. variability requirements captured during Domain Analysis are the 
  4242. basis for the domain designers╒ use of adaptable design idioms
  4243. Application Design is a consumer of Domain Design products
  4244.     Product    Architecture design models and design feature 
  4245. catalogues
  4246. Application Design influences Domain Design╒s choice of design idioms 
  4247. to be compatible with the adaptation techniques it employs    Both
  4248.     The ROSE Domain Design process explicitly contains a step early 
  4249. in the process to determine suitable design guidelines with respect to 
  4250. the Application Design process and the expected targets. Care is 
  4251. taken to include the application engineering role where possible to 
  4252. ensure design adaptability.
  4253. Application Implementation is a consumer of Domain 
  4254. Implementation products    Product    Coded partially or 
  4255. completely integration-tested components with documentation and 
  4256. test plan
  4257. Domain and Application Implementation processes influence each 
  4258. other with respect to their shared task    Process    The domain and 
  4259. application implementation processes are differ in their ability to 
  4260. integration test implemented products. The former is constrained by 
  4261. the non-availability of complete subsystems to integrate (since key 
  4262. components may be application-specific) so integration and target 
  4263. testing are distributed unevenly across both implementation phases
  4264. The Domain Maintenance process influences the Application 
  4265. Maintenance process    Process    Since the maintenance processes 
  4266. are organized as a two-tiered hierarchy, the Application Maintenance 
  4267. process needs to delegate domain issues to the Domain Maintenance 
  4268. process through a well-defined interface
  4269. Understanding the ways in which the processes interact and 
  4270. influence each other in a dual-lifecycle software organization has the 
  4271. potential for insights into the workings of domain engineering 
  4272. processes as we know them and hence a better footing for improving 
  4273. them.
  4274.  
  4275. For example, a better understanding (and a catalogue) of the design 
  4276. adaptation mechanisms employed during Application Design can be 
  4277. employed by domain designers to select the most suitable design 
  4278. techniques and idioms in order to support these choices (what one 
  4279. could call ╥meta-design patterns╙). In a practical environment, the 
  4280. choice of adaptation techniques and the idioms that support them is 
  4281. the result of a consensus between the domain and application 
  4282. engineers. The ROSE processes exhibit early traits of such an 
  4283. organization (although without the comprehensive bindings between 
  4284. design techniques and their adaptability) in that domain design 
  4285. activities are based upon the use of ╥design feature catalogues╙ that 
  4286. record good practices (with corresponding rationale) that have been 
  4287. shown to have value in the Domain Implementation and Application 
  4288. Design efforts.
  4289. 2.1  Discussion
  4290. Much of the current work on domain analysis and dual-lifecycle 
  4291. software processes centers around the design of processes that allow 
  4292. for the capture of domain information and make it available to 
  4293. builders of actual applications in the domain. A characteristic of 
  4294. domain products is their support for adaptation (through 
  4295. composition, inheritance or ╨ if necessary ╨ modification). Domain 
  4296. engineering efforts thus strive to employ consistent and effective 
  4297. means to support application-specific adaptation. One of the process 
  4298. designer╒s choices is to decide where these means are defined: they 
  4299. can be embedded in the process, left to the application engineer╒s 
  4300. choice or produced explicitly as part of domain engineering. These 
  4301. three views by themselves may be a little simplistic in that processes 
  4302. in the dual lifecycles have more influence on each other than implied 
  4303. by a simple producer-consumer relationship.
  4304.  
  4305. Our views are driven by the observation of the design and enactment 
  4306. of a project using the dual-lifecycle approach: ROSE. The initial 
  4307. mindset of the process designers was for domain engineers to define 
  4308. the domain architecture and specify the means for its adaptation ╨ a 
  4309. model where consumption of products bears no influence on the 
  4310. producer. In actual practice, the differences in outlook between the 
  4311. domain and application engineering teams imposed a more pragmatic 
  4312. compromise.
  4313.  
  4314. Examination of domain engineering products led to an interesting 
  4315. question: what makes a domain product (analysis model, architecture 
  4316. design, etc╔) ╥special╙ as opposed to the corresponding products in a 
  4317. point-solution lifecycle? In many instances, we found none: although 
  4318. they were the result of a different process, domain products tended 
  4319. to be expressed in a manner consistent with habitual products of 
  4320. their kind. This implies that domain engineering can be performed in 
  4321. a manner that does not automatically entail readily apparent domain 
  4322. engineering-specificity in the product set.
  4323.  
  4324. This led us to a closer examination of the processes, where it became 
  4325. apparent that although they have separate foci, neither domain nor 
  4326. application engineering operates in a vacuum. For instance, Domain 
  4327. Design exhibits a pragmatic mix of influences on and by the 
  4328. Application Design process: on one hand, the design features present 
  4329. in the domain architecture are drawn from a feature catalog that is 
  4330. passed on to application designers with instructions as to their 
  4331. planned use but on the other, this catalog itself is built with input 
  4332. from the application engineers. In the current state of the process, 
  4333. this influence ╨ although tangible ╨ is not formalized.
  4334.  
  4335. These observations upon the influences that the domain and 
  4336. application engineering lifecycles have upon each other do still hold 
  4337. (although with different manifestations) when domain engineering-
  4338. aware notations and techniques are used. For instance, the layered 
  4339. design architecture presented by Becker and DÆaz-Herrera [2] is 
  4340. consistent with the culmination of an informal design feature 
  4341. selection procedure similar to that in the ROSE Domain Design 
  4342. process. Alternative formalisms for the representation of domain 
  4343. architectures (such as the formal architectural components proposed 
  4344. by Allen and Garlan [1]) present opportunities for treating some of 
  4345. the interactions between lifecycles in a disciplined manner, as they 
  4346. represent a common formal language for manipulating the 
  4347. composition of domain products.
  4348.  
  4349. Identifying the interdependencies between the domain and 
  4350. application engineering processes also is a step towards their 
  4351. efficient management. For example, one problem that the ROSE 
  4352. domain engineers have had to cope with is that the division of the 
  4353. project into delivery increments precludes the analysis and modeling 
  4354. of the domain as a whole, domain and application engineering are 
  4355. executed in near-concurrency so that the planned increment can be 
  4356. produced on time. Such a ╥condensed╙ execution of the processes 
  4357. taxes the ability of the domain engineers to model the domain 
  4358. broadly and for the application engineers to provide meaningful 
  4359. feedback. An overall model where the domain and application 
  4360. lifecycles operate in a vacuum does nothing to discourage this kind of 
  4361. schedule nor to understand its inherent couplings.
  4362. References
  4363. [1]    Allen, R. and D. Garlan, ╥Formalizing Architectural Connection,╙ 
  4364. Proc. 16th International Conference on Software Engineering, 
  4365. Sorrento, Italy, May 16-21, 1994.
  4366.  
  4367. [2]    Becker, M. and J. L. DÆaz-Herrera, ╥Creating Domain Specific 
  4368. Libraries: a methodology and design guidelines,╙ Proc. Third 
  4369. International Conference on Software Reuse, Rio de Janeiro, Brazil, 
  4370. November 1-4, 1994.
  4371.  
  4372. [3]    Eichmann, D., ╥The Repository Based Software Engineering 
  4373. Program╙ Proc. Fifth Systems Reengineering Technology Workshop, 
  4374. Monterey, CA, Feb. 7-9, 1995.
  4375.  
  4376. [4]    Eichmann, D., M. Price, R. Terry and L. Welton, ╥ELSA and MORE: 
  4377. A Library and Environment for the Web,╙ Proc. 13th Annual National 
  4378. Conference on Ada Technology, Valley Forge, PA, March 13-16, 1995.
  4379.  
  4380. [5]    Rogers, K., M. Bishop, C. McKay, ╥An Overview of the Clear Lake 
  4381. Life Cycle Model,╙ Proc. Ninth Annual National Conference on Ada 
  4382. Technology, U.S. Department of Commerce, National Technical 
  4383. Information Service, March 1991.
  4384. Biographies
  4385. David Eichmann is an Assistant Professor of Software Engineering at 
  4386. the University of Houston - Clear Lake and Director of Research and 
  4387. Development of the Repository Based Software Engineering Program 
  4388. (RBSE).  Besides normal academic duties, his responsibilities include 
  4389. management of a fifteen person research and development group 
  4390. working in the areas of reuse repositories and reengineering. Funded 
  4391. by NASA through the RICIS cooperative agreement and working 
  4392. closely with Johnson Space Center╒s Software Technology Branch, 
  4393. RBSE is collaborating with Rockwell Space Operations Company on the 
  4394. reengineering of a major portion of the Space Shuttle Flight Analysis 
  4395. and Design System.
  4396.  
  4397. Carl Irving is a graduate student in the Software Engineering 
  4398. Program at the University of Houston - Clear Lake and a research 
  4399. assistant on the RBSE project. His responsibilities include domain 
  4400. modeling and process definition on the ROSE collaboration.
  4401.  
  4402. *    This work has been supported by NASA Cooperative 
  4403. AgreementRB02A.
  4404.  
  4405.  
  4406. Software Process Reuse
  4407.  
  4408. Craig Hollenbach & William Frakes
  4409.  
  4410. Department of Computer Science
  4411. Virginia Tech
  4412. Falls Church, VA 22042
  4413. Tel: (703) 698-4712
  4414. Email: frakes@sarvis.cs.vt.edu
  4415.  
  4416.  
  4417. Abstract
  4418. This paper describes an in-progress study of software process reuse 
  4419. and reusability╤specifically how to pragmatically and systematically 
  4420. standardize and replicate project-specific processes in an industrial 
  4421. software environment. Our working hypothesis is that by using 
  4422. domain engineering techniques, software reuse principles, process 
  4423. architecture research, and process modeling mechanisms, project-
  4424. specific processes can be abstracted into reusable components that 
  4425. can be  used by process engineers.
  4426.  
  4427. The study includes:
  4428. Ñ    a notation for recording reusable processes, 
  4429. Ñ    definition of processes in an industrial environment, 
  4430. Ñ    creation of a repository of these reusable processes.
  4431. Ñ    an evaluation study aimed at demonstrating the effectiveness 
  4432. of our method for process reuse.  The study is based upon process 
  4433. definition activities at PRC Inc. The study will measure the level of 
  4434. process reuse both before and after the application of the proposed 
  4435. process reuse improvement method.
  4436.  
  4437. 1 Position
  4438.  
  4439. 1.1  Introduction
  4440.  
  4441. Many software organizations are actively pursuing software process 
  4442. maturity.  Often they use measures like the SEI Capability Maturity 
  4443. Model to structure their process improvement initiatives.  PRC Inc. 
  4444. has pursued software process maturity in various ways since 1987.  
  4445. One method often cited for accelerating process improvement within 
  4446. an organization is the standardization and replication of project-
  4447. specific processes from a mature software organization to immature 
  4448. software organizations.  Even though it is often proposed as an 
  4449. effective approach to increasing an organization's software maturity, 
  4450. there have been few documented instances of process reuse within 
  4451. the software process improvement program at PRC.
  4452.  
  4453. A  literature search showed that this situation is common in other 
  4454. organizations as well.  Although there are instances of replicating 
  4455. processes within organizations, there are no reports of a systematic 
  4456. process reuse program.   Only one study has addressed process reuse 
  4457. specifically [2], indicating that systematic process reuse is  
  4458. unrealized.
  4459.  
  4460. One of the more daunting tasks of a process reuse program is the 
  4461. development and maintenance of quality process definitions which 
  4462. serve the entire organization.  To meet this need, PRC has developed 
  4463. an Organization Process Definition (OPD) methodology used to define 
  4464. reusable processes.  Since the scope of OPD encompasses all software 
  4465. projects within PRC, we deal with a diverse set of projects and 
  4466. project needs.  To serve them better, we have developed a set of 
  4467. standard, generic process definitions, and have started using a 
  4468. standard process to develop, maintain, and manage those definitions. 
  4469. We have also created a Process Asset Library (PAL) which contains 
  4470. reusable processes and process-related assets. 
  4471.  
  4472. 1.2  The PRC OPD process
  4473.  
  4474. The PRC OPD process is adapted from the process described at the 
  4475. 1994 National SEPG (Software Engineering Process Group) Meeting by 
  4476. Jim Over, and on other domain analysis methodologies [1].  The OPD 
  4477. process starts with PRC SEPG approval, feeds the development of 
  4478. organizational training and the instantiation/tailoring of the process 
  4479. and process training on PRC projects, and includes feedback from the 
  4480. projects for continuous process improvement.  The process itself 
  4481. includes  steps for planning, analysis, high-level design, 
  4482. implementation design, implementation of process automation, and 
  4483. testing and integration within the PRC process architecture.  
  4484.  
  4485. 1.3  Process Asset Library 
  4486.  
  4487. The Process Asset Library (PAL) is a corporate resource that contains 
  4488. reusable processes and process related assets from both corporate 
  4489. and project levels.  It currently contains over 500 assets and uses a 
  4490. WWW browser as a front-end.  A catalog of assets is maintained for 
  4491. simple perusal, searching, and maintenance.  Plans are under way to 
  4492. integrate the PAL with corporate metrics and tools databases.
  4493.  
  4494. PRC took the advice of other SPI efforts and began with a small and 
  4495. simple PAL prototype.  The database was a simple file server with a 
  4496. spreadsheet acting as a catalog.  Access problems, support over 
  4497. multiple platforms, and the need for various application output 
  4498. formats created a need for a prototype WWW browser as a front-end 
  4499. interface.  We have also learned the lesson that small is beautiful in 
  4500. process definition and the importance of including more software 
  4501. practitioners in the definition process, as we transition from a 
  4502. centralized to a de-centralized approach to process definition. 
  4503.  
  4504. 1.4  Use of the OPD process and the PAL
  4505.  
  4506. The PAL user base within PRC includes SEPG members at all 
  4507. hierarchical levels, proposal and project startup efforts, and 
  4508. members of software process improvement (SPI) working groups.  
  4509. Example uses of the OPD process include peer review, developmental 
  4510. CM, and subcontract management processes.
  4511.  
  4512. 1.5  Experiments
  4513.  
  4514. We will run several quasi-experiments to evaluate the effectiveness 
  4515. of the process reuse methods we propose.  We are collecting data, 
  4516. over time, from several projects that have used the method.  This 
  4517. data includes the number of reused processes and the percentage of 
  4518. reused processes.  We will compare these number for projects before 
  4519. and after the introduction of the reuse process methods.
  4520.  
  4521. References
  4522.  
  4523. [1]    Arango, G. (1994). Domain Analysis Methods. In W. Schaefer, R. 
  4524. Prieto-Diaz, & M. Matsumoto (Eds.), Software Reusability New York: 
  4525. Ellis Horwood.
  4526.  
  4527. [2]    Castano, S. and DeAntonellis, V. ╥Reusing Process Speicifcations╙, 
  4528. in N. Prakash et. al (Eds.) Information System Development Process: 
  4529. Proceedings of the IFIP WG 8.1, Working Conference on information 
  4530. System Development Process, Como Italy, 1-3 Sept. 1993: North 
  4531. Holland Pub..
  4532.  
  4533. Biographies
  4534.  
  4535. Craig Hollenbach is principal computer analyst at PRC, Inc.  He has 
  4536. over 14 years of software engineering experience and 6 years 
  4537. experience in software process improvement.  He is currently 
  4538. working on software process improvement activities within PRC and 
  4539. PRC's Technology Center and is chair of the Technology Center SEPG.  
  4540. Craig has a B. S. degree from Lebanon Valley College and is pursuing 
  4541. a M. S. in Computer Science from Virginia Tech. 
  4542.  
  4543. Bill Frakes is associate professor and director of the computer science 
  4544. program at Virginia Tech, Falls Church, and president of the Software 
  4545. Engineering Guild.  He has been manager of the Software Reuse 
  4546. Research Group at the Software Productivity Consortium, and 
  4547. supervisor of the Intelligent Systems Research Group at Bell 
  4548. Laboratories.  He is author of Software Engineering in the UNIX/C 
  4549. Environment (Prentice-Hall, 1991), and Information Retrieval: Data 
  4550. Structures and Algorithms (Prentice-Hall, 1992).  He is chair of the 
  4551. IEEE TCSE Committee on software reuse.
  4552.  
  4553.  
  4554. Reuse Lessons Learned from Architecture and Building Systems
  4555. Integration
  4556.  
  4557. Marilyn T. Gaska
  4558.  
  4559. Loral Federal Systems-Owego
  4560. 1801 State Route 17C
  4561. Owego, NY 13827
  4562. Tel: (607)751-4156
  4563. Email: mtgaska@lfs.loral.com
  4564.  
  4565. Abstract
  4566.  
  4567. A previous position presented at the WISR6 conference by the author 
  4568. ([1]) compared the similarities of the OSE and COTS integration research 
  4569. areas to those ofthe horizontal reuse research. This paper extends this 
  4570. concept outside the computer-based systems field to draw on 
  4571. comparisons to generic design and systems integration concepts from 
  4572. other disciplines such as architecture. These established disciplines may 
  4573. provide reusable process patterns for success to be applied to the "new" 
  4574. approaches in computer-based systems design: object-oriented methods, 
  4575. component-based design, and open systems.
  4576.  
  4577. Keywords: Horizontal Reuse, Architecture, Computer-Based Systems, 
  4578. Generic Design, Patterns, Open Systems Environment (OSE)
  4579.  
  4580. WorkshopGoals: To learn additional concepts and technology for transfer 
  4581. to industrial environment; to obtain inputs on position,particularly 
  4582. related to Ph.D. Dissertation topic in Systems Science at Binghamton 
  4583. University.
  4584.  
  4585. WorkingGroups: Technology Transfer, Reuse Management, Domain 
  4586. Analysis.
  4587.  
  4588. 1   Background
  4589.  
  4590. Since February 1993,the author has held the position of Reuse 
  4591. Coordinator at Loral Federal Systems (LFS) in Owego,New York [2] where 
  4592. she also served as the local arrangements chair for WISR6 held in Owego 
  4593. in November,1993. Current reuse activities at Loral have expanded to 
  4594. include LFS Group-wide responsibilities. She is also the Principal 
  4595. Investigator for Open Systems Independent Research and Development 
  4596. (IRAD)tasks, including a task on Object Oriented Frameworks and 
  4597. Domain Specific Software Architectures for Management Information 
  4598. Systems (MIS). Previous papers presented by the author have focused on 
  4599. the commonalities among problems and application of solutions in the 
  4600. reuse, concurrent engineering, and open systems research are as [3, 1, 4]. 
  4601. This analysis has broadened to comparisons with approaches in areas 
  4602. outside of computer-based systems as part of the authors research 
  4603. interest in design [5]. Reuse is one of the design attributes included in 
  4604. this analysis.
  4605.  
  4606. 2   Position
  4607.  
  4608. Reuse is a design attribute of other established disciplines such as 
  4609. architecture. Architecture and building systems integration concepts can 
  4610. me mapped to computer-based systems to provide new design for reuse 
  4611. perspectives and lessons learned.
  4612.  
  4613. Systems science teaches the benefits of cross-discipline learning, which is 
  4614. proposed as useful to research efforts in reuse. While [1] compared the 
  4615. similarities of the OSE and COTS integration research areas to those of 
  4616. the horizontal reuse research, the focus of this position paper is 
  4617. application of concepts from the field of architecture. Further analysis 
  4618. with respect to specific design attributes such as reuse can also provide 
  4619. additional lessons already learned in other fields. Since architecture has 
  4620. embraced component-based design andstandards concepts when dealing 
  4621. with physical building objects,it holds promise for useful patterns for 
  4622. application to parallel approaches in computer-based systems design.
  4623.  
  4624. 2.1  Insight from Architect Alexander's Work
  4625.  
  4626. Christopher Alexander's frequently referenced early work [6] does not 
  4627. directly address reuse concepts. Rather, conscious and indigenous / 
  4628. unconscious design, analysis and synthesis, and patterns are described. 
  4629. This book was followed by a six volume series [7, 8, 9, 10, 11, 12].[7] 
  4630. describes the timeless way of building in terms of a genetic process for 
  4631. creation of a whole organism,an analogy that has also been further 
  4632. described in [13]. The framework for the pattern language described in 
  4633. [8] is put in place. Patterns are similar to rules of thumb. Patterns of 
  4634. events give character to a place, and are interlocked with geometric 
  4635. patterns in space. These patterns are the atoms and molecules that 
  4636. make up a building or town, and the language gives users the powers to 
  4637. create an infinite variety of new and unique buildings appropriate to 
  4638. different circumstances. Constant use and feedback keeps the patterns in 
  4639. good order, and people and their feelings can't be separated from the 
  4640. language. In computer-based systems,this concept can be applied to the 
  4641. requirements, high-level design, detailed design or 
  4642. implementation/construction phases just as they scale from regional 
  4643. planning down to physical structure considerations in architecture.
  4644.  
  4645. A total of 253 patterns are described in [8]. However, a project may 
  4646. defineits own language by selecting form those pre-defined patterns 
  4647. aswell as defining additional patterns appropriate to the domain of the 
  4648. project. The order in which the patterns are applied to a design will 
  4649. impact the result. Application of these concepts at the University of 
  4650. Oregon is described by [9]. All design and construction was guided by a 
  4651. collection of communally adopted planning principles called patterns. 
  4652. Other implementation principles included principles of participation, 
  4653. piecemeal growth, diagnosis, coordination and organic order. [11] 
  4654. describes the experience in building the Linz Cafe for an Exhibition in 
  4655. accordance with the pattern language principles.
  4656.  
  4657. [10] define the building system in terms of the actions that are needed 
  4658. to produce a building,not in terms of the physical components. The 
  4659. system of operations required must have the property that each 
  4660. operation can be completed by itself, secure that the operations which 
  4661. follow can always be done. It is their nature to be able to adapt 
  4662. themselves to the results of the operation already performed. Alexander 
  4663. explains how the process is capable of allowing mass production of large 
  4664. numbers of houses which are all different, without increasing cost. [12] 
  4665. describes seven detailed rules of growth which include parallels for 
  4666. principles of incremental design.
  4667.  
  4668. 2.2  Building Systems Integration Perspectives
  4669.  
  4670. Books from the field of architecture that deal with integration theory 
  4671. among subsystem components more closely parallel experiences in large 
  4672. scale reuse. The remainder of this discussion will focus on a more recent 
  4673. compilation of works into a handbook on building systems integration.
  4674.  
  4675. Rush has edited a book published by the American Institute of Architects 
  4676. that proposes a model for analysis of building systems integration that 
  4677. can be applied to computer-based systems design and architecture 
  4678. ([14]).  This model provides an understanding regarding the ease of 
  4679. reuse of architectural components that parallels current experiences and 
  4680. directions in computer-based systems. These include directions in open 
  4681. systems, client server, commercial off the shelf (COTS) and object-
  4682. oriented design. This includes a theoretical basis for the two and three-
  4683. tier architecture of client-server computing.
  4684.  
  4685. Rush documents a new shorthand for a clear concept of integration that 
  4686. reduces all buildings systems to a set of four overall systems- structure, 
  4687. envelope, mechanical and interior. Roundtable discussion of 
  4688. professionals from several disciplines resulted in a tetrahedron 
  4689. interrelation diagram for the four systems. A summary of the 
  4690. tetrahedron nodes and proposed parallels form computer based systems 
  4691. follows:
  4692.  
  4693.    Architecture Tetrahedron            ProposedComputer-Based Systems
  4694.    of Major Systems                         Tetrahedron of Major Systems
  4695.  
  4696. ENVELOP    (Visible on exterior)       Human Computer Interface (HCI)
  4697.  
  4698. STRUCTURE  (Creates equilibrium    Platform (includes operating system
  4699.           necessary to allow                and network)
  4700.           building to stand)
  4701.  
  4702. INTERIOR   (Visible from inside)       Data Model
  4703.  
  4704. MECHANICAL (Services to building   Methods/functions
  4705.            and occupants)                   System/Business Logic/Rules
  4706.  
  4707. A proposed diagrammatic method for visible integration is used to 
  4708. describe 11 possible combinations of systems,a 5 level scale of 
  4709. complexity, and 6 performance mandates. The result of the process has 
  4710. been called building systems integration,which is defined as the act of 
  4711. creating a whole functioning building containing and including building 
  4712. systems in various combinations. The success of a system, like that of 
  4713. integration, is evaluated by comparison of the intention (requirements 
  4714. and goals) with the result. The design for a building becomes the final 
  4715. integration - an order that includes systems but is not a system itself. 
  4716. The integration is complete when all of the links have been established.
  4717.  
  4718. Similar to Alexander's patterns, Rush identifies 19 buildings actually 
  4719. built (with clients, sites, program requirements, costs andarchitects) as 
  4720. case studies.  Aset of 15 generic examples are generated, each with 
  4721. principal applications and advantages listed along with key integration 
  4722. issues. He emphasizes that architects don't learn to design by reading 
  4723. books, and that every architect's learning process is by direct experience 
  4724. and takes a lifetime. The book explores building systems configurations 
  4725. in the context of the criteria (requirements) by which they are selected 
  4726. and available options.
  4727.  
  4728. In general, a client's need for a building generates a choice to either 
  4729. select a building that has already been built or select an architect. This 
  4730. parallels the process of selecting COTS or custom development. Similar 
  4731. to software, part of the architect's responsibility / task is selecting from 
  4732. existing products and services,while another part is integrating and 
  4733. originating the system. On the integration continuum, maximum 
  4734. integration can minimize flexibility, while complete indep endence of 
  4735. parts can provide for greater interchangeability and evolution of use. In 
  4736. summary, these concepts can be used to explain current developments 
  4737. in computer science:
  4738.  
  4739. 1. Ob ject-Orientation - integration of data and logic/methods
  4740.  
  4741. 2. Client/Server - 3 tier architecture with separate HCI, logic and data 
  4742. servers
  4743.  
  4744. 3. Open Systems - platform portability, scalability and interoperability
  4745.  
  4746. 4. Reengineering - assessing reusability and options for moving in flexible 
  4747. and tightly integrated proprietary systems
  4748.  
  4749. 5. COTS software - success of windows environment and spreadsheet 
  4750. applications
  4751.  
  4752. 6. Small vs. Large Scale Reuse - individual vs. multiple nodes of 
  4753. tetrahedron impacted
  4754.  
  4755. 2.3  Research Plans
  4756.  
  4757. The key issue for reuse is a systems integration issue. What is the best 
  4758. architecture and system integration approach to optimize reuse? How do 
  4759. software system architects best synthesize systems built apart? What are 
  4760. the integration properties of the most easily reused tetrahedron nodes 
  4761. and combinations? How do concurrent engineering concepts apply that 
  4762. allow for design and integration of all components / disciplines so that 
  4763. system behaves as unified whole and meets performance goals and 
  4764. customer satisfaction?How can patterns be applied to requirements to 
  4765. assure that user needs met for each particular problem?
  4766.  
  4767. An initial focus on user requirements has been selected to address the 
  4768. need for a smooth transition into design for the new computer systems 
  4769. paradigms [5]. Methodologies that support design for reuse, open 
  4770. systems, COTS, and object-oriented frameworks are needed.  This analysis 
  4771. will be expanded to include other disciplines beyond architecture. These 
  4772. include systems science, computer science/software engineering, 
  4773. management information systems, product design and manufacturing, 
  4774. and science/health. Recommendations for user involvement and rapid 
  4775. prototyping with OSE and COTS constraints will be applied to case 
  4776. studies.
  4777.  
  4778. 3   Comparisons
  4779.  
  4780. Generic design books such as [15] have drawn from the field of 
  4781. architecture for many of the basic design concepts. Gause and Weinberg 
  4782. focus on the requirements step with involvement of all key user 
  4783. constituencies as crucial to successful design. However, application of 
  4784. additional guidance drawn from architecture may provide additional 
  4785. refinement to their framework for exploring requirements.
  4786.  
  4787. Gamma et al. have cited Alexander's Pattern Language [8] as a basis for 
  4788. the "Design Patterns, Elements of Reusable Object-Oriented Software" 
  4789. [16].  They give credit to Alexander and his colleagues as "the first to 
  4790. propose the idea ofusing a pattern language to architect buildings and 
  4791. cities." These are some of the ideas that have taken root in the object-
  4792. oriented community as a key to helping developers leverage the expertise 
  4793. of other skilled architects. However,a review of the complete six volume 
  4794. series by Alexander and colleagues may indicate a different intent than 
  4795. what one might think of as reuse in architecture. Alexander emphasizes 
  4796. user involvement in the design process [12] and customization during 
  4797. application of rules within the context of a unique specific sites. He 
  4798. expresses disdain for prefabricated modular components that constrain 
  4799. the design customization and adaptation [10].  Care must be takenin 
  4800. application of the pattern language concepts to assure that these 
  4801. concerns are addressed.
  4802.  
  4803. Tracz and Coglianese ([17]) have focused on processes for domain 
  4804. specific software architectures (DSSA). [10] proposes replacement of the 
  4805. idea of a building system as a system of components to be assembled 
  4806. with a step-by-step system of building operations. Comparison and 
  4807. appropriate incorporation of these concepts into DSSA methodologies 
  4808. may be warranted.
  4809.  
  4810. References
  4811.  
  4812.  [1]M. Gaska, "An Open Systems Perspective on Horizontal Reuse," in 
  4813. Sixth Annual Workshop on Institutionalizing Software Reuse, (Owego, New 
  4814. York), pp. Gaska1-7, In cooperation with the IEEE Computer Society 
  4815. Technical Committee on Software Engineering, November 2-4, 1993.
  4816.  
  4817.  [2]M. Gaska and J. Poulin, "Institutionalizing Software Tools and 
  4818. Methods," in IEEE Computer Society Workshop on Software Engineering 
  4819. Technology Transfer, (Dallas, Texas), pp.143-146, April,1994.
  4820.  
  4821.  [3]M. Gaska, "An Open Systems Profile for Concurrent Engineering," in 
  4822. Proceedings Second Workshop on Enabling Technologies (WET)- 
  4823. Infrastructure Collaborative Enterprises (ICE), (Morgantown, WV), IEEE, 
  4824. April 20-22, 1993.
  4825.  
  4826.  [4]M. Gaska, "Application of Reuse Concepts to Concurrent Engineering," 
  4827. in Proceedings from Concurrent Engineering Research and Applications 
  4828. (CERA) 1994 Conference, (Johnston, PA), pp. 255-266, Concurrent 
  4829. Technologies Corp., August 29-31, 1994.
  4830.  
  4831.  [5]M. Gaska, "General Principles of Requirements Engineering Across 
  4832. Disciplines: Patterns for Application to New Approaches to Computer-
  4833. Based Systems Design,"Tech. Rep. Prospectus for Ph.D. Research, 
  4834. Binghamton University, June 1994.
  4835.  
  4836.  [6]C.Alexander, Notes on the Synthesis of Form.Cambridge, Mass.: 
  4837. Harvard University Press, 1964.
  4838.  
  4839.  [7]C. Alexander, The Timeless Way of Building. New York:Oxford 
  4840. University Press, 1979.
  4841.  
  4842.  [8]C. Alexander, S. Ishikawa, M. Silverstein with M. Jacobson, I. Fiksdahl-
  4843. King, and S. Angel, A Pattern Language. New York: Oxford University Press, 
  4844. 1977.
  4845.  
  4846.  [9]C. Alexander, M. Silverstein, S. Angel, S. Ishikawa, D.Abrams, The 
  4847. Oregon Experiment. New York: Oxford University Press, 1975.
  4848.  
  4849. [10]C. Alexander with H. Davis, J. Martinez, and D. Corner, The 
  4850. Production of Houses.  New York: Oxford University Press, 1985.
  4851.  
  4852. [11]C. Alexander, The Linz Cafe / Das Linz Cafe. New York:Oxford 
  4853. University Press, 1981.
  4854.  
  4855. [12]C. Alexander, H. Neis, A. Anninou, I. King, A New Theory of 
  4856. UrbanDesign.  New York: Oxford University Press, 1987.
  4857.  
  4858.  
  4859. [13]D. Gause and E. Minch, "Design Processes: A State Space Perspective," 
  4860. in Praxiology: The International Annual of Practical Philosophy and 
  4861. Methodology,Volume3, (Rutgers University, New Jersey), Transaction 
  4862. Publishers, 1995.
  4863.  
  4864. [14]R. Rush, ed., The Building Systems Integration Handbook. Boston: 
  4865. The American Institute of Architects,1986.
  4866.  
  4867. [15]D. Gause and G.Weinberg, Exploring Requirements: Quality Before 
  4868. Design. New York: Dorset House,1989.
  4869.  
  4870. [16]E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns. 
  4871. New York: Addison-Wesley, 1995.
  4872.  
  4873. [17]W. Tracz and L. Coglianese, "Domain Engineering Process Guidelines," 
  4874. Tech. Rep. ADAGE-IBM-92-02, IBM Federal Sector Division, March 1992.
  4875.  
  4876. 4   Biography
  4877.  
  4878. Marilyn T. Gaska is an Advisory Programmer in Advanced Technology at 
  4879. Loral Federal Systems in Owego, New York. Her specific background in 
  4880. reuse and open systems IRAD tasks has already been described. Marilyn 
  4881. also has been involved in Open Systems Environment (OSE)standards 
  4882. and profiles on the Army Sustaining Base Information Services (SBIS) 
  4883. contract,as well as Commercial-Off the Shelf (COTS) software integration 
  4884. LFS-Owego tasks.Prior to joining the Federal Systems Integration business 
  4885. area, assignments involved concurrent engineering and computer aided 
  4886. design (CAD). Marilyn had experience in other fields such as health care 
  4887. before joining IBM Federal Systems Company,now part of Loral, in 1987. 
  4888. In addition, she is a Ph.D. candidate in the Industrial Engineering and 
  4889. Systems Science Department at Binghamton University. Research in the 
  4890. systems design area with Professor Donald C. Gause focuses on 
  4891. application of requirements principles across disciplines to new 
  4892. approaches to computer-based systems design [5]. These part-time 
  4893. studies follow her second Master of Science in Advanced Technology at 
  4894. Binghamton in 1985. However,she received her first Master of Science on 
  4895. a Cornell Fellowship in 1979 following completion of a Bachelor of 
  4896. Science degree at Cornell in 1978. She is also a member of the IEEE.
  4897. The Architecture and Processes for a Systematic OO Reuse Factory
  4898.  
  4899. Martin L. Griss
  4900. Hewlett Packard Laboratories
  4901. 1501 Page Mill Road
  4902. Palo Alto, CA 94303
  4903. Tel: (415)857-8715
  4904. Fax: (415) 813-3668
  4905. Email:griss@hpl.hp.com
  4906.  
  4907. Abstract
  4908.  
  4909. This position paper describes the initial ideas of a new project, aimed at 
  4910. developing an Objectory-based Reuse Factory. This work is a research 
  4911. collaboration between Martin Griss and Ivar Jacobson, and several 
  4912. colleagues at HP and Objectory. We are combining the systematic reuse 
  4913. concepts of process, organization and kits, with the OO modeling and 
  4914. methods of Ob jectory's system engineering (OOSE) and business 
  4915. engineering (OOBE).
  4916.  
  4917. Keywords: OO reuse, process, organization, architecture, methods
  4918.  
  4919. Workshop Goals: Learning; networking; share and get feedback on initial 
  4920. ideas
  4921.  
  4922. Working Groups:reuse process models, reuse architecture, domain-
  4923. engineering
  4924.  
  4925. 1   Background
  4926.  
  4927. I have worked since 1988 in the area of systematic software process and 
  4928. technology at Hewlett-Packard, in both HP Corporate Reuse practice and 
  4929. in HP Laboratories research. I have described the evolution of my work at 
  4930. many reuse events: WISR[Gri92, GT93], IWSR[GJK+94], SRR[GJJ+95], 
  4931. SAC94[GW94 ] and OOPSLA[GAB+91 ], as wellas in other publications 
  4932. [Gri93,GW95b , Gri95b,Gri95a,GW95a , GK95a].
  4933.  
  4934. During this time Iand several colleagues (primarily Kevin Wentzel,James 
  4935. Navarro, Ruth Malan, Patricia Collins and Danielle Fafchamps) developed 
  4936. the concepts and explored several consequences of domain-specific kits 
  4937. and flexible software factories.  Several ideas,such as reuse handbooks, 
  4938. domain-specific kit analysis frameworks and reuse maturity moels, were 
  4939. refined during working groups at WISR.
  4940.  
  4941. Most recently, I have been exploring the integration of these ideas with 
  4942. OOmethods and technology, leading to a collaboration with Ivar 
  4943. Jacobson, started in Nov 1994[AG94, Gri95b, Gri95a,GJJ+ 95]. I and a 
  4944. sabatical visitor (Bob Kessler, University of Utah) have been applying 
  4945. these ideas to the development of an exemplary instrument systems kit, 
  4946. prototyped using Lego Dacta Control Lab parts[GK95a, GK95b ]. This is 
  4947. used as a test case for the Objectory modeling, and proposed for part of a 
  4948. new reuse-based software engineering course for delivery at the University 
  4949. of Utah.
  4950.  
  4951. 2   Position
  4952.  
  4953. Object technology (OT)is believed to be crucial to achieving the long 
  4954. sought after goal of widespread reuse. This goal is the most frequently 
  4955. stated reason for adopting OT. Unfortunately,many people naively 
  4956. equate reuse with objects, expecting it to"automatically" ensure reuse, 
  4957. but often do not get much reuse[Pit93]. Based on our experience with 
  4958. reuse at HP and Objectory, and with our many customers, we think that 
  4959. OT as used today will not succeed in giving users reuse. Without an 
  4960. explicit reuse agenda, and a systematic approach to the design and use 
  4961. of reusable assets, OO reuse will not succeed. In almost all cases of 
  4962. successful reuse, management support, simple architecture, a dedicated 
  4963. component group, a stable domain, standards and organizational 
  4964. support were the keys to success. These largely non-technical issues seem 
  4965. to be more important to successful reuse than the specific language or 
  4966. design methodology chosen.
  4967.  
  4968. We believe that this architecture/process/organization question can be 
  4969. addressed systematically. Our work is exploring an exciting approach 
  4970. which applies Object-oriented Business Engineering (OOBE) and concepts 
  4971. of BPR to restructure a software development organization to offer reuse 
  4972. at a large scale. To obtain a true systematic OO reuse process, today's OT 
  4973. must be augmented with specific reuse-oriented processes, 
  4974. organizationstructures, guidelines, and training. OO methods must be 
  4975. extended to support domain engineering,with specific architecture and 
  4976. component factoring and clustering steps. Component and framework 
  4977. engineering should include explicit design and implementation 
  4978. guidelines, building on a catalog of architectures, patterns, designs and 
  4979. mechanisms. We need a better understanding of how to produce layered, 
  4980. modular architectures. We need to determine how and when to augment 
  4981. OO application frameworks with problem oriented scripting languages, 
  4982. builders, and systems and component generators to produce domain-
  4983. specific kits that can handle the complexity inherent in frameworks with 
  4984. large numbers of classes and methods.
  4985.  
  4986. Our work in progress explores how the principles of systematic 
  4987. reuse[Gri95b] and reuse processes, such as captured in the CFRP[STA93a, 
  4988. STA93b], can be used to augment traditional object-technology. In 
  4989. particular,we have tried to apply OO methods to the description and 
  4990. analysis of organization, process and reuse architecture and technology 
  4991. issues.
  4992.  
  4993. As our OO method,we use the Use-driven approach of Ivar Jacobson. We 
  4994. useOOBE[JCJO92 ] and OOSE[JEJ94] to link the reuse organization and 
  4995. process with the reusable as sets (architectures, components and 
  4996. frameworks). We have augmented standard Objectory with the concepts 
  4997. of component systems,layered architectures,systems of interacting 
  4998. systemsand component system kits.
  4999.  
  5000. 2.1  Reuse organization and processes
  5001.  
  5002. We will use an OOBE model to describe the processes and organizations 
  5003. used in the design and evolution of reuse-oriented organizations. Here, 
  5004. use-cases are used to model the interaction of an actor (person or 
  5005. external organization) with the subject organization. Use-case and 
  5006. domain models (not the domain engineering model) help identify core 
  5007. processes within the organization. When these models are further refined 
  5008. to produce the Objectory robustness model (with interface, control and 
  5009. entity objects), we are able to map these onto processes (control 
  5010. objects),handlers (interface objects) and information systems (entity 
  5011. objects).Factoring and subsystem packaging techniques at the OOBE 
  5012. model allow us to introduce and model organizations.
  5013.  
  5014. This organizational or business modeling technique is applied in two 
  5015. different ways:
  5016.  
  5017. Development organization - it is applied to the software development 
  5018. organization to introduce and model reuse processes and organizations. 
  5019. This use is related the Objectory notion of "development cases."
  5020.  
  5021. Business object extraction- it can also be used as part of the 
  5022. "organizational domain engineering process" applied to some target 
  5023. organization or system,to identify reusable business objects and 
  5024. processes. This could be called a "business-case."
  5025.  
  5026. For example, we might start with a high-level of a company, and quickly 
  5027. identify software development and process improvement sub-
  5028. organizations.Looking at the sub-system to subsystem interactions helps 
  5029. us model the roles of people such as reuse engineer,reuse manager, 
  5030. librarian, etc.
  5031.  
  5032. 2.2  Domain engineering and component systemskits
  5033.  
  5034. Here we believe strongly in an incremental, architectural, domain-
  5035. specific approach.
  5036.  
  5037. We are modifying the robustness analysis phase of the Objectory method 
  5038. to make explicit the commonality and variability required to carry out a 
  5039. systematic, OOdomain engineering. We are most influenced by the ideas 
  5040. of FODA[Kan90], ODM[Sim95] and Gomaa[Gom91 ]. As noted above, the 
  5041. OOBE phase is most like ODM, helping identify business objects.
  5042.  
  5043. We have also found the need to introduce notation and methods to 
  5044. support application ssystems that are built in a layered or modular way 
  5045. from a combination of concrete and abstract components. Components 
  5046. are sets of models (Objectory thinks of code asyet another model) related 
  5047. to each other by refinement and tracebility links, and encapsulated by 
  5048. interface objects (which we will call "facade objects" or "contract 
  5049. objects",in the style of the pattern community[GHJV94]) based on other 
  5050. Objectory work on systems of interacting systems. We see the need to add 
  5051. some mechanisms for additional parameterization, in order to explicitly 
  5052. capture variability, and not just use the existing "uses" and "extends", 
  5053. via subclassing and aggregation.
  5054.  
  5055. When a component system is adorned with domain-specific methods, 
  5056. tools, instructions and training, more suited to a special class of handler 
  5057. ( i.e, domain expert rather than s ftware engineer), we call this a 
  5058. "component system kit."
  5059.  
  5060. 3   Conclusion
  5061.  
  5062. We are quite excited about how well these ideas fit together, and how 
  5063. easily the concepts of use-case, robustness model and devlopment case 
  5064. can be extended with the OOBE and domain-engineering ideas. This work 
  5065. is still in its earliest phases, but we hope to produce a more detailed 
  5066. report by the end of the summer, and a tutorial for OOPSLA.
  5067.  
  5068. References
  5069.  
  5070. [AG94]  Eric Aranow and Martin L. Griss. Systematic software reuse. 
  5071. (Tutorial: Object World San Francisco), July 1994.
  5072.  
  5073. [GAB+91] Martin L. Griss, Sam S.Adams, Howard Baetjer, Jr., Brad J. Cox, 
  5074. and Adele Goldmics of software reuse (panel). In Proceedings of OOPSLA
  5075.  '91,Phoenix, Arizona, 6-11October, pages 264-270, November 1991. (Also 
  5076. as SIGPLAN Notices v26, 1, Nov 1991).
  5077.  
  5078. [GHJV94] Erich Gamma, Richard Helm, Ralph Johnson, and John 
  5079. Vlissides. Design Patterns - Elements of Reusable Object-Oriented Software. 
  5080. Addison-Wesley Publishing Company, Reading, MASS, 1994. (ISBN 0-201-
  5081. 63361-2).
  5082.  
  5083. [GJJ+95]Martin Griss, Ivar Jacobson, Chris Jette,Bob Kessler, and Doug 
  5084. Lea. Panel: Systematic software reuse - objects and frameworks are not 
  5085. enough.  In M. Samezadeh, editor, Proceedings of the Symposium on 
  5086. Software Reuse. IEEE, April 1995.
  5087.  
  5088. [GJK+94] Martin L. Griss, Chris Jette, Voytek Kozaczinski, Robert Troy, 
  5089. and Anthony Wasserman. Panel: Object-oriented reuse. In W. B. Frakes, 
  5090. editor, Proceedings of theThird International Conference on Software 
  5091. Reuse, pages 209-213, Los Alamitos, California, November 1994. IEEE 
  5092. Computer Society Press.
  5093.  
  5094. [GK95a] Martin L. Griss and Robert R. Kessler. Visual basic does lego. In 
  5095. VBITS '95. Visual Basic Programmers Journal, March 1995.
  5096.  
  5097. [GK95b] Martin L. Griss and Robert R. Kessler.Visual basic does lego. 
  5098. Technical Report HPL-xx, HP Laboratories, April 1995.
  5099.  
  5100. [Gom91] Hassan Gomaa. An object-oriented domain analysis and 
  5101. modeling method for software reuse. In Bruce Shriver, editor, Proceedings 
  5102. of the Twenty-Fifth Hawaii International Conference on System Sciences, 
  5103. pages 46-56, Los Alamitos, CA, January 1991. IEEE, Computer Society 
  5104. Press.
  5105.  
  5106. [Gri92] Martin L. Griss. Amulti-disciplinary software reuse research 
  5107. program. In Martin Griss and Larry Latour, editors, Proceedings of the 5th 
  5108. Annual Workshop on Software Reuse, pages Griss-1:8. Department of 
  5109. Computer Science, University of Maine, November 1992.
  5110.  
  5111. [Gri93] Martin L. Griss.  Software reuse:  From library to factory.  IBM 
  5112. Systems Journal, 32(4):548-566, November 1993.
  5113.  
  5114. [Gri95a] Martin L. Griss. Software reuse:A process of getting organized. 
  5115. Object Magazine, May 1995.
  5116.  
  5117. [Gri95b]Martin L. Griss. Software reuse: Objects and frameworks are not 
  5118. enough. Object Magazine, pages 77-79, February 1995.
  5119.  
  5120. [GT93]  Martin Griss and Will Tracz. Wisr'92: 5th annual workshop on 
  5121. software reuse working groups report.Software Engineering Notes, 
  5122. 18(2):74-85, April 1993.
  5123.  
  5124. [GW94]  Martin L. Griss and Kevin Wentzel. Hybrid domain-specific kits 
  5125. for a flexible software factory. In Proceedings of SAC'94, pages 47-52, New 
  5126. York, New York, March 1994. ACM.
  5127.  
  5128. [GW95a] Martin L. Griss and Kevin Wentzel. Hybrid domain-specific kits. 
  5129. Journal of Software and Systems, September 1995. (To appear.
  5130.  
  5131. [GW95b] Martin L. Griss and Marty Wosser. Making reuse work at 
  5132. hewlett-packard. IEEE Software, 12(1):105-107, January 1995.
  5133.  
  5134. [JCJO92]Ivar Jacobson, Magnis Christerson, PatrikJonsson, and Gunnar 
  5135. Overgaard. Object-Oriented Software Engineering: A Use Case Driven 
  5136. Approach. Addison-Wesley Publishing Company, 1992. (Revised 4th 
  5137. printing, 1993).
  5138.  
  5139. [JEJ94] Ivar Jacobson, Maria Ericsson, and Agneta Jacobson. The Object 
  5140. Advantage - Business Process Reengineering with Object Technology. 
  5141. Addison-Wesley Publishing Company, Menlo Park, CA, 1994. (ISBN 0-201-
  5142. 42289-1.
  5143.  
  5144. [Kan90] Kyo C. Kang. Feature-based domain analysis methodology. In L. 
  5145. Latour, editor, Third Annual Workshop: Methods & Tools for Reuse. 
  5146. CASECenter, Syracuse University, University of Maine, June 1990.
  5147.  
  5148. [Pit93] Matthew Pittman. Lessons learned in managing object-oriented 
  5149. development. IEEE Software, 10(1):43-53, January 1993.
  5150.  
  5151. [Sim95] Mark A. Simos. Organization domain modelling (odm): 
  5152. Formalizing the core domain modeling life cycle. In Proceedings of the 
  5153. Symposium on Software Reuse, April 1995. (To appear.).
  5154.  
  5155. [STA93a]STARS. STARSConceptual Framework for Reuse Processes (CFRP): 
  5156. Volume I - Definition. Technical Report STARS-VC-A018/001/00, Paramax, 
  5157. October 1993. (Version 3.0 . See also volume II, applications.).
  5158.  
  5159. [STA93b]STARS.STARS Conceptual Framework for Reuse Processes (CFRP): 
  5160. Volume II- Application. Technical Report STARS-VC-A018/002/00, 
  5161. Paramax, September1993. (Version 1.0 . See also volume I, definition).
  5162.  
  5163. 4   Biography
  5164.  
  5165. Martin L. Griss is a senior Laboratory Scientist at Hewlett-Packard 
  5166. Laboratories, Palo Alto, where he researches object-oriented reuse and 
  5167. measurement system kits. As HP's "reuse rabbi,"he led research on 
  5168. software reuse process, tools and software factories,the creation of an HP 
  5169. Corporate Reuse program,and the systematic introduction of software 
  5170. reuse into HP's divisions. He was past director of the Software Technology 
  5171. Laboratory and has over 20 years in software engineering research. He 
  5172. was previously associate professor of computer science at the University 
  5173. of Utah. He has authored numerous papers and reports on software 
  5174. engineering and reuse, writes a reuse column for the Object Magazine 
  5175. and is active on several reuse program committees. He has given several 
  5176. half-day and full-day tutorials on systematic reuse, and object-oriented 
  5177. reuse. Griss is a frequent invited or keynote speaker at numerous 
  5178. executive level software symposia and workshops, discussing software 
  5179. reuse as a strategic software activity.
  5180. Enhancing the Use of Domain Analysis
  5181.  
  5182. Ernesto Guerrieri
  5183.  
  5184. Digital Equipment Corporation
  5185. 151 Taylor Street, TAY1-2
  5186. Littleton, MA 01460
  5187. Tel: 508-952-4341
  5188. Fax: 508-952-4197
  5189. Email: guerrier@tay1.dec.com
  5190.  
  5191. Abstract
  5192.  
  5193. This position paper looks at what can be done to enhance the use of 
  5194. domain analysis. The position taken is that there is a need to 
  5195. standardize the representation of domain knowledge and to provide a 
  5196. mechanism to disseminate this domain knowledge (at least, within the 
  5197. organization that plans to benefit from domain analysis). This paper 
  5198. examines several notations (i.e., Technology Books and Design Patterns) 
  5199. for representing domain knowledge, and the use of the internet and 
  5200. World Wide Web (WWW)for disseminating the domain knowledge.
  5201.  
  5202. Keywords: Software Reuse, Domain Knowledge, Technology Book, Design 
  5203. Pattern, World Wide Web, WWW, HTML
  5204.  
  5205. Workshop Goals: Interact/discuss with others on how to institutionalize 
  5206. software reuse; Advance software engineering and reuse technology; 
  5207. Networking.
  5208.  
  5209. Working Groups: Domain analysis/engineering, Design guidelines for 
  5210. reuse, Tools and environments, Reuse handbook
  5211.  
  5212. 1   Background
  5213.  
  5214. Ernesto Guerrieri, while at SofTech, Inc., was the lead designer of the 
  5215. RAPID (Reusable Ada Products for Information systems Development) 
  5216. Library Center (RCL) tool utilized by the RAPID Center. He also co-
  5217. authored the original domain analysis method utilized within RAPID. He 
  5218. also developed a domain analysis tool for capturing dynamic, multi-
  5219. dimension classification scheme vocabulary. At Digital Equipment 
  5220. Corporation, he has been involved on several reuse programs as well as 
  5221. investigating the reuse capabilities of the DECADMIRE product,a Rapid 
  5222. Application Development (RAD)environment. Currently, he is looking 
  5223. into how to introduce, unobtrusively, reuse concepts as a normal part of 
  5224. the software engineering processes.
  5225.  
  5226. 2   Position
  5227.  
  5228. In order to maximize the benefits of reuse, an organization needs to 
  5229. embrace the concept and methods of domain analysis. This is usually 
  5230. avoided due to the commitment, cost, and effort needed to perform 
  5231. domain analysis. Unless we address these issues, we will continue to 
  5232. narrow the scope of reuse to code and avoid benefiting from domain 
  5233. analysis. How can we address and eliminate these issues? Maybe we can't 
  5234. eliminate them, but, instead, incorporate some of the steps as part of 
  5235. other processes that are being performed currently.
  5236.  
  5237. Futhermore, there have been technological advancements that have 
  5238. changed how developers do their job. One such area is the information 
  5239. superhighway. Another is the introduction of Design Patterns in the 
  5240. Object-Oriented community. How can these simplify, enhance, or 
  5241. promote the use of domain analysis?
  5242.  
  5243. The combination of the solutions to the above issues should help 
  5244. enhance the benefits of reuse and the incorporation of reuse as a part of 
  5245. the software engineering processes.
  5246.  
  5247. 2.1  Where is the domain knowledge?
  5248.  
  5249. If we look at the people involved in a typical development project, we 
  5250. see that  we have brought together, at appropriate times, experts from 
  5251. different areas to cover different facets of the project (such as Graphical 
  5252. User Interface (GUI) designers, testers, database programmers, architects, 
  5253. quality assurance, project planner, etc.). Some of these expertise will be 
  5254. embodied in a single individual (as if wearing multiple hats). This is 
  5255. similar to the situation in house construction where one employs 
  5256. electricians, plumbers, carpenters, brick layers, landscapers,interior 
  5257. decorators, architects, etc. These individuals bring onto the project their 
  5258. tools of their trade, their expertise, their knowledge of their domain.
  5259.  
  5260. As these people move from project to project,a project gains and looses 
  5261. these expertise unless some of it is captured as part of the project (i.e., 
  5262. the requirement document,the design document, the development or 
  5263. test plan,etc.). What is captured by the project is only an instance (or 
  5264. minute piece) of the expertise of the experts that is relevant or pertinent 
  5265. to the project. On the other hand, these experts draw on their knowledge 
  5266. of their domain in order to provide their expertise on a given project.
  5267.  
  5268. Consequently, we have:
  5269.  
  5270. Project Domain Knowledge: This is knowledge about the development 
  5271. project.It may be for a single project or for a family of similar or related 
  5272. development projects.
  5273.  
  5274. Expertise Domain Knowledge: This is knowledge about a specific expertise 
  5275. required by a development project. Note that this may include project 
  5276. domain knowledge of similar or related projects.
  5277.  
  5278. Either type of knowledge may be vertical or horizontal depending on the 
  5279. applicability of the knowledge.
  5280.  
  5281. How can we capture and represent these types of domain knowledge?
  5282.  
  5283. 2.2  How is the domain knowledge represented?
  5284.  
  5285. Arango in [1] provides a comparative survey of published domain 
  5286. analysis methods. The survey also provides a common domain analysis 
  5287. process, but it does not explicitly define what is the representation of the 
  5288. domain knowledge (i.e., the output from the process). Is the 
  5289. classification and the data analysis modeling output the only 
  5290. representation of the domain knowledge? What role does the raw data 
  5291. play? What about the filtered, clarified, abstracted, and organized data? 
  5292. What about the similarities and variations among applications and 
  5293. systems and their relevance?
  5294.  
  5295. Arango describes in [2] the concept of a Technology Book as a means for 
  5296. capturing design information and the domain analysis. The semantic 
  5297. tags for the Technology Book include:
  5298. ]
  5299. Issue
  5300.  
  5301. Definition
  5302.  
  5303. Assumption
  5304.  
  5305. Imported constraint
  5306.  
  5307. Exported constraint
  5308.  
  5309. Position
  5310.  
  5311. Design decision
  5312.  
  5313. Unresolved
  5314.  
  5315. Result
  5316.  
  5317. Recently, Patterns has shifted the reuse focus from code reuse to design 
  5318. reuse. Under the realization that "the reason there are reoccuring 
  5319. solutions is because there are reocurring problems. "A pattern is therefore 
  5320. a solution to a problem in a context and are described using a form that 
  5321. points out the solution, problem, and context. In [3], a Design Pattern is 
  5322. a description of communicating objects and classes that are customized 
  5323. to solve a general design problem in a particular context. A design
  5324. pattern keyword template used in [3] includes the following sections:
  5325.  
  5326. Also Known As
  5327.  
  5328. Motivation
  5329.  
  5330. Applicability
  5331.  
  5332. Structure
  5333.  
  5334. Participants
  5335.  
  5336. Collaborations
  5337.  
  5338. Consequences
  5339.  
  5340. Implementation
  5341.  
  5342. Sample Code
  5343.  
  5344. Known Uses
  5345.  
  5346. Related Patterns
  5347.  
  5348. Coplien in [4] utilizes the following pattern template:
  5349.  
  5350. Problem:
  5351.  
  5352. Context:
  5353.  
  5354. Forces:
  5355.  
  5356. Solution:
  5357.  
  5358. Resulting Context:
  5359.  
  5360. Design Rationale:
  5361.  
  5362. Whereas, the Portland Form collects and connects pattern paragraphs in 
  5363. a narrative form [5]. Other pattern templates notations exist and can be 
  5364. found at http://st-www.cs.uiuc.edu/users/patterns/patterns.html.  Some 
  5365. examples of actual patterns are also available at this URL.
  5366.  
  5367. These are only a few of the possible representations for domain 
  5368. knowledge. What are the advantages and disadvantages of these different 
  5369. representations? Do they encompass the various aspects of domain 
  5370. knowledge? How can we achieve a common representation of domain 
  5371. knowledge?
  5372.  
  5373. 2.3  How is the domain knowledge disseminated?
  5374.  
  5375. Today, a World Wide Web browser (such as Mosaic or Netscape) is a 
  5376. constantly open icon on my workstation and represents a common 
  5377. interface for accessing, among other things, documents and software that 
  5378. resides locally or across the world. The homepage (.html file) represents 
  5379. a set of knowledge (or references to knowledge) that are co-located based 
  5380. on some relationship (i.e., person's interest,subject focus, etc.). The 
  5381. concept of homepage could be used to contain domain knowledge in 
  5382. some structured fashion that can be widely accessible in a read-on
  5383.  ly manner.
  5384.  
  5385. The technology books currently exist in a computing environment 
  5386. consisting of an object-oriented database, a modeling language, a user 
  5387. interface, and other ancillary tools. Currently, the design patterns exist 
  5388. in publications or in text files accessible over the internet.
  5389.  
  5390. If we combine such tools with a standardized notation for the domain 
  5391. knowledge, we would be able to disseminate within the organization and 
  5392. facilitate design reuse. Are today's tools sufficient? Do we need to 
  5393. standardize the notation forthe domain knowledge? Can we build on the 
  5394. notations that are being proposed/utilized in communities such as the 
  5395. patterns community?
  5396.  
  5397. 3   Comparison
  5398.  
  5399. Other related approaches that may contribute or be relevant to this 
  5400. topic are:
  5401.  
  5402. The Domain-Specific Kits [6, 7]
  5403.  
  5404. The 3C Model [8, 9, 10, 11]
  5405.  
  5406. The Domain-Specifoc Software Architectures (DSSA) [12,13, 14]
  5407.  
  5408. References
  5409.  
  5410.  [1]G. Arango, "Domain Analysis Methods," in Software Reusability, 
  5411. pp.17-49, London, UK: Ellis Horwood, 1994.
  5412.  
  5413.  [2]G. Arango, E. Schoen, and R. Pettengill, "Design as Evolution and 
  5414. Reuse," in Advances in Software Reuse - Selected Papers from the Second 
  5415. International Workshop on Software Reusability, (Los Alamitos, CA), pp. 
  5416. 9-18, IEEE Computer Society Press, 1993.
  5417.  
  5418.  [3]E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: 
  5419. Elements of Reusable Object-Oriented Software. Addison Wesley, 1994.
  5420.  
  5421.  [4]J. O. Coplien,"A Development Process Generative Pattern Language,"in 
  5422. Proceedings of PLoP/94 (First Annual Conference on Pattern Languages of 
  5423. Programming),1994. (Also available via www address 
  5424. http://www.research.att.com:80/orgs/ssr/people/cope/Patterns/Process/i
  5425. ndex. html).
  5426.  
  5427.  [5]P.Group, Portland Pattern Repository Homepage.  1995.  (Also 
  5428. available via www address http://c2.com/ppr/index.html).
  5429.  
  5430.  [6]M. L. Griss, "Bus-Based Kits for Reusable Software," in Proceedings of 
  5431. WISR-4, 1991.  (Also available via www address 
  5432. ftp://gandalf.umcs.maine.edu/pub/WISR/wisr4/proceedings/ps/griss.ps).
  5433.  
  5434.  [7]M. L. Griss,"Towards Tools and Languages for HybridDomain-Specific 
  5435. Kits," in Proceedings of WISR-6, 1993. (Also available via www address 
  5436. ftp://gandalf.umcs.maine.edu/pub/WISR/wisr6/proceedings/ps/griss.ps).
  5437.  
  5438.  [8]S. Edwards,"The 3C Model of reusable Software Components," in 
  5439. Proceedings of the Third Annual Workshop: Methods and Tools for Reuse, 
  5440. 1990.
  5441.  
  5442.  [9]W. Tracz, "The Three Cons of Software Reuse," in Proceedings of the 
  5443. Third Annual Workshop: Methods and Tools for Reuse, (Syracuse, N.Y.), 
  5444. June 1990.
  5445.  
  5446. [10]L. Latour and C. Meadow,  "Scaling Up the3Cs Model - A  Schema for 
  5447. Extensible Generic Architectures," in Proceedings of WISR-4, 1991.  (Also 
  5448. available via www address 
  5449. ftp://gandalf.umcs.maine.edu/pub/WISR/wisr4/proceedings/ps/latour.ps
  5450. ).
  5451.  
  5452. [11]M. Sitaraman, "A Uniform Treatment of Reusability of  Software 
  5453. Engineering Assets," in Proceedings of WISR-5, 1992.  (Also available via 
  5454. www address 
  5455. ftp://gandalf.umcs.maine.edu/pub/WISR/wisr5/proceedings/ps/sitarama
  5456. n.ps).
  5457.  
  5458. [12]W. Tracz and L. Coglianese, "An outline for a Domain Specific 
  5459. Software Architecture Engineering Process,"in Proceedings of WISR-4, 1991.  
  5460. (Also available via www address 
  5461. ftp://gandalf.umcs.maine.edu/pub/WISR/wisr4/proceedings/ps/tracz.ps)
  5462.  
  5463. [13]W.  Tracz  and  L.  Coglianese,  "A  CASE  for  Domain-Specific  
  5464. Software Architectures,"  in Proceedings  of  WISR-5,  1992. (Also  
  5465. available via www address 
  5466. ftp://gandalf.umcs.maine.edu/pub/WISR/wisr5/proceedings/ps/tracz.ps)
  5467.  
  5468. [14]W.  Tracz,  S.  Shafer,  and  L.  Coglianese,  "Design  Records:   A Way  
  5469. to  Organize  Domain  Knowledge,"  in  Proceedings  of  WISR-6,  1993.    
  5470. (Also  available  via 
  5471. ftp://gandalf.umcs.maine.edu/pub/WISR/wisr6/proceedings/ps/tracz3.ps
  5472. ).
  5473.  
  5474. 4   Biography
  5475.  
  5476. Ernesto Guerrieri is a principal software engineer at Digital Equipment 
  5477. Corporation. He is the project leader of Digital's ACMSxp transaction pro 
  5478. cessing system and the team leader of Digital's DECADMIRE application 
  5479. development environment. He wasinvolved in Digital's corporate reuse 
  5480. initiatives. He is also an Adjunct Associate Professor in the Software 
  5481. Engineering program at Boston University. He was previously at SofTech, 
  5482. Inc. where he led the development of the RAPID (Reusable Ada Packages 
  5483. for Information system Development) Center Library (RCL). He received a 
  5484. Ph.D. in Electrical, Computer, and Systems Engineering from Rensselaer 
  5485. Polytechnic Institute in 1989.
  5486. Accelerating Successful Reuse Through the Domain Lifecycle
  5487.  
  5488. Scott Henninger
  5489.  
  5490. Department of Computer Science & Engineering
  5491. 115 Ferguson Hall, CC 0115
  5492. University of Nebraska-Lincoln
  5493. Lincoln, NE  68588-0115
  5494. Tel:  (402) 472-8394
  5495. Fax:  (402) 472-7767
  5496. Email: scotth@cse.unl.edu
  5497.  
  5498. Abstract
  5499.  
  5500. The inability of software reuse to reach its full potential lies partially 
  5501. in the product-centric way in which we view software development.  
  5502. Methods are needed that help us reason about product families and 
  5503. degrees of support that can be offered for problem domains.  Domain 
  5504. analysis techniques help, but often far too concerned with creating 
  5505. rules for domain inclusion and exclusion.  We have been working on 
  5506. techniques that take a slightly different view of how increasing 
  5507. levels of formality can be provided as a domain matures.  We call 
  5508. this process a domain lifecycle in which knowledge evolves from 
  5509. isolated problem solving instances to domain abstractions such as 
  5510. models, guidelines, and checklists, to design environments that 
  5511. automate significant parts of development within the domain.  We 
  5512. are developing these techniques through empirical investigations of a 
  5513. software development.  Currently we are in the process of 
  5514. demonstrating and refining our ideas by constructing prototypes 
  5515. using case-based technology to create an organizational memory for 
  5516. software development practices in the organization.
  5517.  
  5518. Keywords:  organizational memory, domain analysis, domain-specific 
  5519. software, case-based reasoning
  5520. Working Groups:  Domain analysis/engineering, Tools and 
  5521. environments, Reuse process models
  5522.  
  5523. 1  Background
  5524. My involvement in software reuse began with my dissertation which 
  5525. investigated methods for creating and using repositories of reusable 
  5526. components.  The major focus of this work was with CodeFinder 
  5527. which supported the process of query construction and using a 
  5528. connectionist-based spreading activation method for retrieval.  
  5529. Empirical work with this system and subsequent involvement with a 
  5530. large development organization convinced me that repository 
  5531. systems are the least of the problems in software reuse.  Current 
  5532. research, briefly described in this position paper, is focusing on a 
  5533. process in which organizations can develop domain-oriented reusable 
  5534. environments using case-based technology and domain analysis 
  5535. methods.  This work is being both developed and verified through a 
  5536. collaborative effort with industry.
  5537.  
  5538. 2  Position:  An Organizational Learning Approach to Software 
  5539. Development
  5540. There is a growing consensus that most successful reuse efforts have 
  5541. been achieved using collections of components within well-defined 
  5542. and well-understood domains.  Recognizing the importance of domain 
  5543. knowledge to the development process, domain analysis techniques 
  5544. have been designed to systematically identify objects and 
  5545. relationships of a class of systems [2,8].  These techniques have been 
  5546. shown to be useful, but suffer from defining the domain too 
  5547. restrictively, burying important relationships deep in domain 
  5548. taxonomies or rules of inclusion and exclusion, prohibiting flexible 
  5549. identification of domains with common issues.
  5550. Another issue is that domain analysis methods have been most 
  5551. successfully applied to mature domains.  Biggerstaff's rules of three 
  5552. states that unless three real systems have been built in the domain, 
  5553. it is unlikely that the details required for successful reuse can be 
  5554. derived [10].  In many ways this is unfortunate as we are providing 
  5555. the largest degree of support for those problems that require the 
  5556. least amount of support.  If the domain is mature, then people with 
  5557. the background and experience for the problem exist, reducing the 
  5558. need for sophisticated support models.  A potentially larger return 
  5559. on investment lies in support for problems that have not yet 
  5560. matured, but for which some isolated solutions have been explored.
  5561. Software development and reuse support is therefore needed for 
  5562. both mature and evolving domains.  Our approach is to provide the 
  5563. means to support a domain lifecycle in which appropriate levels of 
  5564. support is provided as a domain matures from a couple of isolated 
  5565. instances to a well-understood domain with well-defined bounds.  
  5566. This process is supported with case-based tools that capture problem 
  5567. solving experiences within an organization to identify specific 
  5568. solutions to problems faced by software developers throughout the 
  5569. development lifecycle.  As experiences accumulate, the organization 
  5570. collectively learns about the domains so people can begin to build a 
  5571. culture based on success, avoid duplicate efforts, and avoid repeating 
  5572. mistakes.  This defines an organizational learning approach to 
  5573. software development [7] that naturally incorporates reuse into the 
  5574. product and domain lifecycles.
  5575. Figure 1 depicts how an organizational learning approach to software 
  5576. development supports the domain lifecycle.  As frequently 
  5577. encountered problem domains mature from novel problems to 
  5578. repeated problems to a fully mature domain, support is provided in 
  5579. increasing levels of automation.  CASE tools supporting the three 
  5580. main steps in the domain lifecycle are identified:
  5581. Ñ    A case-based repository collects experiences from individual 
  5582. projects, tool experiences, and other artifacts generated to support 
  5583. the development infrastructure of the organization.  Project 
  5584. experiences and design artifacts are collected through a process of 
  5585. issue management and design rationale that describes the problems 
  5586. that are addressed while creating an application.  Tool experiences 
  5587. are how-to advice and descriptions of problems encountered while 
  5588. developers are using a tool to develop software.  This provides 
  5589. solutions to organization-specific problems that are not found in 
  5590. manuals.  Reusable artifacts can be in the form of procedures for 
  5591. approaching a problem (process models), software modules, 
  5592. specifications, requirement documents, algorithms, designs, test 
  5593. suites, and other items generated in the course of a project.
  5594. Ñ    Domain abstractions are domain-specific models of design 
  5595. problems, including domain models, design guidelines, value-added 
  5596. reusable artifacts, domain-specific handbooks, process models, design 
  5597. checklists, and other forms of knowledge.  Domain-specific 
  5598. knowledge is created by a domain analyst refining knowledge 
  5599. contained in the case-based repository into forms that are more 
  5600. generally applicable to problems frequently encountered in the 
  5601. organization.
  5602. Ñ    Domain-specific design environments automate or provide 
  5603. knowledge-based support for the development of systems within a 
  5604. well-established domain.  The environments are created by tool 
  5605. designers using accumulated knowledge from the domain models and 
  5606. specific cases and reusable artifacts in the case-based repository.
  5607. 
  5608. Figure 1:  Organizational Learning Support for the Domain Lifecycle.
  5609. These steps define increasing levels of automation and support 
  5610. mirroring the maturity of the domains.  Problems that have yet to be 
  5611. analyzed are supported by searching for similar problems in a case-
  5612. based repository of project and tool experiences.  The cases will 
  5613. contain information that is specific to the original project and may 
  5614. need work to apply to the current context, but at least there are 
  5615. some prior experiences to help guide design decisions.  As activities 
  5616. are repeated, case-based technology is employed to identify 
  5617. recurring development issues and support the process of generalizing 
  5618. from individual cases to domain-specific abstractions such as design 
  5619. guidelines, domain models and other formal structures.  Using 
  5620. handbooks, guidelines, and domain models provides a higher level of 
  5621. support as the knowledge has been processed by domain analysts 
  5622. into a form that is applicable to general problems in the domain.  As 
  5623. the domain matures, tool designers can use the synthesized 
  5624. knowledge and components to construct design environments that 
  5625. automate design and provide intelligent support for mature domains 
  5626. repeatedly encountered in the organization.
  5627. 2.1  Support for Formal Domain Analysis
  5628. While using a case-based approach to software reuse can provide a 
  5629. degree of reusability leverage [6], the main problem is that cases 
  5630. tend to represent isolated problems that need to be adopted from 
  5631. one set of specifics to another.  Domain analysis methods are needed 
  5632. to generalize the knowledge into a more widely applicable form.  
  5633. This is precisely where organizational learning comes in.  The process 
  5634. of synthesizing similar cases into knowledge that is applicable to a 
  5635. class of problems naturally supports the maturation of domain 
  5636. knowledge.  The real issue of domain analysis is to find commonalties 
  5637. among systems to facilitate reusing software or other design 
  5638. artifacts.  From this perspective, domain analysis is a process of 
  5639. identifying commonly occurring patterns across a number of 
  5640. development efforts.  As patterns emerge, top-down domain analysis 
  5641. methods can be used to formalize the patterns, facilitating domain 
  5642. evolution from the identification of isolated patterns to formally 
  5643. defined domain knowledge.  Identifying established patterns of 
  5644. effort reduces the risk of costly domain analysis efforts by ensuring 
  5645. that the cost of analysis can be amortized over many uses.
  5646. The case-based repository supports this process by allowing users to 
  5647. query the repository to get a comprehensive picture of the issues 
  5648. and approaches used to solve problems in the domain [7].  For 
  5649. example, suppose an organization has a number of projects that have 
  5650. begun to struggle with issues of backup and recovery in a client-
  5651. server architecture.  The analyst begins by querying the system with 
  5652. terms such as ╥backup╙ and ╥recovery╙, finding characteristics such 
  5653. as ╥Automatic backup╙, ╥File backup╙, Disaster recovery╙, ╥Backup 
  5654. scheduling╙, ╥Update frequency╙ and others.  Given this information, 
  5655. the analyst begins to construct facets [8] to help understand the 
  5656. domain and organize the software artifacts that have accumulated 
  5657. about backup and recovery issues.  The repository provides a 
  5658. comprehensive and convenient mechanism for performing the 
  5659. analysis.  It is precisely this kind of support for domain analysis that 
  5660. is necessary to provide the kind of reference handbooks that other 
  5661. engineering domain have benefited from.
  5662. 2.2  Issue Tracking
  5663. Since we are advocating that the mapping from problems to tools 
  5664. must be dynamically maintained to meet the changing needs of an 
  5665. organization, capturing project experiences is a crucial element of our 
  5666. approach.  The system must quickly reach a critical mass of 
  5667. information to become an invaluable part of the design process and 
  5668. maintain that usefulness by evolving with the changing needs of the 
  5669. organization.  We are in the process of developing tools to support an 
  5670. issue tracking methodology to monitor major issues and subproblems 
  5671. that arise in the course of the project that may have implications for 
  5672. subsequent projects.  By integrating our efforts at the organizational 
  5673. and project levels, we hope to achieve a ╥living design memory╙ [9] 
  5674. that emphasizes the development of domain knowledge, not just 
  5675. capturing or acquiring what already exists.
  5676. 2.3  Conclusions and Future Directions
  5677. Centering the information around a single repository through an 
  5678. ongoing process of capturing project experiences can prevent the 
  5679. duplication of efforts, avoid repeating common mistakes, and help 
  5680. streamline the development process.  Similar projects have shown 
  5681. that such a system will be used by development personnel, provided 
  5682. it contains relevant, useful and up-to-date information [9].
  5683. A key question that exists for our work as well as work in the areas 
  5684. of domain analysis, design rationale, and organizational memory, is 
  5685. how the process of generating and using repositories of design 
  5686. information can be embedded in the everyday practice of software 
  5687. development so that the repository evolves with the ever-changing 
  5688. goals and accomplishments of the organization [9].  Our approach 
  5689. advocates using the repository to both track project progress and as 
  5690. an information resources to support design and decision making.  
  5691. Much more work is needed to accomplish this goal.  We are 
  5692. approaching this problem in a user-centered or participatory design 
  5693. method in which we deploy prototypes to collect feedback and refine 
  5694. our model to fit the organization╒s needs.  Successful deployment of 
  5695. this system will not only help the software development process at 
  5696. UPRR, but will provide a crucial first step toward better 
  5697. understanding the software development process and how it can be 
  5698. improved.
  5699. 3  Comparison
  5700. Our work applies techniques from artificial intelligence and human-
  5701. computer interaction to software engineering problems.  In many 
  5702. respects our approach operationalizes the domain analysis 
  5703. prescription to identify reusable information in the problem domain, 
  5704. capture relevant information, and evolve the information to meet 
  5705. current needs [2].  Efforts in the software reuse community, 
  5706. especially experience factories [4] have similar concerns, although 
  5707. the focus is often exclusively on re-using source code.  We wish to 
  5708. take a broader view to include any significant development issue.  
  5709. For example, one project at UPRR performed a study of screen 
  5710. ergonomics.  While the project was eventually canceled, the screen 
  5711. ergonomics report is highly regarded and has been used by other 
  5712. projects.  Our objective is to provide a formalized process by which 
  5713. such artifacts can be identified and disseminated for widespread use.
  5714. Design rationale techniques, which advocate a process of deliberation 
  5715. in which design decisions are reached by consulting the design issues 
  5716. an alternatives stored in a repository [5], have also had a significant 
  5717. impact on our approach.  Our goal will be not only to capture the 
  5718. rationale of why a system was designed a certain way, but also what 
  5719. occurred as a result of the decision, and how future efforts of a 
  5720. similar nature can be improved.
  5721. The closest efforts to ours have focused on creating corporate 
  5722. repositories, often referred to as organizational memory.  Answer 
  5723. Garden [1] was built to capture recurring questions in a central 
  5724. database using a branching network of multiple-choice questions and 
  5725. answers.  The Designer Assistant integrated a repository with 
  5726. existing practices in a development organization at AT&T [9].  This 
  5727. strategy not only ensured that Designer Assistant was used, but also 
  5728. that it was modified as part of the development process, allowing it 
  5729. to evolve with changing organization needs.  The primary difference 
  5730. is that our approach uses a repository of cases, whereas the Designer 
  5731. Assistant and Answer Garden are structured as an advice-giving 
  5732. systems.  Part of the output of a domain analysis could be a 
  5733. structured set of questions leading to a piece of advice, but putting 
  5734. the knowledge in that form is labor-intensive, and it has been noted 
  5735. that some users prefer a more open-ended mode of interaction, 
  5736. especially when users want to find information on a subject area [9].
  5737. References
  5738. [1]    Ackerman, M.S., Malone, T.W., ╥Answer Garden:  A tool for 
  5739. growing organizational memory╙, Proceedings of the Conference on 
  5740. Office Information Systems, ACM, New York, 1990, pp. 31-39.
  5741. [2]    Arango, G., Domain Analysis: From Art Form to Engineering 
  5742. Discipline, Proceedings Fifth International Workshop on Software 
  5743. Specification and Design, (Pittsburgh, PA), ACM, pp. 152-159, 1989.
  5744. [3]    Arango, G. and Prieto-Diaz, R. Domain Analysis software system 
  5745. modeling, IEEE Computer Society Press,  Los Alamos, CA, 1991.
  5746. [4]    Caldiera, G., Basili, V.R., ╥Identifying and Qualifying Reusable 
  5747. Software Components╙, Computer, 24(2), Feb. 1991, pp. 61-70.
  5748. [5]    Fischer, G., Lemke, A.C., McCall, R. and Morch, A.╥Making 
  5749. Argumentation Serve Design╙, Human-Computer Interaction, 6(3-4), 
  5750. 1991, pp. 393-419.
  5751. [6]    Fouque, G., Matwin, S. ╥A Case-Based Approach to Software 
  5752. Reuse,╙ Journal of Intelligent Information Systems, 1, 1993, pp. 165-
  5753. 197.
  5754. [7]    Henninger, S., Lappala, K., Raghavendran, A., ╥An Organizational 
  5755. Learning Approach to Domain Analysis,╙ Seventeenth International 
  5756. Conference on Software Engineering (Seattle, WA), ACM, IEEE, Los 
  5757. Alamitos, CA, pp. 95-104, 1995.
  5758. [8]    Prieto-Diaz, R. ╥Implementing Faceted Classification for 
  5759. Software Reuse,╙ Communications of the ACM, 35(5), May 1991.
  5760. [9]    Terveen, L.G., Selfridge, P.G., Long, M.D., ╥╘Living Design 
  5761. Memory╒ - Framework, Implementation, Lessons Learned,╙ Human-
  5762. Computer Interaction, 1995 (in press).
  5763. [10]Tracz, W. Confessions of a Used Program Salesman:  
  5764. Institutionalizing Software Reuse, Addison Wesley, Reading, MA, 
  5765. 1995.
  5766.  
  5767. Software Reuse - it's TEA - time!
  5768.  
  5769. Elke Hochmuller
  5770.  
  5771. Institut fur Informatik
  5772. Universitat Klagenfurt
  5773. Universitatsstr.65-67
  5774. A-9020 Klagenfurt, AUSTRIA
  5775. Tel: ++43463 2700 574
  5776. Email: elke@ifi.uni-klu.ac.at
  5777.  
  5778. Abstract
  5779.  
  5780. Using CASE environments and utilizing software reuse are seen as 
  5781. promising and mandatory means to enhance software productivity. 
  5782. Unfortunately, with current technology, the combination of software 
  5783. reuse and CASE environments is hardly supported. On the basis of this 
  5784. observation, this position paper presents some criteria which can be 
  5785. useful in evaluation and assessment of tools and environments 
  5786. pretending to support software reuse.
  5787.  
  5788. Keywords: tool evaluation, reuse process model, institutionalizing reuse
  5789.  
  5790. Workshop Goals: Networking and exchanging ideas; common problem 
  5791. understanding; learning about reuse experiences in practice.
  5792.  
  5793. Working Groups: tools and environments, reuse process models, reuse 
  5794. management, organization and economics.
  5795.  
  5796. [TEA - Tool Evaluation and Assessment]
  5797.  
  5798. 1   Background
  5799.  
  5800. Elke Hochmuller is assistant professor at the University of Klagenfurt. She 
  5801. is member of Roland Mittermeir's research group which is particularly 
  5802. concerned with software reuse.  Based on the software base approach, she 
  5803. developed the concept for AUGUSTA- a reuse-oriented software 
  5804. engineering environment for the development of Ada applications [1]. 
  5805. Furthermore, her Ph.D. thesis [2] contained some initial thoughts on 
  5806. ideal process models as well as organizational structures of reuse-
  5807. oriented software developing companies.
  5808.  
  5809. In [3] E. Hochmuller and R. Mittermeir propose a reuse augmentation to 
  5810. traditional process models requiring only minimal changes to an already 
  5811. implemented and approved software development process (Figure 1). 
  5812. This reuse process model can be considered as a meta model which can 
  5813. be refined according to the particular needs of each enterprise. 
  5814. Furthermore,it is rather independent of the software development 
  5815. process model applied so far. Thus, a software developing enterprise 
  5816. need not change all its approved methods and processes, but only enrich 
  5817. its applied development process together with some inevitable changes 
  5818. inits organizational structure (e.g. software library, software library 
  5819. administrator). The suggested reuse process model consists of two main 
  5820. subprocesses which are linked together in a "ping-pong" manner. The 
  5821. first subprocess deals with the development of reusable components 
  5822. according to development for reuse (DfR). These components are used 
  5823. within the second subprocess which deals with (system) development 
  5824. with reuse (DwR).
  5825.  
  5826. Figure 1: Reuse Process Model (not in text-only form)
  5827.  
  5828. 2   Position
  5829.  
  5830. Software reuse cannot be institutionalized by a very radical change in 
  5831. traditional software development. The integration of software reuse into 
  5832. current organizational as well as process structures should take place 
  5833. smoothly. On the one hand, already approved software process models 
  5834. should not be thrown away but be enriched by planned software reuse. 
  5835. On the other hand,this should also be true for already well known and 
  5836. applied CASE tools. Thus, CASE tool vendors should focus on reuse 
  5837. requirements and adopt their tools accordingly. Hence, without 
  5838. demanding for completeness the following criteria (mainly resulting 
  5839. from the reuse process model previously presented) are proposed to be 
  5840. considered while evaluating tools regarding to their support of reuse.
  5841.  
  5842. 1.Component Reuse
  5843.  
  5844. Most CASE tools implement a phase driven, forward looking development 
  5845. model. Software development with reuse, however, is all but that linear. 
  5846. It follows rather a "Yoyo"-approach, where design sketches are followed 
  5847. by delving into the library of reusable components, evaluating some 
  5848. candidate components and then solidifying the high level sketches 
  5849. according to the already available integrable components. On the other 
  5850. hand,one should also consider development for reuse. This has many 
  5851. facets. Be it,that the development of highly generic, off-the-shelf 
  5852. components is promoted, or be it that the isolation of reusable 
  5853. components out of conventionally developed applications is supported.
  5854.  
  5855. 2.Central Software Library
  5856.  
  5857. A central software library containing software components of high reuse 
  5858. potential is an essential part of a reuse supporting CASE environment. 
  5859. While a common repository, which is a prerequisite for any integrated 
  5860. software engineering environment, will contain anything which has been 
  5861. produced during a particular development project, this software library 
  5862. should only contain components of approved quality with high 
  5863. potential for interproject reuse.
  5864.  
  5865. 3.Software Library Administrator
  5866.  
  5867. The CASE environment should support a new user role for the 
  5868. administration of the software library. This task could be fulfilled by a 
  5869. software library administrator whose competence, however, should 
  5870. exceed pure administrative activities.  This person should particularly be 
  5871. responsible for the certification, classification and maintenance of 
  5872. software components. It is expected from a CASE tool to support the 
  5873. software librarian in the relevant activities.
  5874.  
  5875. 4.Component Certification
  5876.  
  5877. The inclusion of every software document into the software library 
  5878. without any checks would soon flood the library with components of 
  5879. little potential for reuse. Frustration of users of this library will be the 
  5880. consequence. To cope with this problem, a reuse library should provide 
  5881. clues on qualitative properties of components. The process of component 
  5882. certification could be a single-step activity or a rather sophisticated 
  5883. process depending on the specific situation of the development 
  5884. organization. In any case though,the certification of the candidate 
  5885. components should be supported by the CASE environment.
  5886.  
  5887. 5.Retrieval Support and Classification Scheme
  5888.  
  5889. It is required from a reuse supporting CASE environment to provide best 
  5890. automation of both storage and retrieval of components. In order to find 
  5891. specific components contained in the software library quickly and with 
  5892. acceptable effort, the software documents should be classified when they 
  5893. are stored. Therefore, an adequate classification structure is necessary.
  5894.  
  5895.  
  5896. 6.Adaptation Support
  5897.  
  5898. In case a software component which is only similar to the desired one 
  5899. could be identified during a search process, a CASE tool is expected to 
  5900. support the process of adaptation of such a component in order to fulfil 
  5901. precisely the specification demanded. While these modifications might 
  5902. encompass functional aspects as well as qualitative aspects, one might 
  5903. also consider those modifications, where the internals of a 
  5904. componentwould be adequate, but modifications have to be made to the 
  5905. interface in order to integrate it into the application under 
  5906. development.
  5907.  
  5908.  7.Testbeds and Instrumentation
  5909.  
  5910. Since component descriptions, how formal they ever might be, can 
  5911. naturally not cover all aspects which might be decisive for using a 
  5912. component in a new development project, a reuse supporting CASE tool 
  5913. should provide for testbeds, such that retrieved candidate components 
  5914. can be easily tested in isolation. In special cases,instrumentation of 
  5915. components for testing specific aspects might be desirable.
  5916.  
  5917. 8.Integration Support
  5918.  
  5919. After successful retrieval and adaptation of software components, they 
  5920. have to be glued together in order to achieve a complete software 
  5921. system. This integration of components should also be supported by the 
  5922. environment. With this integration support, one has usually to 
  5923. distinguish between prototype development and the more stringent 
  5924. requirements for the integration of production-quality versions.
  5925.  
  5926. 9.Maintenance Propagation
  5927.  
  5928. The requirement of maintenance propagation can be viewed from two 
  5929. perspectives:
  5930.  
  5931. Vertical Maintenance Propagation
  5932.  
  5933. During its development process a software component passes different 
  5934. stages of representation (from specification document to object code). In 
  5935. addition to the need of storing all these different documents, a reuse 
  5936. supporting CASE tool should provide for automatic update of all the 
  5937. different representations if a particular component is changed.
  5938.  
  5939. Horizontal Maintenance Propagation
  5940.  
  5941. A reuse supporting CASE environment should also provide the possibility 
  5942. to establish links between different software components of usually also 
  5943. different kinds of representation.  These links should not only support 
  5944. the user in navigating between related components (which would again 
  5945. be another general requirementfor CASE tools) but also enable the 
  5946. propagation of operations applied to a particular software component 
  5947. triggering adequate operations on related components.
  5948.  
  5949. 10.Reuse Success Evaluation
  5950.  
  5951. Continuous control of the reuse success can help not only the software 
  5952. library administrator to react in time to reorganize the contents of the 
  5953. library. It also assists potential users, which might build their estimates 
  5954. on the benefit of reusing a particular component on the past "turnover" 
  5955. of this component. Furthermore, management might use such statist cs 
  5956. to reward project personnel for successful reuse or to encourage better 
  5957. reuse by establishing specific reuse incentives. Most necessary data can 
  5958. be easily collected and made available by the tool itself.
  5959.  
  5960. 3   Comparison
  5961.  
  5962. A whole bunch of general requirements for CASE tools and environments 
  5963. has been proposed in the literature (e.g. [4]). Full life cycle support, 
  5964. integrated CASE, multiuser and teamwork support, consistency and 
  5965. integrity support,evaluation support, versioning, and management 
  5966. support are only some of the most important criteria in this connection.
  5967.  
  5968. However,as far as I know there have been no proposals covering specific 
  5969. criteria for CASE environments which focus particularly on reuse aspects 
  5970. in software engineering. The items presented here are far from being 
  5971. complete or detailed enough but are an excellent starting point for 
  5972. further research in this area. Regarding the nature of these 
  5973. requirements,they rather refer to entire CASE environments in the sense 
  5974. of [5] than to single CASE tools. Furthermore, the scope of the evaluation 
  5975. criteria presented here lies beyond thatof evaluation requirements 
  5976. tailored to reuse-specific tools (e.g. the evaluationof SoftKin [6] as a 
  5977. reuse supporting tool detecting similarities at code level).
  5978.  
  5979. References
  5980.  
  5981. [1]E. Hochmuller,"Process support for software reuse with AUGUSTA," in 
  5982. Proc. Software Systems in Engineering, (Houston), pp. 173-181, ASME, Jan. 
  5983. 1995.
  5984.  
  5985. [2]E.Hochmuller, AUGUSTA - eine reuse-orientierte Software-
  5986. Entwicklungsumgebung zur Erstel-lung von Ada-Applikationen. PhD 
  5987. thesis, Universitat Wien, May 1992.
  5988.  
  5989. [3]E. Hochmuller and R. Mittermeir, "Improving the software 
  5990. development process by planned software reuse,"in Proc. Re-Technologies 
  5991. for Information Systems (ReTIS '95) (J. Gy|rk|s, M. Krisper, and H. C. 
  5992. Mayr, eds.), (Bled, Slovenia), pp. 27-39, OCG, June 1995.
  5993.  
  5994. [4]A. duPlessis,"A method for case tool evaluation," Information & 
  5995. Management, vol. 25, pp. 93-102, Aug. 1993.
  5996.  
  5997. [5]A. W. Brown,"Why evaluating case environments is different from 
  5998. evaluating case tools," in Proc. Third Symposium on Assessment of 
  5999. Quality Software DevelopmentTools (E. Nahouraii, ed.), (Washington, 
  6000. DC), pp. 4-13, IEEE, June 1994.
  6001.  
  6002. [6]G. W. Hislop, "Evaluating a software reuse tool," in Proc. Third 
  6003. Symposium on Assessment of Quality Software Development Tools (E. 
  6004. Nahouraii, ed.), (Washington, DC), pp. 184-190, IEEE, June 1994.
  6005.  
  6006. 4   Biography
  6007.  
  6008. ElkeHochmuller is assistant professor at the Department of Informatics, 
  6009. University of Klagenfurt, Austria. She received her M.S. and Ph.D. degrees 
  6010. from the University of Vienna in 1988 and 1992, respectively. In 1994 
  6011. she left the University of Klagenfurt for halfa year and developed an 
  6012. enterprise wide data model for an electric power supply company where 
  6013. she became aware of the very intricate managerial, social as well as 
  6014. psychological problems in practice which increased her interest in 
  6015. bridging the gap between research and practice. Her research interests 
  6016. cover various topics in the field of software engineering, particularly 
  6017. software reuse, process modelling, CASE, and requirements engineering.
  6018. One Architecture Does Not Fit All: Micro-Architecture Is As Important As 
  6019. Macro-Architecture
  6020.  
  6021. Joseph E. Hollingsworth
  6022.  
  6023. Department of Computer Science
  6024. Indiana University Southeast
  6025. New Albany, IN 47150
  6026. Tel: (812)941-2425
  6027. Fax: (812) 941-2637
  6028. Email: jholly@ius.indiana.edu
  6029.  
  6030. Bruce W. Weide
  6031.  
  6032. Department of Computer and Information Science
  6033. The Ohio State University
  6034. Columbus, OH 43210
  6035. Tel: (614)292-1517
  6036. Fax: (614) 292-2911
  6037. Email: weide@cis.ohio-state.edu
  6038.  
  6039. Abstract
  6040.  
  6041. The field of study recently dubbed "software architecture" should be 
  6042. split into two sub-areas: micro-architecture and macro-architecture. 
  6043. Work to date under the name software architecture has concentrated 
  6044. primarily on macro-architecture. But micro-architecture, a.k.a. software 
  6045. component engineering, is at least of equal concern.
  6046.  
  6047. Keywords: Component engineering, interface design, interface 
  6048. specification, patterns, software architecture
  6049.  
  6050. Workshop Goals: Learning, networking, discussing/debating technical 
  6051. issues related to reuse
  6052.  
  6053. Working Groups: Reuse and formal methods, reuse and OO methods, 
  6054. reusable component certification, design guidelines for reuse, education
  6055.  
  6056. 1   Background
  6057.  
  6058. Economists discovered some time ago that one view of economics cannot 
  6059. be made to fit all economic situations. They noticed that different 
  6060. analytical techniques and models were needed when looking at 
  6061. economics-in-the-small as compared to economics-in-the-large [1]. This 
  6062. is not to say that one is more important than the other, or that one 
  6063. deserves more or less attention. It simply admits that the understanding 
  6064. and analysis of these two different classes of economic situations require 
  6065. different approaches in order to capture and reason about their 
  6066. fundamental properties.
  6067.  
  6068. Software engineers - especially those who subscribe to software 
  6069. component reuse - know that software, like hardware, has (or should 
  6070. have) an orderly arrangement of parts, or an "architecture" [2,3 ,4 ]. To 
  6071. date, most work on software architecture has focused on exploring a 
  6072. high-level view of the ways in which large systems are organized, e.g., 
  6073. domain-specific software architecture (DSSA).
  6074.  
  6075. 2   Position
  6076.  
  6077. We contend that software engineers are faced with a situation similar to 
  6078. that faced previously by economists: One view of software architecture 
  6079. cannot be made to fit all situations. Our position is that a useful 
  6080. approach to sort out the issues is to recognize a dichotomy in software 
  6081. architecture like the one in economics - to separate what we wish to call 
  6082. micro-architecture from macro-architecture. As with economics, this 
  6083. recognition does not imply that one kind is more important than the 
  6084. other, or that one deserves more or less attention. It simply admits that 
  6085. the understanding and analysis of qualitatively different software 
  6086. architecture situations require different approaches in order to capture 
  6087. and reason about fundamental properties.
  6088.  
  6089. 2.1  Macro-Architecturevs. Micro-Architecture
  6090.  
  6091. Most work in software architecture to date is what we call macro-
  6092. architecture, because it deals with a high-level view of software systems 
  6093. and not with the detailed structure of the components in those systems, 
  6094. much less their detailed behavior. What comprises (or should comprise) 
  6095. work in micro-architecture? Micro-architecture is not synonymous with 
  6096. programming-in-the-small,i.e., with statement-level issues such as the 
  6097. use of structured programming techniques [5]. It also is not synonymous 
  6098. with what have become known as "design patterns" [6], i.e., with 
  6099. identifying, classifying, and explaining commonly-used program 
  6100. structuring techniques in problem contexts.  Like the work on patterns, 
  6101. micro-architecture deals with important issues between the high-level 
  6102. view of software system architecture and low-level coding. But it focuses 
  6103. on the details of both the structure and the behavior of component 
  6104. interfaces and on the implementations of individual components, sets of 
  6105. components, and how they compose and "interoperate" with each other.
  6106.  
  6107. At the macro-architecture level,a large system might be deemed to follow 
  6108. a general structural style, e.g., "hierarchical layering of abstract data 
  6109. type components". There might be some interesting things that can be 
  6110. concluded about a system by knowing just this much - or perhaps a 
  6111. little more - about it. But there are other interesting things about the 
  6112. system that can be understood only by taking a more careful view of the 
  6113. details, to ascertain precisely what design decisions have made it 
  6114. possible to construct a system with a certain macro-architecture, and to 
  6115. understand why components are interconnectable both structurally and 
  6116. behaviorally.
  6117.  
  6118. 2.2  Some Issues in Micro-Architecture
  6119.  
  6120. Micro-architecture,a.k.a. software component engineering, covers many 
  6121. important issues, including but not limited to the following:
  6122.  
  6123. What are the best ways to achieve component composability and 
  6124. interoperability, i.e., the composition of components with little or no 
  6125. "glue code"? How can a component's structure and behavior be designed 
  6126. so the composition restrictions it places on other components, and vice 
  6127. versa, are likely to be met [7]?
  6128.  
  6129. What are the best ways to design a component so that certifying that it 
  6130. possesses certain properties can be done just one time, i.e., when it is 
  6131. checked into a component library, instead of each time it is checked out 
  6132. and used in a client program [8, 9]?
  6133.  
  6134. What are the best ways to achieve plug-compatibility between multiple 
  6135. implementations for the same abstract component, i.e., so that a client 
  6136. program requires little or no modification when unplugging one 
  6137. implementation and plugging in another [10]?
  6138.  
  6139. What component-related programming language features are needed to 
  6140. best support multiple, different implementations for the same abstract 
  6141. component [11, 12]?
  6142.  
  6143. What are the best ways to design a component so that client 
  6144. programmers have control over the component's performance, i.e., can 
  6145. easily tune the component with respect to space and time usage, without 
  6146. changing functionality [9]?
  6147.  
  6148. Given a particular programming language (e.g., Ada, C++, Eiffel, ML) 
  6149. which language features should be aggressively used - and which should 
  6150. be avoided - when designing components to be composable, certifiable, 
  6151. efficient, reusable, tunable, etc.? For example, what are the best ways to 
  6152. use the enticing language mechanism of inheritance [13]?
  6153.  
  6154. The notion that some language features should be used, while others 
  6155. should not, leads to the conclusion that even an individual software 
  6156. component has architectural characteristics; and that groups of 
  6157. components that are designed to be readily composable with each other 
  6158. share a micro-architecture.
  6159.  
  6160. Here is a simple example of a very low-level micro-architecture issue. It is 
  6161. well known that one of the easiest mistakes to make during the 
  6162. development of code is to use a variable that has not been initialized. 
  6163. Many compilers try to detect this situation and issue a warning; there 
  6164. also are commercial tools that look for and warn against it (e.g., Purify). 
  6165. But warnings are reactive. Languages such as C++ with its constructor 
  6166. and destructor operations, and Ada95 with initialization and 
  6167. finalization operations [14], permit a component designer to take a 
  6168. proactive approach to this problem. Therefore, part of the micro-
  6169. architecture of a component (or group of components) in C++, for 
  6170. example, lies in the consistency of use of constructor and destructor 
  6171. operations.
  6172.  
  6173. 3   Comparison
  6174.  
  6175. By comparison to previous adhoc work in macro-architecture and micro-
  6176. architecture,we see at least three comparative advantages to studying 
  6177. software micro-architecture as an explicit question: possible development 
  6178. of new programming language constructs that support a particular 
  6179. micro-architecture; possible component design disciplines that 
  6180. specifically prescribe which features of a particular language to use (and 
  6181. howto use them), and which to avoid, when designing new components 
  6182. under a particular micro-architecture; and possible less-restrictive 
  6183. component design guidelines that convey general approaches to 
  6184. designing components within micro-architectural families.
  6185.  
  6186. 3.1  New Language Constructs
  6187.  
  6188. The example in the previous section illustrates how language support 
  6189. can be provided for a micro-architectural solution to the problem 
  6190. ofuninitialized variables. Advances in micro-architecture will lead to the 
  6191. need for other language-supported (or language-enforced) mechanisms 
  6192. that enable the design of high-quality software components [9]. Skeptics 
  6193. who think the ultimate programming language already exists and that 
  6194. further work in this direction is pointless should carefully consider the 
  6195. fine points of debate in the creation ofAda95, an ANSI standard for C++, 
  6196. Object Oriented COBOL, etc. Most of the suggested language changes 
  6197. derive directly from micro-architecture considerations. Similarly,much of 
  6198. the work on specification languages such as Larch, VDM, and Z deals with 
  6199. the need to clearly and unambiguously specify component behavior. No
  6200.  ne of these is the last specification language we will ever need.
  6201.  
  6202. 3.2  New Component Design Disciplines
  6203.  
  6204. Programming languages (at least,widely-used ones) tend to evolve slowly 
  6205. and in response to well-understood needs of software engineers. While 
  6206. the community explores micro-architecture issues and develops a clearer 
  6207. understanding of what language support is appropriate for various 
  6208. approaches, there is a need for stopgap measures. Component design 
  6209. disciplines can be prescribed that, when followed, give rise to a specific, 
  6210. unique, and easily identifiable micro-architecture. For example, the 
  6211. RESOLVE/Ada discipline [8] includes 41 principles that very specifically 
  6212. guide the software engineer when designing high-quality Ada 
  6213. components.
  6214.  
  6215. 3.3  New Design Guidelines
  6216.  
  6217. Design "guidelines" are less explicit than comprehensive design 
  6218. disciplines. When followed, though, they too can give rise to components 
  6219. that have easily identifiable micro-architectures. Some examples include 
  6220. guidelines suggesting the inclusion of component iterators and how to 
  6221. design them [15,16]; and the idea of recasting algorithms (e.g., sorting) 
  6222. as "machines" (e.g., a sorting machine component) [17].
  6223.  
  6224. 3.4  Conclusion
  6225.  
  6226. To advance the ill-defined but intuitively important field now known as 
  6227. software architecture, we propose that the term be refined so there are 
  6228. two separate but related subfields: micro-architecture and macro-
  6229. architecture. We base our argument on a convenient analogy with the 
  6230. field of economics, and on the observation that not just large systems 
  6231. but even much smaller-scale software components have their own 
  6232. architectural features.  Furthermore, when viewed from this perspective, 
  6233. we see opportunity for micro-architecture research to contribute to the 
  6234. design of future programming languages and the individual reusable 
  6235. components found in common off-the-shelf libraries.
  6236.  
  6237. References
  6238.  
  6239.  [1]G. Bach, R.Flanagan, J. Howell, L. Ferdinand, and A. Lima, Economics: 
  6240. Analysis, Decision Making, and Policy. Englewood Cliffs, NJ: Prentice-Hall, 
  6241. 1987.
  6242.  
  6243.  [2]D. Garlan and M. Shaw, "An Introduction to Software Architecture," 
  6244. in Advances in Software Engineering and Knowledge Engineering, vol. 1 
  6245. (V. Ambriola and G. Tortora, eds.), World Scientific,1993.
  6246.  
  6247.  [3]R. Prieto-Diazand G. Arango, Domain Analysis and Software Systems 
  6248. Modeling. IEEE Computer Society Press, 1991.
  6249.  
  6250.  [4]W. Tracz, S. Shafer, and L. Coglianese, "Design Records: A Way to 
  6251. Organize Domain Knowledge," in Proceedings 6th Annual Workshop on 
  6252. Software Reuse, (Owego, NY), 1993.
  6253.  
  6254.  [5]F. deRemer and H. Kron, "Programming-in-the-Large vs. Programming-
  6255. in-the-Small," IEEE Transactions on Software Engineering, vol. SE-2, pp. 
  6256. 80-86, June 1976.
  6257.  
  6258.  [6]E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: 
  6259. Elements of Reusable Object-Oriented Software. Reading, MA: Addison-
  6260. Wesley,1995.
  6261.  
  6262.  [7]S. Edwards,"Common Interface Models for Reusable Software," 
  6263. International Journal of SoftwareEngineering and Knowledge Engineering, 
  6264. vol. 3, pp. 193-206,June 1993.
  6265.  
  6266.  [8]J. Hollingsworth, "Software Component Design-for-Reuse: ALanguage 
  6267. Independent Discipline Applied to Ada," Tech. Rep. OSU-CISRC-1/93-
  6268. TR01, The Ohio State University, Columbus, OH,1992.
  6269.  
  6270.  [9]M. Sitaraman and B. Weide, "Special Feature: Component-Based 
  6271. Software Using RESOLVE," Software Engineering Notes, vol. 19, pp. 21-67, 
  6272. October 1994.
  6273.  
  6274. [10]S. Edwards,"An Approach for Constructing Reusable Software 
  6275. Components in Ada," Tech. Rep. IDA Paper P-2378, Institute for Defense 
  6276. Analyses, Alexandria, VA, 1990.
  6277.  
  6278. [11]M. Sitaraman,"A Class of Programming Language Mechanisms to 
  6279. Facilitate Multiple Implementations of the Same Specification," in 
  6280. Proceedings 1992 International Conference on Computer Languages, pp. 
  6281. 272-281, IEEE Computer Society, April 1992.
  6282.  
  6283. [12]D. Dori and E.Tatcher, "Selective Multiple Inheritance," IEEE Software, 
  6284. vol. 11, pp. 77-85, May, 1994.
  6285.  
  6286. [13]D. de Champeaux, D.Lea, and P. Faure, Object-Oriented System 
  6287. Development. Reading, MA: Addison-Wesley, 1993.
  6288.  
  6289. [14]Ada95 Reference Manual (version 6.0) and Ada95 Rationale. 
  6290. Cambridge, MA: Intermetrics, Inc.,1995.
  6291.  
  6292. [15]G. Booch, Software Components with Ada. Menlo Park, 
  6293. CA:Benjamin/Cummings, 1983.
  6294.  
  6295. [16]B. Weide, S. Edwards, D. Harms, and D. Lamb, "Design and 
  6296. Specification of Iterators Using the Swapping Paradigm," IEEE 
  6297. Transactions on Software Engineering, vol. 20, pp. 631-643, August1994.
  6298.  
  6299. [17]B. Weide, W. Ogden, and M. Sitaraman, "Recasting Algorithms to 
  6300. Encourage Reuse," IEEE Software, vol. 11, pp. 80-88, September 1994.
  6301.  
  6302. 4   Biography
  6303.  
  6304. Joseph E. Hollingsworth is Assistant Professor of Computer Science at 
  6305. Indiana University Southeast. He holds a B.S. from Indiana University 
  6306. and an M.S. from Purdue University, and he earned his Ph.D. in 
  6307. Computer and Information Science in 1992 from The Ohio State 
  6308. University. Professor Hollingsworth also has substantial industrial 
  6309. software engineering experience: at Texas Instruments working on a 
  6310. command and control expert system for the Navy Commander and Chief 
  6311. of the Pacific Fleet, 1984 to 1986; at Battelle Memorial Institute working 
  6312. on software maintenance of the Air Force's Mission Planning System 
  6313. (MSS-II), 1991 to 1992; and through Hollingsworth Solutions, developing 
  6314. and marketing a number of PC-based and Mac-based software 
  6315. packages,1987 to present. His latest product is a PC Windows application 
  6316. developed using the RESOLVE/C++ discipline.
  6317.  
  6318. Bruce W. Weide is Associate Professor of Computer and Information 
  6319. Science at The Ohio State University in Columbus. He received his 
  6320. B.S.E.E. degree from the University of Toledo and the Ph.D. in Computer 
  6321. Science from Carnegie Mellon University. He has been at Ohio State since 
  6322. 1978. Professor Weide's research interests include various aspects of 
  6323. reusable software components and software engineering in general: 
  6324. software design, formal specification and verification, data structures 
  6325. and algorithms, and programming language issues. He is co-director of 
  6326. the Reusable Software Research Group at OSU, which is responsible for the 
  6327. RESOLVE discipline and language for component-based software. For more 
  6328. information see the URL http://www.cis.ohio-state.edu/hypertext/rsrg/.
  6329.  
  6330. Professor Weide gratefully acknowledges financial support from the 
  6331. National Science Foundation (grant number CCR-9311702) and the 
  6332. Advanced Research Projects Agency (contract number F30602-93-C-0243, 
  6333. monitored by the USAFMateriel Command, Rome Laboratories, ARPA 
  6334. order number A714).
  6335. A Domain Framework: A Basis for Enhancing Reuse Among Domains1
  6336. Anh D. Ta
  6337.  
  6338. The MITRE Corporation
  6339. 7525 Colshire Drive, MS-W624
  6340. McLean, VA 22102-3481
  6341. Tel:  (703) 883-7467
  6342. Fax:  (703) 883-1339
  6343. Email:  ata@mitre.org
  6344.  
  6345. Duane W. Hybertson
  6346.  
  6347. The MITRE Corporation
  6348. 7525 Colshire Drive, MS-W624
  6349. McLean, VA 22102-3481
  6350. Tel:  (703) 883-7079
  6351. Fax:  (703) 883-1339
  6352. Email:  dhyberts@mitre.org
  6353.  
  6354. Abstract
  6355. The software engineering discipline has matured to the point where 
  6356. the notion that every new software system has substantially unique 
  6357. requirements and therefore a unique solution is giving way to the 
  6358. understanding that software systems within application areas (or 
  6359. domains) have much in common, and that this commonality can be 
  6360. exploited.  This perspective is the motivation for domain-specific 
  6361. reuse (e.g., domain analysis).  But experience in applying domain 
  6362. analysis indicates that defining and scoping a domain for analysis in 
  6363. many cases is not straightforward.  Furthermore, there are variations 
  6364. in focus, terminology, types of models, and representations among 
  6365. the various methods.  It is also useful to distinguish among types of 
  6366. domains such as application domains and software technology 
  6367. domains.  The DoD is interested in a solution that can help define DoD 
  6368. domains in a way that will identify software commonality across 
  6369. existing domains and reduce arbitrary duplication.  For these 
  6370. reasons, a domain framework is proposed that is intended to help 
  6371. characterize domains and product lines by tapping directly into 
  6372. existing informal but extensive domain knowledge to identify reuse 
  6373. opportunities.  Initially, the framework will consist of a preliminary 
  6374. set of definitions and factors for identifying and scoping domains as a 
  6375. common front end to domain analysis.
  6376.  
  6377. Keywords:  domain-specific reuse, domain analysis methods, domain 
  6378. framework, product line
  6379.  
  6380. Workshop Goals:  Advocate importance of concept of domain 
  6381. framework;  obtain feedback on preliminary domain framework
  6382.  
  6383. Working Groups:  Domain analysis/engineering;  Reuse terminology 
  6384. standards;  Reuse handbook
  6385.  
  6386. 1   Background
  6387. The authors have been involved in software reuse projects for the 
  6388. past several years.  A primary area of work has been supporting the 
  6389. Department of Defense (DoD) Software Reuse Initiative (SRI).  Recent 
  6390. projects include the DoD SRI Technology Roadmap [2], which is a two-
  6391. volume document that identifies critical technologies enabling reuse 
  6392. and describes an implementation strategy for DoD investment in 
  6393. immature technologies.  Current tasks in support of DoD SRI include 
  6394. the development of a domain framework that is the subject of this 
  6395. paper.  Other current reuse work includes a domain 
  6396. definition/analysis task for the Navy.
  6397.  
  6398. 2   Position
  6399. The position of this paper is that a domain framework is both needed 
  6400. and feasible right now.  The two subsections that follow present the 
  6401. need and a proposed solution, respectively.
  6402.  
  6403. 2.1  Problem Context and Dimensions
  6404. The software engineering discipline has matured to the point where 
  6405. the notion that every new software system has substantially unique 
  6406. requirements and therefore a unique solution is giving way to the 
  6407. understanding that software systems within application areas (or 
  6408. domains) have much in common, and that this commonality can be 
  6409. exploited [1; 8].  This understanding has shifted the focus of software 
  6410. reuse to domain-specific approaches.  There are now multiple 
  6411. domain analysis / engineering methods available (see [1] and [8]).  
  6412. Various government R&D programs such as ARPA's Domain-Specific 
  6413. Software Architectures (DSSA) [3] and STARS demonstration projects 
  6414. [11], [12], and [13] have been in progress for several years.  In 
  6415. addition, the integration of the domain-specific reuse approach into 
  6416. software system development is being realized through several 
  6417. proposed reuse-driven processes.  Currently, the two life-cycle reuse 
  6418. process, consisting of Domain Engineering and Application 
  6419. Engineering (e.g., see [2] or [10]), is emerging as the preferred 
  6420. process. 
  6421.  
  6422. Experience in applying domain analysis indicates that defining and 
  6423. scoping a domain for analysis in many cases is not straightforward.  
  6424. The scope of a domain or product line is often determined more by 
  6425. the feasible scope of analysis (e.g., organization resources available) 
  6426. than by the scope of an existing body of knowledge [14].  Up front 
  6427. decisions that are made on selecting and bounding a domain can 
  6428. significantly affect the success of the domain analysis effort and the 
  6429. return on investment, yet the criteria for making these decisions are 
  6430. not uniform across the methods and in some cases are addressed 
  6431. only minimally.  There are many questions and issues that need to 
  6432. be addressed in terms of the breadth and the maturity of a domain, 
  6433. such as:
  6434.  
  6435. Ñ    A domain can be so ╥wide╙ that it is not homogeneous (i.e., it 
  6436. has multiple models and architectures) or there are not enough 
  6437. resources within an organization to analyze it
  6438. Ñ    A domain can be so ╥narrow╙ that it does not have a critical 
  6439. mass of problems to solve (i.e., leverage)
  6440. Ñ    A domain can be so volatile that it is not ready for abstractions 
  6441. such as domain models and architectures to be attempted
  6442. Ñ    A domain can be "inactive" in the sense that there is no market 
  6443. for a domain model or architecture because no future systems are 
  6444. planned or required.
  6445.  
  6446. Furthermore, there are variations in focus, terminology, types of 
  6447. models, and representations among the various methods.  Hence, 
  6448. there is a need for a common basis in capturing and conveying 
  6449. domain information such that it can be used by all stakeholders.  
  6450. What is needed is the following:
  6451.  
  6452. 1.    A common basis that provides a ╥level playing field╙ for 
  6453. identifying and characterizing domains independent of domain 
  6454. analysis methods
  6455. 2.    A set of domain identification and scoping criteria or factors 
  6456. and usage guidelines to apply the factors to selected domains
  6457. 3.    An inexpensive way to obtain information on reuse potential of 
  6458. domains, based on available data, to help decide where and when to 
  6459. invest in domain analysis 
  6460. 4.    A way to obtain information on reuse potential of domains 
  6461. within an organization or enterprise to help define product lines (or 
  6462. families of systems)
  6463. 5.    Criteria for decomposing large domains into appropriate 
  6464. constituent domains for analysis and acquisition support
  6465. 6.    Assistance in finding commonality across multiple domains, to 
  6466. help minimize overlaps and reduce acquisition cost
  6467.  
  6468. 2.2    Ideas for a Domain Framework as a Solution
  6469. Given the objectives stated above, the proposed solution must 
  6470. possess the following attributes:  (1) be comprehensive in capturing 
  6471. different perspectives of domains (i.e., degree of generality), (2) 
  6472. capture common terms or relations among related terms (i.e., 
  6473. unifying concepts), and (3) be method independent (i.e., usable with 
  6474. multiple domain analysis methods).
  6475. The DoD is interested in a solution that can help define DoD domains 
  6476. in a way that will identify software commonality across existing 
  6477. domains and reduce arbitrary duplication.  MITRE is supporting the 
  6478. DoD Software Reuse Initiative in developing a domain framework 
  6479. intended to satisfy the objectives stated above.  Because of the 
  6480. number and variety of DoD domains, this framework is expected to 
  6481. have applicability beyond DoD to the software community in general.
  6482. The proposed domain framework will initially consist of two major 
  6483. components:  common definitions of domain-related terms, and 
  6484. domain identification and scoping factors.  Usage guidelines are also 
  6485. being developed for the proposed framework to illustrate its 
  6486. application for the purposes defined above.  A snapshot of the initial 
  6487. two components is given below.
  6488. 2.2.1    Common Definitions
  6489. In recognizing that various domain analysis methods (with their own 
  6490. terms and interpretations) will be used in more detailed analysis of 
  6491. domains, this component of the framework will emphasize capturing 
  6492. common terms and overlap among terms defined as part of existing 
  6493. methods.  Eventually, this component is intended to function as a 
  6494. meta-domain dictionary containing definitions of terms and usage 
  6495. context.  Preliminary sources for this effort include [1], [8], and [14], 
  6496. which discuss domain analysis concepts and common themes, and [6] 
  6497. and [7], which define reuse terms.
  6498.  
  6499. Key definitions include the following:
  6500.  
  6501. Domain:  A distinct functional area that can be supported by a class 
  6502. of software systems with similar requirements and capabilities.  A 
  6503. domain may exist before there are software systems to support it. [6]
  6504.  
  6505. Domain Boundary:  A frame of reference for the analysis (i.e., the set 
  6506. of constraints that representing what is part of the analysis and what 
  6507. is outside the analysis).  The domain boundary may change as more 
  6508. knowledge about the domain is gathered. [9p37]
  6509.  
  6510. Product Line:  A collection of (existing and potential) products that 
  6511. address a designated business area. [10]
  6512. 2.2.2    Domain Identification and Scoping Factors
  6513. Before initiating a domain analysis effort there exists a notion of a 
  6514. domain of interest representing some broad area (e.g., acoustic signal 
  6515. processing).  Then, as part of the initial activity of a domain analysis 
  6516. effort the scope of the analysis is defined by considering the context 
  6517. of the domain of interest and the available resources.  This transition 
  6518. in focus suggests that the proposed framework should contain factors 
  6519. that contribute to developing a profile of the domain of interest and 
  6520. factors that contribute to the decision on the scope of analysis.  Also, 
  6521. since the software context is defined within the system context, the 
  6522. proposed framework should contain both system-level and software-
  6523. level factors that play a role in defining a domain boundary.  Given 
  6524. Neighbor╒s description of domain analysis as being similar to systems 
  6525. analysis except that the scope of the analysis involves a set of 
  6526. systems within an application area versus a single system [5], 
  6527. successful techniques in bounding a problem space for system 
  6528. analysis should be adopted for bounding a domain.  Hence, the 
  6529. category of constraints for system analysis should be incorporated 
  6530. into the proposed framework and refined for the perspectives of 
  6531. domain.
  6532. Profile factors are intended to describe the domain itself and the 
  6533. dominant characteristics that distinguish systems (and supporting 
  6534. software) in the domain from systems not in the domain.  Decision 
  6535. factors reflect the feasibility and potential benefit for an organization 
  6536. or enterprise to analyze a domain.  Both of these groups of factors 
  6537. can potentially be used to characterize a domain or product line not 
  6538. only as it currently exists but as it might exist in the future - for 
  6539. example, the evolution of a domain or the characteristics of a 
  6540. proposed product line.
  6541. Table 1 shows a proposed set of framework factors organized into 
  6542. these two groups (Domain Profile and Decision Support) and gives 
  6543. example values or elements of each factor.2
  6544. 2.2.3    Usage Guidelines
  6545. The usage guidelines for the proposed framework are currently 
  6546. being developed, but some discussion of the targeted usage contexts 
  6547. for the proposed framework can be given.  Although the proposed 
  6548. domain framework can be used with any reuse-driven process 
  6549. model, the general context of the two life-cycle reuse-driven process 
  6550. model is assumed.
  6551. The target audience for the framework comprises two categories of 
  6552. people:  indirect users and direct users.  Indirect users include DoD 
  6553. executives (e.g., Program Executive Officers (PEOs) and Program 
  6554. Managers) who make decisions on where to invest resources to 
  6555. increase reuse and efficiency.  Direct users include technical 
  6556. personnel who will apply the framework to scope domains, 
  6557. determine reuse potential, characterize and compare domains, find 
  6558. commonality across domains, and use this collected information to 
  6559. support the DoD executives and managers in making their decisions.
  6560. Example:  In the context of software reuse, one objective for a PEO is 
  6561. to identify commonality areas among the acquisition efforts under 
  6562. his/her management and among areas of responsibility of other PEOs 
  6563. so as to minimize overlap and maximize benefits within the allocated 
  6564. resources.  The framework and usage guidelines can be used to 
  6565. identify the boundaries of multiple domains at the PEO level while 
  6566. minimizing overlap.
  6567.  
  6568. 3   Comparison
  6569. Several domain analysis methods address some of the framework 
  6570. issues in a "domain characterization" process [1].  However, our work 
  6571. differs in the sense that we are attempting to capture what is 
  6572. common among the methods and to extend this to concepts such as 
  6573. characterizing types of domains.  Thus, our work complements 
  6574. domain analysis methods.
  6575.  
  6576. Table 1.  Description of Identification and Scoping Factors
  6577. Profile Factor    Description    Elements
  6578. Domain Identity    High-level or defining characteristics of the domain, 
  6579. and location in domain hierarchy    Ñ    Definition (name, primary 
  6580. terms defined, boundary)
  6581. Ñ    Relations/context (hierarchical, historical)
  6582. Ñ    Type (application domain, software technology domain)
  6583. Functional System Requirements    Dominant functions or features of 
  6584. systems in the domain    Ñ    Functions, features, objects, data, 
  6585. performance, interfaces
  6586. System Characteristics    Dominant subsystems, characteristics, 
  6587. constraints, and nonfunctional requirements of systems in the 
  6588. domain    Ñ    Quality (reliability, etc.), design constraints, 
  6589. organizational boundaries, physical boundaries, security 
  6590. classifications, domain technology, domain standards, system 
  6591. architectures
  6592. Software Characteristics    Dominant characteristics of software 
  6593. subsystems that support the domain    Ñ    Software architectures 
  6594. (types, DSSAs), languages, software technology, software standards
  6595. System Deployment    Where systems in the domain are deployed
  6596.     Ñ    Airborne, ground-based, sea-based, transportable
  6597. Decision Factor    Description    Elements
  6598. Domain Assessment    Extent to which existing domain knowledge 
  6599. and experience, software assets, homogeneity, and maturity provide 
  6600. reuse opportunities    Ñ    Existence and availability of expertise in 
  6601. organization, availability of existing software, quality of existing 
  6602. software assets, extent of similarity of systems
  6603. Ñ    Domain maturity
  6604. Market Assessment    Potential for making profitable use of domain 
  6605. knowledge    Ñ    Product expectation (expected new development or 
  6606. acquisition, major upgrades reengineering, consolidation/migration)
  6607. Ñ    Market expectation (current market share, expected market 
  6608. growth, expected return on reuse investment)
  6609. Resource Constraints    Organization or enterprise limits on extent of 
  6610. analysis and engineering possible    Ñ    Investment capital, schedule 
  6611. constraints, size of available staff (knowledge engineers, domain 
  6612. analysts)
  6613.  
  6614.  
  6615. References
  6616. [1]    Arango, G., 1994, ╥Domain Analysis Methods,╙ in W. Schafer, R. 
  6617. Prieto-Diaz, and M Matsumoto (eds.), Software Reusability, Ellis 
  6618. Horwood, Chichester, England.
  6619. [2]    DoD Software Reuse Initiative, 30 March 1995, DoD Software 
  6620. Reuse Initiative Technology Roadmap; Version 2.2, Defense 
  6621. Information Systems Agency, Falls Church, VA.
  6622. [3]    Hayes-Roth, Frederick, 20 October 1994, Architecture-Based 
  6623. Acquisition and Development of Software:  Guidelines and 
  6624. Recommendations from the ARPA Domain-Specific Software 
  6625. Architecture (DSSA) Program, Teknowledge Federal Systems (TFS), 
  6626. Teknowledge Corporation.
  6627. [4]    Meyer, M., and J. Utterback, Spring 1993, ╥The Product Family 
  6628. and Dynamics of Core Capability,╙ Sloan Management Review, Spring 
  6629. 1993, pp. 29-47.
  6630. [5]    Neighbors, James M., 1980, Software Construction Using 
  6631. Components, Ph.D. dissertation, Department of Information and 
  6632. Computer Science, University of California, Irvine, CA, Technical 
  6633. Report TR-160.
  6634. [6]    Katz, S., C. Dabrowski, K. Miles, and M. Law, December 1994, 
  6635. Glossary of Software Reuse Terms, National Institute of Standards 
  6636. and Technology, Gaithersburg, MD.
  6637. [7]    Peterson, A. Spencer, April 1991, ╥Coming to Terms with 
  6638. Software Reuse Terminology:  A Model-Based Approach,╙ ACM 
  6639. SIGSOFT Software Engineering Notes, Vol. 16, No. 2, pp. 45-51.
  6640. [8]    Prieto-DÆaz, R. and G. Arango (eds.), Domain Analysis and 
  6641. Software Systems Modeling, IEEE Computer Society Press, Los 
  6642. Alamitos, CA,
  6643. [9]    Prieto-Diaz, Ruben, 26 July 1991, Reuse Library Process Model, 
  6644. Report No. 03041-002, Software Technology for Adaptable, Reliable 
  6645. Systems (STARS) Program.
  6646. [10]Software Productivity Consortium, November 1993, Reuse-Driven 
  6647. Software Processes Guidebook, SPC╨92019╨CMC, Version 02.00.03, 
  6648. Software Productivity Consortium, Herndon, VA.
  6649. [11]STARS, 25 August 1994, Experience Reports: The Navy/STARS 
  6650. Demonstration Project, Software Technology for Adaptable, Reliable 
  6651. Systems (STARS), CDRL Number A017R.
  6652. [12]STARS, 24 February 1995, Army STARS Demonstration Project 
  6653. Experience Report, Software Technology for Adaptable, Reliable 
  6654. Systems (STARS), CDRL Number A011R.
  6655. [13]STARS, 8 March 1995, Space Command and Control Architectural 
  6656. Infrastructure (SCAI) Air Force/STARS Demonstration Project 
  6657. Experience Report., Version 2.1, Software Technology for Adaptable, 
  6658. Reliable Systems (STARS), CDRL Number A011-002U.
  6659. [14]Wartik, S., and R. Prieto-DÆaz, October 1992, ╥Criteria for 
  6660. Comparing Reuse-Oriented Domain Analysis Approaches,╙ Int. Journal 
  6661. of Software Engineering and Knowledge Engineering, Vol. 2, No. 3, pp. 
  6662. 403╨431.
  6663.  
  6664. Bibliography
  6665. Anh Ta is a Lead Scientist in the Software Engineering Center at the 
  6666. MITRE Corporation in McLean, Virginia.  Since joining MITRE he has 
  6667. been providing acquisition support to various command centers 
  6668. within the DoD and participated in research efforts relating to 
  6669. software reuse, safety-critical software, object-oriented technology, 
  6670. and COTS integration.  He was previously a member of the technical 
  6671. staff at the Software Productivity Consortium involved in the 
  6672. prototyping of reuse environments for the Synthesis method.  Prior 
  6673. to that, he worked as a software engineer at SofTech, Inc. and 
  6674. Honeywell Electro-Optics Division.  He received a B.S. in Computer 
  6675. and Electronics Engineering in 1986 and a M.S. in Systems 
  6676. Engineering in 1990, both from George Mason University.  He is 
  6677. currently pursuing a doctorate in Information Technology at George 
  6678. Mason University with special emphasis on approaches for 
  6679. developing and evolving domain models.
  6680.  
  6681. Duane Hybertson is a Member of the Technical Staff in the Software 
  6682. Engineering Center at the MITRE Corporation in McLean, Virginia.  
  6683. Since joining MITRE he has been investigating software reuse 
  6684. technology for the Department of Defense and software safety 
  6685. standards for the Nuclear Regulatory Commission.  He was previously 
  6686. a senior engineer with Lockheed on the Space Station Freedom 
  6687. Software Support Environment.  Prior to that, he investigated the 
  6688. synthesis approach to reuse at the Software Productivity Consortium, 
  6689. where he had a two-year appointment.  He received the B.A. in 
  6690. Mathematics from Northwest Nazarene College in 1970, the Ph.D. in 
  6691. Educational Research Methods from New Mexico State University in 
  6692. 1974, and the M.S. in Computer Science from the Johns Hopkins 
  6693. University in 1985.
  6694. 1    This paper is based on work sponsored by the Defense 
  6695. Information Systems Agency (DISA) Software Reuse Initiative (SRI) 
  6696. Program.
  6697. 2    These factors are based on an initial set of factors provided by 
  6698. Don Reifer, Program Manager of the DoD Software Reuse Initative 
  6699. (SRI).
  6700.  
  6701. Support for systematic reuse
  6702.  
  6703. Pertti Jauhiainen
  6704.  
  6705. Ellemtel Telecommunication Systems Laboratories
  6706. Box 1505
  6707. S-125 25 [lvsj|
  6708. Sweden
  6709. Tel: +46 8 727 4106
  6710. Email: Pertti.Jauhiainen@eua.ericsson.se
  6711.  
  6712. Abstract
  6713.  
  6714. This position paper describes a surveyof the mechanisms which we at 
  6715. Ellemtel Telecommunications Systems Laboratories try to integrate to 
  6716. support systematic reuse in the development of telecommunication 
  6717. systems. Reuse is approached from three different views, the system 
  6718. technology and techniques, the development processes and the 
  6719. organization point of view. The organizational structure focus on both 
  6720. support for development for and with reuse, where the needed roles and 
  6721. their responsibilities are defined to accomplish the benefits of systematic 
  6722. reuse.
  6723.  
  6724. Keywords: Systematic reuse, development processes
  6725.  
  6726. Workshop Goals: Learning, networking
  6727.  
  6728. Working Groups: Reuse process models, Reuse management, Reuse 
  6729. technology standards
  6730.  
  6731. 1   Background
  6732.  
  6733. The implementation of systematic reuse at Ellemtel aims at supporting 
  6734. in solving the forecasting problems in the development of 
  6735. telecommunication systems. This through the creation of reusable 
  6736. software and hardware components on different abstraction and 
  6737. implementation levels, i.e. to support modularity and adaptability of 
  6738. the products during development and delivery.
  6739.  
  6740. The systematic reuse influences the organization, system development 
  6741. process, and the basic system technology of the development 
  6742. organization.
  6743.  
  6744. 2   Position
  6745.  
  6746. The goal is to create a reuse environment where the development and 
  6747. maintenance of the system parts can be done by only a fraction of 
  6748. resources in relation to the total effort required to redevelop designs in a 
  6749. system product.
  6750.  
  6751. This kind of systematic reuse is challenging and takes time and effort to 
  6752. introduce in a high technology environment as a telecommunication 
  6753. development organization, but it is important to have a vision, and a 
  6754. step-wise strategy to fulfil the vision.
  6755.  
  6756. We have defined three main areas which must cooperate to achieve 
  6757. efficient support of reuse, system technology, development processes and 
  6758. organizational structure.
  6759.  
  6760. Typical examples on system technology are for example system 
  6761. architecture, system structure, use of (standardized) interface techniques 
  6762. and object-oriented languages. You could say that the system technology 
  6763. defines the range of candidates of reusable components.
  6764.  
  6765. The development process describes how reuse is performed during the 
  6766. system development. The support and management of development and 
  6767. the use of reusable components is integrated to be a natural part of the 
  6768. system development.
  6769.  
  6770. An organizational structure is created where roles and responsibilities are 
  6771. defined with respect to the duties of project, product and system 
  6772. management, this to efficiently control the development and use of 
  6773. reusable components.
  6774.  
  6775. 2.1  System Development Process
  6776.  
  6777. In the system development a combination of standard development 
  6778. paradigms and methods are used, e.g. object-orientation, with guidelines 
  6779. and tools tightly coupled to Ericsson's AXE platform. The purpose of the 
  6780. development process is to:
  6781.  
  6782. Collect and make visible, but also reusable, experience and knowledge in 
  6783. building telecommunication systems,
  6784.  
  6785. Show the correct way to use the AXE platform,
  6786.  
  6787. Provide a common language for communication between designers,
  6788.  
  6789. Provide a measurable process that supports continuous improvements.
  6790.  
  6791. The development process or processes, depending of the type of 
  6792. applications (e.g. telecommunication systems or support systems), are 
  6793. built according to a common architecture and using a common 
  6794. framework. All descriptions are modular and can be extended and 
  6795. adapted to new situations,i.e. the processes are built to be reusable.
  6796.  
  6797. The development process provides a consistent chain of models that are 
  6798. created and refined during a development project. The system 
  6799. development process is based on such a sequence of models that describe 
  6800. the successive refinement of requirements into hardware or executable 
  6801. code.
  6802.  
  6803. The possible form of the information created during the development of 
  6804. an application is defined by a information model. The concepts defined 
  6805. in the information model for the support of explicit reusable software 
  6806. components are,
  6807.  
  6808. Source Code Component, which has the purpose to encapsulate source 
  6809. code information that can be used in different software items.
  6810.  
  6811. Object Model Component, which has the purpose to encapsulate model 
  6812. and specification information for a group of object types.
  6813.  
  6814. The software components have an interface part and a body part, where 
  6815. the different parts can be managed separately in different libraries.
  6816.  
  6817. Two aspects of reuse are covered in the system development process,
  6818.  
  6819. The development for reuse, i.e. reusable component development,
  6820.  
  6821. The development with reuse, i.e use of components during the system 
  6822. development.
  6823.  
  6824. In the development of reusable components the main phases cover 
  6825. domain analysis ,specification of general architectural component 
  6826. requirements (frameworks), design and certification, and support
  6827. and maintenance of components.
  6828.  
  6829. The management of reusable components as defined in the information 
  6830. model for the system development process is integrated in the general 
  6831. product and design information management systems, i.e. the 
  6832. components are treated as product and design information in general.
  6833.  
  6834. A crucial step to support reuse in the information management system is 
  6835. to allow for a flexible implementation of the structure of the information 
  6836. in general, i.e. to give possibilities to structure the information according 
  6837. the actual product ordesign needs.
  6838.  
  6839. A number of formalisms is used to represent the different process 
  6840. models.In general, standardized formalisms support reuse by giving the 
  6841. actors in the development process a common language to describe 
  6842. requirements and implementations, which then give more easily 
  6843. possibilities to create components that are more understandable and 
  6844. then also more reusable.
  6845.  
  6846. The language and tool for conceptual modelling and behaviour 
  6847. specification at the analysis level in the development process is used for 
  6848. describing, analysing, specifying, and validating functional requirements. 
  6849. Tools used are for example Delphi and Objectory for early phases of 
  6850. system development, DELOS interface description language for design 
  6851. levels, and C++ for implementation level.
  6852.  
  6853. 2.2  Organization
  6854.  
  6855. The implementation of reuse in the organization include,
  6856.  
  6857. definition of an organizational structure, i.e. to implement development 
  6858. for and with reuse,
  6859.  
  6860. description of roles in the different organizational units in the company,
  6861.  
  6862. the responsibilities on those roles,
  6863.  
  6864. support to fulfill the responsibilities. i.e. integration in the development 
  6865. process roles.
  6866.  
  6867. The roles identified support both the development for reuse (component 
  6868. development) and the development with reuse (system development), 
  6869. i.e. the roles need to support responsibility from a development and 
  6870. support view.
  6871.  
  6872. The roles and responsibilities for reuse activities need to be divided 
  6873. between line management, product and system management.
  6874.  
  6875. 3   Biography
  6876.  
  6877. Pertti Jauhiainen works at Ellemtel Telecommunication Systems 
  6878. Laboratories in Stockholm, Sweden, a company which developes system 
  6879. platforms for telecommunication. He works at the department for 
  6880. system development support systems and is responsible for 
  6881. implementing support for reuse in the system development process.
  6882.  
  6883. He has also been project manager for Ericsson Telecom AB in the 
  6884. European Commision RACE projects ARISE (A Reusable Infrastructure for 
  6885. Software Engineering) and SCORE (Service Creation in an Object-oriented 
  6886. Reuse Environment).
  6887.  
  6888. Earlier he worked at Epitec, Inc.in Framingham, Mass. in U.S.Aand Epitec 
  6889. AB in Link|ping, Sweden with expert systems technology. He received a 
  6890. M.Sc in Computer Science from the University of Link|ping, Sweden in 
  6891. 1986.
  6892. Why Doesn't the Reuse Community Talk About Reusable Software?
  6893.  
  6894. Ralph E. Johnson
  6895.  
  6896. University of Illinois
  6897. Department of Computer Science
  6898. Tel: (217)244-0093
  6899. Email: johnson@cs.uiuc.edu
  6900. WWW: http://st-www.cs.uiuc.edu/users/johnson/
  6901.  
  6902. Abstract
  6903.  
  6904. The reuse community spends too much time talking about reusable 
  6905. software in general and too little time talking about reusable software in 
  6906. particular. We need to study and compare the designs of particular 
  6907. reusable systems so that we can improve them (and so make reuse more 
  6908. valuable) and so that we can learn the principles of reuse.
  6909.  
  6910. Workshop Goals: Learning; Finding kindred spirits.
  6911.  
  6912. Working Groups: Domain analysis/engineering; Reuse and OOmethods 
  6913. and technology; Reuse handbook; Reusable architectures for business 
  6914. software.
  6915.  
  6916. 1   Background
  6917.  
  6918. I've been working with OO technology for 10 years, trying to see how 
  6919. objects change the way we develop software, especially how it impacts 
  6920. software reuse. I quickly noticed that reuse of code and small 
  6921. components was not what was important, but instead reuse of design in 
  6922. the form of larger components called frameworks.
  6923.  
  6924. A framework is a reusable design expressed as a set of abstract classes and 
  6925. the way that instances of these classes interact. In one sense, the most 
  6926. important thing about a framework is the interfaces that it defines. 
  6927. Because a framework is made up of classes that can be represented in 
  6928. programming languages, it is reusable code. But it tells you how to 
  6929. decompose your program into objects, and in that sense is a design. 
  6930. Moreover, most of the code reuse comes not from inheriting from the 
  6931. abstract classes but from reusing concrete classes from a class library. 
  6932. The concrete classes reuse the standard interfaces defined by the 
  6933. framework, so they can be mixed and matched. Most of the reuse comes 
  6934. from being able to mix and match components, not from being able to 
  6935. define a new component using inheritance.
  6936.  
  6937. I've worked on a number of frameworks, including the frameworks that 
  6938. come with Smalltalk-80 (VisualWorks), a framework for drawing editors 
  6939. called HotDraw, a framework for operating systems called Choices, a 
  6940. framework for code optimization and code generation, a framework for 
  6941. music synthesis,and a framework for accounting. While none of them 
  6942. have had large numbers of users (HotDraw probably has the most users, 
  6943. and that is probably 50-100), most of them have had a few users outside 
  6944. of my research group.
  6945.  
  6946. Recently I have been working on documenting the software patterns that 
  6947. expert designers use. Not surprisingly, I have focused on the patterns that 
  6948. OO designers use to make software more reusable.
  6949.  
  6950. 2   Position
  6951.  
  6952. One of the distinguishing characteristics of computer people is the 
  6953. tendency to go meta at the slightest provocation. Instead of writing 
  6954. programs, we want to invent programming languages. Instead of 
  6955. inventing programming languages, we want to create systems for 
  6956. specifying programming languages. Instead of analyzing domains, we 
  6957. want to make methods for domain analysis. And instead of writing 
  6958. reusable software, or reusing software, we want to write about the 
  6959. principles of software reuse.
  6960.  
  6961. There are many good reasons for this tendency, since a good theory 
  6962. makes it a lot easier to solve particular instances of the problem. But if 
  6963. you try to build a theory without having enough experience with the 
  6964. problem,you are unlikely to find a good solution. Moreover, most of the 
  6965. time spent building reusable software is on issues that are particular to 
  6966. the problem that the software is supposed to solve, not on generic 
  6967. reusability issues. We are in danger of attacking secondary problems and 
  6968. ignoring the most important ones.
  6969.  
  6970. The software community has developed standard architectures for some 
  6971. kinds of software, such as compilers, operating systems, and user 
  6972. interfaces. Not surprisingly, these are the kinds of software for which we 
  6973. have the best reusable software; parser generators and table-driven code 
  6974. generators for compilers, and GUI frameworks and screen painters for 
  6975. user interfaces. But there are a lot more people building accounting 
  6976. systems or manufacturing systems than building compilers, and we have 
  6977. tended to ignore applications software, even though that is the most 
  6978. financially important kind. Although there are reuse success stories 
  6979. among this kind of software, I believe we are only seeing a fraction of 
  6980. what is possible.
  6981.  
  6982. Whenever a standard architecture has developed in the past, it has been 
  6983. developed in a context of a community that can bring many 
  6984. perspectives to bear on it. The practitioners are from companies that are 
  6985. trying to build commercial software. Researchers are investigating narrow 
  6986. problems within the domain of the architecture. Textbook writers are 
  6987. trying to organize and systematize the material.
  6988.  
  6989. Why hasn't this happened with accounting software or manufacturing 
  6990. software? One possible reason is that companies are afraid of losing trade 
  6991. secrets. But that reason didn't keep the system software venders from 
  6992. participating in conferences on compilers or operating systems. I think a 
  6993. more important reason is that reseachers have ignored these topics. If 
  6994. the researchers were holding exciting conferences on these 
  6995. topics,practitioners would come to find out what was going on, and they 
  6996. would figure out how to make the researchers want to talk to them. But 
  6997. without all the members of the community, it is much harder to make 
  6998. progress.
  6999.  
  7000. What can practitioners do to attract the attention of researchers? One 
  7001. obvious technique is to support their research financially.  Another is to 
  7002. helpconferences on the domain of interest get off the ground. When 
  7003. organizations have their own research department, practitioners can try 
  7004. to get some of the researchers interested in their problems. Regardless of 
  7005. which methods are used, changing other people's behavior is always 
  7006. hard.
  7007.  
  7008. Is it worth trying to organize groups of people working on particular 
  7009. kinds of software? I think this is the only way to make good reusable 
  7010. designs. To be reusable,software has to be reused in many contexts, and 
  7011. there are very few companies that have the resources to do it. It can be 
  7012. difficult breaking though the parochialism that effects so many 
  7013. companies, but I think it is important if we are going to achieve our 
  7014. goals for reuse.
  7015.  
  7016. 3   Biography
  7017.  
  7018. Ralph Johnson is on the faculty of the Department of Computer Science 
  7019. at the University of Illinois.  He was program chair of OOPSLA'93, and is a 
  7020. coathor of "Design Patterns: Elements of Reusable Object-Oriented 
  7021. Software" with Erich Gamma, Richard Helm and John Vlissides.
  7022. Putting Reuse in its Place 10X Cycle Time Reduction Plan
  7023.  
  7024. Rebecca L. Joos, Ph.D.
  7025.  
  7026. Motorola
  7027. 1501 W. Shure Drive
  7028. Arlington Heights, Illinois 60004
  7029. Tel: (708)632-6904
  7030. Email: joos@cig.mot.com
  7031.  
  7032. Abstract
  7033.  
  7034. After several years of external benchmarking and internal pilots, the 
  7035. Motorola Cellular Infrastructure Group (CIG) has come to the conclusion 
  7036. that the greatest benefit of reuse is cycle time reduction. With Motorola's 
  7037. new campaign for 10X cycle time reduction,reuse has become the shining 
  7038. hope. We have two parallel activities, PDEand SCE, that have reuse as a 
  7039. common thread. PDE is a development environment for CIG's engineers 
  7040. whereas SCEis a development environment for CIG's customers. In the 
  7041. PDE activity reuse is one of fours key enablers (process ,architecture, 
  7042. tools, and reuse). In the SCE activity reuse is the primary enabler.
  7043.  
  7044. Keywords: reuse, service creation environments, service independent 
  7045. building block, process
  7046.  
  7047. Workshop Goals: learning, networking, advance state of theory and 
  7048. practice of reuse
  7049.  
  7050. Working Groups: reuse process models, domain analysis/engineering , 
  7051. architectures
  7052.  
  7053. 1   Background
  7054.  
  7055. Becky has been working on software reuse since she finished her 
  7056. dissertation, "A Software Development Environment to Use and Create 
  7057. Reusable Building Blocks." She has campaigned for reuse in Motorola 
  7058. with training seminars, courses, and pilots.  Her current work deals with 
  7059. performing domain analysis and building reusable cellular service 
  7060. structures.
  7061.  
  7062. 2   Position
  7063.  
  7064. 2.1  PDE
  7065.  
  7066. We realize that reuse like other things is not the silver bullet but just one 
  7067. of the techniques that we will use to produce better products faster. 
  7068. Reuse must be combined with process, tools and product structure to 
  7069. achieve significant gains in productivity. With this understanding the 
  7070. PDE (Product Development Environment) team was established to create 
  7071. an environment that supports all these areas and is building a model 
  7072. similar to the megaprogramming and reuse model described by 
  7073. Solderitsch and Wickman [].
  7074.  
  7075. The mission of the PDE activity is to achieve superior world-wide 
  7076. customer satisfaction by instituting a product development environment 
  7077. to successfully achieve 10X cycle time and improvement goals. The PDE 
  7078. team is focusing on 4 key areas: process, architecture, tools, and reuse.
  7079.  
  7080. 2.1.1 Process
  7081.  
  7082. CIG has experienced a continuous process improvement from the 
  7083. recognition of process to formally assessed at SEI Level 3. A tremendous 
  7084. organizational growth has also ensued (approximately 2500 software 
  7085. engineers across multiple locations).
  7086.  
  7087. The team's goal is to make the organization Best in Class for software 
  7088. processes by continuing to provide evolutionary process improvement 
  7089. and introducing revolutionary improvement where needed.
  7090.  
  7091. 2.1.2 Architecture
  7092.  
  7093. Initial work will be concentrated in the vertical domain of cellular 
  7094. switching. External to CIG, the Motorola communication sectors are 
  7095. looking at horizontal domain structures. The goal is to create a common 
  7096. software (core) platform that enables rapid development and 
  7097. extensibility.
  7098.  
  7099. 2.1.3 Tools
  7100.  
  7101. To reap the real benefits of reuse and achieve 10X cycle time reduction, a 
  7102. tool set is needed to support product design and development. The goal 
  7103. of this group is to provide an integrated process-centered software 
  7104. engineering environment supporting all phases of the software lifecycle.
  7105.  
  7106. 2.1.4 Reuse
  7107.  
  7108. This reuse group's goal is to institute systemic architecture-centric reuse 
  7109. within CIGand support reuse efforts external to the organization. The 
  7110. reuse team is composed of members from each of the CIG development 
  7111. groups. They are responsible for developing the reuse processes, 
  7112. procedure, techniques and transferring them into their group.
  7113.  
  7114. 2.1.5 Process
  7115.  
  7116. The reuse processes are one aspect of the overall development process 
  7117. mentioned in section 2.1. The group is concerned with what to do to 
  7118. institute reuse, as well as techniques on how to create and use reusable 
  7119. software assets. These procedures and activitieswill be incorporated into 
  7120. the overall development process.
  7121.  
  7122. 2.1.6 Support
  7123.  
  7124. The group provides guidance and some resources i.e., people for 
  7125. technology transfer,domain engineering, tool integration, repository 
  7126. population and maintenance, assessment and measurements.
  7127.  
  7128. 2.1.7 Pilot
  7129.  
  7130. In parallel to the PDE effort a pilot is being conducted to build and 
  7131. populate a service creation repository. This effort is central to CIG's 
  7132. plans for the future and will provide much insight to the reuse program.
  7133.  
  7134. 2.1.8 SCE
  7135.  
  7136. Cellular providers i.e., CIG's customers, want to "invent" new services 
  7137. that they can provide to their  customers faster than the competition. 
  7138. This objective requires rapid design and implementation of new services. 
  7139. Motorola's Service Creation Environment (SCE) will give cellular providers 
  7140. the tools to develop new cellular services themselves. The ultimate goal 
  7141. is to remove the developer from direct product delivery. Developers 
  7142. create the building blocks that are made available to customers who 
  7143. then design their own products from these reusable blocks. Development 
  7144. will become a proactive activity rather than a reactive activity with 
  7145. developers continually building new blocks to populate the SCE 
  7146. repository.
  7147.  
  7148. 2.1.9 SIBs
  7149.  
  7150. The Intelligent Network (IN)is an architectural concept for the creation 
  7151. and provisioning of telecommunications services. A service independent 
  7152. building block (SIB) is composed of a set of Functional Entity Actions 
  7153. that either independently, or in combination with other SIBs, are used to 
  7154. model service entities. SIBs are the reusable building blocks for the SCE 
  7155. repository.
  7156.  
  7157. A reusable SIB will consist of several components:
  7158.  
  7159. the requirements and functional description of the SIB,
  7160.  
  7161. design,
  7162.  
  7163. code,
  7164.  
  7165. test suite, and
  7166.  
  7167. user documentation.
  7168.  
  7169. Each component of the SIB will be linked together and more than one SIB 
  7170. may link to a particular component thus forming a network of reusable 
  7171. blocks.
  7172.  
  7173. 2.1.10 Economics
  7174.  
  7175. Since creating reusable SIBs will not be an easy task, one of the key 
  7176. decisions will be whether or not it is financially advantageous to build 
  7177. any particular SIB. Although building the initial reusable SIBs will be 
  7178. more of a learning experiencethan a profit activity, subsequential SIBs 
  7179. must be profitable investments.
  7180.  
  7181. The following metrics will be used for the business analysis of any new 
  7182. reusable SIB:
  7183.  
  7184. cost - what will it cost to create the SIB,
  7185.  
  7186. use - how many products will re-use this SIB,
  7187.  
  7188. savings - what will this save in future developments, and, of course the 
  7189. most important calculation:
  7190.  
  7191. profit - what did the reusable SIB earn CIG.
  7192.  
  7193. This will actually be a sub-pilot within the SIB pilot.  Although there are 
  7194. many good metrics available, they still require a lot of qualifiable input. 
  7195. A three month study will be conducted to help quantify the economic 
  7196. metrics and improve our ability to estimate the use and profit of 
  7197. reusable SIBs.
  7198.  
  7199. Some of the information needed for the metrics is obtained through 
  7200. domain analyses.
  7201.  
  7202. 2.1.11 Domain Analysis
  7203.  
  7204. Much of the SIB functionality already exists so the domain analysis 
  7205. focused on both forward and backward analyses. This was a team effort 
  7206. with the reuse team providing the analysis expertise and the 
  7207. development engineers providing the domain expertise. From the 
  7208. domain analysis the reuse team was able to create a reusable SIB 
  7209. template that was used to produce reusable SIBs for the repository.
  7210.  
  7211. 2.1.12 Repository
  7212.  
  7213. The initial repository is a WEB based system with keyword search for 
  7214. retrieving components. As we create the service creation environments, it 
  7215. is assumed that we will needed added security for our repository and 
  7216. building blocks.
  7217.  
  7218. 3   Comparison
  7219.  
  7220. Several of the leading service vendors are working on service creation 
  7221. environments. Because of the competitive advantage, the vendors do not 
  7222. publish their implementation details.  Since there are standard SIB 
  7223. structures, I am assume that everyone is following the standards. Jeff 
  7224. Poulin and Keith Werkman have implemented WEB based repositories at 
  7225. IBM/Loral. Weare working with Jeff to expand our prototype.
  7226.  
  7227. 4   Biography
  7228.  
  7229. Rebecca L. Joos is a Principal Staff Engineer/Scientist at the Motorola 
  7230. Cellular Infrastructure Group in Arlington Heights,IL. She is leading the 
  7231. effort on reusable Int elligent Network building blocks and domain 
  7232. analysis. She works closely with other Motorola groups to systematically 
  7233. introduce software reuse into Motorola 's software development 
  7234. processes. She was previously the Software Quality Assurance Manager for 
  7235. the Advanced Microcontroller Unit and RISCdivisions in the 
  7236. Semiconductor Sector instituting software process and quality assurance.
  7237. Applying Lessons Learnt from Software Reuse to Other Domains
  7238.  
  7239. T P Kelly, B R Whittle
  7240.  
  7241. Rolls-Royce University Technology Centre
  7242. Systems and Software Engineering
  7243. Department of Computer Science
  7244. University of York
  7245. York, UK, YO1 5DD
  7246. Tel: +44 1904432773
  7247. Fax: +44 1940 432708
  7248. Email: tpk/ben@minster.york.ac.uk
  7249.  
  7250. Abstract
  7251.  
  7252. The position this paper promotes relates to the applicability of software 
  7253. reuse techniques to other non-software domains: What lessons learnt 
  7254. from techniques developed primarily for software reuse, can be applied 
  7255. to reuse of artifacts in other disciplines? The prime motivation for this 
  7256. research comes from a project attempting to apply reuse and evolution 
  7257. to the arguments of a safety justification. A discussion of the issues from 
  7258. this domain,as well as from more traditional domains within software 
  7259. development are used as illustration. Our exploration of the issues 
  7260. relating to safety arguments has led us to recognise anew that the 
  7261. essential problem of reuse is one of matching contexts. Whatever the 
  7262. domain we must be able to recognise and abstract the essential technical 
  7263. and non-technical characteristics of the domain. The success of reuse 
  7264. depends upon our ability to support, communicate and exploit the 
  7265. context in which artifacts are built, used and hopefully reused. The 
  7266. paper uses the examples of domain analysis and component description 
  7267. to show how this problem has been tackled with software artifacts and 
  7268. sets forward the motivation for domain modelling that provides a 
  7269. unifying basis for component identification, storage and retrieval for any 
  7270. domain.
  7271.  
  7272. Keywords: Software Reuse, Non-Software Domain, Context, Domain 
  7273. Analysis, Component Description, Reuse Model, Domain Model
  7274.  
  7275. Workshop Goals: Discuss domain modelling, assess suitability of software 
  7276. reuse principles to non-software domains
  7277.  
  7278. Working Groups: Domain Analysis / Engineering, Reuse process models, 
  7279. Reuse handbook.
  7280.  
  7281. 1   Background
  7282.  
  7283. Both authors work within the Rolls-Royce University Technology Centre 
  7284. for Systems and Software Engineering: Rolls-Royce established this 
  7285. research group within the University of York, England to examine systems 
  7286. and software development issues for the high integrity control 
  7287. systems,both in the aerospace and power generation industries, produced 
  7288. by Rolls-Royce plc.
  7289.  
  7290. One of the major activities of the group has been in establishing a 
  7291. successful reuse strategy within the company. This work has been 
  7292. principally undertaken by Ben Whittle and has examined artifact reuse 
  7293. across all phases of system development, from requirements 
  7294. specifications to test plans. The work of Tim Kelly has been in extending 
  7295. the concept of reuse to another costly aspect of high integrity system 
  7296. production, namely safety case development. It is in this work that Tim 
  7297. has been examining the applicability of ideas and techniques from 
  7298. software reuse to wider domains.
  7299.  
  7300. 2   Position
  7301.  
  7302. The software industry has proclaimed the benefits of reuse for some time, 
  7303. for example: shorter development time, increases in reliability, 
  7304. economies of scale. This has led to an increasing number of domains 
  7305. being examined for their reuse potential. Candidate domains for this 
  7306. scrutiny are typified by the complexity of the artifacts produced being 
  7307. sufficiently great to outweigh the pickup effort associated with a 
  7308. 'reusable' artifact [1] and where some generality of type or application of 
  7309. the artifacts is suggested. Artifacts in these domains may already be 
  7310. reused on an ad-hoc basis. However, it is systematic reuse, as exemplified 
  7311. in the field of software reuse, that is being seen as having potential long-
  7312. term benefit. The majority of existing reuse research has concentrated on 
  7313. software and software-related artifacts. Unlike physical artifacts, software 
  7314. artifacts are intangible and their concept, content and context highly 
  7315. variable. Because of this, software reuse research has been forced to deal 
  7316. in generalities and toaddress issues concerning reusable component 
  7317. identification, support and management. Although no panacea exists, 
  7318. the reuse problem has similarities across all domains and fundamental 
  7319. lessons can be learnt from software reuse research. The position this 
  7320. paper explores relates to the applicability of software reuse techniques to 
  7321. other, non-software, domains: What lessons learnt from techniques 
  7322. developed primarily for software reuse,to reuse of artifacts in other 
  7323. disciplines?
  7324.  
  7325. Software is often generalised as a single domain. Of course this is not 
  7326. strictly true, it should be considered as a large number of domains. 
  7327. Authors active in software research come from a large number of 
  7328. organisations in differentparts of the world. The strategies and models 
  7329. they promote have been developed for their particular domain.  
  7330. Therefore,these models are suitable for their domain but probably not 
  7331. wholly appropriate for other domains. The exploration of reuse within 
  7332. non-software domains shows the need for an approach that recognises, 
  7333. supports and exploits the characteristics of the domain whether for 
  7334. software or not.
  7335.  
  7336. 2.1  Issues in Promoting Systematic Reuse
  7337.  
  7338. Regardless of domain, there are three issues associated with reuse:
  7339.  
  7340. Development for Reuse
  7341.  
  7342. How do we identify and develop potentially reusable assets within the 
  7343. domain?
  7344.  
  7345. Development with Reuse
  7346.  
  7347. How do we abstract these assets so that they can be stored,retrieved and 
  7348. reapplied in new situations?
  7349.  
  7350. Managing reuse
  7351.  
  7352. How do measure the costs and benefits, and reason about the tradeoffs 
  7353. involved in reusing assets?
  7354.  
  7355. These three activities depend on sound modeling of the domain in 
  7356. which artifacts are initially produced and applied. We focus primarily 
  7357. on the first two activities given here. Management of reuse, being a vast 
  7358. subject in it's own right, cannot be adequately covered in a paper of this 
  7359. length.
  7360.  
  7361. 2.1.1 Developing for Reuse
  7362.  
  7363. When placed in a new environment andtold to instigate reuse, what do 
  7364. you do? Software reuse theory and practical experience tells us that the 
  7365. first thing should be to learn something about that environment or 
  7366. 'domain'. In the software domain our first step is to perform a domain 
  7367. analysis [2] - "The activity of identifying the objects and operations of a 
  7368. class of similar systems in a particular problem domain". The same is 
  7369. true for almost any domain. The resulting output from this activity 
  7370. should be an appreciation of the context in which domain products are 
  7371. developed and used, including:
  7372.  
  7373. Product aspects
  7374.  
  7375. Taxonomies and architecture of the products
  7376.  
  7377. Functional models of the products
  7378.  
  7379. Domain languages
  7380.  
  7381. Properties of the component produced
  7382.  
  7383. Process Aspects
  7384.  
  7385. Life-cycle, methods used in the development of the products
  7386.  
  7387. Standards used in the development of the products
  7388.  
  7389. Resource used in the development of the products
  7390.  
  7391. With domain information such as this we can start to determine those 
  7392. artifacts with reuse potential, e.g. by spotting common functions or a 
  7393. regular structure in the architecture of the product. It is only by 
  7394. assessment of the generality of application or content of an object, based 
  7395. upon their defining characteristics determined by the domain analysis, 
  7396. that we can estimate future reuse potential.
  7397.  
  7398. Emphasis in domain analysis applied to software products has been 
  7399. primarily on appreciating and modeling the technical architecture and 
  7400. characteristics of the domain. To a certain extent, this has not mattered, 
  7401. the reusability of basic block software components can be crudely judged 
  7402. on technical content. However, inspection of the component content 
  7403. cannot reveal attributes such as the development integrity level.  With 
  7404. other domains such as safety arguments we require a more complete 
  7405. understanding of the models, experience, assumptions and evidence on 
  7406. which the argument was based in order to appreciate the extent to which 
  7407. it could be usefully reapplied in a new context. In these cases, the 
  7408. context defines the product to a greater extent and without it the 
  7409. products purpose, generality and applicability is eroded. For example, 
  7410. without knowing the assumptions on which a safety argument depends 
  7411. it is impossible to determine the strength of the argument and whether 
  7412. the argument can be appropriately reused in a new context.
  7413.  
  7414. It has been accepted that domain analysis is crucial to making the first 
  7415. steps in software reuse. Further, we argue that domain analysis is 
  7416. essential in any domain, provided it considers and identifies the most 
  7417. pertinent of all,technical and non-technical, influences over the 
  7418. potentially reusable assets in question. The domain analysis phases is 
  7419. crucial to 'pinning-down' the context, and therefore generality, of the 
  7420. initial development and application of components.
  7421.  
  7422. 2.1.2 Developing with Reuse
  7423.  
  7424. Storage and retrieval of components is only an issue to the extent that it 
  7425. influences successful application of 'reusable' component. When we wish 
  7426. to reapply a component developed in one context in a new context it is 
  7427. crucial that we fully understand the component domain and the 
  7428. component's relationship to that domain, in order that the component 
  7429. is appropriately used. For example,with a safety-critical software 
  7430. component we need to determinethe extent to which it has been 
  7431. developed and tested in order to justify its re-application it in a new 
  7432. safety-critical context. It is therefore essential that, whatever storage and 
  7433. retrieval mechanism is used, we capture or communicate a component's 
  7434. relationship to its development context by abstraction and relationship 
  7435. to a domain model that captures all aspects of that context.
  7436.  
  7437. The central concern in storage and retrieval of components is that it is 
  7438. fast and intuitive to the reuse engineer. In the field of software reuse, 
  7439. faceted classification schemes [3] have been suggested as an approach. 
  7440. Using this method,classes of components are described by defining 
  7441. faceted lists of keywords. Components are stored with, or according to, 
  7442. their faceted classification by their particular grouping of keywords 
  7443. selected from the 'facets'. The principal benefit of this method is the 
  7444. extent which it sythesises a context in which the reusable components 
  7445. can be placed; by defining facets for classification we are modeling a 
  7446. context not too dissimilar to either the original or intended context. If 
  7447. the principle of faceted classification schemes were extended to wider 
  7448. domains,for storage and retrieval of components we would need to 
  7449. recreate a context in which the component can be 'understood'. This 
  7450. context should be derived from the key, technical and nontechnical, 
  7451. characteristics defined in the model produced from the initial domain 
  7452. analysis. Therefore, faceted scheme applied to new domains should also 
  7453. capture these attributes, as exemplified by the REBOOT [4] approach.
  7454.  
  7455. 2.2  Examples
  7456.  
  7457. We have argued that allthree of the fundamental concerns of reuse, 
  7458. namely: starting; supporting and managing, should, for any domain, be 
  7459. based upon a sound model, defining the   key characteristics of the 
  7460. domain. In the field of software reuse, their has been much effort in 
  7461. defining the 'best' domain analysis technique or the 'best' faceted 
  7462. classification scheme. Generalising, software reuse principles to other 
  7463. domains, we can see that for any domain starting,supporting and 
  7464. managing reuse should be rooted from a model derived from analysis of 
  7465. the domain which abstracts the original technical and nontechnical 
  7466. context of the components in question.
  7467.  
  7468. In software reuse, we often assume a common understanding of a 
  7469. components context or rely heavily upon the content of the component 
  7470. to communicate that context. For example, we have a common 
  7471. understanding of a particular programming language or development 
  7472. method and believe that, given time, we can work our the original 
  7473. purpose of a component by examining the code contained within. As the 
  7474. degrees of freedom in a domain, increase and we can rely upon less of a 
  7475. common understanding, modeling the domain context becomes 
  7476. increasingly important. To i lustrate this point, let us imagine 3 
  7477. scenarios:
  7478.  
  7479. Mathematical routine
  7480.  
  7481. With a description that says it adds two number of type integer and 
  7482. returns an integer result.
  7483.  
  7484. Signal validation component
  7485.  
  7486. for a real-time systems that takes in a signal from a heat probe, validates 
  7487. and range checks the signal. If the signal is outside the acceptable range 
  7488. a model value is used. The software module that generates the model 
  7489. value is a separate subroutine, adhering to a coding standard, that 
  7490. provides a value when invoked,the value the model provides must also 
  7491. be subject to the range check.
  7492.  
  7493. Safety case fragment which argues the reliability of a component from 
  7494. evidence given in a number of safety analyses, testing and operational 
  7495. evidence from similar components within the framework provided by 
  7496. company, government and industry codes and standards.
  7497.  
  7498. In each case, when the component is reused it will form part of a system 
  7499. which is to be used in a safety critical application. We need to examine 
  7500. how the component meets the requirements placed upon it within the 
  7501. domain and the properties of those components that are pertinent to 
  7502. the domain. The software components will be used as part of the systems 
  7503. itself, the safety case fragment a part of the justification that the system 
  7504. is fit for its purpose, and has been developed to acceptable standards.
  7505.  
  7506. There are a couple of questions we need to ask:
  7507.  
  7508. What information do we need to know about the component?
  7509.  
  7510. What would existing models like the 3C model [5] or the REBOOT model 
  7511. tell us about the component?
  7512.  
  7513. Is there any way of knowing,from a domain model or domain modeling, 
  7514. the information that we will need to provide with a component in order 
  7515. to reuse it?
  7516.  
  7517. If we are to reuse the mathematical routine in a safety critical 
  7518. application it would typically be the case that the component would 
  7519. have to be developed to an equivalent standard to the other 
  7520. components that we were using. Thus we need to know something about 
  7521. the development context of the component in order to infer the quality 
  7522. of the component. In searching for a component we may wish to 
  7523. prescribe standards for the components we search for; they must 
  7524. conform to a given programming standard. We require that reused 
  7525. components must have been developed to that standard.
  7526.  
  7527. In order to reuse the signal validation component we must know about 
  7528. the associated hardware, the heat probe. We can use the knowledge 
  7529. about the heat probe to work out what kind of model we need if we are 
  7530. going to use a model value of the temperature instead. These can be 
  7531. regarded as the extended technical context of the component
  7532.  
  7533. If we are going to reuse the safety case fragment we need to consider on 
  7534. what bases the justification is founded; the model, strategy, justifications 
  7535. and assumptions used need to be made explicit, and therefore, verifiable. 
  7536. For the new context we need to determine whether the model of the 
  7537. component, the strategy used, the justification for that strategy and the 
  7538. assumptions made are still valid. For example, it is common to justify a 
  7539. components claimed safety by reference to a good operational record. If 
  7540. however, between the time of creating the safety case fragment and 
  7541. wishing to reuse it, this operational record has been damned by 
  7542. numerous accidents the original justification is invalidated. Safety case 
  7543. fragments depend heavily upon their original application context. For 
  7544. there to be any case for successful reuse of safety case fragments, this 
  7545. context must be made explicit by means of an accurate domain model.
  7546.  
  7547. The REBOOT component model, faceted classes and 'reusability' measures 
  7548. have been developed specifically for software components. The REBOOT 
  7549. abstractions would therefore be suitable for reasoning about the software 
  7550. components in our example, though possibly considered overkill for the 
  7551. simple component,but would fail to capture the contextual properties of 
  7552. the safety case fragment. The suitability of the 3C model depends upon 
  7553. the extent to which we further subdivide the broad categories of 
  7554. context,concept and content. The 3C model provides a suitable starting 
  7555. point for developing domain-specific models that could be realistically 
  7556. used for identification, storage and retrieval purposes. The strength of 
  7557. the REBOOTmodel is that it has defined a 'generic' model' for software 
  7558. component which captures most of the non-domain specific properties 
  7559. of software components. The strength of the 3C model is that it is 
  7560. suitably generic to be used as a basis for development of any domain 
  7561. model. However, it's failure is that without further definition we are left 
  7562. with vague notions of the domain with inscrutable implicit attributes.
  7563.  
  7564. This brief example has illustrated that different properties are required 
  7565. to reason about components from different domains. While we could 
  7566. attempt to reapply models unchanged from the software reuse world or 
  7567. develop entirely new models, these would not be suitable for all 
  7568. domains.
  7569.  
  7570. 3   Summary of Position
  7571.  
  7572. The problem of reuse is one of matching contexts.  Components are 
  7573. developed in one context and, hopefully, reused in another. The 
  7574. decisions we take in reusing a component depend on our appreciation of 
  7575. both of these contexts. We usually have a fair understanding of the 
  7576. context in which we work. However, we have difficulty in appreciating a 
  7577. context separated from our own.  If the context of the component isn't 
  7578. recorded then we are required to assume a context ,as is commonly the 
  7579. case with vanilla software reuse. We have highlighted that for some 
  7580. domains ,such as safety justification, the assumption is potentially more 
  7581. damaging, and the information communicated by the component 
  7582. content becomes of less use.
  7583.  
  7584. Mathematical routines have been successfully reused for some time. 
  7585. Their strength lies principally in well defined interfaces supported by the 
  7586. constructs of the implementation language. The functional dependencies 
  7587. and context of the component can be successfully bundled up as a neat 
  7588. set of parameters and return variables. The difficulty in reusing 
  7589. components such as the safety case fragment described lies in the many 
  7590. dependencies and contextuality that the component possesses. We have 
  7591. no well understood boundary or interface to the component. The 
  7592. underlying content andstructure of the component lends no support to 
  7593. defining this context. We therefore have to find a way of defining the 
  7594. boundary of the component and specifying those 'parameters' of 
  7595. dependency within the component's context. Between these two extremes 
  7596. lie a great many domains, each with varying levels of contextuality and 
  7597. support from their underlying content or technology. What is common 
  7598. to these domains, is that the context of the component has to be 
  7599. considered. The type and degree of context that is recorded should 
  7600. depend upon the domain in which the component is developed, applied 
  7601. and reapplied.
  7602.  
  7603. We have used the techniques of domain analysis and faceted 
  7604. classification as an example of how software reuse has tackled a problem 
  7605. that has to be faced in any domain,that of comprehending and 
  7606. abstracting contexts. To capture the essence of these techniques 
  7607. developed for software reuse and apply them to other non-software 
  7608. domains we need to recognise and record the process and product 
  7609. characteristics most pertinent to the initial development and 
  7610. application context. The information that we require for successful 
  7611. component identification, storage, retrieval and management all derives 
  7612. from our comprehension of this context. By developing a single model of 
  7613. this context,on a per-domain basis we will maximise understanding of 
  7614. where components can be reused and be able to reason about how reuse 
  7615. can 'carry value' from one context to the other.
  7616.  
  7617. References
  7618.  
  7619. [1]P. Ireland,"Why is Software Reuse so Elusive?,"in Software Reuse: The 
  7620. Future, The BCS Reuse SIG 1995 Workshop, 1995.
  7621.  
  7622. [2]R. Prieto-Diaz, "Domain Analysis: An Introduction," ACM SIGSOFT 
  7623. Software Engineering Notes, vol. 15, no.2, 1990.
  7624.  
  7625. [3]R. Prieto-Diaz, "Classifying software for reusability," IEEE Software, vol. 
  7626. 4, no. 1, pp. 6-16, 1987.
  7627.  
  7628. [4]J.-M. Morel,"The REBOOT Approach to Software Reuse," in Software 
  7629. Reuse: The Future, The BCS Reuse SIG1995 Workshop, 1995.
  7630.  
  7631. [5]B. Frakes, L. Latour, T. Wheeler, "Descriptive and prescriptive aspects 
  7632. of the 3Cs model,"in Proceedings of the Third Annual Workshop, Methods 
  7633. and Tools for Reuse, CASE Centre Technical Report number 9014, 1990.
  7634.  
  7635. 4   Biography
  7636.  
  7637. Ben Whittle graduated in Agricultural Economics from UW Aberystwyth 
  7638. in 1989. He subsequently completed a masters in Computer Science. 
  7639. Foremost among Mr Whittle's research interests are component reuse and 
  7640. reuse education.  Mr.  Whittle is currently with the University of York, in 
  7641. the working within the Rolls-Royce sponsored Systems and Software 
  7642. Engineering University Technology Centre (UTC). His main task within 
  7643. the UTC is the introduction of advanced reuse techniques to the 
  7644. development ofreal-time systems within Rolls-Royce. Mr Whittle has 
  7645. recently been elected chairman of the British Computer Society Reuse 
  7646. Special Interest Group committee and was formerly the editor of the 
  7647. group newsletter.
  7648.  
  7649. Tim Kelly graduated in Computer Science from the University of 
  7650. Cambridge, England in 1994. He is a research student working within the 
  7651. Rolls-Royce Systems and Software Engineering University Technology 
  7652. Centre (UTC). He is investigating the development and assessment of 
  7653. safety cases. In particular,he is looking at the reuse and maintenance of 
  7654. safety arguments as a means of supporting evolvable safety cases. Before 
  7655. joining the UTC, he was involved for a number of years with high-
  7656. integrity systems and software research within the Rolls-Royce group, 
  7657. working particularly in the area of Integrated Project Software 
  7658. Environments.
  7659. Deliberations of a Reusable Assets Broker 
  7660.  
  7661.  
  7662. W. (Voytek) Kozaczynski
  7663.  
  7664. Center for Strategic Technology Research/SEL
  7665. Andersen Consulting
  7666. 100 South Wacker Dr., Chicago, IL 60606
  7667. Tel: (312) 507-6682
  7668. Fax: (312) 507-3526
  7669. Email: voytek@andersen.com
  7670.  
  7671.  
  7672. Abstract
  7673.  
  7674. The producer-broker-consumer (PBC) model of software reuse 
  7675. assumes a middleman, the broker, between the teams (or 
  7676. individuals) that create software assets and those that (re)use them. 
  7677. The model╒s underlying principle is that the broker fills the gap 
  7678. between teams that fight to meat deadlines, and therefore have little 
  7679. time to think about potential future usefulness of their  work 
  7680. product, and the future users of these products that may have not 
  7681. even come to being yet. This position paper briefly examines an issue 
  7682. that is at the very core of the broker╒s existence: what kind of assets 
  7683. will project care to buy (after all, brokers have sell to exist) and 
  7684. when is the best time to make a sale?
  7685.  
  7686. Keywords: Reuse process, reuse asset broker, reusable assets
  7687.  
  7688. Workshop goals: Learning, exchange of experiences, shopping for 
  7689. ideas, verifying hypotheses
  7690.  
  7691. Working groups: Reuse process models, reuse management, 
  7692. organization and economics
  7693.  
  7694. 1  Background
  7695.  
  7696. I am directing the Software Engineering Lab (SEL) at the Center of 
  7697. Strategic Technology Research (CSTaR). The mission of this applied 
  7698. research group is to ╥Dramatically improve the quality and 
  7699. productivity of the Andersen Consulting╒s software development 
  7700. processes╙. One of the most promising ways of  achieving this mission 
  7701. is via large-scale, institutionalized reuse. Because of this, the SEL has 
  7702. been working on a number of projects that can be directly linked to 
  7703. reuse. Until very recently, or interest concentrated mainly on 
  7704. production and/or recovery of reusable code products, for example: 
  7705. code understanding for recovery of reusable components, software 
  7706. specifications and automatic code generation, component 
  7707. specifications and component assembly environments.
  7708.  
  7709. While working on the projects and on transferring their results to 
  7710. practice,  it became clear that reuse of software solutions is difficult 
  7711. mainly because it comes late in the system development life cycle. 
  7712. Reuse of relatively small-grain solutions also has relative minor 
  7713. impact on projects. The most significant reuse opportunities seem to 
  7714. present themselves at  the early stages of a projects, but they call for 
  7715. different (than pre-packaged solutions) reusable assets. 
  7716.  
  7717. Recently the SEL started working with a number of internal 
  7718. Andersen organizations and programs to establish a function, and an 
  7719. organizations associated with it, of a broker. The role of this 
  7720. function/organization is to acquire, refine, package, tailor and 
  7721. transfer all kinds of reusable assets. 
  7722.  
  7723. 2  Position
  7724.  
  7725. The context setup
  7726.  
  7727. Imagine the following situation:
  7728.  
  7729. -    A broker functions has been set up in a company that 
  7730. concurrently executes a large number of software development 
  7731. projects for external clients
  7732. -    The projects are independent of each other
  7733. -    The projects can be significantly different from each other in 
  7734. terms of clients, domains, scope, and contractual arrangements
  7735. -    On the other hand, the projects are similar in that they deliver 
  7736. systems in the same broadly understood category (let╒s say, for the 
  7737. sake of this argument, logistic systems)
  7738. -    Each project team has a large degree of freedom in deciding 
  7739. what is the best way of executing  its project
  7740. -    Reuse decisions are based on economics of project execution 
  7741. and client satisfaction (as opposed to internal ╥arm twisting╙, for 
  7742. example)
  7743. -    The company uniformly trains its employees, has an excellent 
  7744. QA system, centrally tracks all projects, and strongly encourages 
  7745. project teams to share experiences (even has a central functions to 
  7746. facilitate such sharing, but does not award teams for it)
  7747.  
  7748. Now, assume further that in this setup the broker function has been 
  7749. give initial monetary and human resources (which is a good 
  7750. indication of the management╒s support) on the premise, that a very 
  7751. significant amount of otherwise reusable assets get simply wasted 
  7752. because of the disconnection (in time and space)  between their 
  7753. producers and consumers. Also assume, that the management wants 
  7754. to apply strictly marketing approach to the broker functions and 
  7755. wants it to charge the consumers for its assets and services and 
  7756. eventually become self-supported.  How should the broker invest its 
  7757. initial capital and build its services and a protfolio of assets. 
  7758.  
  7759. A ╥law╙ of diminishing opportunities
  7760.  
  7761. The law (strictly intuitive at this time) states that as project teams 
  7762. move forward, they become less and less flexible and an opportunity 
  7763. for significant impact from reuse diminishes. This is simply because:
  7764. -    Project managers, architects, designers and develpers 
  7765. sucessively, through their decisions, constrain the space into which 
  7766. the resable assets must be fitted, and
  7767. -    With progress of time the project decisions change from 
  7768. strategic, to tactical, to operational.
  7769.  
  7770. The table below shows major phases of a project/system lifecycle 
  7771. (the phases may be executed concurrently and allow for local 
  7772. iterations) and the resusable assets that should be of interest to 
  7773. project teams at each phase.
  7774.  
  7775. Phase    Reusabls Assets
  7776. Preliminary Requirements Acquisition and Analysis, Contrat 
  7777. Negotiations    Estimation models, base development process 
  7778. models, process statistics, comparative frameworks, development 
  7779. cost records, architectural records, ...
  7780. Detailed Requitements Acquisition and Analysis, System 
  7781. Architecteting    Domain models, systems architecures, technical 
  7782. architectures, design tradeoff records , COTS solutions, ...
  7783. Prototyping and Detailed Design    Prototyping and development 
  7784. envirments, system designs, component specifications, design 
  7785. standards and guidelines, ...
  7786. Component Development and Testing    Rreusable components, 
  7787. component designs, solution frameworks, designs patterns, reusable 
  7788. code libraries, ...
  7789. System Integration and System Testing    Testing tools, testing 
  7790. processes models, configuration control systems, documentation 
  7791. tamplates, ...
  7792. Deployment    User training guidelines, systems support processes 
  7793. models
  7794.  
  7795.  
  7796. The assets listed in the table above can be roughly divide into three 
  7797. categories:
  7798.  
  7799. 1.     Solutions that are things like designs, technical architectures, 
  7800. reusable components, and other artifacts that can be put into the 
  7801. new system or used to ╥shape╙its form
  7802.  
  7803. 2.     Software tools such as design workbenches, code development 
  7804. tools, tesing tools, configuration management tools, etc., and 
  7805.  
  7806. 3.     Software engineering processes and their components. 
  7807.  
  7808. Software tools are a special category. Their main contributions are 
  7809. that they: (a)  provide a common language to capture reusable 
  7810. solutions (designs, architectures, code, etc.), and
  7811. (b) improve the productivity and quality of software develpment 
  7812. tasks. Tools themselves, and the knowledge how to use tham 
  7813. effetivaly, are very much resuable assets.
  7814.  
  7815. While looking at the table it is easy to notice, that most of the 
  7816. software resue attention (both academic and practical) so far has 
  7817. concentrated on the resue of software solutions during the phases 4 
  7818. and 5 (Detailed design and Component development). Much less 
  7819. attention has been given to more process oriented and less formal 
  7820. assets usable in the early phases of a project.   
  7821.  
  7822. Reuse of these ╥early process╙ asstes, however, may present a larger 
  7823. opportunity for impact. Unfortunately, such reuse is also more 
  7824. difficult. The software reuse field has very little experience in 
  7825. capturing processes, process statistics, comparative models, software 
  7826. development cost models, systems architectures, design tradeoff 
  7827. records, etc. Moreover, codified experiances of such kind may be 
  7828. very context-dependent. For example, what works for a software 
  7829. division of a manufacturing company may not be at all applicable to 
  7830. the situation described here.
  7831.  
  7832. The position ╥proper╙
  7833.  
  7834. The borker functions must be proactive. The broker team must 
  7835. invest in working with project teams to capture quality assets. The 
  7836. borkering process takes the form of a loop:
  7837.  
  7838. -> capture -> analyze -> refine -> package -> identify opportunity -> 
  7839. tailor -> apply ->
  7840.  
  7841. There is no clear starting point in this loop -- the broker actively 
  7842. works with selected projects to capture best experiences to then 
  7843. tailor and ╥sell╙ them to other projects. The broker is not just a 
  7844. librarian, but an informed investor. 
  7845.  
  7846. So what shold the broker invers in? The table above suggests that is 
  7847. should invest more in the process, tools and architecure-related 
  7848. rather than in solution-related assets. This, howeve, brings two 
  7849. interesting questions:
  7850. 1. Will that be still software resue if a borker sells things like: team 
  7851. management guidelines, costing models, tailored process models, 
  7852. architecture records, etc., or is that a different type of reuse?, and
  7853. 2. What kind of skills shoud a good broker have? 
  7854.  
  7855. I am hoping to address thes questions at the workshop.
  7856.  
  7857. 3  Comparison
  7858.  
  7859. The issues brought up here most resemble the work on Experiance 
  7860. Factories lead by Dr. Vick Basili [1,2 and 3]. The major differnce 
  7861. seems to be, that the work of the University of Maryland and NASA 
  7862. concentrated so far on large, stable development organizations with 
  7863. well-articulated software product lines. Many issues are also 
  7864. common to the SEI╒s work on the Capability Maturity Model [4].
  7865.  
  7866. References
  7867.  
  7868. [1]     V. R. Basili, H.D. Rombach, Support for compehensive resue, 
  7869. Software Engineering Journal, September 1991, pp. 303-316
  7870.  
  7871. [2]    Victor R. Basii and Scott Green, Software Process Evolution at 
  7872. the SEL, IEEE Software, July 1994, pp. 58-66
  7873.  
  7874. [3]     Victor Basili, Frank McGarry, The Experiance Factory: How 
  7875. toBuild and Run One, ICSE-16 and ICSE-17, Tutorial materials
  7876.  
  7877. [4]    Mark C. Paulk, Bill Curtis, Mary Beth Chrissis, Charles V. 
  7878. Webber, Capability Maturity Model, IEEE Software, July 1193, pp. 18-
  7879. 27
  7880. Bibliography
  7881.  
  7882. Dr. Kozaczynski is the Director of the Software Engineering 
  7883. Laboratory at the Andersen Consulting's Center for Strategic 
  7884. Technology Research which is an applied research organization 
  7885. working on multiple aspects of software development processes and 
  7886. tools. He is responsibility for the research directions and coordination 
  7887. of research initiatives and projects of the lab. He is also actively 
  7888. involved in projects as a scientist.
  7889.  
  7890. His current research interests include reuse of domain-specific 
  7891. architectures and components, compositional approaches to system 
  7892. development, and distributed systems design. He is also interested in 
  7893. application of object-oriented software development approaches and 
  7894. techniques. Previously he has worked on automatic software analysis 
  7895. and understanding, software re-engineering, application of AI to 
  7896. software development, and database systems. 
  7897.  
  7898. He has a MS degree in Computer Science and a PhD in Organization 
  7899. and Management from the Technical University of Wroclaw, Poland. 
  7900. Prior to joining Andersen Consulting he was an Associate Professor at 
  7901. the Department of Information and Decision Sciences, University of 
  7902. Illinois at Chicago. He has published over 20 journal and conference 
  7903. papers and is a member of the Industrial Advisory Board of the IEEE 
  7904. Software Magazine.
  7905.  
  7906. Functional Fixedness in the Design of Software Artifacts
  7907.  
  7908. Larry Latour
  7909. Liesbeth Dusink
  7910.  
  7911. University of Maine
  7912. Dept. of Computer Science
  7913. 222 Neville Hall
  7914. Orono, Maine, 04469
  7915. Tel: (207)581-3523
  7916. Fax: (207) 581-1604
  7917. Email: larry@gandalf.umcs.maine.edu
  7918.  
  7919. &
  7920.  
  7921. Delft University of Technology
  7922. Dept. of Technical Mathematics and Computer Science
  7923. Julianalaan 132
  7924. 2624 BL Delft
  7925. The Netherlands
  7926. Tel: +31 15 781156
  7927.  Fax: +31 15 787141
  7928. Email: E.M.Dusink@twi.tudelft.nl
  7929.  
  7930. Abstract
  7931.  
  7932. A common rule of thumb to make components reusable is to "make 
  7933. components generic".  But software engineers tend to design in a way 
  7934. that solves the particular problem at hand, and in a way that they do 
  7935. not easily see opportunities to reuse existing components. We call such 
  7936. solutions "functionally fixed". Domain analysis prior to system design 
  7937. can help a great deal here, but for most software engineers fighting 
  7938. functional fixedness is still a constant and uphill battle.
  7939.  
  7940. It seems to us that designers need more experience in recognizing 
  7941. functional fixedness when it is "staring them in the face", and in 
  7942. generalizing functionally fixed solutions to more (re)usable artifacts. In 
  7943. this paper we suggest how to uncommit design decisions from 
  7944. functionally fixed designs in such a way that their essence is kept. This 
  7945. uncommit process is done with the support
  7946. of:
  7947.  
  7948. reasoning by analogy,
  7949.  
  7950. stating implications,
  7951.  
  7952. challenging assumptions, and (of course)
  7953.  
  7954. previous experience/ knowledge about the domain and other domains
  7955.  
  7956. Keywords: Functional Fixedness, Generic software, Uncommitting Design 
  7957. Decisions
  7958.  
  7959. Workshop Goals: To look for in-depth examples of good reusable 
  7960. artifacts, to discuss with other researchers what makes them good, and to 
  7961. validate/flesh out/adjust our ideas on the topic.
  7962.  
  7963. Working Groups: Reuse Education, Domain Analysis/engineering, Generic 
  7964. Architectu
  7965.  res
  7966.  
  7967. 1   Background
  7968.  
  7969. We have both been independently exploring issues of reusable artifact 
  7970. design since the late 80's.  Liesbeth has been approaching the problem 
  7971. from the direction of both cognitive psychology and software engineering 
  7972. [3], while Larry has been taking a more "traditional" route to the 
  7973. problem, relying strictly on previous software engineering literature [6]. 
  7974. Liesbeth has been "playing" with the concept of functional fixedness for a 
  7975. good while, while Larry has been independently exploring the effects of 
  7976. uncommitting design decisions.
  7977.  
  7978. Our combined goal has been to take the cognitive psychology term 
  7979. functional fixedness and "operationalize" it. That is, we have attempted 
  7980. to show what functionally fixed software artifacts look like, and in the 
  7981. process to suggest how such artifacts could be avoided or undone.
  7982.  
  7983. 2   Position
  7984.  
  7985. Our position is simply that the cognitive psychology people have the 
  7986. right idea (functional fixedness), but that these ideas need to be 
  7987. "operationalized" in the reuse domain. A prior example of a successful 
  7988. "port" of an idea from another discipline is the work done by Ruben 
  7989. Prieto-Diaz in exploring the concept of faceted classification in the reuse 
  7990. domain ([9] - yes, boys and girls, 1987).  We introduce some of these 
  7991. ideas of functional fixedness in this position paper.
  7992.  
  7993. 2.1  Introduction
  7994.  
  7995. Functional fixedness concerns the "fixed" nature in which humans solve 
  7996. problems [2]. Specifically, they tend to express solutions in a way that is 
  7997. very specific to the problem at hand,and in a way that is somewhat 
  7998. difficult to generalize to the solution of other, similar, problems. This 
  7999. causes both a difficulty in seeing that existing components can be used 
  8000. in one's problem solution and also a difficulty in designing reusable 
  8001. components for use by others.
  8002.  
  8003. Our suggestions for designing for and with reuse involve systematically 
  8004. uncommitting design decisions from functionally fixed solutions in ways 
  8005. that the resulting solution(s) can be more easily applied to other 
  8006. problem solutions and that also leave the essence of the original solution 
  8007. intact.  How this method is developed is described in [5].
  8008.  
  8009. It seems that the following four guidelines each play a major role in 
  8010. "optimizing" the uncommit process:
  8011.  
  8012. 1. Always Challenge Assumptions: when a design decisionis made, make 
  8013. clear why such a decision is made, from where it is made, and what the 
  8014. properties are of the general class of design alternatives from which such 
  8015. a decision is made.
  8016.  
  8017. 2. Make Implications Clear: when a design decision is made, make clear 
  8018. the other design decisions that affect the choice of this decision, and also 
  8019. make clear the design decisions that are affected by this design 
  8020. alternative.
  8021.  
  8022. 3.Make Analogies Explicit: While humans express problems solutions in a 
  8023. functionally fixed manner, they are very good at reasoning by analogy, 
  8024. and find their fixed solutions in that way.
  8025.  
  8026. Analogous design decisions have a common abstract description when 
  8027. uncommitted within a context and from a certain viewpoint, and these 
  8028. descriptions should be made explicit.
  8029.  
  8030. 4. Value Previous Experience/Domain Knowledge Highly: The first three 
  8031. guidelines have to be followed within the context of experience, both in 
  8032. the domain of interest and in the understanding and use of good 
  8033. software engineering principles.  The context of experience can also 
  8034. stretch to other domains of interest,e.g. knowledge about library 
  8035. reservation systems can be of an advantage when designing a seat 
  8036. reservation system for planes.
  8037.  
  8038. The "Make Analogies Explicit" bullet raises an interesting point that we 
  8039. exploit. Humans do most of their "hard" reasoning by analogy in an 
  8040. informal, abstract, and many times unconscious, manner.  What is left 
  8041. tends only to be the functionally fixed solution as formal residue.
  8042.  
  8043. Part of the problem here tends to be one of awareness. Two interesting 
  8044. research studies support this claim.  Maiden and Sutcliffe [8].  show in 
  8045. their work that software engineers use syntactic analogy instead of 
  8046. semantic analogy because they are not actually aware that they use 
  8047. syntactic analogy.  When aware of the fact that one chooses by analogy 
  8048. one can also reason why the analogy holds and (subsequently) come up 
  8049. with the right (semantic) analogy.
  8050.  
  8051. Compounding the problem is that humans tend to solve just the 
  8052. problem at hand with the help of analogy,and not the class of problems 
  8053. of which this specific problem is a part.  This contributes to the "scale-
  8054. up" problem, in that "super-problem solutions" of which the problem 
  8055. solution is a part tend to be not only solved in a functionally fixed 
  8056. manner but reasoned about in that manner also.
  8057.  
  8058. It is interesting to note that our analysis when evaluating our 
  8059. uncommitments is similar to that used by Ted Biggerstaff in his "rule of 
  8060. 3s".  That is,we take advantage of prior knowledge of alternatives and 
  8061. their common characteristics to properly construct our "decision graph". 
  8062. As we keep repeating,there is no substitute for this knowledge. The better 
  8063. it is,the more complete our decision graph will be.
  8064.  
  8065. 2.2  The 3 Views of Functional Fixedness
  8066.  
  8067. The definition of functional fixedness as taken from the cognitive 
  8068. psychology literature does not in itself help us in an operational sense. 
  8069. We need to explore the analogy between general knowledge and software 
  8070. engineering knowledge in order to apply this principle. But of course we 
  8071. immediately we see an analogy with reuse, where one has to use existing 
  8072. components not only in one application but also in other applications. 
  8073. In that case if knowledge of such components is tied closely to a former 
  8074. problem solution, it becomes difficult to see the applicability of that 
  8075. component to another problem. Specifically, (and paraphrasing our 
  8076. cognitive psychology definition) if a component is learned for the 
  8077. purposes of using it in one application then the (possibly) broad general 
  8078. properties of the component are learned as perceptions of specific, 
  8079. limited, functional characteristics.
  8080.  
  8081. In fact, by massaging the definition a little bit, and using an analogous 
  8082. interpretation, we make the definition apply for reuse and software 
  8083. engineering in a more general sense. In this we derive three different 
  8084. "functional fixedness" definitions:
  8085.  
  8086. 1. wrt the component: We can view functional fixedness with respect to 
  8087. the component itself. That is, the component is functional fixed if it 
  8088. only does one specific thing in one specific way in one specific context 
  8089. only.  This relates to the genericity issue discussed earlier.
  8090.  
  8091. 2. wrt a software engineer's view of the component: We can view 
  8092. functional fixedness wrt the view a software engineer has of the 
  8093. component.  That is, does the software engineer view the component as 
  8094. only doing one thing in a fixed way and in a specified context, 
  8095. independent of its actual level of functional fixedness? This view of 
  8096. functional fixedness is the most faithful to the original cognitive science 
  8097. definition.
  8098.  
  8099. 3. wrt a software engineer's view of the problem solution: We can view 
  8100. functional fixedness wrt the problem solution created by the software 
  8101. engineer. That is, does the solution focus on the specific problem or class 
  8102. of problems analogous to that problem solution. To some extent this 
  8103. argument is recursive (not circular,since we always start somewhere), 
  8104. since the problem solution itself can be considered to be a component.
  8105.  
  8106. Consider first the functional fixedness inherent in a component.  An 
  8107. example of a component performing only one (set of) task(s) in one way, 
  8108. and in one context is an abstract data type for sequences of integers. 
  8109. Such an ADT can easily be generalized into an abstract data type for 
  8110. sequences of any type of elements. But this generalization doesn't buy us 
  8111. too much, since most software engineers can easily re-write its 
  8112. implementation without invalidating the specification and 
  8113. implementation constraints. Even though this generalization allows us to 
  8114. use the component in more than one context, it still performs only one 
  8115. set of tasks in one way.
  8116.  
  8117. Consider next functional fixedness from the software engineer's point of 
  8118. view. Suppose we need to implement a search tree,and choose a binary 
  8119. tree for the search tree structure.  Focusing primarily on this application, 
  8120. we might not see that such a structure can also be used as an expression 
  8121. tree in a compiler. One might argue that we don't care at this point 
  8122. about expression trees for compilers.  But this is exactly the point.  We 
  8123. have solidified our view of a binary tree as a search tree because of the 
  8124. application, but we still have only a vague feel for a binary tree as an 
  8125. expression tree in a compiler, again because of our focus on the search 
  8126. tree application.
  8127.  
  8128. Another example of user view functional fixedness, one that we are all 
  8129. too familiar with, is our frustration and inability to cope with the wide 
  8130. range of features provided by our word processing/ spread sheet/ paint/ 
  8131. draw/ programming environment/ etc. software on our PC (which of 
  8132. course we all have). We tend to assimilate this knowledge in a 
  8133. functionally fixed way, learning only what we need to learn to do our 
  8134. work. The above problem is compounded by the fact that in order to 
  8135. properly use more complex components/sub-systems/software packages, 
  8136. one has to have intimate knowledge of the usage patterns of applications 
  8137. using such facilities.
  8138.  
  8139. Two examples, each at opposite ends of the "abstraction continuum" 
  8140. come to mind.  The abstraction continuum meant here, is in terms of 
  8141. the top-to-bottom layering of a complex system implementation.
  8142.  
  8143. One is the use by a photographer of a complex photographic image 
  8144. processing package, and the other is the use by a systems programmer of 
  8145. a complex device controller interface. In both cases a tremendous 
  8146. amount of domain knowledge is required to use the facilities as they  
  8147. were intended to be used. In the case of the image processing software, 
  8148. tools to hi-light, low-light, darken, or lighten an image make little sense 
  8149. to a novice, and in the case of the device controller interface, disk heads 
  8150. can be destroyed in the hands of a novice. Ways to alleviate such 
  8151. problems are to give courses for photographers, and provide pre-
  8152. packaged device drivers for complex devices.
  8153.  
  8154. Both of the first two "views" of functional fixedness focus on the 
  8155. components to be reused. The third interpretation of functional 
  8156. fixedness focuses on the framework, or architecture, in which 
  8157. components are reused. Specifically, when designing a framework for a 
  8158. problem solution, we tend to do so for that solution and not for the class 
  8159. of solutions of which it is a part. But we also need to deal with 
  8160. functional fixedness in the framework design of mid-size components. 
  8161. Often a great deal of functional fixedness analysis of small components is 
  8162. lost if they are then composed into a functionally fixed mid-sized 
  8163. component framework.  As an example, a real-time feedback control 
  8164. module might be designed in a functionally fixed manner without an 
  8165. awareness that analogous feedback control modules are available for 
  8166. reuse.  In this case the designer might not even be aware that the system 
  8167. is a control system, thus not being aware of the wide variety of  analysis 
  8168. methods and tools available for such systems.
  8169.  
  8170. The actual functional fixedness of a component is typically what most 
  8171. reuse literature focuses on when considering design for reuse, and the 
  8172. software engineer's view of the problem solution is typically focused on 
  8173. (although in a functionally fixed way) when considering design with 
  8174. reuse.  The software engineer's view of a component is typically not 
  8175. considered, essentially because the literature focuses on the reuse 
  8176. product and not the process.
  8177.  
  8178. What is also typically missed is that if one designs with reuse, the 
  8179. resulting product is also a component implementation, and needs to be 
  8180. analyzed with respect to design for reuse. Thus in order to achieve the 
  8181. elusive "scale-up" frequently alluded to in the literature, designing with 
  8182. reuse needs to always be done within the context of designing 
  8183. frameworks for reuse.
  8184.  
  8185. 2.3  An Example
  8186.  
  8187. 2.3.1 Undoing Functional Fixedness
  8188.  
  8189. We now suggest how to undo functional fixedness in a component, thus 
  8190. how to uncommit. This approach of uncommitting can also be done 
  8191. after one stage of a top-down approach to check one's own results. We 
  8192. use as an example, the tried and true Quicksort algorithm (which
  8193. we suppose is as trite an example as a stack is.  So be it.)
  8194.  
  8195. In this position paper we will specifically limit ourselves to one aspect of 
  8196. quicksort, the internal partition algorithm.
  8197.  
  8198. For choices of partition algorithm we find among others:
  8199.  
  8200. while not done
  8201.    if pivot > a[lwb] then lwb:= lwb+1
  8202.    elsif pivot < a[upb] then upb:= upb-1
  8203.    else swap(a,lwb,upb)
  8204.    endif
  8205. end
  8206.  
  8207. while not done
  8208.    while pivot < a[lwb] do lwb:= lwb+1 end
  8209.    while pivot > a[upb] do upb:= upb-1 end
  8210.    swap(a,lwb,upb)
  8211. end
  8212.  
  8213. while pivot < a[lwb] do lwb:= lwb+1 end
  8214.  
  8215. while pivot > a[upb] do upb:= upb-1 end
  8216. while not done
  8217.    swap(a,lwb,upb)
  8218.    while pivot < a[lwb] do lwb:= lwb+1 end
  8219.    while pivot > a[upb] do upb:= upb-1 end
  8220. end
  8221.  
  8222. Triggered by the different formats, we recognize the inner while-loops as 
  8223. searches for elements which are out of place. The fact that they always 
  8224. appear together triggers the thought that they together are a search for 
  8225. the swap-indices.  We thus rewrite the algorithm now in "pseudocode"as:
  8226.  
  8227. while not done
  8228.    search(swapIndices(pivot))
  8229.    if search success then swapendif
  8230. end
  8231.  
  8232. We now see the reason for the algorithm that starts with the search for 
  8233. swap indices before starting the "not done" loop. It is optimized with 
  8234. respect to checking the condition. Search failure and done are the same 
  8235. test. Unfortunately, it is a "false" optimization, since the test for success 
  8236. is also incorporated in the search algorithm itself.  From the perspective 
  8237. of good programming style this is "ugly", since the same work as done in 
  8238. the while-loop shouldn't also be done outside the loop.  From the view of 
  8239. correct use of language constructs one should use a repeat as the search 
  8240. is done at least once. The if-statement then returns and the 
  8241. optimization is undone.
  8242.  
  8243. From the viewpoint of reuse this"optimization" is also ugly. It takes 
  8244. more time to understand the algorithm, especially as the optimization is 
  8245. not documented and is an unfamiliar usage pattern to most naive 
  8246. programmers.  Furthermore, it is not really necessary that the test of 
  8247. failure and done are the same. By keeping them apart, we can more 
  8248. freely choose a search algorithm and a stopping criterium.
  8249.  
  8250. The algorithm in the form rewritten above is familiar.  Triggered by 
  8251. associating the search and the search predicate we might begin to think 
  8252. about filters, which leads us in turn to think about folds and maps 
  8253. (knowledge from functional programming).  We suddenly see that 
  8254. Partition is a map. Now the iterator has become implicit. Depending on 
  8255. whether we work in place or with help structures the iterator can be of 
  8256. importance.
  8257.  
  8258. In summary,the concepts we recognize as determining the algorithm are: 
  8259. an iterator on the structure; a filter on the structure; and a map on the 
  8260. structure.  Partition can be viewed as a framework for search, albeit one 
  8261. with few restrictions on the search.
  8262.  
  8263. 2.4  Summary
  8264.  
  8265. We have found it useful to define a more general interpretation of 
  8266. "functionally fixed" than that which appears in the cognitive psychology 
  8267. literature. We realized that the term itself was functional fixed, therefore 
  8268. only partially applicable to our problem area. Our three-view 
  8269. interpretation shifts the focus of attention and in doing so becomes a 
  8270. unifying concept that aids us in focusing on the hard problems of 
  8271. designing for reuse, with reuse, and scale-up.
  8272.  
  8273. The issue of functional fixedness is NOTto remove it, but to control it in 
  8274. such a way that it captures the essence of the domain knowledge 
  8275. inherent in an algorithm, not more nor less. Furthermore, this control 
  8276. has to be done both during design"for reuse" and "with reuse" as they 
  8277. are two sides of the same issue as stated in the previous section.  
  8278. Knowing what to "fix on" in this way, and then capturing it formally is 
  8279. arguably the essence of design for and design with reuse.  Since the
  8280. systematic application of the four stated guidelines can be useful in both 
  8281. of these contexts, our work looks carefully at both issues, considering the 
  8282. effects of each side on the other.
  8283.  
  8284. References
  8285.  
  8286. [1]H.G. Birch. The Relation of Previous Experience to Insightful Problem-
  8287. Solving. Journal of Comparative Psychology, 38:367-383, 1945.
  8288.  
  8289.  
  8290. [2]H.G. Birch and H.S.Rabinowitz. The Negative Effect of Previous 
  8291. Experience on Productive Thinking.In Wason and Johnson-Laird [11], 
  8292. chapter 3.
  8293.  
  8294. [3]Dusink,E.M. Software Engineering and Reuse. Proceedings of the Fourth 
  8295. International Workshop on Software Reusability, Reston, Virginia, 1991.
  8296.  
  8297. [4]E.M. Dusink. Reuse is not done in a Vacuum. In Larry Latour et al., 
  8298. editor, WISR'92,5th Annual Workshop on Software Reuse, Palo Alto 
  8299. California, October 26-29 1992, 1992.
  8300.  
  8301. [5]E.M. Dusink. The Reuse Process Refined. Technical Report to 
  8302. appear,Faculty of Mathematics and Informatics, TU Delft, The 
  8303. Netherlands, 1994.
  8304.  
  8305. [6]Latour, L., and Johnson,E. Seer: A Graphical Retrieval System for 
  8306. Reusable A da Software Modules. Proceedings of the 3rd Int'l IEEE Conf. on 
  8307. Ada Applications and Environments, Manchester, NH, 1988.
  8308.  
  8309. [7]Mitchell D. Lubars and Neil Iscoe. Frameworks versus Libraries: A 
  8310. Dichotomy of Reuse Strategies.In Larry Latour et al., editor, WISR'93, 6th 
  8311. Annual Workshop on Software Reuse, Owego, New York, November 2-4 
  8312. 1993.
  8313.  
  8314. [8]Neil Maiden and Alistar Sutcliffe. The Abuse of Re-use: Why Cognitive 
  8315. Aspects of Software Reusability are Important, chapter 10, pages 109-113. 
  8316. Workshops in Computing.  Springer Verlag, 1991.
  8317.  
  8318. [9]Prieto-Diaz, R., and Freeman, P. Classifying Software for Reusability. 
  8319. IEEE Software,V 4 (1), 6-16, January, 1987.
  8320.  
  8321. [10]P.Saugstadt and K. Raaheim. Problem-Solving, Past Experience and 
  8322. Availability of Functions. In Wason andJohnson-Laird [11], chapter 5.
  8323.  
  8324. [11]P.C. Wason and P.N. Johnson-Laird, editors. Thinking and Reasoning, 
  8325. Selected Readings. Penguin Modern Psychology. Penguin Books, 1968.
  8326. The Impact Of  Technological Change On Domain Specific Software 
  8327. Architectures
  8328.  
  8329. Sadie Legard & Bill Karakostas
  8330.  
  8331. C25/Main Building
  8332. Department of Computation
  8333. UMIST
  8334. Manchester
  8335. M60 1QD
  8336. United Kingdom
  8337. Email: sl@sna.co.umist.ac.uk
  8338.  
  8339.  
  8340. Abstract
  8341.  
  8342. In this position paper we argue that research into domain specific 
  8343. software architectures [1] can benefit from the results of a discipline 
  8344. known as technology theory which is concerned with issues such as 
  8345. technological evolution. In this context a domain architecture 
  8346. encompasses a complex of technologies whose role and trajectories 
  8347. (possible future evolution) must be taken into account when 
  8348. assessing the stability and the evolution of the architecture itself
  8349.  
  8350. Keywords: reuse, domain specific software architectures, reuse 
  8351. management, technology theory.
  8352.  
  8353. Workshop Goals: to meet, discuss and refine ideas with fellow 
  8354. researchers and practitioners. 
  8355.  
  8356. Working Groups: Reuse management, organisation, economics, Useful 
  8357. and collectible metrics, Domain analysis/engineering.
  8358.  
  8359.  
  8360. 1   Background
  8361. Sadie Legard is about to complete a PhD in the area of software reuse 
  8362. and re-engineering. During the course of her research she has been 
  8363. investigating the maturation of software reuse as a technology, and 
  8364. the organisational, managerial, and technological issues related to the 
  8365. formulation, and subsequent introduction, of a new paradigm for 
  8366. software development based on reuse principles. In her thesis, Sadie 
  8367. describes Enterprise-Wide Software Reuse (EWSR) which 
  8368. incorporates the Reuse Profile technique. This paper describes some 
  8369. of the author's earlier work on reuse technology maturation in the 
  8370. area of change (user or technology-driven) and its implications.
  8371.  
  8372. Dr. Karakostas has been developing industry specific architectures 
  8373. for the finance and banking industry with the purpose of exploiting 
  8374. such architectures in tasks such as business redesign, systems 
  8375. evolution and rapid application development.
  8376.  
  8377. 2   Position
  8378. Today there is probably only one characteristic shared by all 
  8379. technological domains, namely change. Large investments together 
  8380. with advances in Research and Development result in products and 
  8381. technologies becoming obsolete at an ever increasing pace. Despite 
  8382. this the paradigm of domain specific software architectures (DSSA) 
  8383. advocates reusable and long-lived designs which must withstand the 
  8384. volatility of their constituting technologies. An obvious criterion for 
  8385. establishing the suitability of a domain for developing a "change 
  8386. withstanding" architecture is the stability of the technologies 
  8387. employed in it.  However this is not a trivial task since domains do 
  8388. not usually contain single or simple technologies but complexes of 
  8389. (interacting) technologies. Moreover as it will be explained in Section 
  8390. 2.1.3 there are many different types of technological changes; some 
  8391. of them, although affecting individual components, may have no 
  8392. impact on the overall stability of the domain. Additionally, change in 
  8393. a technology is not always entirely unpredictable. With the exception 
  8394. of radical (breakthrough) types of technological change it is 
  8395. sometimes possible to accommodate change in one of the domains 
  8396. constituent technologies by evolving (transforming) the domain 
  8397. architecture.
  8398.  
  8399. In conclusion, we propose that any candidate domain for reuse 
  8400. should be examined from the perspective of the set (complex) of 
  8401. technologies of which it is composed, and the relationship between 
  8402. them and a suitable architecture defined. In so doing a more fine 
  8403. grained indication of a domain's stability from the perspective of its 
  8404. component technologies can be ascertained. This information can be 
  8405. used to gauge the suitability of the domain for reuse against certain 
  8406. reuse strategies, or it can be used to monitor or isolate areas of 
  8407. instability, for example by standardisation constraints. Dependent 
  8408. upon the stability of the technology, forecasting techniques may be 
  8409. applied to facilitate the creation of robust, or extensible, components. 
  8410. It could also be possible to measure the impact of change on the 
  8411. architecture from either new problems given by the environment or 
  8412. scenarios for domain improvement to increase market share, for 
  8413. example. 
  8414.  
  8415. In the following sections an overview of technology theory is 
  8416. presented.
  8417. 2.1    Technology And Its Relationship To Domains
  8418. A technology is defined as the set of solution-oriented knowledge 
  8419. concerned with solving practical problems. It may be embodied in 
  8420. products and processes, or hardware; it may be in the form of a 
  8421. technique. [2] suggests that since individual technologies typically 
  8422. serve little purpose on their own they may be combined to form a 
  8423. technological complex, a new technological area representing a 
  8424. service or an end-product. Complexes tend to be relatively long lived 
  8425. and will only change if the refinement or replacement of their 
  8426. constituent technologies causes a change in the relationship between 
  8427. them. Systems are described in this context as the highest level of 
  8428. technological organisation and are characterised as wide ranging in 
  8429. space as well as long lived in time. In addition, [3] describes a 
  8430. correlation between the technical features of a product and the 
  8431. service characteristics it displays. They identify similarities between 
  8432. this pattern of mapping and the concept of design. Using these ideas 
  8433. a domain may be conceived as a layered architecture of technologies 
  8434. where there is a mapping relationship between the service 
  8435. characteristics of the domain and the technologies of which it is 
  8436. composed.
  8437.  
  8438. 2.2   Technological Development And Technological Discontinuities
  8439.  
  8440. The process of technological development is composed of innovations, 
  8441. many of which are minor improvements on, or adaptations to, 
  8442. preceding innovations. An innovation will occur if it serves to 
  8443. increase the existing performance level or offers an equal level of 
  8444. performance but at a lower cost [4]. As a technology matures so the 
  8445. emphasis will move towards cost reduction. Technological 
  8446. development can be understood either in terms of a lifecycle [5] or 
  8447. by technological discontinuities [6], we describe the latter, figure 1. 
  8448. Technological Development.
  8449.  
  8450.         Era of Ferment                Era of Incremental 
  8451. Change
  8452.         - Design Competition                - Elaboration of 
  8453. Dominant
  8454.         - Substitution                     Design
  8455. ____|_____________________________|_________________________|__
  8456. ___Time 
  8457. Technological             Dominant            Technological
  8458. Discontinuity 1            Design 1            Discontinuity 2
  8459.  
  8460. Figure 1. Technological Development (from [6])
  8461.  
  8462. Technologies emerge as the result of a discontinuity when either an 
  8463. existing technological paradigm is no longer able to address "needs-
  8464. driven" requirements, or a breakthrough technological innovation 
  8465. opens up a new seam of technical possibilities, a "technology push". 
  8466. The initial phase of the lifecycle is characterised by a period of 
  8467. ferment in which there is a rapid advance in the technology linked to 
  8468. a high number of competing designs in the paradigm. Towards the 
  8469. end of this phase the main characteristics of the dominant design 
  8470. begin to emerge. A dominant design [5], also referred to as a 
  8471. technological paradigm [7], is a single architecture that establishes 
  8472. dominance over competing solutions in a class and has powerful 
  8473. exclusion effects over which problems are possible and worth doing. 
  8474. Thenceforth future evolution of the technology consists of cumulative 
  8475. improvements where variation takes the form of elaborating the 
  8476. retained dominant design. Although a paradigm is known by all 
  8477. industry participants the technological directions which are pursued 
  8478. within it, technological trajectories [4], are specific to the 
  8479. organisation. The position of a product on a technology trajectory can 
  8480. be said to identify its market position vis-ê-vis its competitors.
  8481.  
  8482. 2.3  Factors Which Precipitate Change And Their Impact
  8483.  
  8484. There are several different kinds of problems which force change 
  8485. and technological progress [2]. They are classified using [8], [9] and 
  8486. [10] to be:
  8487. 1. incremental: cumulative improvements to an existing dominant 
  8488. design
  8489. 2. micro-radical: these are changes which both disrupt and continue a 
  8490. dominant design. There are 2 types:
  8491. a. modular: caused by the functional failure of an existing technology, 
  8492. whilst not affecting the relationship between the technologies 
  8493. themselves        
  8494. b. architectural: caused by imbalances between related technologies, 
  8495. though not affecting the existent design of the technologies 
  8496. themselves
  8497. 3. radical: occur rarely and are the result of a problem given by the 
  8498. environment which is not yet solved by any technology.
  8499.  
  8500.  
  8501. 
  8502.  
  8503. Figure 2. A Classification of Technological Progress Types, adapted 
  8504. from [10].
  8505.  
  8506. 3   Comparison
  8507. We understand that the DSSA approach is an attempt, by 
  8508. standardisation of requirements, to evolve and promote a dominant 
  8509. design for a particular industry. To do so they have described two 
  8510. refinement architectures. Structure preserving architectures based 
  8511. on an object oriented layered model, are instantiated by refinement 
  8512. of detail corresponding to product variation within the domain. 
  8513. However, their definition of refinement and its relationship to 
  8514. incremental, modular, and architectural innovation is not clear. A 
  8515. second type of architecture defined is transformational, 
  8516. transformational architectures are said to be both elaborated at the 
  8517. same time as they are restructured and as such we suggest they are 
  8518. the result of a radical innovation. Such architectures are not 
  8519. supported by DSSA. Whilst architectures as layers of technology can 
  8520. facilitate: incremental, modular, and architectural innovation, apart 
  8521. from recognising a radical discontinuity they are unable to support it. 
  8522. We qualify this, however, by saying that a discontinuity may 
  8523. combine some of the technologies employed in the displaced 
  8524. paradigm.
  8525.  
  8526. We prefer, at this stage, not to further refine the comparisons we 
  8527. have made since this would involve guesses on our part. Our reason 
  8528. for attending the workshop is to both clarify our understanding of 
  8529. DSSA and its relationship to architectures as layers of technology and 
  8530. for the purpose of feedback from other practitioners and researchers 
  8531. in the field.
  8532.  
  8533. References
  8534. [1] Hayes-Roth, F., "Architectural-Based Acquisition and Development 
  8535. of Software: Guidelines and Recommendations from the ARPA 
  8536. Domain Specific Software Architecture (DSSA) Program, Teknowledge 
  8537. Federal Systems, Version 2, October 20 1994.
  8538. [2] Laudan, R., "The Nature of Technological Knowledge: Are Models 
  8539. of Scientific Change relevant", In R. Laudan, ED, Cognitive Change in 
  8540. Technology and Science.
  8541. [3] Saviotti, P.P., Metcalfe, J.S., "A Theoretical Approach to the 
  8542. Construction of Technological Output Indicators", Research Policy, 
  8543. 13(3), (1984), 141-51.
  8544. [4] Biondi, L., Galli, R., "Technological Trajectories", FUTURES, 
  8545. July/August 1992, 580-592.
  8546. [5] Twiss, B., "Managing Technological Innovation", 4th Edition, 
  8547. Pitman Publishing, 1993.
  8548. [6] Anderson, R., Tushman, M.L., "Technological Discontinuities and 
  8549. Dominant Designs: A Cyclical Model of Technological Change", 
  8550. Administrative Science Quarterly, 35 (1990), 604-633.
  8551. [7] Dosi, G, "Technological Paradigms and Technological trajectories", 
  8552. Research Policy, 11, (1982), 147-162.
  8553. [8] Albernathy, J.M., Utterback, J.M, "Patterns of Industrial 
  8554. Innovation", Technology Review, 50, (June-July 1978), 41-47.
  8555. [9] Durand, T., "Dual technological trees: Assessing the intensity and 
  8556. strategic significance of technological change", Research Policy, 21, 
  8557. (1992), 361-380.
  8558. [10] Henderson, R.M., Clark, K.B., "Architectural Innovation: The 
  8559. Reconfiguration of Existing Product Technologies and the Failure of 
  8560. Existing Firms", Administrative Science Quarterly, 35, (1990), 9-30.
  8561.  
  8562. Bibliography
  8563.  
  8564. Sadie Legard is an EPSRC-CASE PhD student in the Department of 
  8565. Computation at the University of Manchester, Institute of Science and 
  8566. Technology (UMIST), where she developing a paradigm for software 
  8567. development based on Enterprise-Wide Software Reuse. Sadie has 
  8568. worked on several collaborative projects with British 
  8569. Telecommunications PLC. in the areas of domain analysis and re-
  8570. engineering, and is a member of the SER-ESPRIT project for reuse 
  8571. technology dissemination in Europe. Her research interests include, 
  8572. but are not limited to, software reuse, software architectures, 
  8573. business and software re-engineering, the strategic role of IT, 
  8574. knowledge acquisition for organisational learning, and technological 
  8575. evolution. 
  8576.  
  8577. Dr. Karakostas is a lecturer in the Department of Computation, 
  8578. UMIST. He has participated in many UK and European R&D projects 
  8579. on software reuse and evolution. He is currently the technical 
  8580. manager of a European (ESPRIT) project on software evolution in 
  8581. banks (EUROBANQUET) and also participates in a program for reuse 
  8582. technology dissemination in Europe (SER). His research interests 
  8583. include object oriented systems modelling, business and software re-
  8584. engineering and the application of AI to software engineering. 
  8585.  
  8586. Applying Cluster Analysis to Software Reuse
  8587.  
  8588. Wayne C. Lim
  8589.  
  8590. 1535 Fairway GreenCircle
  8591. San Jose, CA 95131
  8592. Email: lim@source.asset.com
  8593.  
  8594. Abstract
  8595.  
  8596. Cluster analysis, a method of classifying objects based upon specific 
  8597. features, has many potential benefits in software reuse. At the 
  8598. Manufacturing Productivity section of Hewlett-Packard, we applied such 
  8599. an analysis to a set of reusable assets and identified "include file" 
  8600. configurations that would minimize the maintenance effort of such files. 
  8601. In this paper,we define cluster analysis within the context of group 
  8602. technology and present an example of how this analysis was applied and 
  8603. utilized.
  8604.  
  8605. Keywords: cluster analysis, group technology, manufacturing concepts, 
  8606. domain analysis.
  8607.  
  8608. Workshop Goals: share perspectives on managerial and organizational 
  8609. aspects of reuse; profile interesting reuse academic and practitioner 
  8610. experiences in upcoming book.
  8611.  
  8612. Working Groups: Reuse management,organization and economics; Reuse 
  8613. process models; Reuse maturity models; Reuse Metrics; Reuse Strategic 
  8614. Planning; Reuse Assessments.
  8615.  
  8616. 1   Background
  8617.  
  8618. The purpose of group technology in manufacturing is to utilize 
  8619. economies of scope by identifying and exploiting the similarities in the 
  8620. partsto be manufactured and the sequence of machines that are 
  8621. necessary for the processing of those parts.  Parts are classified into 
  8622. families on the basis of characteristics such as size and geometry. 
  8623. Machines which are used to process the part families are situated in 
  8624. proximity to each other in "machine cells".
  8625.  
  8626. Wemmerlov and Hyer [1] highlight three ways that group technology 
  8627. benefits are achieved:
  8628.  
  8629. By performing similar activities together, less time is wasted in changing 
  8630. from one unrelated activity to the next
  8631.  
  8632. By standardizing closely related items or activities, unnecessary 
  8633. duplication of effort is avoided
  8634.  
  8635. By efficiently storing and retrieving information related to recurring 
  8636. problems, search time is reduced
  8637.  
  8638. 2   Position
  8639.  
  8640. One of the means for family identification in group technology is cluster 
  8641. analysis. Cluster analysis is "concerned with grouping of objects into 
  8642. homogeneous clusters (groups) based on the object features. [2]" Cluster 
  8643. analysis was applied to software reuse at the Manufacturing Productivity 
  8644. (MP) section of the Software Technology Division of HP to solve a 
  8645. problem concerning the maintenance of their reusable assets, called 
  8646. "utilities".
  8647.  
  8648. The MP section produces large application software for manufacturing 
  8649. resource planning. The MP reuse program started in 1983 and continues 
  8650. to the present. The original motivation for pursuing reuse was to 
  8651. increase the productivity of the engineers to meet critical milestones [3]. 
  8652. MP has since discovered that reuse also eases the maintenance burden 
  8653. and supports product enhancement. Reuse was practised in the form of 
  8654. reusable assets (application/architecture utilities and shared files) and 
  8655. generated code. Total code size for the 685 reusable assets was 55 
  8656. Thousand lines of Non-Commented Source Statements (KNCSS).The 
  8657. reusable assets were written in Pascal and SPL, the Systems Programming 
  8658. Language for the HP3000 Computer System. The development and target 
  8659. operating system was the Multi-Programming Environment (MPEXL).
  8660.  
  8661. The utilities at MP are many (685 utilities) and small in size (lines of 
  8662. code range from 14 to 619 Non-Commented Source Statements). In 
  8663. manufacturing systems software developed by MP, a transaction 
  8664. constitutes a cohesive set of activities used for inventory management 
  8665. and is a subunit of the manufacturing systems software.
  8666.  
  8667. Within each transaction,c alls are made to the appropriate utilities as 
  8668. required which are contained in an include file specific to the 
  8669. transaction. However, this has led to a proliferation of different include 
  8670. files since each transaction isusually created by a different engineer. 
  8671. When a utility is modified, all the include files which contain this utility 
  8672. need to be identified and updated with the new version. This has 
  8673. resulted in a tremendous amount of effort.
  8674.  
  8675. In an effort to reduce the potential amount of effort required for future 
  8676. updates, an analysis using cluster analysis was conducted on the use of 
  8677. utilities by transactions.
  8678.  
  8679. First, a 13 x 11 matrix was created by designating the rows as 
  8680. transactions and the columns as utilities. (Figure 1). A"1" indicates that 
  8681. a transaction makes a call to the particular utility, and a "0" indicates 
  8682. that a transaction does not make a call to the particular utility.
  8683.  
  8684. Figure 1: Input Matrix: (Rows are transactions; columns are reusable 
  8685. assets)
  8686.  
  8687. 1 0 1 0 0 0 0 0 0 0 0
  8688. 0 0 1 0 0 0 0 1 0 0 1
  8689. 0 0 1 0 0 0 0 1 0 0 0
  8690. 0 0 0 0 0 0 0 1 0 0 1
  8691. 0 0 1 0 0 0 0 0 0 0 1
  8692. 0 0 1 1 0 0 0 0 0 0 1
  8693. 0 0 1 0 0 0 0 0 0 0 0
  8694. 0 1 0 0 1 0 1 0 0 0 1
  8695. 0 1 0 0 1 0 1 0 0 0 0
  8696. 0 1 0 0 1 1 1 0 1 1 1
  8697. 0 1 0 1 1 1 1 0 1 1 1
  8698. 0 1 0 1 0 0 1 0 0 0 1
  8699. 0 1 0 1 1 0 1 0 0 0 1
  8700.  
  8701. Columns (Reusable assets):
  8702.  
  8703. 1=Adj-summary-qty
  8704. 2=Autobofill
  8705. 3=check'store'um
  8706. 4=invalid-fld-check
  8707. 5=potency-inv-qty
  8708. 6=prep'for'pcm
  8709. 7=print-document
  8710. 8=report-neg-qty
  8711. 9=send'to'pcm
  8712. 10=update'pcm'buff
  8713. 11=write-stock-file
  8714.  
  8715. Rows (Transactions):
  8716.  
  8717. 1=adjhand
  8718. 2=issalloc
  8719. 3=isseu
  8720. 4=issord
  8721. 5=issunp
  8722. 6=issbo
  8723. 7=move
  8724. 8=recinloc
  8725. 9=recinsp
  8726. 10=recwo
  8727. 11=recrun
  8728. 12=recpopt
  8729. 13=recpoit
  8730.  
  8731. The matrix is then used as an input file to a clustering algorithm 
  8732. provided by Dr. Andrew Kusiak of the University of Iowa.
  8733.  
  8734. The output solution, as shown in figure 2, reorders the reusable assets 
  8735. into "clusters". The results suggest that we place utilities (depicted by 
  8736. the columns) 1, 3 and 8 into a single include file for transactions 1 to 7.
  8737.  
  8738. Utilities 2,5,6,7,9,10 should be placed into another include file for 
  8739. transactions 8,9,10,11,12,and 13.
  8740.  
  8741. Utilities 4 and 11 can either be placed in both include files or a separate 
  8742. one may be created for them.
  8743.  
  8744. Figure 2: Cluster Analysis Solution: (Rows are transactions; columns are 
  8745. reusable assets)
  8746.  
  8747.                     1 1
  8748.       1 3 8 2 56 7 9 0 1 4
  8749. Row 1 1 1
  8750.     2   11             1
  8751.     3   11
  8752.     4    1            1
  8753.     5   1             1
  8754.     6   1             1 1
  8755.     7   1
  8756.     8      1 1   1     1
  8757.     9      1 1   1
  8758.    10      1 1 1 1 1 1 1
  8759.    11      1 1 1 1 1 1 1 1
  8760.    12      1     1     1 1
  8761.    13      1 1   1     1 1
  8762.  
  8763. Benefits of Cluster Analysis for Reuse Cluster analysis is useful in the 
  8764. creation of include files with specified utilities that would reduce the 
  8765. effort required to maintain the files. In our example with the MP section, 
  8766. prior to cluster analysis, thirteen individual include files were 
  8767. maintained; one for each transaction. By utilizing cluster analysis, we 
  8768. were able to identify the commonalities and differences within the 
  8769. thirteen include files and specify a core set of two include files. By 
  8770. reengineering the thirteen include files into two, the number of files to 
  8771. maintain can be reduced by 85
  8772.  
  8773. Cluster analysis also has further applications in software reuse. It may be 
  8774. used to identify"families of systems" i.e. those that share the same 
  8775. features. For example, we can apply cluster analysis to a matrix where 
  8776. the columns depict the features of software systems/products and the 
  8777. rows,the software systems/products. The analysis would cluster the 
  8778. features to the software systems/products, thereby helping to identify 
  8779. families of systems which share common features. This information may
  8780. be useful in determining specific reusable assets to create.
  8781.  
  8782. 3   Comparison
  8783.  
  8784. Some researchers have utilized cluster analysis for the purpose of reuse 
  8785. classification. For example, Maarek and Kaiser [4] describe the useof 
  8786. conceptual clustering to classify software components. Taxonomies of 
  8787. software components are created "by using a classification scheme based 
  8788. on conceptual clustering,where the physical closeness of components 
  8789. mirrors their conceptual similarity." The objects are gathered into 
  8790. clusters where they are more 'similar' to each other than to the members 
  8791. of other clusters.
  8792.  
  8793. 4   Acknowledgements
  8794.  
  8795. My acknowledgements to Dr. Andrew Kusiak, Dr. Sylvia Kwan and Alvina 
  8796. Nishimoto for their help and input to this paper.
  8797.  
  8798. References
  8799.  
  8800. [1]U. Wemmerlov and N. Hyer, Chapter 17, Handbook of Industrial 
  8801. Engineering. John Wiley & Sons,1992.
  8802.  
  8803. [2]A. Kusiak and W. Chow, " Decomposition of Manufacturing Systems," 
  8804. IEEE Journal of Robotics and Automation, vol. 4, October 1988.
  8805.  
  8806. [3]A. Nishimoto,"Evolution of a Reuse Program in a Maintenance 
  8807. Environment," in 2nd Irvine Software Symposium, March 1992.
  8808.  
  8809. [4]Y. Maarek and G. Kaiser,"Using Conceptual Clustering for classifying 
  8810. reusable Ada code," in Using Ada: ACM SIGAda International Conference, 
  8811. ACM Press, New York, December 1987.
  8812.  
  8813. 5   Biography
  8814.  
  8815. Wayne C. Lim specializes and consults in the strategic planning, 
  8816. economic, organizational, and metric issues of software reuse. His 
  8817. involvement in software reuse began in 1983 as a member of the Ford 
  8818. Aerospace Reuse Group researching reuse library issues. Mr. Lim 
  8819. completed his MBA degree at Harvard University, graduate engineering 
  8820. coursework at Stanford University, and an undergraduate degree in 
  8821. mathematics from Pomona College. He is the author of a forthcoming 
  8822. book, Managing Software Reuse, to be published by Prentice-Hall.
  8823. Trade-off between Flexibility and Efficiency in Recombining
  8824.  
  8825. Reusable Components
  8826.  
  8827. Beat Liver and Dean T. Allemang
  8828.  
  8829. Research & Development
  8830. Swiss Telecom PTT
  8831. 3000 Berne 29, Switzerland
  8832. Tel. +41 31 338 f 50 64 j 44 72 g
  8833. Email f liver j allemang g@vptt.ch
  8834.  
  8835. Abstract
  8836.  
  8837. We outline the framework ZD for constructing libraries of reusable 
  8838. software components. The approach is a formal one, in that the 
  8839. semantics of the representation is based on proofs of program 
  8840. correctness. The correctness of combinations of library components is the 
  8841. central issue of this paper. Modular correctness proving approaches exist 
  8842. and are computationally optimal. Our position is that these approaches 
  8843. are too inflexible to configure novel combinations using from library 
  8844. components. In the ZD framework, we resolve this problem with a 
  8845. method called proviso proving and propagating.
  8846.  
  8847. Keywords: Reuse, formal verification, modular design and configuration
  8848.  
  8849. Workshop Goals: Learning; networking; advance state of theory of 
  8850. reusable position papers.
  8851.  
  8852. WorkingGroups: Reuse and formal methods, Reusable component 
  8853. certification, Reuse and OO methods and technology
  8854.  
  8855. 1  Background
  8856.  
  8857. Dean Allemang began his contribution to software reuse with his 
  8858. dissertation in 1990. Since that time, he and Beat Liver at Swiss Telecom 
  8859. PTT Research and Development have extended the method described 
  8860. there to include support for software configuration,diagnosis, debugging 
  8861. and repair [1, 2]. This work will culminate in Mr. Liver's dissertation, 
  8862. whichwill include an implementation of the software modeling language 
  8863. ZD.
  8864.  
  8865. 2  Position
  8866.  
  8867. For configuration and design, it is very important to formally reason 
  8868. about the correctness of recombinations of reusable components from a 
  8869. library of such components. Note that these components are not 
  8870. programs themselves, but they are functional models of programs, that is 
  8871. descriptions of the function of programs.
  8872.  
  8873. In addition to the correctness of combinations,the computational 
  8874. efficiency of proving the correctness of combinations as well as the 
  8875. flexibility to recombine components is important. Our position is that:
  8876.  
  8877. Combining local certifiable components is computationally optimal, but 
  8878. at the cost of flexibility. This flexibility can be achieved by paying with 
  8879. computational effort (theorem proving, in the worst case) at 
  8880. configuration time.
  8881.  
  8882. We are implementing our representation (described in the next section), 
  8883. in which the trade-off between flexibility and design-time computational 
  8884. expense can be made, so that this trade-off can be more systematically 
  8885. studied, in the context of a growing library of reusable components.
  8886.  
  8887. 3  Functional Representation ZD
  8888.  
  8889. Our functional representation, called ZD (that stands for 
  8890. Zweckdarstellung and is pronounced`Zeddy') is a further development of 
  8891. Allemang's version [3] of FR [4].
  8892.  
  8893. A function consists of a specification, an implementation and 
  8894. requirements.
  8895.  
  8896. A function specification is defined as an input and output partial state 
  8897. of the system being described, a partial state called additional result, 
  8898. and a condition called the proviso. A function achieves the output 
  8899. partial state (and the additional result), if and only if the proviso holds 
  8900. in the context of use. For example, a function that moves the content of 
  8901. a variable ?loc1 to the variable ?loc2 is defined by the function move of 
  8902. figure 1. Using Hoare semantics [5],move's input state is P(?loc1) and its 
  8903. output state P(?loc2), if the proviso empty(?loc2) is satisfied. In addition, 
  8904. move achieves empty(?loc1).
  8905.  
  8906. The input and output state form the index of library functions. Both 
  8907. partial states are described in the same state description language. A 
  8908. state description language (SDL) provides the terms for partial state 
  8909. descriptions, as well as the semantics of the terms. Hence, SDLs are 
  8910. mathematical theories (or combinations of mathematical theories),like 
  8911. STRING, INTEGER, and so on, which are used in model-oriented software 
  8912. specification approaches (Resolve [6], Larch shared language [7]). In this 
  8913. paper, the formal properties of SDLs are not studied, because they are 
  8914. independent of ZD itself. A more detailed discussion of SDLs is given in 
  8915. [3, 8].
  8916.  
  8917.                   DevSpecRecord
  8918.                    ParametersP;?loc1; ?loc2
  8919.                    FunSpecmove
  8920.                     If     P(?loc1)
  8921.                     ToMake P(?loc2)
  8922.                     Providedempty(?loc2)
  8923.                     AddRes empty(?loc1)
  8924.  
  8925.                   DevImpAssignment-Record
  8926.                    Rep(x) : x
  8927.                    Implementationmove
  8928.  
  8929.                               P(?loc1)
  8930.  
  8931.                     UsingFunction
  8932.                      "?loc2:=?loc1"
  8933.  
  8934.                                 -?
  8935.                          P(?loc2) ^ empty(?loc1)
  8936.  
  8937.                       Figure 1: The Record.
  8938.  
  8939. The main reason for the separation between the additional result and 
  8940. output state is that they might be described by different SDLs. In our 
  8941. example,the concept empty() is defined by the function move, i.e., a 
  8942. variable is empty if its value is moved to some other location. This 
  8943. function is applicable to data records that are indestructible values.  The 
  8944. function move is a reusable representation of this intention, rather than 
  8945. any particular program code. Therefore, it is possible to represent in ZD 
  8946. information that is usually represented in documentation, wishful 
  8947. variable names, or not at all [3, 8].
  8948.  
  8949. A function implementation defines how its function specification is 
  8950. achieved by a combination of other functions. This description takes the 
  8951. form of a state-transition graph, where the states are partial state 
  8952. descriptions. A transition is labeled with the function that achieves this 
  8953. transition. This function is not necessarily known at implementation 
  8954. construction time; the function is really a function requirement. A 
  8955. function requirement is a specification of the function required by the 
  8956. implementation. In contrast to a function specification, a requirement 
  8957. does not have a proviso or an additional result. In figure 1,the 
  8958. implementation of move is a state-transition graph with a single 
  8959. transition. To be precise, ``?loc2 := ?loc1'' should be a function name 
  8960. that refers to the semantic description of an assignment operation (in 
  8961. Hoare semantics).
  8962.  
  8963. A generic device is a reusable component in ZD and consists of a device 
  8964. specification, one or more device implementations, and device 
  8965. requirements. A device specification specifies the function of the device. 
  8966. A device implementation describes how this function is achieved using 
  8967. services provided by other devices. This description requires functions of 
  8968. otherdevices. The required services of another device are specified as a 
  8969. device requirement.
  8970.  
  8971. A generic device specification consistsof a set of parameters and a set of 
  8972. functions. An example is the DevSpec Record in figure 1. Devices that 
  8973. maintain state information, like stacks,queues, and so on, also have a 
  8974. persistent abstract state.
  8975.  
  8976. A generic device implementation consists of a representation function 
  8977. and function implementations for the function specified in the device 
  8978. specification. A representation function (Rep) [9] formalizes the change 
  8979. of abstraction levels and, hence, SDLs.
  8980.  
  8981. The entities specification, implementation and requirement are common 
  8982. in component-oriented reuse approaches, because they make it possible 
  8983. to prove the correctness of a component at its construction time. In the 
  8984. next section, we show how ZD enables one to trade off configuration 
  8985. flexibility against computational complexity.
  8986.  
  8987. 4  Comparison: Recombining Components
  8988.  
  8989. A major desiderata for a recombination method is the verification of the 
  8990. correctness of a combination of software components. For this purpose, 
  8991. we would like to to associate with a component its correctness proof, so 
  8992. that software components as well as proofs would be reusable. The 
  8993. associated correctness proof is incomplete, because the proofs associated 
  8994. with subcomponents are not known at the construction time of the 
  8995. component. Simply associating these partial proofs to their 
  8996. corresponding components is not feasible, because proving 
  8997. recombinations using these partial proofs incurs, in general, the cost of 
  8998. recursive proof completion, and, hence, it is computationally 
  8999. intractable.
  9000.  
  9001. In the sequel, we present and compare two more elaborate association 
  9002. approaches  together with their implications for reuse, in particular with 
  9003. respect to flexibility and efficiency. Both approaches are supported by ZD 
  9004. and, hence, can be combined to achieve a better overall recombination 
  9005. method.
  9006.  
  9007. A proof can be modularized,if one requires that the components cannot 
  9008. interfere with one another [10,11, 6]. To be more precise, a module is 
  9009. local certifiable if and only if the correctness of a module can be verified 
  9010. solely on the basis of its specification, its implementation and the 
  9011. specification of the modules used in its implementation.
  9012.  
  9013. Local certifiability requires that the operations of the module (the 
  9014. interface) be leak-free abstractions (of the realization of the module). 
  9015. This condition is only satisfiable for modules that satisfy additional 
  9016. conditions [6]. Consequently, local certifiability restricts the granularity 
  9017. of reusable components to modules. We call devices that represent local 
  9018. certifiable modules local certifiable devices [8].
  9019.  
  9020. The computational complexity of proving the correctness of 
  9021. recombinations of local certifiable devices is optimal, because the 
  9022. correctness proof is just the combination of the correctness proofs 
  9023. associated with the local certifiable devices. But, there exists a trade-off 
  9024. between optimal efficiency of correctness proving and the flexibility to 
  9025. recombine devices. In [8],we show that it is not feasible to build libraries 
  9026. of powerful local certifiable generic devices. Local certifiability requires 
  9027. the designer to anticipate, specify, and prove all possible behaviors of 
  9028. such a component in advance. Consequently,the flexibility required to 
  9029. produce novel configurations of library components is not supported by 
  9030. local certifiable components. This missing flexibility is caused because 
  9031. local certifiability eliminates not only interferences that result from 
  9032. leaky abstractions but also interactions that are essential for achieving 
  9033. some functions.
  9034.  
  9035. ZD supports contextualized devices proposed by Allemang [3]. 
  9036. Contextualized devices are devices that model interactions by provisos in 
  9037. a reusable way. An example is the Record given infigure 1.
  9038.  
  9039. In contrast to local certifiable devices, contextualized devices enable one 
  9040. to configure existing devices in novel ways to achieve goals not foreseen 
  9041. at the time of their construction [8].This is possible, because, first, each 
  9042. device specifies (by provisos and additional results) under what 
  9043. conditions an interaction is acceptable but not the interaction itself; 
  9044. and, second, the correctness of interactions is verifiable by proviso 
  9045. proving and propagating.
  9046.  
  9047. This flexibility has a price. First, proviso propagating and proving is 
  9048. necessary for handling interactions. This is more expensive 
  9049. computationally than simply comparing function specifications, but the 
  9050. successful modularization of large software indicates that such 
  9051. interactions are typically local. Second, a contextualized device has to be 
  9052. a `grey box', that is, a device implementation has to be provided that is 
  9053. sufficient for proving provisos. In contrast, a local certifiable device has 
  9054. to reveal only its requirements, so that it can be a black box. Naturally, 
  9055. black boxes are preferable in a commercial setting.
  9056.  
  9057. Fortunately, the two granularites are complementary and both kinds of 
  9058. devices can be mixed. In the case of local certifiable devices, proviso 
  9059. proving and propagating is reduced to showing that the proviso of a 
  9060. service is implied by the initial state of therequirement.
  9061.  
  9062. References
  9063.  
  9064.  [1]B. Liver,"Repair of communication systems by working around 
  9065. failures,"Journal of Applied Artificial Intelligence, vol. 9, no. 1, pp. 81-99, 
  9066. 1995. Special Issue on Function-Based Reasoning Part2.
  9067.  
  9068.  [2]B. Liver,"Modeling software systems for diagnosis,"in Working Notes of 
  9069. the 5th Int. Workshop on Principles of Diagnosis, (New Paltz, NY), 1994.
  9070.  
  9071.  [3]D. T. Allemang, Understanding Programs as Devices. PhD thesis, The 
  9072. Ohio State University, 1990.
  9073.  
  9074.  [4]Sembugamoorthy, V. and Chandrasekaran, B., "Functional 
  9075. Representation of Devices and Compilation of Diagnositc Problem-Solving 
  9076. Systems," in Experience, Memory and Reasoning (J. Kolodner and C. 
  9077. Riesbeck, eds.), pp. 47-73, Lawrence Erlbaum Associates, 1986.
  9078.  
  9079.  [5]C. Hoare, "An axiomatic basis for computer programming," 
  9080. Communications ACM , vol. 12, no. 10, pp. 576-580,583, 1969.
  9081.  
  9082.  [6]J. Hollingsworth, Software Component Design-for-Reuse: A Language 
  9083. Independent Discipline Applied to Ada. PhD thesis, Dept. of Computer 
  9084. and Information Science, The Ohio State University, Columbus, OH, 1992.
  9085.  
  9086.  [7]J. V. Guttag and J. J. Horning,Larch: Languages and Tools for Formal 
  9087. Specification. Texts and Monographs in Computer Science, Berlin: 
  9088. Springer, 1993.
  9089.  
  9090.  [8]B. Liver and D. T. Allemang,"A functional representation for software 
  9091. reuse and design,"Software Engineering and Knowledge Engineering, vol. 
  9092. Special Issue on Evolutionary Approaches to Software Engineering, 1995. 
  9093. in press.
  9094.  
  9095.  [9]W. Wulf, R. London, and M. Shaw, "Abstraction and verification in 
  9096. alphard:  Introduction to language and methodology," in ALPHARD: 
  9097. Form and Content (M. Shaw, ed.), Computer Science Monograph, pp. 15-
  9098. 60, Springer, 1981.
  9099.  
  9100. [10]J. Krone, The Role of Verification in Software Reusability. PhD thesis, 
  9101. Dept. of Computer and Information Science, The Ohio State University, 
  9102. Columbus, OH, 1988.
  9103.  
  9104. [11]G. W. Ernst, R. J. Hookway, J. A. Menegay, and W. F. Ogden, 
  9105. "Modular verification of Ada generics," Computer Languages, vol. 16, no. 
  9106. 3/4, pp. 259-280, 1991.
  9107.  
  9108. 5  Biographies
  9109.  
  9110. Beat Liver received the diploma in Informatics from the Swiss Federal 
  9111. Institute of Technology (ETH) in Zurichin 1989 with a specialization in 
  9112. communication networks, distributed systems and computer-aided tools 
  9113. for VLSI. He joined the research and development directorate of the Swiss 
  9114. Telecom in 1989. He is pursuing a Ph.D. on the topic of functional 
  9115. models for managing communication system software. His main area of 
  9116. interests are computer-aided tools for telecommunication network 
  9117. management. He is also a member of the ACM, and AAAI.
  9118.  
  9119. Dean Allemang received his B.S from the Ohio State University, and a 
  9120. M.Sc. from the University of Cambridge. He completed his Ph.D. at Ohio 
  9121. State in 1990 on the topic of using Artificial Intelligence modeling 
  9122. techniques to model software. Since that time, he has pursued this and 
  9123. other knowledge modeling work in a series of postdoctoral appointments 
  9124. in Switzerland. He is currently working at Swiss Telecom PTT research 
  9125. and development on modeling telecommunications applications.
  9126. Domain Engineering - Varying Rationales & Approaches
  9127.  
  9128. Fred Maymir-Ducharme, PhD
  9129.  
  9130. USAF CARDS / Loral Defense Systems
  9131. 12010 Sunrise Valley Drive, Reston VA 22091
  9132. Tel: (703)620-7559
  9133. Fax: (703) 620-7916
  9134. Email: fredmd@cards.com
  9135.  
  9136. Abstract
  9137.  
  9138. Systematic reuse is not for everyone. The long term benefits of a 
  9139. thorough domain analysis that captures the requirements of previous, as 
  9140. well as future systems within the domain - and the development of a 
  9141. flexible architecture, engineered to maximize reusable components and 
  9142. support the application-specific variances of the domain - may not 
  9143. mean much to an organization only tasked with developing a single 
  9144. system for the government. It's generally far more economical for a 
  9145. contractor, for instance, to instead take the opportunistic reuse 
  9146. approach and focus on the short-term gains, minimizing the reuse costs 
  9147. to only those directly applicable (beneficial) to the specific system being 
  9148. developed. There are two major strategies to domain engineering: 
  9149. systematic and opportunistic.  These strategies vary in both costs and 
  9150. benefits; hence they appeal to very different customers. Conflicts may 
  9151. arise in a government-contractor relationship, even when both sides 
  9152. agree on the benefits of reuse and commit themselves to implementing 
  9153. reuse - because of these conflicting strategies. The intent of this position 
  9154. paper is not to evaluate the two and convince the reader that one is 
  9155. better than the other; but rather, to illustrate that the two have different 
  9156. economic justifications and are geared towards different organizational 
  9157. frames of reference. The paper also suggests combined approach, which 
  9158. attempts to find a middle ground to meet the short and long term reuse 
  9159. needs of government-contractor relationships. The results of this 
  9160. workshop can be of considerable benefit to both,the DoD and private 
  9161. industry organizations that realize the benefits of domain engineering 
  9162. but don't understand the implications of selecting one 
  9163. approach/method over another.
  9164.  
  9165. Keywords: Domain Engineering, Domain Analysis, Software Architectures, 
  9166. Reuse Method(s) Selection, Business Case Analysis for Opportunistic 
  9167. versus Systematic Reuse.
  9168.  
  9169. Workshop Goals: Identify rationales for opportunistic domain 
  9170. engineering, identify rationales for systematic domain engineering 
  9171. discuss whether some methods support one approach more than the 
  9172. other, and develop a business case analysis template for selecting either 
  9173. approach.
  9174.  
  9175. 1   Background
  9176.  
  9177. The Sustaining Base Information Systems (SBIS) program has very 
  9178. ambitious reuse goals - short-term goals for Loral Federal Systems, the 
  9179. prime contractor, and long-term goals for the US Army Sustaining Base 
  9180. Automation (SBA) program.
  9181.  
  9182. There are over seventy applications planned for development under the 
  9183. SBISprogram, and these are envisioned to fit into approximately ten 
  9184. domains. As part of a USAFComprehensive Approach to Reusable Defense 
  9185. Software (CARDS)/ SBIS Partnership, Fred M-D is leading the SBIS Domain 
  9186. Engineering Team efforts [1], using a hybrid of the ARPA/STARS 
  9187. Organization Domain Modeling (ODM) [2] and the Defense Information 
  9188. Systems, Software Reuse Program (DISA/SRP) Domain Analysis and Design 
  9189. Process (DADP)[3] methods, to realize both, short-term opportunistic 
  9190. reuse benefits and long-term systematic reuse benefits.
  9191.  
  9192. 2   Position
  9193.  
  9194. Systematic reuse is not for everyone - having a sports car doesnt help 
  9195. you get there any faster if you're stuck in rush-hour traffic. On the other 
  9196. hand, if you're in Germany and in a hurry - you're better off in a Porsche 
  9197. 911 Turbo Carrera on the Autobahn than in a Geo Metro. There are two 
  9198. major strategies to domain engineering: systematic and opportunistic. 
  9199. The long term benefits of a thorough domain analysis that captures the 
  9200. requirements of previous, as well as future systems within the domain - 
  9201. and the development of a flexible architecture, engineered to maximize 
  9202. reusable components and support the application-specific variances of 
  9203. the domain - may not mean much to an organization only tasked with 
  9204. developing a single system for the government. It's generally far more 
  9205. economical for a contractor, for instance, to instead take the 
  9206. opportunistic reuse approach and focus on the short-term gains, 
  9207. minimizing the reuse costs to only those directly applicable (beneficial) 
  9208. to the specific system being developed.
  9209.  
  9210. The two major reuse strategies - systematic and opportunistic - vary in 
  9211. both costs and benefits; hence they appeal to very different customers.  
  9212. Conflicts may arise in a government-contractor relationship, even when 
  9213. both sides agree on the benefits of reuse and commit themselves to 
  9214. implementing reuse; these may be due to conflicting reuse strategies. The 
  9215. intent of this position paper is not to evaluate the two and convince the 
  9216. reader that one is better than the other; but rather, to illustrate that the 
  9217. two have different economic justifications and are geared towards 
  9218. different organizational frames of reference. The paper suggests a 
  9219. combined approach,which attempts to find a middle ground to meet the 
  9220. short and long term reuse needs of government-contractor relationships.
  9221.  
  9222. The opportunistic approach is focused on the development of a single 
  9223. system. The major focus of the (opportunistic) domain analysis (e.g.,the 
  9224. DADP method) is to identifythe are as of greatest commonality within a 
  9225. domain, to facilitate the search and acquisition of applicable, reusable 
  9226. components. The goal is to maximize the use of existing components and 
  9227. minimize the development of new components. The next step, domain 
  9228. design and architecting, is driven by the goal of utilizing the maximum 
  9229. number of components identified during the domain analysis and found 
  9230. by searching numerous reuse libraries and repositories.
  9231.  
  9232. The resulting architecture is "bent and tweeked" and made to conform 
  9233. to the maximum number of reusable software components as possible.  
  9234. The benefits are thereby realized in short-term - maximizing the reuse of 
  9235. components can save money and reduce the development time.
  9236.  
  9237. Alternatively,the systematic approach is focused on the development of 
  9238. a family of similar systems (optimally, a product-line). Hence, the focus 
  9239. is just as much on the (context-sensitive) variances between the family of 
  9240. systems within the domain as on the commonalities. A more detailed 
  9241. domain analysis (e.g., the ODM method) may be desired, to ensure that 
  9242. the resulting domain analysis captures not only the current domain 
  9243. requirements (exemplified by associated legacy systems and the specific 
  9244. system being developed ),but also the anticipated future requirements of 
  9245. related systems. The ensuing software architecture and domain design 
  9246. are engineered to maximize the domain commonalities, and to support 
  9247. application-specific variances.
  9248.  
  9249. A development organization (e.g.,a DoD contractor) or a program 
  9250. manager (e.g., a DoD PM) may be more inclined to select the 
  9251. opportunistic domain engineering approach for purely economic reasons 
  9252. - the task is limited to the development of a single system, within a 
  9253. given schedule and budget. The incentives and rationales for applying a 
  9254. systematic domain engineering approach make more sense to an 
  9255. organization such as AT&T, which has well defined domains (e.g., 
  9256. electronic switching systems) and product lines (e.g.,5ESS and 4ESS 
  9257. "generics").An organization's business model must be considered when 
  9258. selecting the domain engineering method(s) to be applied. In cases with 
  9259. multiple organizations as stake-holders, each organization's business 
  9260. model must be considered.
  9261.  
  9262. The SBA model described in the background section is a good example 
  9263. where each organization's business model differs enough to each warrant 
  9264. a different reuse approach and method. The SBA program office stands 
  9265. to benefit from the systematic approach because of the size of the 
  9266. program (multiple domains and over seventy applications) and the 
  9267. longevity of the program (the program plans to define and develop 
  9268. future sustaining base systems to meet new needs, and to extend the SBIS 
  9269. applications developed to meet the evolving needs of the base in the 
  9270. next several decades.) Alternatively, the development organization needs 
  9271. to consider its bottom line - revenue - cost = profit. The opportunistic 
  9272. approach is more appealing to the contractor for obvious reasons,as 
  9273. cited earlier.
  9274.  
  9275. The SBIS Domain Engineering Team took several factors into 
  9276. consideration in selecting the domain engineering methods to apply on 
  9277. the SBISprogram. One of the factors considered was each stakeholder's 
  9278. business model and strategic goals. In order to resolve the conflict 
  9279. described above and attempt to present a Win/Win solution,the team 
  9280. elected to select a hybrid- method approach, integrating DADP and ODM 
  9281. methods. The resulting method was then tailored to meet the project-
  9282. specific needs (e.g., processes, environments and applications) of SBIS. 
  9283. [1]
  9284.  
  9285. The DoD Software Reuse Initiative (SRI)Software Reuse Vision and Strategy 
  9286. (SRVS) [4] recognizes the value of applying Domain-Specific, 
  9287. Architecture-Centric, Process-Driven, Technology-Assisted techniques to 
  9288. develop and maintain DoD software systems. One of the strategies of the 
  9289. DoD is to change it's business model (and organizations) to better 
  9290. leverage off these Reuse Technologies. By having 
  9291. DoDcenters/organizations chartered to develop and manage domains (as 
  9292. opposed to single systems),the government expects to develop the 
  9293. necessary infrastructure and incentives to support the SRVS. As the 
  9294. government undergoes this transition, it will need guidance on which 
  9295. approach makes most sense and which methods will best support the 
  9296. approach selected.
  9297.  
  9298. The results of this workshop can be of considerable benefit to both, the 
  9299. DoD and private industry organizations facing similar decisions.
  9300.  
  9301. References
  9302.  
  9303. [1]"Draft SBIS Domain Engineering Project Plan, Comprehensive Approach 
  9304. to Reusable Defense Software and Army Reuse Center," tech. rep., May 
  9305. 1995.
  9306.  
  9307. [2]"Organization Domain Modeling (ODM) Guidebook (Version 
  9308. 1.0),STARS-VC-A023/01 1/00, ARPA Software Technology for Adaptable, 
  9309. Reliable Systems," tech.rep., March 1995.
  9310.  
  9311. [3]"Domain Analysis and Design Process, (Version 1.0), DISA/JJIEO/CIM 
  9312. DISA Software Reuse Program," tech. rep., 1993.
  9313.  
  9314. [4]"DoD Software Reuse Initiative Vision and Strategy Office Secretary of 
  9315. Defense (OSD)," tech. rep.,1992.
  9316.  
  9317. 3   Bibliography
  9318.  
  9319. Dr. Maymir-Ducharme has over 15 years of software engineering 
  9320. experience in industry and with the DoD. He has been involved with the 
  9321. development and application of advanced software technologies since 
  9322. the early 80s. He was the principal engineer on various AT&T Bell Lab's 
  9323. ISDN features, served on the OSDAdvisory Board on Ada, and was 
  9324. intimately involved with Ada9X as a member of the Ada Technical 
  9325. Advisory Group(TAG) and ANSI Canvassers Group. Fred worked at the
  9326. SEI as a Resident Affiliate while on the ARPA STARS program, developing 
  9327. process models and guidebooks for the SEI/STARS Process Asset Library 
  9328. (PAL)project. He has numerous publications on Ada, Reuse and Software 
  9329. Engineering.
  9330.  
  9331. Dr. Maymir-Ducharme worked for AT&T Bell Laboratories for several 
  9332. years before transitioning to the Department of Defense. He is now with 
  9333. Loral Defense Systems, working on the Air Force Comprehensive Approach 
  9334. to Reusable Defense Software (CARDS) Program. Fred's most recent focus 
  9335. has been on reuse technology transition, which entails the application 
  9336. and adoption of Domain Engineering Technologies (e.g., concepts, 
  9337. processes, methods and tools) to enhance the software engineering 
  9338. discipline. Fred is the technical leadand manager of the A.F. CARDS 
  9339. Partnership Implementations project, whose major thrust is to support 
  9340. reuse technology transition within DoD organizations.
  9341.  
  9342. Dr.  Maymir-Ducharme received his BS in Computer Science from the 
  9343. University of Southern California (USC) and his PhD in Computer Science 
  9344. from the Illinois Institute of Technology (IIT). As an adjunct professor at 
  9345. IIT, Fredtaught graduate Software Engineering and Ada courses.
  9346. Conceptual Predesign: A Platform for the Reuse of Requirements 
  9347. Specifications
  9348.  
  9349.  
  9350. Heinrich C. Mayr
  9351.  
  9352. Institut fƒr Informatik
  9353. Universitèt Klagenfurt
  9354. Universitètsstraºe 65-67
  9355. A-9020 Klagenfurt
  9356. Email: mayr@ifi.uni-klu.ac.at
  9357.  
  9358. Abstract
  9359.  
  9360. Software reuse is not only a matter of recurring, within a software 
  9361. development process, to programs, modules, class definitions, etc. 
  9362. that have been stored in a software repository during former 
  9363. development projects.  It also may be extended to the reuse of 
  9364. "higher" software documents like (parts of) logical or conceptual 
  9365. schemata or even informal requirement specifications.  In this case 
  9366. reuse decisions are not only made by designers and developers but 
  9367. also by end users in their role of requirements providers.  In order 
  9368. to set them into a position to do so economically we introduce, 
  9369. between requirements analysis and conceptual designer, an 
  9370. additional phase into the information system life cycle: the so called 
  9371. conceptual predesign.  It comes with a glossary model, the 
  9372. vocabulary of which demands less abstraction abilities than semantic 
  9373. models as they are known from methods for conceptual design, resp. 
  9374. objected-oriented analysis.  The contribution will illustrate the kind 
  9375. of design that is possible within such a framework.
  9376.  
  9377. Keywords: Conceptual design, conceptual predesign, requirements 
  9378. analysis, glossary model, schema reuse, domain knowledge.
  9379. Workshop Goals: Learning about other approaches to the reuse of 
  9380. results of earlier life cycle phases; a critical discussion of our 
  9381. approach with expert colleagues; identifying aspects of reuse process 
  9382. models and methods that are "generalizable" in the sense that they 
  9383. could form the basis of a comprehensive reuse methodology.
  9384. Working Groups: Reuse process models, domain analysis/engineering, 
  9385. reuse and OO methods and technology, design reuse.
  9386.  
  9387. 1   Background
  9388.  
  9389. There are two main aspects of software reuse I am/was involved in 
  9390. so far:
  9391.  
  9392. -    Component reuse on the implementation level; as may be seen 
  9393. from my biography, before "coming back" to the university I was for 
  9394. nearly ten years engaged in a medium sized software company 
  9395. founded by myself and a colleague.  Greatest possible reuse was our 
  9396. development philosophy there.  The products of this (still running) 
  9397. company are branch specific multiuser information systems that are 
  9398. constructed (configured and customized) on the basis of a 
  9399. standardized, reuse oriented system architecture out of a module 
  9400. base of actually about 6000 components.
  9401.  
  9402. -    Reuse of domain knowledge: Back to the university one of my 
  9403. main research interests is to contribute to the definition of an object 
  9404. oriented conceptual design technique that really enables a 
  9405. cooperation between information providers (normally end users) and 
  9406. information collectors (system analysts and/or engineers), for details 
  9407. see the subsequent "position".  Within this context, reuse again is an 
  9408. essential issue with substantial influences on the methodology and 
  9409. process model we propose.
  9410. 2   Position
  9411. Today, the notion of Software is used in a rather broad sense: It 
  9412. denotes program(s System)s that are written in a specific 
  9413. programming language as well as any kind of design documents 
  9414. produced in earlier phases of a system development process.  As a 
  9415. consequence, software reuse is not only a concern of the 
  9416. implementational level but also of requirements analysis, conceptual 
  9417. design and logical design.  We concentrate on the former two, that, 
  9418. compared to reuse in later development phases, come with the 
  9419. substantial difference that the end users/information providers have 
  9420. to participate in reuse decisions.  They have to decide with respect to 
  9421. their requirements, what information should be entered into the new 
  9422. design, and which information should be changed or rejected.
  9423.  
  9424. The actual state of the art in conceptual design is that of object 
  9425. oriented analysis (OOA).  There are numerous OOA techniques "on the 
  9426. market" (see [3,5,6,9]) and they are mostly argued to be viable 
  9427. platforms for the communication with end users.  My experiences 
  9428. from many projects in several business branches show, however, 
  9429. that end users are not willing or able to accept the level of 
  9430. abstraction that is induced by such approaches (and that has to be 
  9431. taken in order to reach the goals of conceptual design, namely 
  9432. completeness and disambiguity).  Forcing them mostly leads to a 
  9433. rather naive use and, thus, to rough results that have to be 
  9434. completed by the analyst/designer without a chance for the end user 
  9435. to judge about the validity of such completions.
  9436.  
  9437. Therefore, requirements analysis should be carried out on an 
  9438. informal, natural language level for supplying as much information 
  9439. and UoD facets as possible.  On the other hand, when using natural 
  9440. language for requirements collection, designers pay a lot of work for 
  9441. the mapping of natural language descriptions into the notions of a 
  9442. conceptual model.
  9443.  
  9444. For these reasons, we propose to introduce, between requirements 
  9445. collection and conceptual design, a phase that we call conceptual 
  9446. predesign [7,8] that is to bridge the gap between the informal level 
  9447. of requirements collection and the abstract level of conceptual 
  9448. design.  Conceptual predesign again is conceptual because of the fact 
  9449. that it uses a semantic model, i.e., a controlled vocabulary with 
  9450. explained but not formally defined notions.  The lower level of 
  9451. abstraction is gained by the choice of the particular notions of the 
  9452. vocabulary and of their representation, for which we use a glossary 
  9453. approach (based on the early work collected in [2]).  The main 
  9454. notions are: thing, connection, operation, event, and constraint.  Note 
  9455. that these notions are used in a generic sense (as is usual in semantic 
  9456. modeling), i.e., have instances (extensions) in a preschema, that again 
  9457. have instances in the UoD.  For each notion a glossary is introduced 
  9458. with slots for a set of attributes that characterize aspects of the 
  9459. notion in question.  In addition a so called sentence glossary is used 
  9460. as a repository for the natural language requirement statements and 
  9461. that is referenced by entries of the other glossaries.  Each of these 
  9462. glossaries represents an important aspect of an UoD.
  9463.  
  9464. Gloassaries form a basis for communication between end user and 
  9465. designer.  This function makes it possible, to use glossaries not only 
  9466. for the documentation of requirements but also for the reuse of 
  9467. already documented requirements:  They act as containers of 
  9468. knowledge from which information can be drawn as a starting point 
  9469. for discussion.
  9470.  
  9471. The main question is, what kind of information can be reused?  A 
  9472. schema of an UoD as a whole will certainly be something that is 
  9473. individual.  But pieces of that schema might be invariant within a 
  9474. given application domain and thus being drawn into the new schema.
  9475.  
  9476. Let us assume that things like "person", "manager", "employee", 
  9477. "customer", "representative", "name", "customer-number" are defined 
  9478. in a UoD X and that they are invariant.  Then the designer can show 
  9479. these things (i.e., their glossary entries) to the end user and ask him 
  9480. if he agrees that they are part of the new schema Y.  In the same 
  9481. way we might reuse connections and related information as well as 
  9482. information of the other glossaries.
  9483.  
  9484. The connections which represent that "a customer is a person", 
  9485. "manager is a person", and "an employee is a person" may also be 
  9486. invariant over several UoD's.  The same is true for connections like "a 
  9487. person has a name" or "customers buy products".  For the 
  9488. specification of the contents of the operation glossary, it might be 
  9489. important to know which operations exist, the operation structure of 
  9490. these operations, just as information about the location of execution 
  9491. of an operation.  Reusable kinds of information in the event glossary 
  9492. are again the operations involved in an event as well as general 
  9493. specifications of the pre- and postconditions of an event.
  9494.  
  9495. Which kinds of information are reused and to what detail this is done 
  9496. is within the responsibility of the designer and his requirements 
  9497. providers.  To support them, we propose a process model that starts 
  9498. with an initial glossary set called "knowledge base" that is an 
  9499. abstraction/generalization of glossaries from former projects.  Its 
  9500. contents are the starting point of discussions with the end user, and 
  9501. therefore, for information reuse.
  9502.  
  9503. The process model as well as the conceptual model will be presented 
  9504. at the workshop.
  9505.  
  9506. 3  Comparison
  9507. There is some work on the reuse of conceptual schemata, e.g., in the 
  9508. context of Chen's entity relationship model (ERM) and its derivatives 
  9509. [1,4].  As far as I know however, besides re-engineering approaches 
  9510. using former requirements specifications there is no comparable 
  9511. method of re-using glossaries in conceptual (pre-)design.
  9512. References
  9513.  
  9514. [1]    Bellizona, R., Fugini, M.G., and de Mey, V.  Reuse of 
  9515. Specifications and Designs in a Development Information System, 
  9516. 1993.
  9517.  
  9518. [2]    Ceri, S. (ed.) Methodology and Tools for Database Design.  North 
  9519. Holland, 1983.
  9520.  
  9521. [3]    Coad, P. and Yourdon, E. Object Oriented Analysis.  Prentice Hall, 
  9522. 1991.
  9523.  
  9524. [4]    Eder, J., and Welzer, T.  Meta Data Model for Database Design.  
  9525. In (Marik, V., Wagner, R. eds.) Database and Expert Systems 
  9526. Applications.  DEXA 93, Prague, Sept. 6-8, Springer Verlag, 1993.
  9527.  
  9528. [5]    Jacobson, I. Object-oriented software engineering: a use case 
  9529. driven approach.  Addison-Wesley, 1993..
  9530.  
  9531. [6]    Kaschek, R., Kohl, C., Kop, Ch., and Mayr, C.  Characteristics of 
  9532. OOA Methods and Tools.  A First Step to Method Selection in Practice.  
  9533. (to appear).
  9534.  
  9535. [7]    Kop, Ch., and Mayr, H.C.  Reusing Domain Knowledge in 
  9536. Requirements Analysis.  In (GyÜrkÜs, J. et al. eds.) Proc. Re '94, Bled, 
  9537. 1994, pp. 133-147.
  9538.  
  9539. [8]    Mayr, H.C., and Schnattler, M.  Vorkonzeptuelle und 
  9540. konzeptuelle Dynamik-Modellierung.  In [SR 93], pp. 3-18.
  9541.  
  9542. [9]    Rumbaugh, J., Blaha, M., Premerlani, W., and Lorensen, W.  
  9543. Object Oriented Modeling and Design.  Prentice Hall 1991.
  9544.  
  9545. Biography
  9546.  
  9547. Heinrich C. Mayr is Professor at the Department of Informatics of the 
  9548. University of Klagenfurt.  He leads research on design methodologies 
  9549. for business information systems, on information system 
  9550. architectures and on computer aided support for the software 
  9551. supporter.  Actually he also is the Dean of the faculty of management 
  9552. sciences and informatics of the university of Klagenfurt.  He is a 
  9553. member of the board of the Austrian Computer Society and he is the 
  9554. speaker of the technical committee 2 (Software Technology and 
  9555. Information Systems) of the German Informatics Society (GI).
  9556.  
  9557. Before coming to the University of Klagenfurt he was for about ten 
  9558. years the managing director of a medium-sized software company in 
  9559. Germany engaged in the design, development and support of turn-
  9560. key branch specific information systems.  From 83 to 84 he was 
  9561. guest professor at the technical university of Munich.
  9562.  
  9563. He received his doctor degree in Applied Mathematics from the 
  9564. University of Grenoble, France, in 1975, after having studied at the 
  9565. universities of Karlsruhe and Klagenfurt.  He had teaching and 
  9566. research stays at the universities of Kaiserlautern and Saarbruecken 
  9567. and he worked as an assistant professor for several years at the 
  9568. informatics department of the university of Karlsruhe.
  9569.  
  9570.  
  9571. (SPHINCs) : Specification Reuse via Homogeneous Interpretation of 
  9572. Concepts
  9573.  
  9574. Walaa-Eldeen A. Mohamed
  9575.  
  9576. University of North London
  9577. 2-16 Eden Grove
  9578. London N7 8EA, UK
  9579. Tel: +44 171 6072789
  9580. Fax: +44 171 753 7009
  9581. Email: 11MOHAMEDW%CLUSTER.NORTH-LONDON.AC.UK@clstr.unl.ac.uk
  9582.  
  9583. Abstract
  9584.  
  9585. One of the essential requirements for successful software reuse is the 
  9586. availability of a mechanism that allows developers to relate new 
  9587. situations to old ones. The take up of specifications reuse, as a feasible 
  9588. approach to software development, hinges on finding such a mechanism. 
  9589. This will facilitate the matching process between new and old situations 
  9590. at an early stage of the development process. Current software reuse 
  9591. approaches provide very limited support to specification reuse at the 
  9592. requirements analysis stage. In this research, Concepts Reuse is proposed 
  9593. as a new approach to specification reuse by providing a classification 
  9594. scheme that will aid the matching process. This will be developed as 
  9595. part of a new paradigm for software development that supports 
  9596. specifications reuse at the requirements analysis stage. The proposed 
  9597. approach, named SPecification reuse via Homogeneous INterpretation Of 
  9598. Concepts (SPHINCs), classifies the problem of a new system (as 
  9599. documented in its requirements) under one Concept which will be 
  9600. chosen from a proposed set of Concepts. Each of these Concepts 
  9601. represents a category of generic-reusable specifications which were 
  9602. developed for previous requirements. The proposed set of concepts 
  9603. capture the common patterns of problems that regularly occur in the 
  9604. description of software requiements. Each concept is an abstraction of a 
  9605. generic, well-repeated, problem pattern that occurs across different 
  9606. application domains. These Concepts are independent of software 
  9607. implementation environments as well as application domains 
  9608. knowledge.
  9609.  
  9610. Keywords: Specification Reuse, Concepts of Reuse.
  9611.  
  9612. Workshop Goals: To exhange ideas andpresent a new framework for reuse 
  9613. during the requirements analysis stage of the development process.
  9614.  
  9615. Working Groups: Domain Analysis/Engineering.
  9616.  
  9617. 1   Background
  9618.  
  9619. Recent research and practices of software reuse have raised expectations 
  9620. of increasing productivity and improving quality of the software 
  9621. development process. The reported success of the Japanese software 
  9622. factories and the savings that they had achieved by reusing software 
  9623. components have attracted much attention. However, most software 
  9624. reuse efforts, including the Japanese experience, have been mainly 
  9625. focused on code reuse at the implementation level.
  9626.  
  9627. Greater savings can be gained achieving specification reuse at the 
  9628. requirements analysis stage. Research in specification reuse is scant and 
  9629. reuse during the requirements analysis stage has rarely been practiced. 
  9630. This research focuses mainly on this area and attempts to provide a 
  9631. feasible method for reuse of requirements specifications.
  9632.  
  9633. The problem of specification reuse does not only involve the discipline of 
  9634. Software Engineering but also stretches to reach to other disciplines such 
  9635. as Cognitive Psychology, Philosophy, and Systems Theory. Although, 
  9636. investigating these disciplines will be attempted carefully, the focus will 
  9637. be mainly on topics related to this research.  System modelling and 
  9638. problem solving are two other topics which will be investigated in 
  9639. disciplines other than Software Engineering.
  9640.  
  9641. Diagrammatic modeling techniques are powerful media of 
  9642. communicating concepts of problems and their proposed solutions. The 
  9643. application of these techniques in Software Engineering and Information 
  9644. Systems is still facing some obstacles.  Some of these obstacles are due to 
  9645. problems inherit in their notations others are related to the nature of 
  9646. the continuing evolution of the subject area. Disciplines such as 
  9647. Architecture has employed diagrammatic techniques successfully to form 
  9648. a common language of specifying problems within its subject area. 
  9649. Diagrammatic techniques used in Architecture will be examined to 
  9650. identify those factors that led to their success in communicating 
  9651. architectural concepts and compare those with their counterparts in 
  9652. Software Engineering and Information Systems.
  9653.  
  9654. 2   Position
  9655.  
  9656. The main objective of this research is to develop a method with which 
  9657. reusable requirements specifications can be identified as well as 
  9658. introduced at an early stage of the development process. This method 
  9659. should be flexible enough to be incorporated within the system 
  9660. development process.
  9661.  
  9662. To achieve this objective other sub-objectives will be attempted. These 
  9663. are:
  9664.  
  9665. Examining ways of identifying common concepts, objects, structures and 
  9666. deliverables that can be reused at the analysis level.
  9667.  
  9668. Examining representation techniques of requirements specifications 
  9669. within systems development methods in order to identify possible 
  9670. techniques that could support specifications reuse or develop a new one, 
  9671. if the current ones are proven inadequate.
  9672.  
  9673. 3   Comparison
  9674.  
  9675. As mentioned in the previous section,the early work of reuse was targeted 
  9676. towards code. The benefits gained from code reuse was constrained by 
  9677. the implementation environment in which the code was initially 
  9678. developed. Limitations faced code reuse include type of operating 
  9679. system, language in which the reusable code was first written and 
  9680. interface problems of the new system(s). The effect of some of these 
  9681. limitations was reduced by the development portable programming 
  9682. languages, e.g. C. However, problems such as poor documentation of 
  9683. previously written code made its reuse unfeasible in many instances.
  9684.  
  9685. To overcome some of the problems facing code reuse attempts were 
  9686. made to achieve reuse on a higher level. Unfortunately, those attempts 
  9687. moved only a small step to provide not more than program designs 
  9688. which were again tied to a particular environment but easier to reuse. In 
  9689. some cases design specifications were reused more successfuly when they 
  9690. were restricted to a particular application domain [1]. Although some 
  9691. success was reported on domain analaysis research [2],[3] results were 
  9692. difficult to transfer fromone application domain to another. Also, in 
  9693. domain analysis the reused artefacts were only at the design level and 
  9694. were not suitable to reuse at the analysis level.
  9695.  
  9696. The last decade has witnessed the introduction of many software 
  9697. development methods (e.g. SSADM, JSD, IE) designed to overcome some 
  9698. of the problems increasingly appreciated within the development 
  9699. process. These methods provided a variety of frameworks and techniques 
  9700. with which requirements specifications are documented, described and 
  9701. modelled. CASE tools supporting some of these methods provided 
  9702. repositories within which requirement specifications can be
  9703. stored and later retrieved. These repositories are considered as a 
  9704. significant starting point for implementing reuse during the 
  9705. requirements analysis stage.
  9706.  
  9707. However,current CASE tools and development methods rarely provide a 
  9708. methodical and systematic approach for incorporating specifications 
  9709. reuse during analysis. The reuse method (SPHINCs), proposed in this 
  9710. research, will be able to identify the reuse potential of previously 
  9711. developed specifications for new systems requirements.
  9712.  
  9713. References
  9714.  
  9715. [1]J. Neighbors,"The Draco Approach to Constructing Software from 
  9716. Reusable Components," IEEE Transactions on Software Engineering, vol. 
  9717. SE-10, pp. 564-576, September 1984.
  9718.  
  9719. [2]P.Hall, DomainAnalysis, in Integrated Software Reuse: Management 
  9720. and Techniques, Walton, P., and Maiden, N., (editors), Ashgate, UK. 1993.
  9721.  
  9722. [3]R. Prieto-Diaz, "Domain Analysis for Reusability," in 'Proceedings of 
  9723. COMPSAC '87, IEEE, 1987.
  9724. Software Reuse by Model Reification
  9725.  
  9726. F. Luis Neves and Jose N. Oliveira
  9727.  
  9728. Inesc Group 2361 and Dep. Informatica, Universidade do Minho
  9729. Campus de Gualtar, 4700 Braga, Portugal
  9730. Tel: 351+53-604470
  9731. Fax: 351+53-612954
  9732. Email: fln@di.uminho.pt; 
  9733. Http: http://s700.uminho.pt/fln
  9734. Email: jno@di.uminho.pt;
  9735. Http: http://www.di.uminho.pt/jno
  9736.  
  9737. Abstract
  9738.  
  9739. This paper builds upon earlier work on systematically calculating 
  9740. implementations from model-oriented specifications based on abstract 
  9741. data types. The calculation process is called reification and is usually 
  9742. done by"hand", requiring some ingenuity and time. The adoption of 
  9743. model-oriented software specification encompasses the ability to classify 
  9744. and compare data structures. The reification of such data models 
  9745. (specifications of software data structures) also provides a powerful reuse 
  9746. mechanism up to isomorphic and in equational refinements. Following 
  9747. the underlying formal calculus (Sets), one can easily demonstrate that, 
  9748. for instance, a certain C++ class can be implemented by the composition 
  9749. of already available ones. Our aim is to develop an automatic 
  9750. "reificator", based on term-rewriting theory, which is intended to take 
  9751. the specification of a data structure, written in the Sets notation, and to 
  9752. refine it until a collection of reusable data models are identified. We also 
  9753. refer that genetic algorithms have the potential to support inequational 
  9754. term-rewriting, such as is required in animating the Sets calculus. This 
  9755. topic is briefly presented.
  9756.  
  9757. Keywords:   Software reuse, model-oriented specification, reification, 
  9758. rewrite, genetic algorithms.
  9759.  
  9760. Workshop Goals: Learning; presenting reuse experiments.
  9761.  
  9762. Workshop Groups: Reuse and formal methods, tools and environments.
  9763.  
  9764. 1    Background
  9765.  
  9766. The authors were involved in the Sour 1 project for comparing, 
  9767. classifying and retrieving information about large software systems. Sour 
  9768. attempts to improve software developers productivity by introducing 
  9769. techniques for reusing pre-existing software components. Related research 
  9770. on software component knowledge elicitation and classification using the 
  9771. Sets reification Calculus [2, 3] is reported in [4].
  9772.  
  9773. 2    Position
  9774.  
  9775. This paper sketches the idea that software reification calculi such as Sets 
  9776. [2,3] can be of some help in formalizing a simple yet powerful software 
  9777. reuse discipline based on a mathematical notion of a software 
  9778. component. In the approach, a software component is understood as a 
  9779. specification of the component's internal state space (described by set-
  9780. theoretical constructs) together with a pre-/post-condition pair for each 
  9781. action which can change or observe the component's internal state. A 
  9782. repository of such abstract components has been academically built up 
  9783. [5] which follows a classify by state structure partial-order based on the 
  9784. Sets-term instantiation ordering [4] 2.
  9785.  
  9786. The Sets Calculus is based on set-theory up to isomorphism.  A collection 
  9787. of =-equalities forms the so-called =-Subcalculus. When partial data-
  9788. structure transformations are present, abstraction invariants arise 
  9789. according to the so-called --Subcalculus. (Informally,while A = B means 
  9790. that A and B are interchangeable data structures, A- B means that only B 
  9791. can replace (implement) A.)
  9792.  
  9793. The Sets model-reification process uses the laws of these two subcalculi to 
  9794. derive new data models from existing ones, with correctness warranty.
  9795.  
  9796. Attempts to animate the Sets Calculus have been made recently [6]. A 
  9797. "reificator" is expected soon made of two fundamental components: first, 
  9798. a description language for input of relevant data such as axioms, models, 
  9799. type of reificationand so on; second, the "engine"of the calculus which 
  9800. incorporates,in the current prototype, the hybridization of two theories: 
  9801. genetic algorithms [7] and rewriting systems [8].
  9802.  
  9803. 3    Instantiation and Reuse
  9804.  
  9805. The notion of instantiation is closely related with the reuse problem. It 
  9806. exploits the capability of identifying expressions (in our case, Sets terms 
  9807. specifying software data structures) as particular cases of others.
  9808.  
  9809. In this paper's setting, software reuse consists basically of applying 
  9810. rewrite rules obtained directly from the Sets laws, in order to rewrite 
  9811. (reify) a software model and decompose it in a collection of sub-models 
  9812. which instantiate pre-existent components (see also [9] in this respect).
  9813.  
  9814. Sour is the acronym of Eureka 379 project "Software use andreuse" [1]. 
  9815. See [4] also for details on ER ("Entity-Relationship") diagram inversion 
  9816. and classification using this approach.
  9817.  
  9818. 3.1   Instantiation
  9819.  
  9820. We proceed to a brief illustration of our strategy, whereby an 
  9821. instantiation rule will be induced from the concrete example which 
  9822. follows. Suppose that we want to implement the following C++ class 
  9823. which associates to each OR (Object Reference) its type and a set of 
  9824. attribute values:
  9825.  
  9826. #define MAX_A 3               // Cardinal of _A
  9827. enum _A -OR1,OR2,OR3";
  9828. #define MAX_D 1               // Cardinal of _D
  9829. enum _D -TYPE0";
  9830. #define MAX_B 3               // Cardinal of _B
  9831. enum _B -ATT1,ATT2,ATT3";
  9832. #define MAXSTR 255            // String length
  9833. typedef char _C[MAXSTR];
  9834.  
  9835. class X
  9836. -
  9837.     private:
  9838.        struct
  9839.        -
  9840.            _A A;                             // A
  9841.            _D D;                             // D
  9842.            struct -_B B; _C C;" ffBtoC[MAX_B]; // B -> C
  9843.        " ffAtoDxffBtoC[MAX_A];                // A -> D x (B -> C)
  9844.     public:
  9845.        // ...
  9846. ";
  9847.  
  9848. In Sets, data structures of this class can be expressed by instatiating the 
  9849. Sets
  9850.  -term 3
  9851.  
  9852.                               A ,! D (B ,! C)
  9853.  
  9854. Now, consider the following C++ class, which is presumed to be available 
  9855. in the repository 4:
  9856.  
  9857. class Y
  9858. -
  9859.     private:
  9860.        _A setA[MAX_A];           //2^A
  9861.        struct
  9862.        -
  9863.            _A A;                // A
  9864.            _B B;                // B
  9865.            _C C;                // C
  9866.        " AxBtoC[MAX_A*MAX_B];  // (A x B) -> C
  9867.      public:
  9868.        // ...
  9869. ";
  9870.  
  9871. A  B denotes the cartesian product of A and B; A ,!B denotes the set of all 
  9872. partial mappings from A to B. See [3] for details. As a software 
  9873. component implementation, the code of this class should include all the 
  9874. intrinsic functionality, which is omitted here for economy of space.
  9875.  
  9876. The corresponding Sets specification is the following expression: 2A  ((A  
  9877. B) , ! C). >From [3] we know that
  9878.  
  9879.                       A ,! (B,! C) _  2A  ((A B ) ,! C)                   (1)
  9880.  
  9881. holds, as a particular case of instantiating D = 1 in
  9882.  
  9883.                  A ,! D (B ,! C)  _  (A ,! D)  ((A  B) ,! C)              (2)
  9884.  
  9885. that is to say 5:
  9886.  
  9887.        A ,! 1  (B ,!C) _   (A ,! 1)  ((A  B) ,! C)by(2)
  9888.  
  9889.                        _   2(A1) ((A  B) ,! C)    by law A ,! B_  2(AB)
  9890.                         =  2A  ((A  B) ,! C)      by law A  1= A
  9891.  
  9892. which shows that Class Y can be reused in order to implement Class X.
  9893.  
  9894. 3.2   Reuse
  9895.  
  9896. The reuse concept may be compared to the resolution of a mathematic 
  9897. equation (or inequation). Suppose we have the following equation
  9898.  
  9899.                                x + 2y z =0                                (3)
  9900.  
  9901. in which, given the values of y and z,we want to know the values of x 
  9902. which satisfy the equation. Using some basic mathematical rules, we can 
  9903. write x in function of y and z, i.e. , by rewriting (3) in the form x = f(y;z). 
  9904. In the above equation, this is equivalent to having
  9905.  
  9906.                                 x = 2y+z                                  (4)
  9907.  
  9908. >From this point on,we just have to use the well known arithmetical 
  9909. operations to finally obtain the x value.
  9910.  
  9911. This is the approach we propose for reuse , in particular for data models 
  9912. reuse, i.e., the notion of writing something in function of. >From the 
  9913. "reificator" point of view, we will have that a set of Sets models may be 
  9914. kept in a repository, which is basically a store of reusable material [10]. 
  9915. This is much in the tradition of the classical handbooks in Mathematics, 
  9916. for example in helping to solve integral/differential equations. In the 
  9917. above example, reasoning will proceed by instantiating variables y and 
  9918. zin terms of available information in the repository. The striking 
  9919. difference is that we are dealing with discrete mathematics, a topic 
  9920. rarely found in traditional engineering curricula,which are too much 
  9921. concerned with the mathematics of continuity to leave room for the
  9922. mathematics of discreteness [11]. This may explain why many 
  9923. "conventional" engineers are so bad software designers.
  9924.  
  9925. Note that MAX_D = 1, which in Sets is equivalent to saying that _D =1.
  9926.  
  9927. References
  9928.  
  9929.  [1]Systena and S.S. Software, "Integrated SOUR Software System_Demo 
  9930. Session Manual," tech. rep., SOUR Project, 1994. Ver.1.2, cflSystena & SSS, 
  9931. Via Zanardelli 34 , Rome & Via Fanelli 206-16, Bari, Italy.
  9932.  
  9933.  [2]J. N. Oliveira, "A reification Calculus for Model-Oriented Software 
  9934. Specification," Formal Aspects of Computing, Vol.2, 1-23, 1992.
  9935.  
  9936.  [3]J. N. Oliveira, "Software reification using the sets calculus," in Proc. of
  9937.   the BCS FACS 5th Refinement Workshop, Theory and Practice of Formal 
  9938. Software Development, London, UK, pp. 140-171, Springer-Verlag, 8-10 
  9939. January 1992.
  9940.  
  9941.  [4]J. N. Oliveira and A. M. Cruz, "Formal Calculi Applied to Software 
  9942. Component Knowledge Elicitation,"Tech. Rep. C19-WP2D, 
  9943. DI/INESC,December 1993. IMI Pro jectC.1.9. Sviluppo di Metodologie, 
  9944. Sistemi e Servizi Innovativi in Rete.
  9945.  
  9946.  [5]J. N. Oliveira, Especificac"ao Formal de Programas. Univ of Minho, 
  9947. 1sted., 1991. Lecture Notes for the UM M.Sc. Course in Computing (in 
  9948. Portuguese; incl. extended abstract in English).
  9949.  
  9950.  [6]F. L. Neves, J. V. Ranito, and J. N. Oliveira, "Implementation Studies 
  9951. about Automatic Model Reification based on the SETS Calculus," 19?? (In 
  9952. preparation).
  9953.  
  9954.  [7]D. E. Goldberg, Genetic Algorithms in Search, Optimization and 
  9955. Machine Learning. Addison-Wesley, 1989.
  9956.  
  9957.  [8]G. Huet, "Confluent Reductions: Abstract Properties and Applications 
  9958. to Term Rewriting Systems," Journal of the ACM, 27(4):797-821, October 
  9959. 1980.
  9960.  
  9961.  [9]J. N. Oliveira and F. S. Moura, "Can Distribution Be (Statically) 
  9962. Calculated?," tech.rep., DI/INESC, 1995.(In preparation).
  9963.  
  9964. [10]J. N. Oliveira, A Reification Handbook. 19?? (In preparation).
  9965.  
  9966. [11]J. Cuadrado, "Teach Formal Methods," Byte, p. 292, December 1994.
  9967.  
  9968. 4    Biography
  9969.  
  9970. F. Luis Neves holds a degree in Mathematics and Computer Science from 
  9971. Minho University(1992). He is currently a research assistant at Inesc 
  9972. group 2361 (Programming and Formal Methods), sited at the University 
  9973. of Minho Campus, Braga, Portugal. For the last two years,he was fully 
  9974. engaged in the Inesc participation in the Sour Project (EU 379). His main 
  9975. interests are graphical environments, formal methods and genetic 
  9976. algorithms.
  9977.  
  9978. Jose N. Oliveira is a senior lecturer at the Computer Science Department 
  9979. of Minho University at Braga, Portugal. He obtained his Msc degree 
  9980. (1980) and Phd (1984) in Computer Science from Manchester University, 
  9981. UK. His main research areas are formal specification of software and 
  9982. program calculi. He is also a senior member of Inesc and leader of Inesc 
  9983. group 2361. He was responsible for the Inesc partnership in the Sour 
  9984. project.
  9985. Refactoring Object-Oriented Software to Support Evolution and Reuse
  9986. William F. Opdyke
  9987.  
  9988. AT&T Bell Laboratories
  9989. 2000 N. Naperville ROAD
  9990. Naperville, IL 60566-7033
  9991. Tel: (708) 979-0730
  9992. Email: william.opdyke@att.com
  9993.  
  9994.  
  9995. Abstract
  9996. Software often needs to be changed before it can be reused.  In our 
  9997. research into refactoring (restructuring) object-oriented software, we 
  9998. have discovered four major reasons why people are reluctant to 
  9999. refactor their programs, even if they accept the reuse benefits.  We 
  10000. briefly discuss our approaches for addressing each of these concerns.
  10001.  
  10002. Keywords:  Reuse, Object-oriented software engineering, addressing 
  10003. reuse barriers.
  10004.  
  10005. Workshop Goals:  Learning, networking, advance state of theory of 
  10006. software evolution and reuse.
  10007.  
  10008. Working Groups:  Reuse Process models; domain analysis/ 
  10009. engineering; reuse management; organization and economics; reuse 
  10010. and OO methods and technology, tools and environments.
  10011.  
  10012. 1   Background
  10013. During my years at AT&T Bell Laboratories I have been able to view 
  10014. the reuse issue from several different angles.  For several years 
  10015. during the mid-1980's, I worked in an applied research department 
  10016. at AT&T Bell Laboratories, studying techniques for supporting large 
  10017. scale, multi-year software development projects.  Then, during a four 
  10018. year doctoral research assignment at the University of Illinois, I 
  10019. worked with Ralph Johnson on issues regarding the process of change 
  10020. for object-oriented software.  Currently I am part of an AT&T 
  10021. organization planning platform developments to support a range of 
  10022. telephony applications.
  10023. My doctoral research focused on refactoring object-oriented 
  10024. software, to support evolution and reuse.  Refactorings are behavior-
  10025. preserving program restructurings that can be applied to, for 
  10026. example, separate out parts of a program (design abstractions, reuse 
  10027. components) to make the design of a program clearer and make it 
  10028. easier to add new features.  Refactorings can also be applied in some 
  10029. cases to reduce or eliminate redundant parts of a program.
  10030. The need for refactoring grew out of early experiences in reusing 
  10031. object-oriented software, particularly in the Smalltalk community, as 
  10032. discussed by Johnson and Foote in [1].  My research focused on 
  10033. refactoring C++ programs [2,3,4,5,6].  Currently, research is underway 
  10034. at the University of Illinois into refactoring Smalltalk programs [7].
  10035. Don Roberts and I will present a tutorial on refactoring at the 
  10036. OOPSLA '95 conference at Austin.  The topics (briefly) described in 
  10037. sections three and four of this position paper are addressed in much 
  10038. further detail in that tutorial.
  10039. 2   Position
  10040. 2.1  Introduction
  10041. Software often tends to be changed before it can be reused.  Change 
  10042. is inevitable, as users request new features, external interfaces 
  10043. evolve and designers better understand the key elements of their 
  10044. application.
  10045. Evolving software to support these changes is a tedious and error-
  10046. prone process.  This position paper focuses on the barriers that we 
  10047. have encountered in our research on supporting the change process 
  10048. for object-oriented software.  These barriers are relevant to the 
  10049. general problem of encouraging reuse within an organization.
  10050. 2.2    Applying Object-Oriented Techniques
  10051. For at least some of us, an "ideal world" would consist of only fresh 
  10052. start projects, where we understood the domain, and where our 
  10053. funders would pay us until we were satisfied with the results.  
  10054. However, a more realistic scenerio might sound something like this:  
  10055. we are asked to use/extend an existing piece of software, we have a 
  10056. less-than-complete understanding of what we are doing, and we are 
  10057. under schedule pressure to produce!
  10058. Should we re-write the program?  We could apply our design 
  10059. experience, correct the ills of the past and, besides, it would be 
  10060. creative and fun!  But, will the new program do all that the old 
  10061. program did, and who will foot the development bill?
  10062. Should we copy and modify an existing piece of software?  This 
  10063. might be expedient, and perhaps demonstrate reuse.  But, will we 
  10064. really understand what we are using?  Might errors propagate, 
  10065. programs get bloated, program designs get corrupted and the 
  10066. incremental cost of change escalate?
  10067. In our refactoring research, we have investigated a middle ground: 
  10068. start with the existing software base, incrementally restructure the 
  10069. existing software to extract reusable abstractions and components, 
  10070. clean up class interfaces and inheritance hierarchies, and prepare the 
  10071. program to make subsequent additions of functionality easier.
  10072. 2.3    Barriers and How We Addressed Them
  10073. Suppose you accepted (in the abstract) that there would be benefits 
  10074. in refactoring your software.  Why might you still be reluctant to 
  10075. refactor your program?
  10076.  
  10077. We have found four key reasons why people are reluctant to refactor 
  10078. their software, which have implications on the general issue of 
  10079. software evolution and reuse:
  10080.  
  10081. 1.    "I don't understand how to refactor."
  10082. 2.    "If the benefits are long-term, why exert the effort now?  In 
  10083. the long term,  I may no longer be with the project."
  10084. 3.    "Refactoring code is an overhead activity;  I'm paid to write 
  10085. new features."
  10086. 4.    "Refactoring might break the code."
  10087. The issue of adapting existing code to support new applications is a 
  10088. difficult problem, with many technical and organization implications.  
  10089. While our research primarily focused on the technical concerns,  we 
  10090. kept the organization issues in mind as we proceeded in our 
  10091. research.
  10092. Our approach to addressing the first two of these objections was to 
  10093. characterize the refactoring process in a way that achieved both 
  10094. short term and long term benefits.  We learned many insights from 
  10095. studying how versions of our and others' programs evolve over time, 
  10096. and learned from discussions with (and reaading the retrospectives 
  10097. of) experienced developers and researchers.  From this, we defined a 
  10098. taxonomy of refactorings and incremental additions of functionalities.  
  10099. For example, when defining a new feature that is a variant on an 
  10100. existing feature, one can define classes (usually abstract classes) that 
  10101. capture the common behavior, and use subclassing to capture the 
  10102. feature differences.  One benefit of this approach is that the abstract 
  10103. classes not only provide a way to leverage existing code for near-
  10104. term benefits, but they may represent abstractions that will be 
  10105. useful in defining additional, similar features later.
  10106. Our approach to addressing the latter two of these objections was to 
  10107. provide automated assistance, to help increase the speed (i.e., reduce 
  10108. the overhead) of program restructuring.  Often, it is more difficult to 
  10109. determine whether a refactoring can be safely performed than it is 
  10110. to perform the refactoring once it is known to be safe.  There can be 
  10111. many,  sometimes subtle interdependencies within a program that 
  10112. making changing any part of the program difficult.  The analysis of 
  10113. program dependencies, and checking that behavior is preserved 
  10114. across program restructuring, is a tedious and error-prone task and 
  10115. one where automated tools can help.
  10116. 2.4    Some Conclusions
  10117. In conclusion, while there are longer-term benefits that can be 
  10118. achieved by making existing software more evolvable and reusable, 
  10119. there are significant challenges to getting people to invest the effort 
  10120. to make their software more reusable.  Learning from the past, 
  10121. motivating short-term benefits, providing automating assistance and 
  10122. addressing the backward compatibility (behavior preservation) 
  10123. issues are all important in motivating the acceptance of reuse 
  10124. approaches.  Other issues, such as reward mechanisms and the 
  10125. opennesss of an organization to change, also influence the success of 
  10126. reuse efforts.
  10127. 3   Comparison
  10128. Casais [8] (Esprit Project) and Lieberherr et al [9] (Demeter project) 
  10129. have also studied issues on restructuring object-oriented software.  
  10130. Their efforts have considered issues such as increasing information 
  10131. hiding [9] or eliminating redundant definitions of variables [8].  Our 
  10132. focus has been upon providing a set of restructurings that clarify the 
  10133. design of a program to the designer, which sometimes but not always 
  10134. involves reducing code size or increasing information hiding.
  10135. Work in object-oriented database schema evolution (eg: [10] has 
  10136. addressed similar issues to ours, although with a focus upon 
  10137. persistant data rather than upon programs.
  10138. We applied many of the object-oriented design techniques embodied 
  10139. in the CRC approach [11], albeit for redesign rather than for the up 
  10140. front design task.
  10141. Some of the relationships of design patterns and refactoring are 
  10142. discussed by Brian Foote and myself in [6].
  10143. References
  10144. [1]    R. E. Johnson and B. Foote. "Designing Reusable Classes." Journal 
  10145. of Object-Oriented Programming, 1(2):22-35, 1988.
  10146. [2]    W. F. Opdyke and R. E. Johnson. Refactoring: An Aid in 
  10147. Designing Application Frameworks and Evolving Object-Oriented 
  10148. Systems.  In Proceedings of 1990 Symposium on Object-Oriented 
  10149. Programming Emphasizing Practical Applications (SOOPPA '90), 
  10150. Poughkeepsie, New York, September, 1990.
  10151. [3]    W. F. Opdyke.  Refactoring Object-Oriented Frameworks. Ph.D. 
  10152. thesis, University of Illinois at Urbana-Champaign, 1992.  Available 
  10153. as Technical Report No. UIUCDCS--R--92--1759.  Postscript: 
  10154. /pub/papers/refactoring/opdyke-thesis.ps.Z on st.cs.uiuc.edu.
  10155. [4]    W. F. Opdyke and R. E. Johnson.  "Creating Abstract Superclasses 
  10156. By Refactoring."  In Proceedings of CSC '93: 1993 ACM Computer 
  10157. Science Conference, Indianapolis, Indiana, February, 1993.  
  10158. Postscript: /pub/papers/refactoring/refactoring-superclasses.ps on 
  10159. st.cs.uiuc.edu.
  10160. [5]    R. E. Johnson and W. F. Opdyke, "Refactoring and Aggregation."  
  10161. In Proceedings of ISOTAS '93: International Symposium on Object 
  10162. Technologies for Advanced Software, Kanazawa, Japan, November, 
  10163. 1993.  Postscript: /pub/papers/refactoring/refactor-aggregation.ps 
  10164. on st.cs.uiuc.edu.
  10165. [6]    B. Foote and W. F. Opdyke, "Life Cycle and Refactoring Patterns 
  10166. that Support Evolution and Reuse." Presented at First Conference on 
  10167. Pattern Languages of Programs (PLOP '94), Monticello, Illinois, 
  10168. August, 1994.  In "Pattern Languages of Programs" (James O. Coplien 
  10169. and Douglas C. Schmidt, editors), Addison-Wesley, May, 1995.
  10170. [7]    R. Johnson, J. Brant, and D. Roberts, "The Design of a Refactoring 
  10171. Tool." Presented at ICSE-17 Workshop on Program Transformation 
  10172. for Software Evolution, Seattle, WA., April, 1995.
  10173. [8]    E. Casais.  Managing Evolution in Object Oriented Environments: 
  10174. An Algorithmic Approach.  Ph.D. thesis, University of Geneva, 1991.
  10175. [9]    K. J. Lieberherr and I. M. Holland. "Assuring Good Style for 
  10176. Object-Oriented Programs."  IEEE Software, pages 38-48, September, 
  10177. 1989.
  10178. [10]W. Kim.  Introduction to Object-Oriented Databases.  MIT Press, 
  10179. 1990.
  10180. [11]R. Wirfs-Brock, B. Wilkerson, and L. Weiner.  Designing Object-
  10181. Oriented Software, Prentice-Hall, 1990.
  10182. Bibliography
  10183. Bill Opdyke is a member of the technical staff at AT&T Bell 
  10184. Laboratories, where he has focused on intelligent network and 
  10185. decision support applications of object-oriented technology.  He is 
  10186. currently involved in platform planning for telephony applications.  
  10187. He is on the editorial board for an AT&T internal publication devoted 
  10188. to software (and hardware) reuse issues.  Bill's doctoral research at 
  10189. the University of Illinois focused on refactoring C++-based object-
  10190. oriented frameworks, supervised by Ralph Johnson.
  10191.  
  10192. Measuring the Level of Reuse in Object-Oriented Development
  10193.  
  10194. Jeffrey S. Poulin
  10195.  
  10196. Loral Federal Systems
  10197. MD 0210, Owego, NY 13827
  10198. Tel: (607)751-6899
  10199. Fax: (607) 751-6025
  10200. Email: poulinj@lfs.loral.com
  10201.  
  10202. Abstract
  10203.  
  10204. Defining what software to count as "reused" software constitutes the 
  10205. most difficult and meaningful problem in reuse metrics. Experience 
  10206. reports routinely report impressive reuse levels and benefits due to reuse. 
  10207. However, the reader cannot trust the report without understanding what 
  10208. the report counted; e.g.,modified software, ported software, generated 
  10209. software,etc. To date, only one model exists for defining a consistent 
  10210. method of counting and reporting software reuse. Although this model 
  10211. applies equally to various development paradigms to include object-
  10212. oriented programming, this paper clarifies the model with respect to 
  10213. objects and expands on issues related to object-oriented reuse metrics.
  10214.  
  10215.  Keywords: Software Reuse, Reuse Metrics, Object-Oriented Programming
  10216.  
  10217.  Workshop Goals: Learn and discuss current reuse issues and methods.
  10218.  
  10219.  Working Groups: Useful and collectible metrics; Domain analysis and 
  10220. engineering; Software Architectures
  10221.  
  10222. 1   Background
  10223.  
  10224. To date, only one model exists for defining a consistent method of 
  10225. counting and reporting software reuse [1]. This model methodically 
  10226. makes recommendations as to what to count as a Reused Source 
  10227. Instruction (RSI). The rationale for the model applies equally to the 
  10228. functional, procedural, and object-oriented (OO) paradigms because the 
  10229. rationale does not depend on any paradigm-specific methods. However, 
  10230. recent work in OO metrics often either fails to address this issue or the 
  10231. OO work identifies the need for a common counting model. As OO 
  10232. metrics mature and the community identifies the most meaningful 
  10233. metrics and ranges of values for each [2],the metrics must include 
  10234. consistent definitions to serve as a basis for comparing results.
  10235.  
  10236. 2   Position
  10237.  
  10238. The definition of Reused Source Instruction (RSI) applies to all 
  10239. programming paradigms.
  10240.  
  10241. 3   Approach
  10242.  
  10243. This paper describes the three primary OO reuse methods and briefly 
  10244. discusses the benefits and drawbacks of each. It compares each of these 
  10245. methods to the analogous practice in traditional procedural 
  10246. development. Finally, the paper presents some issues that an 
  10247. organization should address when instituting reuse metrics for OO 
  10248. development.
  10249.  
  10250. 3.1  Reuse in the Object-Oriented Paradigm
  10251.  
  10252. Expectations of high reuse levels provide one of the most important 
  10253. motivations for OOsoftware development. In fact, the OO paradigm 
  10254. provides three primary ways to support reuse:
  10255.  
  10256. 1. Classes. The encapsulation of function and data provides for their use 
  10257. via multiple instantiation and in aggregation relationships with other 
  10258. classes.
  10259.  
  10260. 2. Inheritance The extension of a class into subclasses by specializing the 
  10261. existing class allows subclasses to share common features.
  10262.  
  10263. 3.Polymorphism The reduction of program complexity by providing 
  10264. thesame operation on several data types via several implementations for 
  10265. a common interface.
  10266.  
  10267. Each of these reuse approaches involves some trade-offs in terms of 
  10268. application and desirability. These trade-offs include the "cleanliness" of 
  10269. the reuse; in other words, whether or not each component has a 
  10270. traceable heritage of evolution and consequently whether or not changes 
  10271. to a component will result in changes throughout the system [3]. For 
  10272. example,creating a subclass and overloading a method through 
  10273. polymorphism can cause unexpected results at execution time in the 
  10274. case of an unintentional name conflict. Modifying source code, whether 
  10275. for the method implementation or simply the interface, will propagate 
  10276. changes to all parts of the system using that method. Alternately, simple 
  10277. subclassing (without polymorphism) or use of a method without 
  10278. modification of source code provides for clean and safe reuse.
  10279.  
  10280. This view of OO reuse corresponds to the subsequent testing requirements 
  10281. incurred by the implications of inheritance and polymorphism [4]. For 
  10282. testing purposes, each inherited methods requires retesting and each 
  10283. possible binding of a polymorphic component requires a separate test. 
  10284. The extent of testing depends on the "cleanliness" of the reuse.
  10285.  
  10286. If the features of OOlanguages do not guarantee reuse [5],they certainly 
  10287. do not guarantee good programming. In traditional procedural 
  10288. development programmers should use language features such as macros, 
  10289. functions, and procedures when they must repeatedly execute the same 
  10290. operations. The programmer may use techniques (depending on the 
  10291. implementation language) such as variable macros (a method for 
  10292. overloading macro definitions) or generic packages (a method for 
  10293. overloading abstract data types in Ada). We consider the use of these 
  10294. language features and techniques"good programming" or "good 
  10295. design."Likewise, we expect OO programmers to use the language features 
  10296. at their disposal (e.g., classes, inheritance,and polymorphism) to 
  10297. abstract features common to objects and to minimize the amount of 
  10298. code they must write and maintain.
  10299.  
  10300. In traditional development, we consider a component "reused" when the 
  10301. programmer avoided having to write software by means of obtaining it 
  10302. from "someplace else." Within small teams or organizations, we expect 
  10303. the use of macros, functions, and procedures for common functions. 
  10304. Repeated calls to these components do not count as reuse; calling 
  10305. components simply uses the features of procedural languages. However, 
  10306. if the organization obtains the software from another organization or 
  10307. product we count it as reuse.
  10308.  
  10309. Likewise, a small team or organization may build a class hierarchy in 
  10310. which subclasses incrementally specialize the common aspects of parent 
  10311. classes.  We expect subclassing, inheritance, and polymorphism in OO 
  10312. development. Of course, multiple instantiations of an object do not 
  10313. count as reuse for the same reason multiple calls to a function do not 
  10314. count. Reuse in OO programs comes from the use of classes and methods 
  10315. obtained from other organizations or products, thereby resulting in a 
  10316. savings of development effort.
  10317.  
  10318. I call the issue of determining when an organization has saved effort by 
  10319. using software from another organization or product the boundary 
  10320. problem. In practice, however, boundaries become obvious due to the 
  10321. structure of the organization (the people) and/or the structure of the 
  10322. software (in most cases management structure maps to the software 
  10323. structure). On small projects, "reused" classes come from pre-existing 
  10324. class libraries, commercially licensed class libraries, or other projects. On 
  10325. large projects,the many organizations working on the project will reuse 
  10326. each other's software as well as reuse software from commercial sources 
  10327. and reuse software perhaps developed for that purpose by a team 
  10328. dedicated to building shared classes.
  10329.  
  10330. 3.2  Issues
  10331.  
  10332. One issue involves counting"extra" code in a reused class. In traditional 
  10333. development, generalizing a component may require additional code. 
  10334. Take the case of a variable macro instantiation. Do you count reuse 
  10335. based on:
  10336.  
  10337. 1.the code produced in that instantiation.
  10338.  
  10339. 2.the average code produced over all possible instantiations.
  10340.  
  10341. 3.the maximum code produced of all possible instantiations.
  10342.  
  10343.  
  10344. 4.the macro source code needed for that instantiation including error 
  10345. checking on input parameters and environment variables.
  10346.  
  10347. 5.the total macro source, to include code for all possible macro 
  10348. instantiations and the error checking for each, in which case you may 
  10349. give reuse credit for a significant amount of software the programmer 
  10350. would not have written.
  10351.  
  10352. Likewise, generalizing objects may require additional code to support 
  10353. many possible applications. Take the case of a reused class stack, which 
  10354. contains numerous methods for testing the status of and manipulating 
  10355. the stack. However, a developer may only need thepush and pop 
  10356. methods. Do you count reuse based on:
  10357.  
  10358. 1.code used by the developer (push, pop)
  10359.  
  10360. 2.total code in the reused stack class.
  10361.  
  10362. In practice I have found that this occurrences happens rarely, in part 
  10363. because other constraints (such as on object code size) restrict the 
  10364. practical ability to include more code than a developer needs. In 
  10365. addition to encouraging the use of pre-existing classes, this realization 
  10366. supports the counting of the entire class versus trying to determine the 
  10367. subset of methods actually used.
  10368.  
  10369. In fact, data collection affects reuse metrics because an analyst must 
  10370. usually work with available or easily obtainable data. For traditional 
  10371. development, the reuse analyst must know the size of each reused 
  10372. component, the total size of the software,and the developers and users of 
  10373. each component. Likewise,the OO analyst must know the size of each 
  10374. class, the total size of the program, and all the developers and users of 
  10375. each class. Currently, traditional metrics use "lines of code" for 
  10376. measuring component size; although this measure holds for OO, other 
  10377. measures of effort may include the total number of classes or the total 
  10378. number of methods.
  10379.  
  10380. 3.3  How to quantify reuse in OO programs
  10381.  
  10382. The definition of reuse and what should count as a Reused Source 
  10383. Instruction (RSI)(or reused objects) applies to all programming 
  10384. paradigms. The use of language features such as
  10385.  
  10386. 1.functions, procedures, generics, and (variable) macros in the 
  10387. procedural paradigm
  10388.  
  10389. 2.classes, inheritance, and polymorphism in the OO paradigm
  10390.  
  10391. do not, by themselves, constitute "reuse" as much asthey represent a 
  10392. particular method to solve a problem. The rationale for defining reuse in 
  10393. any paradigm depends not on language features but rather on an 
  10394. assessment of whether someone saved effort through the use of software 
  10395. they obtained from someplace else; in short, software they did not have 
  10396. to write. The solution to determining reuse levels in programs lies in the 
  10397. boundary problem. Weexpect organizations to call procedures and 
  10398. inherit methods that the organization developed for its own use. When 
  10399. an organization avoided development by using software it obtained from 
  10400. someplace else,then we say it "reused" the software.
  10401.  
  10402. 4   Comparison
  10403.  
  10404. Numerous references cite reuse as a principal benefit of object-oriented 
  10405. technology. Kain admits the limited availability of quantitative evidence 
  10406. of reuse in object-oriented programming and observes that few 
  10407. experience reports say how they measure reuse [6]. Kain cites evidence 
  10408. that some reports count reuse as the use of classes and methods across 
  10409. applications (as explained above) and not, for example, inheritance 
  10410. within an application.  Other reports count inheritance as reuse of the 
  10411. superclass; these differences prevent the comparison of OO experience 
  10412. reports.
  10413.  
  10414. Although Kain recognizes the need to evaluate OO reuse in the context of 
  10415. multiple teams and organizations (not individual programmers), 
  10416. Henderson-Sellers claims reuse comes from subclassing via inheritance 
  10417. and from multiple instantiations of the same class [7]. Although he 
  10418. focuses on the reuse of classes from reusable class libraries, he includes 
  10419. references to the reuse of classes from one project to another and from 
  10420. classes built for reuse within the organization. Henderson-Sellers 
  10421. discusses OO reuse economics using a simple Cost-Benefit Model but he 
  10422. fails to compare the model to most other work done in the field.
  10423.  
  10424. References
  10425.  
  10426. [1]J. Poulin,"Issues in the Development and Application of Reuse Metrics 
  10427. in a Corporate Environment,"in Proceedingsof the 5th International 
  10428. Conference on Software Engineering and Knowledge Engineering, (San 
  10429. Francisco, CA), pp. 258-262,16-18 June 1993.
  10430.  
  10431. [2]J. Poulin,"Panel: Metrics for Object-Oriented Software Development," 
  10432. in 6th IBM Object-Oriented Software Development Conference, (Toronto, 
  10433. CAN),19-23 July 1993.
  10434.  
  10435. [3]A. Cockburn,"The Impact of Object-Orientation on Application 
  10436. Development," IBM Systems Journal, vol. 32, no. 3, pp. 420-444, 1993.
  10437.  
  10438. [4]R. V. Binder, "Testing Object-Oriented Systems: A Status Report," 
  10439. Crosstalk, vol. 8, no. 4, pp. 16-20, April 1995.
  10440.  
  10441. [5]M. Griss, "PANEL: Object-Oriented Reuse," in Proceedings of the Third 
  10442. International Conference on Software Reuse, (Rio de Janeiro, Brazil), pp. 
  10443. 209-213, 1-4 November 1994.
  10444.  
  10445. [6]J. B. Kain, "Making Reuse Cost Effective," Object Magazine, vol. 4, no.3, 
  10446. pp. 48-54, June 1994.
  10447.  
  10448. [7]B. Henderson-Sellers, "The Economics of Reusing Library Classes," 
  10449. Journal of Object-Oriented Programming, vol. 6, no. 4, pp. 43-50, July-
  10450. August 1993.
  10451.  
  10452. 5   Biography
  10453.  
  10454. Jeffrey S. Poulin, works as a Senior Programmer with Loral Federal 
  10455. Systems (formally IBM Federal Systems Company) in Owego, NY. As a 
  10456. member of the Advanced Technology Group, he serves as the Principal 
  10457. Investigator and leader of research into new open systems standards-
  10458. compliant technologies in the areas of distributed UNIX system 
  10459. management, networking, and object-oriented software development. His 
  10460. responsibilities in Owego include lead architect for the LFS reuse 
  10461. program, technical lead for a contract in support of reuse across the U.S. 
  10462. Army,and the reuse strategy for a major Army MIS development 
  10463. program. 
  10464.  
  10465. From 1991-1993 Dr.Poulin worked in the IBM ReuseTechnology Support 
  10466. Center (RTSC)where he led the development and acceptance of the IBM 
  10467. software reuse metrics and return on investment (ROI) model. He also 
  10468. organized, edited, contributed to, and published a complete library of
  10469. resources on the IBM Reuse Method. Active in many professional 
  10470. activities, Dr. Poulin has published over 30 papers on software 
  10471. measurement and reuse. In addition to serving on numerous conference 
  10472. committees and panels, he chaired the IEEE Computer Society 6th 
  10473. Annual Workshop on Software Reuse (WISR'93) in November, 1993. A 
  10474. Hertz Foundation Fellow, Dr. Poulin earned his Bachelors degree at the 
  10475. United States Military Academy at West Point and his Masters and Ph.D. 
  10476. degrees at Rensselaer Polytechnic Institute in Troy, New York.
  10477. Domain-specific Software Architecture Based on a Building Block Method
  10478.  
  10479. Muthu Ramachandran
  10480.  
  10481. Software Engineering Applications Group
  10482. Philips Research Labs
  10483. Redhill RH1 5HA, UK
  10484. Email: ukrrama@prl.philips.co.uk
  10485. Tel: +44-1293-815951
  10486. Fax:+44-1293-815500
  10487. Email: ukrrama@prl.philips.co.uk
  10488.  
  10489. Abstract
  10490.  
  10491. This paper discusses a method for designing domain-specific 
  10492. architectures for a family of telecommunication systems. This method 
  10493. has evolved to support reusability, configurability, testability, and 
  10494. conceptual integrity.
  10495.  
  10496. Keywords: Reuse, Building Block Method, Software Architecture
  10497.  
  10498. Workshop Goals: Networking
  10499.  
  10500. Working Groups: Reuse process models, Design guidelines for reuse, 
  10501. Domain analysis, Reuse and OO methods.
  10502.  
  10503. 1   Background
  10504.  
  10505. Philips Kommunication Industry (PKI)has developed a method to 
  10506. describe the architectural needs for the telecommunication applications. 
  10507. We, in research,took their initial working level ideas and tailored to meet 
  10508. their architectural and reuse requirements. This method supports reuse 
  10509. in large scale in terms of subsystems. After tailoring the concepts, criteria 
  10510. and guidelines, PKI is able to achieve more than 60% reuse across the 
  10511. family.
  10512.  
  10513. 2   Position
  10514.  
  10515. After tailoring the method and concepts, the new method has a support 
  10516. for:
  10517.  
  10518. 1.Architectural reuse
  10519.  
  10520. 2.Reuse guidelines for design reuse
  10521.  
  10522. 3.Conceptual integrity
  10523.  
  10524. 4.Design for test, which has been ignored by the reuse community
  10525.  
  10526. 5.Reuse by a large collection of construction set (group of objects and 
  10527. architecture that relate to the conceptual integrity of a family) and 
  10528. architectures.
  10529.  
  10530. 2.1  Building Blocks
  10531.  
  10532. Understanding the concepts behind a method is important when 
  10533. considering testing of reusable software. Basically focus your test 
  10534. principles based on the development concepts of a family of reusable 
  10535. systems. A Building Block (BB) is a collection of reusable object classes 
  10536. that represent a unit of system functionality. It is also a basic unit of a 
  10537. system architecture.  Each BB's separates specification (its interfaces) and 
  10538. implementation. Furthermore there are two kinds of building blocks 
  10539. such as an application BB and a generic BB. Application BB's are 
  10540. createdfrom existing generic BB's to achieve high granularity of reuse. 
  10541. Each units of reusable components developed to achieve high granularity 
  10542. of reuse as well as configurability and conceptual integrity of the system. 
  10543. Configurability and conceptual integrity are the main attributes for 
  10544. achieving reuse in this application family.
  10545.  
  10546. Our notion of quality attributes are high granularity of reuse 
  10547. (subsystems, architectures and product family), configurability and 
  10548. conceptual integrity, testing, and documentation.
  10549.  
  10550. The Building Block Development Method is a development methodology 
  10551. adopted for this project. It is based on the principles of architecture-
  10552. oriented decomposition and incremental layering, in addition to object-
  10553. oriented concepts such as object class (building block), generics, 
  10554. information hiding, and run-time binding. This makes this method 
  10555. superior and rich in offering advanced concepts to support reuse.
  10556.  
  10557. This method has improved PKI productivity by more than 60% increase 
  10558. in reuse across the family product line.
  10559.  
  10560. 3   Comparison
  10561.  
  10562. When we compare to existing work on architectural reuse such as SEI's 
  10563. work with DSSA and Loral Federal Systems, etc, we have achieved reuse 
  10564. and quality by various concepts of the method [1, 2, 3].
  10565.  
  10566. Our guidelines on reuse and design for test are comprehensive to Booch's 
  10567. notion of a reusable component.
  10568.  
  10569. References
  10570.  
  10571. [1]W. Tracz, "DSSA Frequently Asked Questions," in ACM SIGSOFT, SE 
  10572. Notes, 1994.
  10573.  
  10574. [2]E. Mettala and M. Graham, "The domain specific software 
  10575. architecture program , CMU/SEI-92-SR-9," tech. rep., June 1992.
  10576.  
  10577. [3]R. Hayes-Roth and W. Tracz, "DSSAtool requirements for key process 
  10578. functions ,version 1.0," tech. rep., October 1993.
  10579.  
  10580. Biography
  10581.  
  10582. Dr Muthu Ramachandran is currently a senior research scientist at 
  10583. Philips Research Labs, researching into reuse methods for DSSA, testing, 
  10584. OO reuse. Previously he was a senior lecturer at Liverpool John Moores 
  10585. University teaching specialist courses on reuse and has published more 
  10586. than 30 articles on reuse. He did his doctoral thesis on development for 
  10587. reuse at Lancaster University.
  10588. A Fuzzy Query Language for a Software Reuse Environment
  10589.  
  10590. Antonio Nestor Ribeiro
  10591.  
  10592. Fernando Mario Martins
  10593.  
  10594. Inesc/ Universidade do Minho
  10595. Campus de Gualtar, 4700 Braga, Portugal
  10596. Tel: +351 053604470
  10597. Fax: +351 053 612954
  10598. Email: fanr,fmmg@di.uminho.pt
  10599.  
  10600. Abstract
  10601.  
  10602. The effectiveness of the reuse based approach to software development is 
  10603. strongly dependent on the underlying classification scheme and retrieval 
  10604. mechanism. Based on the Prieto-Diaz faceted classification scheme, this 
  10605. paper proposes a logical representation for software components, called 
  10606. Abstract Objects (AO), and a non-strict, fuzzy comparison strategy which 
  10607. is the basis of a fuzzy query language. This strategy goes beyond the 
  10608. common strict comparison implemented in usual query languages 
  10609. because it expands the usual comparison bounds from a strict to a fuzzy 
  10610. reasoning method.  This allows to find reusable software components 
  10611. which are at a certain semantical distance(similarity) from a given one. 
  10612. The measurement of similarity is based on a Conceptual Graph in which 
  10613. conceptual distances are defined.  The presented strategy uses Prieto-
  10614. Diaz faceted classification method. On the basis of a distance calculus 
  10615. metrics the end-user is able to make queries by using both enumerative, 
  10616. attributive and faceted descriptions.
  10617.  
  10618. Keywords: Reuse environments, fuzziness, faceted classification, querying 
  10619. with uncertitude.
  10620.  
  10621. Workshop Goals: Learning, presenting reuse experiences
  10622.  
  10623. Working Groups: Reuse and formal methods, tools and environments
  10624.  
  10625. 1   Background
  10626.  
  10627. Reuse is a process whereby previously found software solutions are 
  10628. compared with new requirements. It is therefore mainly a comparison or 
  10629. analogical process. Two different problems then arise. On one hand, 
  10630. because it is not feasible to compare the "real", physical, software 
  10631. components, a logical representation must be found for them and the 
  10632. comparison will deal with these logical counterparts. The classification 
  10633. scheme has to provide for the mapping from physical software 
  10634. components to their logical representations. On the other hand, the 
  10635. retrieval mechanism will be based on the devised comparison algorithm.
  10636.  
  10637. Since 1992 we have been involved in an Eureka software project,called 
  10638. Sour (Sour is the acronym of the Eureka 379 project which stands for 
  10639. "Software Use and Reuse") intended to develop a Meta-Case system based 
  10640. on a software classification and reuse strategy following the Prieto-Diaz 
  10641. faceted scheme.
  10642.  
  10643. 2   Position
  10644.  
  10645. 2.1  Introduction
  10646.  
  10647. This paper describes the query mechanism used in the Sour system 
  10648. which used a fuzzy reasoning [1,2 ,3 ].
  10649.  
  10650. The Sour information model is based on an hierarchical object structure, 
  10651. resembling a semantic network. The abstract objects (Sour's unit of 
  10652. information) are instances of classes inheriting a set of attributes. This 
  10653. encompasses the usual attributive description used in many repository-
  10654. based management systems. This attributive description doesn't support 
  10655. the human reasoning flexibility because it lacks the ability to cope with 
  10656. vagueness and analogy.  These properties are of great value in a context 
  10657. where the user wants to find software components compliant to a set of 
  10658. desired properties[4]. Combining a faceted view of the repository with a 
  10659. conceptual graph relating the facets, a fuzzy reasoning mechanism over 
  10660. abstract-objects was implemented. Asa consequence of this classification 
  10661. strategy, the query system has to deal with both strict and fuzzy 
  10662. sentences of the query language.
  10663.  
  10664. The query system is supported both by the conceptual graph and by the 
  10665. semantical distance calculus algorithm.
  10666.  
  10667. In this paper we present a query language developed for the Sour system 
  10668. where it is possible to support the retrieval of software components that 
  10669. are similar at a given degree of similarity.
  10670.  
  10671. 2.2  The Conceptual Graph
  10672.  
  10673. Fuzziness is supported in the Soursystem by using a graph in which the 
  10674. possible values for the facets are related with each other through a 
  10675. specified distance. The facets are the leaves of the graph and are 
  10676. connected to concepts. Concepts are needed to calculate the distance 
  10677. between two facets.
  10678.  
  10679. The Conceptual Graph, CG  f(V1; V2; d) : V1; V22 V ^d 2 1::100g, is a set 
  10680. of nodes and a set of arcs weighted by the semantical distance between 
  10681. the two nodes.
  10682.  
  10683. A path between two nodes V1 and V2, isdefined as a sequence of arcs 
  10684. starting at V1 reaching V2. The distance between two nodes is calculated 
  10685. by the following rule:
  10686.  
  10687. if a path exists between them, the distanceis given by the minimum of 
  10688. the product of the weights of the arcs;
  10689.  
  10690. if between two nodes V1 and V2 there isn't a path between them but a 
  10691. transitive successor VS may be found, let Dv1 and Dv2 be the distances 
  10692. from V1 and V2 to VS. The distance between V1 and V2 is given by (Dv1+ 
  10693. Dv2)=2.
  10694.  
  10695. 2.3  Query Language
  10696.  
  10697. The interaction between a user and the repository of reusable software 
  10698. components must follow a well defined language. This language will 
  10699. control both the visual layer and the access to the repository. The 
  10700. mechanism of fuzzy tuning allows for the construction of queries which 
  10701. result is a set of objects at a certain degree of similarity to a given object.
  10702.  
  10703. This degree of similarity has to be specified by the user. Given a 
  10704. similarity value all the objects in the repository at a similarity measure 
  10705. greater or equal will be candidates for reuse (solutions). A low similarity 
  10706. level will result in a larger set of candidates. However, loose similarity 
  10707. requirement will select objects needing more adaptation effort,therefore 
  10708. less reusable.
  10709.  
  10710. If the intended similarity level is near 100% then the kind of behaviour 
  10711. expected in the retrieved objects is similar to the one given by just a 
  10712. strict comparison. If the similarity frontier is near 0% the retrieved 
  10713. objects may not have significant resemblance with the desired result.
  10714.  
  10715. The query language will accept sentences where it is possible to adjust 
  10716. the "grain" of similarity.
  10717.  
  10718. The archetype[5] of a typical query sentence is
  10719.  
  10720. GET ALL OBJECTS CLASS= "class" AND <Attribute Description>
  10721.  
  10722. being
  10723.  
  10724.  <AttributeDescription>=<FacDescp>  j  <AttDescp>
  10725.  
  10726.  <FacDesp> =   FACNAME= "facname" AND FACVALUE= "facvalue" [AND 
  10727. DIST= <Dist>]
  10728.  
  10729.  <AttDescp> =  ATTNAME= "attname" AND ATTVALUE= "attvalue"
  10730.  
  10731.  <Dist> =   [1..100]
  10732.  
  10733. 2.3.1 Terminological Discrepancy
  10734.  
  10735. Another problem that must be regarded is the one related to the 
  10736. terminological issue. The ability for an end-user to reason about the 
  10737. repository strongly dep ends on the query language [6]. It is thus 
  10738. desirable to guarantee that a query sentence may be made using 
  10739. different Lexical Thesaurus. The process of query synthesis will then be 
  10740. preceded by a terminological standardization one. This standardization 
  10741. process will be accomplished by using a Lexical Thesaurus System where 
  10742. grammatical declinations and synonymous are represented.
  10743.  
  10744. 3   Comparison
  10745.  
  10746. Our Meta-Case platform proposes a classification scheme based both on 
  10747. faceted and coarse attributive classification. The faceted classification is 
  10748. intended to be a a fine evaluator of cases in which coarser search-
  10749. methods can not provide effective hints to latter reuse. A somehow 
  10750. similar strategy is proposed in Tellos[7]. Tellos also assumes two 
  10751. different classification strategies. The first one consists on a predefined 
  10752. set of features found adequate in order to describe objects within a given 
  10753. domain. The second one assumes that objects are instances of existing 
  10754. classes. Tellos reasoning is made upon a theoretical basis for the 
  10755. comparison and a distance model for similarity calculus.
  10756.  
  10757. The approach described in [3]also assumes a faceted classification 
  10758. scheme. Queries in this system are seen as templates of objects with the 
  10759. desired facets values specified. The result of a query is a ranked list of 
  10760. similar objects.
  10761.  
  10762. References
  10763.  
  10764. [1]R. Prieto-Diaz and P. Freeman, "Classifying Software forReusability," 
  10765. IEEE Software, vol.4, no. 1, pp. 6-16, 1987.
  10766.  
  10767. [2]R. Prieto-Diaz,"Implementing Faceted Classification for Software 
  10768. Reuse," Communications of the ACM, vol. 34, no. 5, 1991.
  10769.  
  10770. [3]E. Ostertag, J. Hendler, R. Prieto-Diaz, and C. Braun, "Computing 
  10771. Similarity in a Reuse Library System: An AI-Based approach," ACM 
  10772. Transactions on Software Engineering and Methodology,vol. 1, pp. 205-
  10773. 228, July 1992.
  10774.  
  10775. [4]J. N. Oliveira, "Fuzzy Object Comparison and Its Application to a Self-
  10776. Adaptable Query Mechanism," 1995. Invited paper, Sixth International 
  10777. Fuzzy Systems Association World Congress.
  10778.  
  10779. [5]F. M. Martins and J. N. Oliveira, "Archetype-Oriented User Interfaces," 
  10780. Computer & Graphics, vol. 14, no. 1, pp.17-28, 1990.
  10781.  
  10782. [6]H. L. Larsen and R. R. Yager, "The use of relational thesauri for 
  10783. classificatory problem solving in information retrieval and expert 
  10784. systems," tech. rep., Department of Computer Science, Roskilde 
  10785. University, Denmark and Machine Intelligence Institute, Iona College, 
  10786. USA, 1991.
  10787.  
  10788. [7]G. Spanoudakis and P. Constantopoulos, "Similarity for analogical 
  10789. software reuse: A conceptual modelling approach," in Advanced 
  10790. Information Systems Engineering (C. Rolland, F . Bodart, and C. Cauvet, 
  10791. eds.), no.685, pp. 483-503, Springer-Verlag, 1993.
  10792.  
  10793. Biography
  10794.  
  10795.  
  10796. Antonio Nestor Ribeiro is an assistant lecturer at the Computer Science 
  10797. Department of the Minho University at Braga,Portugal. He is currently 
  10798. doing his Msc thesis upon the prototyping of concurrent interaction 
  10799. systems.
  10800.  
  10801. He is an investigator of the Inesc group 2361, called Formal Methods of 
  10802. Programming, being a member of the team responsible for the Intelligent 
  10803. Query Sub-system of the Sour project.
  10804.  
  10805. Fernando Mario Martins is a senior lecturer at the Computer Science 
  10806. Department of the Minho University at Braga, Portugal. His main 
  10807. research interests are human machine interface, object oriented systems 
  10808. and formal methods.
  10809.  
  10810. He is a senior member of the Inesc group 2361. In that quality he was co-
  10811. responsible for the Sour project.
  10812. Supporting Framework Evolution with Refactorings
  10813.  
  10814. Don Roberts 
  10815. John Brant
  10816.  
  10817. University of Illinois
  10818. Department of Computer Science
  10819. Tel: (217)244-0431
  10820. Email: fdroberts,brantg@cs.uiuc.edu
  10821.  
  10822. Abstract
  10823.  
  10824. One of the major problems with reusable software is that modifications 
  10825. to the interface of any component become difficult. Both the design and 
  10826. code that uses the software must also be modified. Often, it is not 
  10827. possible to modify all uses since the person modifying a reusable 
  10828. component does not have access to every use of that component. In this 
  10829. paper we discuss a method for asynchronous updating source code by 
  10830. using refactorings.
  10831.  
  10832. Keywords:  Frameworks, Refactoring, Object-Oriented Programming and 
  10833. Design, Maintenance, Software Evolution
  10834.  
  10835. Workshop Goals: Learning; Networking; Determining feasibility of 
  10836. proposed approach.
  10837.  
  10838. Working Groups: Reuse management, organization and economics; Reuse 
  10839. and OO methods and technology; Tools and environments
  10840.  
  10841. 1   Background
  10842.  
  10843. One of the more successful approaches to producing reusable software is 
  10844. the development of object-oriented frameworks for particular 
  10845. application domains. Examples of this type of software include the 
  10846. HotDraw framework for graphical editors [1] and the Model-View-
  10847. Controller framework for user interfaces[2].
  10848.  
  10849. Developing truly reusable frameworksis an iterative process. System 
  10850. designers develop several related applications and extract the 
  10851. commonalities, which become the key components of the framework. As 
  10852. the developers derive additional applications based on the framework, 
  10853. they discover shortcomings in the original design that they must correct. 
  10854. We have worked with several different frameworks and have recognized 
  10855. many similar transformations that are common to the framework 
  10856. development process.
  10857.  
  10858. 2   Position
  10859.  
  10860. Frameworks are a good way to reuse both design and code. However, as 
  10861. frameworks evolve and their interfaces change, the advantages of using a 
  10862. framework are lessened. Not only are the developers responsible for 
  10863. performing normal maintenance activities, they must also evolve their 
  10864. programs in accordance with the evolution of the framework. This adds 
  10865. overhead to using the framework.
  10866.  
  10867. Currently, developers of frameworks take one of two approaches. In the 
  10868. first approach,the developer defines the interfaces to a framework when 
  10869. it is released. Once the interfaces are defined, they never change. This is 
  10870. the approach taken by Microsoft's Common Object Model. Any 
  10871. modifications to the framework must preserve the interface, drastically 
  10872. reducing the type of evolution that can occur. The benefit of this 
  10873. approach is that users of the framework do not have to update their 
  10874. software whenever a new version is released.
  10875.  
  10876. The second approach to this problem is one adopted by ParcPlace with 
  10877. their Smalltalk programming environments. In this approach, the 
  10878. designer of the framework recognizes that the design will evolve and, 
  10879. hopefully, improve over time. To fully allow this to occur,the interface to 
  10880. the reusable code must change. The problem, of course, is that if 
  10881. interfaces change, user's code must be updated. This is a time consuming 
  10882. and, one might argue, unproductive task.
  10883.  
  10884. The paradox that arises is that users want the framework to evolve, but 
  10885. they are not willing to devote the resources that are necessary to allow 
  10886. their program to stay synchronized with it.
  10887.  
  10888. 2.1  Refactoring
  10889.  
  10890. One technique that aids in the design of reusable frameworks is 
  10891. refactoring. William Opdyke defined a refactoring as a behavior-
  10892. preserving transformation that improves the design of an object-oriented 
  10893. system [3]. Typically a refactoring consists of a transformation to be 
  10894. performed on the program along with a set of preconditions which, if 
  10895. satisfied, ensure that the behavior of the transformed program will be 
  10896. identical to the original.  Examples of refactorings range from the low-
  10897. level, such as rename a method, to the high-level, such as convert 
  10898. inheritance to aggregation.
  10899.  
  10900. In addition to using refactorings to evolve frameworks, refactorings can 
  10901. also be used to convert applications to use updated versions of the 
  10902. frameworks. Currently, whenever a vendor updates a framework, 
  10903. customers who use that particular framework must spend time 
  10904. converting their applications that are based on the framework to work 
  10905. with the new framework. But with an integrated refactoring 
  10906. environment, when the vendor releases a new version of a framework, 
  10907. they would also include a set of refactorings that will transform 
  10908. programs based on the old framework to the new version. This would 
  10909. greatly ease the transition. An automatic refactoring system might not 
  10910. be able to convert the entire system since often functionality is added. 
  10911. However,even if it could convert 90% of an application, this would be 
  10912. 90% less work that the customer would have to perform.
  10913.  
  10914. There are two extensions to this system that we are considering. First, 
  10915. since all the transformations cannot be performed by automatic 
  10916. refactorings, provide a mechanism that will notify the user of portions of 
  10917. their program that must be updated to match the new framework. 
  10918. Another solution to this problem is to allow the framework developer to 
  10919. include non-behavior-preserving transformations in addition to the 
  10920. refactorings.
  10921.  
  10922. 3   Comparison
  10923.  
  10924. Kingsum Chow has presented a method to handle interface 
  10925. modifications within reusable code [4]. In his paper, he defines two types 
  10926. of maintenance: synchronous maintenance, which is the maintenance 
  10927. activity that can be done at the time of the change to a piece of code, 
  10928. and asynchronous maintenance, which are maintenance activities that 
  10929. cannot be performed at the time of the change to a piece of code. If 
  10930. designers change the interface to a library that is being reused, 
  10931. asynchronus maintenance results.
  10932.  
  10933. Chow developed his ideas with C++ in mind, although his research has 
  10934. not progressed to the point of a workable tool. In his approach, the 
  10935. changes that must occurin the user's code are embedded within the 
  10936. interface files (.h files inC++).  In our system, which was developed with 
  10937. Smalltalk in mind, the refactorings are distributed separately from the 
  10938. code itself. Additionally, we have not addressed the problem of 
  10939. recompilation of the user's code since Smalltalk is a dynamically 
  10940. compiled environment. If either Chow's or our approach is implemented 
  10941. in C++, this concern must be addressed.
  10942.  
  10943. Ira Baxter proposed another system that is similar to ours [5].  His 
  10944. system transforms designs, written in a specification language, into 
  10945. executable code. To reduce the costs involved in changing a design, he 
  10946. proposes that the derivation that transformed the original design be 
  10947. stored along with the executable program. Then, when the design 
  10948. changes, the system will reuse as many of the derivation steps from the 
  10949. original transformation as possible in the new derivation, reducing the 
  10950. amount of work required.
  10951.  
  10952. Our system performs source-to-source transformations rather than 
  10953. design-to-source transformations. However, both systems consider 
  10954. transformations to be first-class entities that are to be stored and 
  10955. performed at an arbitrary point in the future.
  10956.  
  10957. References
  10958.  
  10959. [1]J. M. Brant, "Hotdraw," Master's thesis, University of Illinois, Jan. 
  10960. 1995.
  10961.  
  10962. [2]G. E. Krasner and S. T.Pope, "A cookbook for using the model-view-
  10963. controller user interface parface paradigm in Smalltalk-80," Journal of 
  10964. Object-Oriented Programming, vol. 1, no. 3, pp. 26-49, 1988.
  10965.  
  10966. [3]W. F. Opdyke, Refactoring Object-Oriented Frameworks.  PhD thesis, 
  10967. University of Illinois, 1992.
  10968.  
  10969. [4]K. Chow,"Program transformation for asynchronous software 
  10970. maintenance,"in Proceedings ICSE-17 Workshop on Program 
  10971. Transformation for Software Evolution (W. Griswold, ed.), April 1995.
  10972.  
  10973. [5]I. D. Baxter, "Design (not code!) maintenance," in Proceedings ICSE-17 
  10974. Workshop on Program Transformation for Software Evolution (W. 
  10975. Griswold, ed.), April 1995.
  10976.  
  10977. 4   Biography
  10978.  
  10979. Don Roberts is doctoral student in the Deparment of Computer Science 
  10980. at the University of Illinois. His research interests in the object-oriented 
  10981. programming and design with an emphasis on refactoring. He is 
  10982. currently developing a tool for automatically refactoring Smalltalk 
  10983. programs. For his MS, Mr. Roberts developed register allocation 
  10984. algorithms for the Typed Small talk optimizing compiler. Mr. Roberts 
  10985. received both his MS (1992) and BS (1990) from the University of Illinois.
  10986.  
  10987. John Brant is a doctoral student in the Department of Computer Science 
  10988. at the University of Illinois. His research interests are in object-oriented 
  10989. programming and design. He is currently working on a business model 
  10990. framework for Caterpillar, as well as a tool for automating source code 
  10991. transformations. For his MS, Mr. Brant worked on the HotDraw 
  10992. framework for structured drawing editors. Mr. Brant received both his MS 
  10993. (1995) and BS (1992) in computer science from the University of Illinois.
  10994. Domain Modeling Techniques for Representing Commonality and 
  10995. Variability:  Towards A Comparative Framework
  10996.  
  10997. Mark A. Simos
  10998.  
  10999. Organon Motives
  11000. 36 Warwick Road
  11001. Watertown MA 02172
  11002. Tel: (617) 625-2170
  11003. Fax:  (617) 628-6010
  11004. Email: simos@media-lab.mit.edu
  11005.  
  11006.  
  11007. Abstract
  11008.  
  11009. Domain analysis (DA) is often described as analysis of commonality 
  11010. and variability across multiple systems or subsystems within a 
  11011. specific application domain. Developers and practitioners of DA 
  11012. methods have adopted diverse approaches to representing this 
  11013. commonality and variability in explicit models. Previous attempts to 
  11014. compare DA methods have focused on the methods in their entirety. 
  11015. This position paper proposes a useful and tractable first step: an 
  11016. initial comparative framework for commonality and variability 
  11017. representation strategies in DA.
  11018.  
  11019. We first report on recent progress in structuring the Organization 
  11020. Domain Modeling (ODM) method to allow integration of a core domain 
  11021. modeling process with diverse domain modeling representations. We 
  11022. then suggest some general requirements for such representations. 
  11023. The proposed framework characterizes different approaches in terms 
  11024. of two major attributes: relative closeness of coupling between 
  11025. system and domain models, and in terms of semantic expressiveness. 
  11026. We hope to use the workshop as an opportunity to collaboratively 
  11027. review, refine and extend the  framework to describe advantages, 
  11028. risks, and implementation issues for various approaches.
  11029.  
  11030. Keywords: domain modeling, domain analysis, commonality, 
  11031. variability, representations, taxonomic modeling
  11032.  
  11033. Workshop Goals: Opportunity to work intensively with researchers 
  11034. and practitioners in the field to develop useful consensus positions 
  11035. that will aid progress in the field.
  11036.  
  11037. Working Groups: Domain analysis/engineering; 
  11038. Reuse process models; Reuse terminology standards; Reuse handbook
  11039.  
  11040.  
  11041. 1   Background
  11042.  
  11043. A major focus of the author╒s recent work has been development of a 
  11044. systematic approach to domain engineering called Organization 
  11045. Domain Modeling (ODM). The ODM Guidebook Version 1.0 has 
  11046. recently been completed under the auspices of the ARPA STARS 
  11047. Program [10]. The guidebook was developed in collaboration with 
  11048. Richard Creps and Carol Klingler of Loral Defense Systems (formerly 
  11049. Unisys Government Systems Group), and Larry Levine (Organon 
  11050. Motives).
  11051.  
  11052. A key innovation of the new formulation of ODM is to identify what 
  11053. we term the core domain modeling life cyle and to differentiate it 
  11054. from a number of supporting methods. The core domain modeling 
  11055. life cycle includes processes, workproducts and methods central and 
  11056. particular to the domain engineering mission. Supporting methods 
  11057. include a number of technical areas such as system engineering, 
  11058. reengineering, and process modeling, and non-technical areas such as 
  11059. market analysis and qualitative data acquisition methods. Each 
  11060. supporting area is essential to carrying out activities that are part of 
  11061. domain engineering, but involves techniques that are well-
  11062. established outside the context of domain engineering, and for which 
  11063. a variety of alternative approaches are available. For example, steps 
  11064. for systematically scoping domains are included in the core life cycle; 
  11065. process modeling techniques, while employed in various portions of 
  11066. the life cycle, are not part of the core.
  11067. Separation ofprocess and representational aspects is also 
  11068. fundamental to this structure. Process aspects deal with the formal 
  11069. or informal sequence of activities: planning the DA project, selecting, 
  11070. scoping and defining domains, gathering domain information from 
  11071. various sources, analyzing and representing domain information in 
  11072. some modeling representation, and (in the latter phase of domain 
  11073. engineering) using the domain model as a basis for engineering 
  11074. reusable software assets for applications in the domain. 
  11075. Representational aspects concern specific notations and associated 
  11076. semantics for the domain model itself, and other models (e.g., process 
  11077. models, system models) used at various stages in the DA process. 
  11078. Separating these aspects makes ODM more flexible and adaptable to 
  11079. needs of different organizations and domains, since the method can 
  11080. be tailored to allow use of different representations, even multiple, 
  11081. complementary representations for a single domain. Of course, these 
  11082. two aspects cannot always be strictly independent; some 
  11083. representations embed assumptions about the methods and 
  11084. processes for their construction and vice versa.
  11085. 1.2  Representations of Commonality and Variability
  11086. The taxonomic modeling supporting method is a critical technical 
  11087. area that must be addressed to perform domain engineering. By 
  11088. taxonomic modeling we refer, not exclusively to hierarchical and/or 
  11089. inheritance-based modeling techniques, but more generally to any 
  11090. representations used to model commonality and variability across 
  11091. applications in the domain.
  11092. Isolating process from representational aspects of taxonomic 
  11093. modeling as a supporting method area has proved one of the most 
  11094. difficult parts of our restructuring effort. In our initial experience, 
  11095. distinguishing system from domain modeling representations seemed 
  11096. to be a major technology transfer obstacle for DA. If domain 
  11097. engineering is ╥all about╙ modeling commonality and variability, how 
  11098. can we characterize taxonomic modeling representations as a 
  11099. supporting method?
  11100. Our experience, however, suggests that it is feasible to enforce this 
  11101. separation. The major application of ODM to date has been with the 
  11102. Army/STARS Demonstration Project at CECOM SED, Ft. Monmouth, 
  11103. New Jersey [9, 12]. This project integrated the ODM method with use 
  11104. of the Reuse Library Framework (RLF) as a domain modeling tool. 
  11105. (RLF implements a structured inheritance network formalism for 
  11106. domain modeling, using capabilities related to but not identical to 
  11107. object-oriented modeling techniques [8].) Other small-scale pilot 
  11108. projects using an ODM-based approach have been performed under 
  11109. the leadership of Patricia Collins of the Hewlett-Packard Corporate 
  11110. Engineering Group [3]. Within HP, some groups resisted the idea of 
  11111. doing domain modeling using a structured inheritance-based 
  11112. representation such as that supported by RLF. Other groups had 
  11113. already shifted to an object-oriented (OO) development paradigm, 
  11114. and used OO-based representations. Each project has reported 
  11115. benefits to applying the ODM process model, for example, with 
  11116. respect to systematic techniques for scoping and bounding domains 
  11117. and documenting conceptual relations between domains. These 
  11118. benefits appear to be relatively independent of the modeling 
  11119. representation chosen.  
  11120. We have therefore written the ODM Guidebook in a way that does 
  11121. not assume use of a particular domain modeling representation, and 
  11122. believe the process as documented is robust enough to support 
  11123. diverse modeling approaches. We also intend to produce a more 
  11124. detailed document that describes recommended practice for 
  11125. performing ODM with the use of the RLF toolset. This has led to an 
  11126. interest in organizing the various alternatives for domain modeling 
  11127. representations themselves into a framework for comparison and 
  11128. selection. In the rest of this paper, we propose an initial cut at such a 
  11129. framework for taxonomic modeling representations in DA.
  11130.  
  11131. 2   Position
  11132.  
  11133. Modeling commonality and variability across multiple systems is an 
  11134. integral activity in domain engineering. A central issue is the ability 
  11135. to model conceptual relationships (similarity, distinguishing features, 
  11136. categorization) between artifacts and processes of systems that 
  11137. perform analogous missions in diverse contexts. This is distinct from 
  11138. the modeling of actual processing elements or data flows among 
  11139. components within a given system, or higher-level operational 
  11140. interactions among separate systems at the enterprise level.
  11141.  
  11142. 2.1  Requirements
  11143.  
  11144. Variability. Our starting position assumes it is useful for a domain 
  11145. model to document not just common but also variant features across 
  11146. a set of related systems.  Some methods and informal approaches 
  11147. emphasize commonality only. This approach, in some domains, can 
  11148. identify high-level abstractions (e.g., generic architectures) that 
  11149. encapsulate useful invariant properties. However, if the 
  11150. representation formalism used is only rich enough to express 
  11151. commonality, it imposes this assumption on the modelers, which may 
  11152. not hold for some organizations and/or some domains.
  11153.  
  11154. The need for modeling commonality and variability can arise in work 
  11155. products across the life cycle: in organization structure, process 
  11156. models, architectures, component functionality, or dynamic models of 
  11157. behavior.
  11158.  
  11159. Feature Binding Time Problem.  Beyond simple comparison across 
  11160. systems, in domain modeling it is important to distinguish 
  11161. combinations of features that must be "simultaneously satisfied" by a 
  11162. single application, vs. combinations where each feature individually 
  11163. must be supported by some application derivable from the domain 
  11164. model.  Essentially, the notion is that a choice between variant 
  11165. features can be "bound" or committed at various points within the 
  11166. software engineering life cycle. Modelers must be able to distinguish 
  11167. between these cases, to note connections between the same "logical" 
  11168. feature as it occurs in different "binding contexts", and for the asset 
  11169. base to be able to produce variant systems that implement features 
  11170. at different binding times. Conventional system modeling 
  11171. representations (even object-oriented representations) may have 
  11172. inadequate means for distinguishing a system version that binds a 
  11173. choice at implementation vs. at run time; since what is modeled as a 
  11174. run-time operation in one system may appear as a design decision in 
  11175. another.
  11176.  
  11177. A simple example would be the choice between tiled and overlapping 
  11178. window protocols in a window management system. Some systems 
  11179. are implemented in a way that "hard-wires" a specific  choice of tiled 
  11180. or overlapping windows. Others might allow this to be  specified in a 
  11181. configuration file that is read at start-up time. Still other  systems 
  11182. might have a "preferences" switch that can be changed  dynamically 
  11183. at run time by the user. 
  11184.  
  11185. 2.2  Proposed Framework
  11186. Having discussed some requirements, we now explore a proposed 
  11187. framework for alternative techniques for representing domain 
  11188. commonality and variability. The proposed framework identifies the 
  11189. following approaches:
  11190. 1) Use of single system models as "generic" domain models. The 
  11191. system model may be interpreted as a reusable component rather 
  11192. than a domain model; or it may be used as a abstract model 
  11193. representing only common features. With this strategy the 
  11194. representation used should be familiar and thus readily accepted by 
  11195. application engineers. Different exemplar systems may have been 
  11196. developed using different representations; some reverse engineering 
  11197. or conversion into a common format may be necessary.
  11198. This approach can presume a domain architected with a layer of 
  11199. commonality (a "core" reusable component or set of components 
  11200. requiring little or no adaptation), separated from a layer tailored for 
  11201. each application. Not all domains fall neatly into this style of 
  11202. architectural style. In particular, this approach may fail to exploit 
  11203. significant commonality in lower-level structural elements (e.g., 
  11204. components used by a large subset of applications, but not all 
  11205. applications in the domain). 
  11206. 2) Use of multiple system models as implicit domain models. In this 
  11207. approach, the perceived differences or contrasts between models 
  11208. becomes the true (though implicit) domain model. There may need to 
  11209. be a distinction made between "generic" models and models that 
  11210. represent specific exemplar systems; but similar notations are used 
  11211. for both. Tools like CTA's CAPTURE that  provide side-by-side views 
  11212. of analogous system diagrams help modelers visualize these 
  11213. differences [2].  
  11214. Where the common/variant "divide" happens at a clear structural 
  11215. boundary, hierarchical decomposition techniques can be extended to 
  11216. encapsulate variability; e.g., alternative decompositions.  For 
  11217. example, Yourdon data flow diagrams allow hierarchical 
  11218. decomposition of process bubbles in lower level diagrams; a domain 
  11219. model could include alternative decompositions of one common, 
  11220. higher-level process diagram. Variability can thus be introduced at 
  11221. arbitrary levels of system structure. Few conventional support tools 
  11222. manage such alternatives or variants, however. (Sufficiently 
  11223. sophisticated configuration management tools could represent 
  11224. variant application branches and thus manage the structure of 
  11225. alternatives.) 
  11226. This approach does not directly provide direct ways of expressing 
  11227. semantics of the relationships between system variants. In CAPTURE, 
  11228. such comparative insights can be documented by annotating 
  11229. application views with features, trade-offs and rationale.
  11230. 3) Extensions to system representations to express variability.  This 
  11231. allows for even more fine-grained representation of variability than 
  11232. structural decomposition, since variants need not fall only at 
  11233. hierarchical structural boundaries. That is, instead of representing a 
  11234. variant via an entire diagram, embedded notations for variability 
  11235. could be employed within a single diagram. For example, some 
  11236. analysts utilizing the FODA method have developed extended IDEF 
  11237. notations to show variant or alternative processes  [6]. One drawback 
  11238. of this approach remains potentially weak or ambiguous semantics of 
  11239. the extensions to the notations, especially in terms of ╥feature 
  11240. binding time╙ interpretations.
  11241. 5) Use of representations with built-in variability semantics.  By 
  11242. utilizing already supported constructs (e.g., inheritance mechanisms) 
  11243. it is possible to express commonality and variability across systems 
  11244. without inventing new notation or extending new tools. This could 
  11245. include entity-relationship diagrams, semantic data models, and 
  11246. object-oriented techniques [4,5].
  11247. Because system notational conventions are, in effect, overloaded to 
  11248. express domain semantics, developers can get confused as to what a 
  11249. given representation is intended to convey.  Resolving this ambiguity 
  11250. might require careful convention of use, or possible use of meta-
  11251. modeling techniques.
  11252. 6) Separate  variability representations, linked with system 
  11253. representations. In this approach, though semantic mechanisms such 
  11254. as specialization, generalization and inheritance may be used as in OO 
  11255. methods, interpretation of these relations is different than in a 
  11256. system model. Notations for system and domain modeling can be 
  11257. heterogenous; in fact, the domain model can reference system models 
  11258. that are themselves in heterogeous notations. The representations 
  11259. employed in this approach can cover a wide spectrum in formality 
  11260. and semantic expressiveness; e.g., faceted classification [7], AND-OR 
  11261. graphs [Kan90] and structured inheritance networks [8,9,12].
  11262. 2.3  Summary
  11263. The techniques described above can be viewed within a framework 
  11264. that distinguishes two attributes:
  11265. - The degree to which system and domain modeling representations 
  11266. are strongly or loosely coupled (in terms of which the list above is 
  11267. rank-ordered, with the strongest-coupled techniques listed first);
  11268. - Semantic expressiveness of the modeling representations.
  11269.  
  11270. This is just a preliminary proposal for such a framework.  We hope to 
  11271. use the workshop as an opportunity to collaboratively review, refine 
  11272. and extend the  framework to describe advantages, risks, and 
  11273. implementation issues for various approaches.
  11274.  
  11275. 3   Comparison
  11276.  
  11277. The main body of this position paper is really concerned with a 
  11278. comparative framework; to ╥compare our comparison╙ to other 
  11279. surveys of DA methods is a bit more difficult.  The major difference 
  11280. is that we have attempted to isolate one clear area of concern for 
  11281. fairly fine-grained comparison.  Most other surveys or comparisons 
  11282. of DA methods have attempted to compare DA methods in their 
  11283. entirety, and to make specific recommendations about selection 
  11284. criteria would-be practitioners could apply [1,11]. Our approach is 
  11285. complementary, in that it focuses on a much narrower area. Our 
  11286. longer-range goal, however, it to synthesize a more general 
  11287. comparative framework from results of several more focused efforts 
  11288. for other supporting methods. The ultimate goal is to support the 
  11289. core domain modeling process with a set of decision aids for 
  11290. selecting, instantiating and integrating diverse supporting methods to 
  11291. create robust and tailored domain engineering capabilities.
  11292.  
  11293. References 
  11294.  
  11295. [1]    Arango, G., R. Prieto-Diaz: "Domain Analysis Concepts and 
  11296. Research Directions." Domain Analysis and Software Systems 
  11297. Modeling, ed. R. Prieto-Diaz and G. Arango, IEEE Computer Society 
  11298. Press, 1991.
  11299.  
  11300. [2]    Bailin, S. KAPTUR: Knowledge Acquisition for Preservation of 
  11301. Tradeoffs and Rationale. CTA, Rockville Maryland, 1992.
  11302.  
  11303. [3]    Collins, P., "Toward a Reusable Domain Analysis," Proceedings, 
  11304. 4th Annual Workshop on Software Reuse, Reston Virginia,  Nov 1991.
  11305.  
  11306. [4]    DISA/CIM Software Reuse Program. Domain Analysis and 
  11307. Design Process, Version 1. Technical Report 1222-04-210/30.1, DISA 
  11308. Center for Information Management, Arlington VA, March 1993.
  11309.  
  11310. [5]    Gomaa, H. A Domain Requirements Analysis and Specification 
  11311. Method. Technical report, George Mason University, Fairfax, VA., Feb 
  11312. 1990.
  11313.     
  11314. [6]    Kang, K, S. Cohen, et al., Feature-Oriented Domain Analysis 
  11315. (FODA) Feasibility Study. Technical Report CMU/SEI-90-TR-21, 
  11316. Software Engineering Institute, Nov 1990.
  11317.     
  11318. [7]    Prieto-Diaz, R., Reuse Library Process Model. TR AD-B157091, 
  11319. STARS IBM 03041-002, 1991.
  11320.  
  11321. [8]    Solderitsch, J., K. Wallnau, J. Thalhamer., "Constructing Domain-
  11322. Specific Ada Reuse Libraries," Proceedings, 7th Annual National 
  11323. Conference on Ada Technology, March 1989.
  11324.     
  11325. [9]    STARS. Army STARS Demonstration Project Experience Report, 
  11326. STARS-VC-A011/011/00, Dec 93.
  11327.  
  11328. [10]    * ibid., Organization Domain Modeling (ODM) Guidebook, 
  11329. Version 1.0, Unisys STARS Technical Report STARS-VC-
  11330. A023/011/00, Advanced Projects Research Agency, STARS 
  11331. Technology Center, 801 N. Randolph St., Suite 400, Arlington VA, 
  11332. 22203, March 1995.
  11333.  
  11334. [11]    Wartik, S., R. Prieto-Diaz. "Criteria for Comparing Domain 
  11335. Analysis Approaches," Int'l Journal of Software Engineering and 
  11336. Knowledge Engineering, Sep 1992.
  11337.  
  11338. [12]    Wickman, G., J. Solderitsch, M. Simos, ╥A Systematic Software 
  11339. Reuse Program Based on an Architecture-Centric Domain Analysis,╙  
  11340. Proceedings,  6th Annual Software Technology Conference, Salt Lake 
  11341. City, Utah, April 1994.
  11342.  
  11343. Biography
  11344.  
  11345. Mark Simos has been involved with reuse and domain analysis 
  11346. methods for the past decade. He is founder and principal of Organon 
  11347. Motives, a consultancy specializing in software reuse training, 
  11348. strategic consulting and research with particular focus on domain 
  11349. engineering. As a consultant, Mr. Simos worked extensively with the 
  11350. Hewlett-Packard Company and the ARPA STARS Program in 
  11351. developing the Organization Domain Modeling (ODM) method, and 
  11352. was a co-author of the STARS Conceptual Framework for Reuse 
  11353. Processes (CFRP). Formerly a research scientist for Unisys, he was 
  11354. initial technical lead for the Reuse Library Framework (RLF) toolset.  
  11355. Prior to his R&D work, Mr. Simos specialized in high-end 
  11356. photocomposition applications, and worked on the design and 
  11357. evolution of several special-purpose programming languages for 
  11358. typesetting applications. He holds an MS in Computer and 
  11359. Information Science from the University of  Pennsylvania; he is also 
  11360. a well-known traditional fiddler and songwriter.
  11361.  
  11362.  
  11363. Why (Not) Reuse (Typical) Code Components?
  11364.  
  11365. Murali Sitaraman
  11366. David Fleming
  11367. John Hopkins
  11368. Sethu Sreerama
  11369.  
  11370. Dept. of Statistics and Computer Science
  11371. West Virginia University
  11372. PO Box 6330
  11373. Morgantown, WV 26506-6330
  11374. Tel: (304)-293-3607
  11375. Email: fmurali, fleming, jhopkins, sethug@cs.wvu.edu
  11376. WWW: http://www.cs.wvu.edu/resolve/resolve/public_html/index.html
  11377.  
  11378. Abstract
  11379.  
  11380. There is much debate within the reuse community regarding the 
  11381. potential for productivity and quality gains from reusing different 
  11382. software lifecycle artifacts.  Specifically, there is a growing belief that 
  11383. gains resulting from reusing artifacts in the earlier phases in the lifecycle 
  11384. (e.g., requirements/design documents) dominate the gains from reusing 
  11385. ones in later phases (e.g., code). This belief is indeed true and is based 
  11386. on "typical code artifact reuse" wherein key design decisions are hard-
  11387. coded in the interfaces and implementations; here ,reuse does not 
  11388. necessarily translate into reusing the effort that has gone into producing 
  11389. that component. In the absence of better designs, non-code artifact reuse 
  11390. is from where reuse benefits could accrue. However, interfaces, 
  11391. implementations, and contexts of carefully-engineered components such 
  11392. as RESOLVE components are highly flexible, and reusing them results in 
  11393. implicit and explicit reuse of lifecycle artifacts and the efforts in creating 
  11394. them.
  11395.  
  11396. Keywords: code reuse, effort reuse, flexibility, interface design, hard-coded 
  11397. decisions, lifecycle artifacts, parametrization
  11398.  
  11399. Workshop Goals: to network.
  11400.  
  11401. Working Groups: formal methods, role of objects in reuse, languages and 
  11402. frameworks, reuse education, technology transfer.
  11403.  
  11404. 1   Position
  11405.  
  11406. Typical code reuse is rightly criticized for lacking in reuse potential 
  11407. because design decisions are hard-coded and efforts in creating 
  11408. associated artifacts (if any) are not reused . However, when 3C "code" 
  11409. component interfaces, implementations, and contexts are designed to be 
  11410. reused - both for components that are small and that are large and 
  11411. layered - reuse can and will result in implicit reuse of lifecycle artifacts 
  11412. and the considerable efforts in creating those artifacts.
  11413.  
  11414. 2   Background
  11415.  
  11416. Sitaraman has been an active member of the software reuse community 
  11417. for the past several years. He has participated in WISR's regularly since 
  11418. 1990. He has served on WISR program committees and was the finance 
  11419. chair for WISR in 1993. He was the tutorial chair for the Third 
  11420. International Conference on Software Reuse. He has been on the steering 
  11421. committee of the Reuse Education/Training workshop series since its 
  11422. inception.
  11423.  
  11424. Sitaraman currently serves as the program chair of the Fourth 
  11425. International Conference on Software Reuse. He is one of the principal 
  11426. investigators of the RESOLVE research effort.  He has published a number 
  11427. of technical papers on various aspects of reuse.  His researchis currently 
  11428. funded by ARPA grant DAAH04-94-G-0002, NASA grant 7629/229/0824, 
  11429. and NSF grants CCR-9204461 and DUE-9354597.
  11430.  
  11431. Fleming, Hopkins, and Sreerama are PhD students with topic areas in 
  11432. software reuse.
  11433.  
  11434. 2.1  Introduction
  11435.  
  11436. The potential in software reuse for solving the productivity and quality 
  11437. problems facing the software industry has not been fully realized. The 
  11438. contention of Brooks that there is "no one silver bullet" (including reuse) 
  11439. [1] along with observations that relatively modest improvements have 
  11440. resulted from reuse have forced the software reuse research and 
  11441. practicing community to renew consideration of questions such as what 
  11442. and how to reuse [2].
  11443.  
  11444. Some attempts to answer these questions have led to suggestions that the 
  11445. potential in code component reuse is inherently limited, and hence, 
  11446. reuse of other software lifecycle artifacts must be explored. It is believed 
  11447. that reuse of artifacts that are produced in the earlier phases of the 
  11448. software lifecycle, such as requirements definition and design artifacts, 
  11449. can lead to more significant gains. In this paper, we explain that these 
  11450. claims are true only when based on typical reuse of code components 
  11451. that are highly inflexible and that do not necessarily result in reuse of 
  11452. efforts that have gone into producing the components.
  11453.  
  11454. We use the term "code component" in this paper to denote a 3C-style 
  11455. component that includes an interface, implementation(s), and contexts 
  11456. [3, 4]. A code component may be small or large. Though we agree on the 
  11457. general need for research in reuse of non-code artifacts (for example, in 
  11458. [5], we have explained how the 3C framework can be generalized to 
  11459. permit a uniform treatment of reusability of software engineering 
  11460. artifacts), we contend that a majority of perceived limits of code 
  11461. component reuse are results of ad hoc attempts to reuse relatively poor 
  11462. code. Specifically, components carefully and systematically engineered, 
  11463. such as those using the RESOLVE discipline [6], can overcome the 
  11464. limitations. The interfaces and implementations of these components 
  11465. have been carefully designed and parameterized to permit functional 
  11466. and performance flexibility. Reuse of these components results in reusing 
  11467. the effort that has gone into the lifecycle phases in creation and 
  11468. certification of the component. Until designs with these characteristics 
  11469. are identified, specified, and implemented for a concept, it is certainly 
  11470. useful to try to reuse other artifacts associated with the concept. 
  11471. Ultimately, however, indirect reuse of domain and lifecycle artifacts (and 
  11472. the efforts that has gone into creating them) through well-designed and 
  11473. systematic component reuse may be where most reuse potential is 
  11474. waiting tob erealized.
  11475.  
  11476. The rest of the paper is organized into the following sections.  Section 2 
  11477. contrasts typical code reuse with carefully-engineered code reuse, and 
  11478. explains why the former is rightly criticized for its shortcomings and how 
  11479. the latter remedies them. Section 3 provides a summary.
  11480.  
  11481. 2.2  Case (against and) for (typical) code component reuse
  11482.  
  11483. Development of a component involves at least the following phases: (i) 
  11484. problem requirements (or in general, domain) analysis, (ii) specification 
  11485. design, creation, and validation, (iii) implementation design, creation, 
  11486. and verification. While it is hard to quantify the effort that goes into 
  11487. each of these phases in general,it is widely acknowledged that a majority 
  11488. of the effort goes into analysis, design, and verification activities rather 
  11489. than in actual transliteration of designs into a concrete specification or 
  11490. implementation artifacts. Clearly any viable model aimed at reaping 
  11491. benefits of reuse must facilitate effort reuse.
  11492.  
  11493. Most code components are neither designed for reuse nor do they lead to 
  11494. significant effort reuse, leading to the right conclusion that their 
  11495. potential is limited [2]. To illustrate the issues, we consider two 
  11496. variations of a reusable part where hard-coded decisions limit its 
  11497. functional and performance flexibility,and hence its reusability. We 
  11498. explain that if these defects cannot be remedied, few net gains are 
  11499. achieved by reusing code making a strong case for mainly reusing non-
  11500. code artifacts (e.g., design decisions). However, the section concludes by 
  11501. observing that better designs can remedy the defects showing that 
  11502. inflexibility is not implied by code reuse.
  11503.  
  11504. Issue 1: Hard-coded design decisions in the interfaces
  11505.  
  11506. Most object-oriented textbooks include a component for graphs. Let us 
  11507. assume that some application of graphs requires finding a minimum 
  11508. spanning forest (MSF) of a given graph. Normally, the graph component 
  11509. would not include such an operation.  Most object-based languages, how-
  11510. ever, would permit extension of the graph component with an additional 
  11511. operation (or method) Find_MSF that produces an MSF of the given 
  11512. graph. If the graph component includes a sufficient set of operations, it 
  11513. might be possible to implement Find_MSF without violating information 
  11514. hidden in the graph component. For now, the implementation details of 
  11515. Find_MSF are largely irrelevant. The effort that has gone into developing 
  11516. Find_MSF is mainly in certifying its correctness; little effort has been 
  11517. spent on its interface design and implementation - which is a 
  11518. straightforward translation of an MSF finding algorithm.
  11519.  
  11520. Now consider the following evolution in the functionality requirement of 
  11521. the above application or a new application: an MSF that is less than a 
  11522. specified weight W is needed; if the graph does not have an MSF with 
  11523. weight <= W, other actions may be needed. There are two less-than-
  11524. perfect possible solutions to this changed problem.
  11525.  
  11526. The first and most natural solution (from a black box reuse perspective) 
  11527. is to reuse the Find_MSF operation. In this case,a complete MSF for the 
  11528. given graph would be found and then its weight would be computed and 
  11529. compared against W. This solution suffers from a performance penalty 
  11530. because it is not always essential to compute a complete MSF to see if its 
  11531. weight exceeds W. Typically, only a few, but not all edges of an MSF are 
  11532. needed in determining if W is exceeded. The inflexible procedural 
  11533. interface is the obstacle in satisfying the changed functional 
  11534. requirements without introducing a performance penalty. In addition, 
  11535. though this solution reuses the interface and the implementation of 
  11536. Find_MSF (and Graph) "as is," the effort reuse is minimal: Little effort
  11537. has been invested (and hence,reused) in the informal interface design 
  11538. and translation of a standard algorithm to an implementation; the 
  11539. certification is probably not modular and hence,is not strictly reusable 
  11540. in an altered client environment.  In summary, this solution results in 
  11541. reuse of minimal effort and a performance penalty.
  11542.  
  11543. A second solution to the evolution problem (likely from an algorithmic 
  11544. or white box reuse perspective) is to re-specify the interface, possibly with 
  11545. additional parameters, and re-code the Find_MSF operation so that it is 
  11546. suitable for the new situation.  While this solution provides better 
  11547. performance, from a reusability perspective it has little merit. Once 
  11548. interface and implementation of the Find_MSFoperation have been 
  11549. altered, none of the effort that has gone into creating it including that in 
  11550. the certification of the existing implementation can be reused. What is 
  11551. being profitably reused here is the "algorithm" for finding an MSF of a 
  11552. graph. Though the translation of the algorithm to code can in fact be 
  11553. partially reused in this "white box reuse" solution, gains are 
  11554. insignificant. In the absence of better solutions, the potential for concrete 
  11555. code reuse, at least for the example at hand, is limited. Exploration of 
  11556. reuse of other artifacts would be in order. As explained in the rest of this 
  11557. section, however, there is a better design and solution to the present 
  11558. problem.
  11559.  
  11560. In [7], we explain a solution to the spanning forest finding problem 
  11561. based on the general strategy of "recasting" algorithms as objects; this 
  11562. solution results in a component interface that provides functional 
  11563. flexibility without introducing a performance penalty for some 
  11564. applications (such as the one that needed an MSF with weight <= W). 
  11565. When the large-effect spanning forest finding operation is recast, the 
  11566. result is a component that provides (a family of) objects, and small-
  11567. effect operations to insert an edge, change the phase, and extract an edge 
  11568. on these objects. This interface design permits a client application to 
  11569. selectively retrieve only some edges of a spanning forest of an input 
  11570. graph.
  11571.  
  11572. The interface not only hides how a spanning forest is computed, but 
  11573. when it is computed. This design in turn permits alternative 
  11574. implementations of the same interface with performance behaviors 
  11575. suitable for different applications. When the Spanning_Forest_Machine 
  11576. _Template component is reused, important among the gains are the 
  11577. efforts that have gone into its formal and fully-abstract interface design. 
  11578. Details can be found in [7]. If the implementation is locally certified in a 
  11579. modular fashion [8, 9], then the certification effort is reusable as well.
  11580.  
  11581. Issue 2: Hard-Coded Design Decisions in Implementations
  11582.  
  11583. Supposing that a spanning forest component has been designed with an 
  11584. object-based interface, we now focus our attention on implementing this 
  11585. component. One class of implementations would use Kruskal algorithm 
  11586. [10]. This algorithm orders the edges of a graph in a non-descending 
  11587. order and then based on that order (beginning with the smallest one) 
  11588. chooses edges so that they do not form a cycle. One implementation of 
  11589. Spanning_Forest_Machine_Template would "hard code" the Kruskal 
  11590. algorithm from scratch. Such coding would involve identifying and using 
  11591. a prioritizing technique. The Kruskal-based implementation may 
  11592. provide appropriate performance some clients depending on the chosen 
  11593. prioritization algorithm, but may not be suitable for others. This raises 
  11594. the possibility that different applications may require changing the 
  11595. "prioritizing aspect" of the implementation without changing other 
  11596. details. As noted earlier,any changes to the implementation will 
  11597. immediately nullify all efforts that have gone into its certification with 
  11598. the result that implementation reuse benefits are resulting more from 
  11599. the "algorithmic and implementation design aspects" rather
  11600. than the concrete code.
  11601.  
  11602. The problem here is one of hard-coded implementation choice, and a 
  11603. possible solution involves a component-based construction [7] of the 
  11604. above implementation and constituent parameterization [11]. Rather 
  11605. than implementing Spanning_Forest _Machine_Template from scratch, 
  11606. it is possible to use Sorting_Machine_Template (an object-based 
  11607. component that has resulted from recasting sorting) and 
  11608. Equivalence_Relations_Template (an object-based component that 
  11609. captures the standard equivalence relations idea). To change the 
  11610. prioritizing aspect of this implementation, all that would be needed is to 
  11611. change the implementation of Sorting_Machine_Template that is being 
  11612. used; it is possible to allow the client to make this change and tune the 
  11613. performance by making an implementation of 
  11614. Sorting_Machine_Template as a performance parameter. Details of 
  11615. performance parameterization are in [11].
  11616.  
  11617. We have focused our attention on one specific example to highlight the 
  11618. issues in the paper. But the underlying strategies for flexible component 
  11619. design such as recasting and performance-tuning employed here are far 
  11620. more general. The abstraction facilitated by the specifications are crucial 
  11621. to permit modular and local reasoning. Research into such theoretical 
  11622. underpinnings and practical implementation of these ideas is crucial to 
  11623. make explicit and implicit lifecycle artifact reuse and effort reuse 
  11624. profitable.
  11625.  
  11626. 3   Summary
  11627.  
  11628. It is rightly being observed that typical code component reuse has 
  11629. limited potential. However, careful design can eliminate most critical 
  11630. limitations. When a component is designed to be reused, tremendous 
  11631. effort is involved indeveloping a formal and fully-abstract interface that 
  11632. is flexible. Designs of implementations also require considerable thought 
  11633. to avoid hard-coding key decisions; additional cost is involved if 
  11634. performance behavior is of interest. Development of these components in 
  11635. programming languages such as Ada and C++ also require a carefully 
  11636. conceived discipline to permit local certification, among others [9]. 
  11637. Components designed and developed such, when reused, lead to 
  11638. significant gains in productivity and quality in all lifecycle phases.
  11639.  
  11640. References
  11641.  
  11642.  [1]F. P. Brooks, "No Silver Bullet: Essence and Accidents of Software 
  11643. Engineering,"IEEE Computer, vol.20, no. 4, pp. 10-19, 1987.
  11644.  
  11645.  [2]T. Biggerstaff, "The Library Scaling Problem and the Limits of Concrete 
  11646. Component Reuse," in Procs. Third Int. Conf. on Software Reusability,Rio 
  11647. de Janeiro, Brazil, pp. 102-109, IEEE Computer Society Press, 1994.
  11648.  
  11649.  [3]W. Frakes, L. Latour, and T. Wheeler, "Descriptive and Prescriptive 
  11650. Aspects of the 3C Model - SETA Working Group Summary," in Int'l Ada 
  11651. Tools and Environments Conference, Redondo Beach, CA, 1990.
  11652.  
  11653.  [4]W. Tracz, "Where Does Reuse Start?," ACM SIGSOFT Software 
  11654. Engineering Notes, pp. 42-46, 1990.
  11655.  
  11656.  [5]M. Sitaraman,"A Uniform Framework for the Reusability of Software 
  11657. Engineering Assets," in Fifth Annual Workshop on Software Reuse, Palo 
  11658. Alto, CA,1992.
  11659.  
  11660.  [6]"Special Feature: Component-Based Software Using RESOLVE," ACM 
  11661. SIGSOFT Software Engineering Notes, vol. 19, October 1994.
  11662.  
  11663.  [7]B. W. Weide, W. F. Ogden, and M. Sitaraman, "Improving Reusability 
  11664. By Recasting Algorithms as Objects," IEEE Software, September 1994.
  11665.  
  11666.  [8]G. W. Ernst, R.J. Hookway, J. A. Menegay, and W. F. Ogden, "Modular 
  11667. Verification of Ada Generics," Computer Languages, vol. 16, pp. 259-280, 
  11668. 1991.
  11669.  
  11670.  [9]J. Hollingsworth, "Software Component Design-for-Reuse: A Language-
  11671. Independent Discipline Applied to Ada; available by anonymous FTP 
  11672. from acrchive.cis.ohio-state.edu in directory pub/tech-rep ort/TR1-
  11673. 1993.," Tech. Rep. TR1-1993, Ph. D. Thesis, The Ohio State University, 
  11674. 1992.
  11675.  
  11676. [10]T. H. Cormen, C. E. Leiserson, and R. L. Rivest, Introduction to 
  11677. Algorithms.  Cambridge, Mass.,:MIT Press, 1990.
  11678.  
  11679. [11]M. Sitaraman,"Performance-Parametrized Reusable Software 
  11680. Components," International Journal of Software Engineering and 
  11681. Knowledge Engineering, vol. 4, pp. 567- 587, October 1992.
  11682. Standardized Software Classification in the World Wide Web
  11683.  
  11684. Robert Haddon Terry
  11685. Margaretha Price
  11686. Louann Welton
  11687.  
  11688. MountainNet Inc.
  11689. 2816 Cranberry Square, Morgantown, WV 26505
  11690. Tel: (304)594-9075
  11691. Fax: (304) 594-9088
  11692. Email:frhterry,mprice,lweltong@rbse.mountain.net
  11693.  
  11694. Abstract
  11695.  
  11696. Where is the knowledge we have lost in information? T.S. Eliot
  11697.  
  11698. By browsing and searchingthe World Wide Web (WWW) for reusable 
  11699. software, potential reusers encounter several different levels of cataloging 
  11700. and classification schemes. Some software repositories use more 
  11701. established methods while others use ad-hoc methods of classification. In 
  11702. this position paper, we suggest having a standardized cataloging method 
  11703. for WWW software repositories. Our goal is to provide potential reusers 
  11704. with a readily apparent profile of repository contents, eliminating user 
  11705. reliance on a full working knowledge of the specific repository 
  11706. classification type. This is becoming increasingly necessary with the 
  11707. proliferation of WWW software repositories and their expanding 
  11708. popularity.
  11709.  
  11710. Keywords: Reusable software classification, World Wide Web
  11711.  
  11712. Workshop Goals: Start promoting a standardized classification scheme; 
  11713. learn other cataloging/classification methods; listen to other ideas in 
  11714. promoting the sharing of software through the WWW.
  11715.  
  11716. Working Groups: Reuse terminology standards, cataloging reusable 
  11717. software, reuse in the WWW, reuse handbook and reuse management, 
  11718. organization and economics.
  11719.  
  11720. 1   Background
  11721.  
  11722. Our reuse experience is gained through the operation of the NASA 
  11723. sponsored ELSA (formerly AdaNET) project, a fully functional WWW 
  11724. repository.  Of ELSA's current population of 1100 assets, 670 are reusable 
  11725. software.  These reusable assets are organized by class or information 
  11726. type and by content through a collection hierarchy. The collections 
  11727. represent facets of or subjects relevant to the Information Management, 
  11728. Software Development, Mission Critical Systems and WWW Information 
  11729. and Utilization domains. As software engineers/librarians in this 
  11730. environment, we are directly responsible for acquiring, evaluating, 
  11731. cataloging and qualifying software assets. In support of these tasks and 
  11732. in an effort to support sound reuse concepts and practices, our team 
  11733. participates in the identification, composition and evaluation of 
  11734. proposed interoperation and reuse standards through the Reuse Library 
  11735. Interoperability Group (RIG). This involvement impacts and prefaces our 
  11736. assumed position with respect to reuse classification systems.
  11737.  
  11738. 2   Position
  11739.  
  11740. A standard cataloging structure is necessary to fully explore the potential 
  11741. represented by WWW software libraries. We are not advocating a single 
  11742. classification scheme but rather, a convention or structure that provides 
  11743. a descriptive overlay or reference guide to the appropriate interpretation 
  11744. and utilization of classification schemes. Repositories can use all or part 
  11745. of the classification standard, and they can also expand to the lower 
  11746. levels of classification.
  11747.  
  11748. To our knowledge, groups have developed candidate interoperation 
  11749. standards with respect to certification frameworks and the basic data 
  11750. models.  These efforts do not satisfy or address issues inherent in 
  11751. cataloging methods.
  11752.  
  11753. Below is a sample list of software repositories currently available on 
  11754. WWW. These servers do not just contain information on their projects, 
  11755. but in fact, make software assets accessible through the WWW.
  11756.  
  11757. Argonne National Laboratory Mathematics and Computer Science 
  11758. Division (http://www.mcs.anl.gov/Projects/progtools.html)
  11759.  
  11760. CMU Artificial Intelligence Repository 
  11761. (http://www.cs.cmu.edu/afs/cs.cmu.edu/project/airepository/ai/html/ai
  11762. r.html)
  11763.  
  11764. Electronic Library Services and Applications 
  11765. (http://rbse.mountain.net/ELSA/elsa_lob.html)
  11766.  
  11767. Fortran 90 Software Repository 
  11768. (http://www.nag.co.uk:70/1/nagware/Example
  11769.  s)
  11770.  
  11771. Guide to Available Mathematical Software(http://gams.nist.gov/)
  11772.  
  11773. National HPCC Software Exchange 
  11774. (http://www.netlib.org/nse/home.html)
  11775.  
  11776. Netlib at The Univ. of Tennessee and ORNL 
  11777. (http://www.netlib.org/liblist.html)
  11778.  
  11779. Physics Software Repository (http://icemcfd.com/cfd/CFD_codes.html)
  11780.  
  11781. Public Ada Library 
  11782. (http://wuarchive.wustl.edu/languages/ada/pal.html)
  11783.  
  11784. Some of the above repositories catalog assets topically, while others 
  11785. arrange holdings alphabetically. Topical classification systems are 
  11786. typically presented as a hierarchy with variations given to subjective 
  11787. logic or order purpose. It is further observed that the variations extend 
  11788. to the inclusion of metadata or brief asset profiles. Metadata is often 
  11789. delivered as a prescribed set of attributes that briefly describe asset 
  11790. properties,or as separate WWW pages with no set attribute pattern. It
  11791. is also noted that several repositories offer direct asset access without 
  11792. metadata. The discussion of metadata is related to classification 
  11793. schemes but outside the topic of this position paper.
  11794.  
  11795. We propose that WWW reusable software providers choose one existing 
  11796. classification scheme most suitable for cataloging reusable components. 
  11797. There are several existing classification models from which to choose 
  11798. (i.e.the CR classification System of theACM). Although no one scheme 
  11799. can suffice in all applications, a basic cataloging structure can be 
  11800. determined and is necessary in today's reuse WWW environment. A 
  11801. classification scheme that is flexible enough which libraries can select 
  11802. only parts of the classification structure and/or they can also expand the 
  11803. lower levels of the structure for the more domain specific libraries.
  11804.  
  11805. 3   Comparison
  11806.  
  11807. Software classification can be compared directly to general library 
  11808. classification schemes such as the Library of Congress (LC) and Dewey 
  11809. Decimal Classification (DDC).
  11810.  
  11811. Several participants of the Web4Lib listserv, a mailing list for issues 
  11812. relating to the creation and management of library-based World-Wide 
  11813. Web servers and clients, have addressed the issues of standardization of 
  11814. WWW library classification schemes.  These discussions are continuing 
  11815. and working groups are being proposed in their domain. The software 
  11816. reuse community can start the same discussions, while also collaborating 
  11817. with those decisions made by the librarians.
  11818.  
  11819. 4   Biography
  11820.  
  11821. Robert Haddon Terry is a Sr. Software Engineer/Librarian in MountainNet, 
  11822. Inc., for the NASA/ELSA software library. He received a B.A. (1984) degree 
  11823. in Secondary Mathematics from West Liberty State College, West Liberty, 
  11824. WV, and a M.S. (1988) degree in Computer Science, from West Virginia 
  11825. University (WVU), Morgantown, WV. Since 1989, he has also been a 
  11826. Lecturer/Researcher at WVU.
  11827.  
  11828. Margaretha Price is a Sr. Software Engineer/Librarian in MountainNet, 
  11829. Inc., for the NASA/ELSA project. She received B.S. (1990) and M.S. (1992) 
  11830. degrees in Computer Science from West Virginia University, Morgantown, 
  11831. West Virginia.
  11832.  
  11833. Louann Welton is a technical writer for MountainNet, Inc and its 
  11834. divisions. She received a B.A. in English with a specialization in Library 
  11835. Science from Fairmont State College in 1983.
  11836. A Conceptual Framework 
  11837. For Evaluating Domain-Specific Kits
  11838.  
  11839. Kevin D. Wentzel
  11840.  
  11841. Hewlett-Packard Laboratories
  11842. 1501 Page Mill Road
  11843. Palo Alto, CA 94303-1126
  11844. (415) 857-4018
  11845. wentzel@hpl.hp.com
  11846.  
  11847. Abstract
  11848. In a working group at WISR 6, in 1993, Martin Griss and Kevin 
  11849. Wentzel led an exploration of the notion of domain-specific kits.  Kits 
  11850. are comprised of compatible, domain-specific components, 
  11851. frameworks and languages, supported by a variety of well-
  11852. integrated technologies and tools, such as domain-specific languages,
  11853. builders, generators and domain-tailored environments.  The 
  11854. working group attempted to list what the parts of a kit could be with 
  11855. the purpose of allowing evaluation of software reuse systems as kits. 
  11856. The framework described and demonstrated in this paper is a result 
  11857. of our continuation of the group's work.
  11858.  
  11859. Keywords: Reuse, kits, domain specific kits.
  11860.  
  11861. Workshop Goals: Understanding how an analysis of domain specific 
  11862. kits can help promote successful software reuse.
  11863.  
  11864. Working Groups: Reuse process, Reuse artifacts, Reuse measurement 
  11865. and metrics.
  11866.  
  11867.  
  11868. 1   Background
  11869. Our research program at Hewlett Packard Laboratories has 
  11870. performed experimental research on software reuse with the goal of 
  11871. improving Hewlett Packard Company's software processes. In this 
  11872. research we have learned that to get high levels of reuse and enable 
  11873. rapid application construction, with consequent high levels of 
  11874. benefits,  one  needs more than just code or object libraries. As part 
  11875. of our  work, we have learned that careful consideration must be 
  11876. given to the way reusable workproducts must be designed and 
  11877. packaged. One needs to systematically deal with the careful design of  
  11878. reusable architectures and components that fit together, aided by 
  11879. well-integrated tools.  A result of this research program is the 
  11880. concept of Domain-Specific Kits [2] and [3]. We define a domain 
  11881. specific kit  as a set of compatible, reusable workproducts  (software 
  11882. artifacts produced at a variety of points in the software lifecycle) 
  11883. that  are architected to fit well together and are designed to make it 
  11884. easy to build a set of related applications.  Our kit-oriented research 
  11885. agenda includes  the development of:
  11886. A philosophy of how and when to use domain-specific kits, with 
  11887. careful and useful definitions.
  11888.  
  11889. Processes and methods to be used by kit developers and users, 
  11890. workproduct supporters and managers, such as kit-based domain 
  11891. engineering, kit engineering, and application engineering.
  11892.  
  11893. A taxonomy  and analysis framework of kit models to allow us to 
  11894. evaluate and compare different domain-specific kits, including kit-
  11895. feature selection guidelines.
  11896.  
  11897. A set of customizable tools and technology that can be used to define 
  11898. and develop kits, including domain analysis tools, language and 
  11899. generator kits, library and browsing tools, language interpreters and 
  11900. compilers, software-bus services, and user-programming and 
  11901. customizing language kits.
  11902.  
  11903. A set of case studies which illustrate the principles, the practice and 
  11904. the tradeoffs, abstracting ideas from studies of reuse in several HP 
  11905. divisions, existing commercial kits or  kit-like systems, and 
  11906. experiences in prototyping several experimental domain-specific 
  11907. kits. 
  11908. 2   Position
  11909. We are evaluating several kits or kit-like development environments 
  11910. within a conceptual framework  to gain a deeper  understanding of 
  11911. kit features and mechanisms.  This helps us explain the concept of a 
  11912. domain-specific kit, evaluate potential kits for completeness, 
  11913. determine the importance of the various kit elements, suggest 
  11914. improvements to kit-like software development systems, and 
  11915. identify candidate kit technologies.  Analysis of kit-feature 
  11916. variability is a start toward a domain analysis of kit styles.
  11917.  
  11918. As a way to determine which were the most important aspects of 
  11919. software reuse technology and to suggest the best directions for 
  11920. research, we began work on a kit evaluation framework.  We applied 
  11921. an early version of the framework to several reusable software 
  11922. systems from libraries to highly configurable applications and looked 
  11923. for correlations which indicated features important in making the 
  11924. systems successful.  We presented this early framework to a working 
  11925. group at the 1993 Workshop on Software Reuse [4].  Following this 
  11926. test run,  we refined the model to  produce the improved and 
  11927. expanded  conceptual framework described below.  This analysis 
  11928. framework can be used as a reference model to allow kit designers to 
  11929. pick mechanisms and styles appropriate for particular domain or 
  11930. user requirements. When the model is applied to a large number of 
  11931. kits, it can act as an outline for a catalog of kits.  Potential kit users 
  11932. can compare kits based on the representation in the model.
  11933. 2.1  A conceptual framework for evaluating domain-specific kits
  11934. A successful kit is a complex collection of many kinds of 
  11935. workproducts, models and documents, which we call "kit elements."  
  11936. We chose a tabular form for the analysis since it makes side-by-side 
  11937. comparison of kit examples easy.  A kit is represented by two tables.  
  11938. The first  is a set of general factors describing the kit being analyzed, 
  11939. while the second analyzes several attributes of each element. Table 1 
  11940. describes the general kit factors. These include factors which identify 
  11941. the kit as well as evaluative factors which can be used to gauge the 
  11942. advantages of using the kit and the overall value of the kit. Table 2 
  11943. describes the assorted kit elements,  while  Table 3 describes the kit 
  11944. element attributes. 
  11945.  
  11946. While not all kits contain all elements, the use of the same set of 
  11947. factors in each analysis can point out differences in kits, thereby 
  11948. determining which elements are most effective in particular 
  11949. situations, and suggest elements that might be added to improve a 
  11950. particular kit. The attributes are standard questions to be asked 
  11951. about each element.  We are interested in learning the effect these 
  11952. attributes have on successful use of a kit, and also in using these 
  11953. attributes to predict success in developing and using new kits. The 
  11954. absence or  weakness of an element or attribute may suggest areas 
  11955. for improvement and extension of the kit. Each of these items relates 
  11956. to one or more questions or issues that were raised by ourselves,  
  11957. divisional partners or others trying to use kits. We have come to 
  11958. think of the collection and range of  answers as representing assorted 
  11959. "best-in-class" options for kit elements, each of which can be 
  11960. considered during kit engineering when designing a new kit.
  11961.  
  11962. For convenience in comparing kits, we summarize in the second kit 
  11963. table the analysis of a particular kit as a 2-D matrix with the kit 
  11964. elements as rows, and the attributes as columns, highlighting the 
  11965. presence of, and notes about, each attribute for each kit element. We 
  11966. find it important to understand and reveal where domain-specificity 
  11967. is located, and how openness and extensibility are accomplished. 
  11968. Notes indicate how the attributes apply to each kit element, or list 
  11969. questions yet to be answered.
  11970.  
  11971. Table 1. Description of general kit factors
  11972.  
  11973. Factor    Description
  11974. Kit name    The name identifying this kit.
  11975. Kit style    How are applications built from the kit?  Are components 
  11976. combined using a traditional computer language?  Are applications 
  11977. designed in a domain-specific language and constructed using a 
  11978. generator for that language?   Is this a hybrid kit showing a 
  11979. combination of componentry and generation?  Is there a visual 
  11980. builder?
  11981. Kit purpose    Application construction?  Application 
  11982. customization?
  11983. Target kit user     Who is expected to use the kit: application 
  11984. developers, system integrators, or end users?  What is the expected 
  11985. skill level of the kit users?
  11986. Target application user     What are the characteristics of the end 
  11987. users of applications developed from this kit?
  11988. Features of merit for this kit    What makes this kit valuable?  
  11989. (coherence, ease of use, evaluability of results, distance from 
  11990. problem space, ... ╥input compression╙)
  11991. Notes     Interoperability with other kits, sub-kits used.
  11992. Other tools     Other tools, environment features
  11993.  
  11994.  
  11995.  
  11996. Table  2. Description of kit elements
  11997.  
  11998. Kit Element    Description
  11999. components     Software components and component 
  12000. documentation.
  12001. architecture    Application architecture for applications developed 
  12002. from the kit.
  12003. framework     The application framework instantiates the common 
  12004. portion of the application architecture,  provides common 
  12005. mechanisms, services and components which shape all applications 
  12006. built from the kit, and defines the API to which components and glue 
  12007. must conform. 
  12008. domain-specific language     In some reuse situations, a problem 
  12009. oriented or domain-specific language is an appropriate kit element, 
  12010. allowing application specifications to be entered in the terminology 
  12011. of the domain.  There are several levels of domain-specific languages.  
  12012. These domain-specific languages and the translators for them  are 
  12013. often costly and difficult to develop but provide high payback.
  12014. glue language    A kit usually includes some way of connecting 
  12015. components to each other and to the framework.  
  12016. generator    A tool that generates kit components, glue, configurations, 
  12017. parameters, or some other application specific element from 
  12018. application specifications.
  12019. builder    A tool, often graphical, which allows a kit user to develop 
  12020. applications by selecting and composing components, by filling in 
  12021. templates, or by editing specifications.
  12022. tests    A kit may include tests of kit elements and/or developed 
  12023. applications.
  12024. end user docs    A kit may include documentation for application 
  12025. end users.  This can be component or tool documentation, generated 
  12026. documentation, or documentation on customizing applications.
  12027. maint docs    Documentation on kit maintenance.
  12028. kit use docs    Documentation on using the kit to develop 
  12029. applications.
  12030. feature set rationale    Reasons why particular features are included 
  12031. or clustered in a particular way in the kit.
  12032. domain model    Graphical or textual model of the application 
  12033. domain, usually a result of domain analysis.  Used in application 
  12034. design and development using the kit.
  12035. generic applications    A kit may include several generic (pre-built) 
  12036. applications as examples developed from the kit, or as  the bases 
  12037. which application developers can modify and extend to develop 
  12038. applications.
  12039.     
  12040.  
  12041. Table  3.  Description of kit element attributes
  12042. Attribute    Description
  12043. presence in the kit    Is this element a part of this kit?  Is its 
  12044. absence noteworthy?
  12045. completeness    How complete is this element of the kit?  Does it 
  12046. cover everything needed from it for development of the target 
  12047. applications?
  12048. openness    How easily can elements or new features be added to the 
  12049. kit or to the developed (sub-) applications?
  12050. domain specificity    How specific to the target application domain 
  12051. is this element of the kit?
  12052. binding time    When is this element bound into the application?
  12053. source    What is the source of this element? (provided in kit, 
  12054. created or generated, written by user, liked from external libraries, 
  12055. etc.)
  12056. life-cycle stage    How/when this element is used? (problem, solution, 
  12057. implementation, extension, element development) 
  12058. 2.2  Hewlett Packard Laboratories kit experiments
  12059.  
  12060. We have prototyped a series of small domain-specific kits to help 
  12061. drive the development of our kit design, implementation 
  12062. methodology, and tools. Our first kit was in the domain of to-do list 
  12063. or task-list managers, using our software bus [1] for component 
  12064. integration. Following a minimal domain analysis and kit design, 
  12065. components were written in several languages (LISP, C++, Tcl/Tk) for 
  12066. item display, definition, time management, and task-list item storage 
  12067. management. Alternative components and options are selected, and 
  12068. data-structures are defined, using a simple (LISP-based) 
  12069. configuration language from which a complete application is 
  12070. generated. An alternative to the configuration language is a 
  12071. conversational rule-based tool (IBACON) which uses information 
  12072. derived from our domain analysis to present application requirement 
  12073. issues to the application builder.  After the application is specified in 
  12074. this manner,  the kit configuration file to match the answers to the 
  12075. issues is generated.
  12076. 2.3  The framework applied to the To-do list manager kit
  12077. We have applied our kit analysis framework to the kit described 
  12078. above.  The most important deficiency we find in this kit is in the 
  12079. area of openness and completeness  The kit only covers a limited 
  12080. portion of the domain but does not make it easy for  application 
  12081. developers  to add their own components to their applications.  The 
  12082. kit is strong in generator and builder technology where it has 
  12083. offerings for users of very different backgrounds. Tables 4 and 5 
  12084. summarize the kit and show how the framework is applied to a kit.
  12085.  
  12086. Components: A collection of software components is included.  Some 
  12087. are multiple (different capabilities) versions to fit a particular 
  12088. function, others are included or not included in the application 
  12089. depending on features required by the application developer/user.  
  12090. Components are written in a variety of programming languages: Lisp, 
  12091. C, C++, Tk/Tcl, Epoch Lisp.
  12092. Framework: A software bus in included as a framework for 
  12093. assembling applications using the kit.  The bus allows components to 
  12094. be included anonymously making application development adding 
  12095. flexibility to application construction.
  12096. Languages: The kit includes a lisp-like domain-specific language for 
  12097. application specification.  It also includes IBACON, a conversational 
  12098. builder which can generate the kit's language. The application is 
  12099. specified in a domain specific language.  When the language is 
  12100. "compiled" via the generator appropriate customizations for the 
  12101. components are built, and components are selected for inclusion.  
  12102. Components are "glued" together when they connect to the bus.
  12103. Environment: The kit works in the UNIX environment, however 
  12104. scripts and IBACON can shield the application developer from too 
  12105. much interaction with UNIX.  The IBACON tool works within the 
  12106. CLIPS-5 environment but users do not need to know CLIPS-5 to use 
  12107. the IBACON. A generator is included for processing the domain 
  12108. specific language into component customizations and selections.
  12109. Generic Applications: A generic application is included.  It was 
  12110. expected to be a test for correct installation of the kit but quickly 
  12111. became the starting point for users application development.
  12112. Completeness/Openness/Extensibility:  For its limited portion of the 
  12113. domain, the kit is relatively complete. However, lack of openness 
  12114. makes it difficult to add anything that is missing. The kit was not 
  12115. designed for openness.  One of the test users wanted to add a 
  12116. component and found it difficult to do so.  Our survey of kit-like 
  12117. reuse inside and outside of Hewlett-Packard company has shown us 
  12118. that openness is more important than we originally thought.
  12119. Other Tools: An "Application Controller" tool gives kit developers and 
  12120. sophisticated application developers much flexibility in starting-up 
  12121. and shutting-down application components.  Bus monitoring tools 
  12122. assist in debugging the kit and applications developed via the kit.  It 
  12123. is a kit goal to eliminate the need for tools such as the bus 
  12124. monitoring tools since kit users should not need detailed knowledge 
  12125. of these lower level support technologies.
  12126. Notes:  This kit was developed for research and experimentation in 
  12127. kit building and use techniques.  It was never expected to be used to 
  12128. develop complete applications in the domain.
  12129.  
  12130. Table 4.  General kit factors for HP to-do list manager kit
  12131.  
  12132. Factor    Description
  12133. Kit name    Hewlett Packard Laboratories Prototype  To-do list 
  12134. manager kit
  12135.  
  12136. Kit style    Components with a domain specific language or a 
  12137. conversational builder to specify and generate the application.
  12138. Kit purpose    Testing kit ideas in Hewlett-Packard Laboratories.
  12139. Target kit user    System/Application programmer.  
  12140. Target application user    Any computer user.
  12141. Features of merit for this kit    Application architecture makes 
  12142. application development very flexible.
  12143. Notes    App-Controller and Bus Monitor tools aid in kit and 
  12144. application debugging.
  12145.     
  12146. Table 5.  Kit elements and attributes for HP to-do list manager kit
  12147.  
  12148. Elements    presence            completeness       openness   
  12149.     domain specificity    binding time    source    life-cycle 
  12150. stage
  12151. components     sets of alternative components for critical functions 
  12152. plus components for optional functions    complete enough for the 
  12153. purposes of this kit.    Some components are highly customizable but 
  12154. all customization is via the kit language.    specific to to-do list 
  12155. management domain.    generation, application start-up time.
  12156.     Hewlett Packard Laboratories    Application specification and 
  12157. execution
  12158. architecture    components communicating via a software bus
  12159.         The bus architecture supports open ness but no tools or 
  12160. instructions provided.    not domain specific    primarily run time 
  12161. binding        
  12162. framework     bus plus expectation for components covering a 
  12163. minimal set of functions        bus architecture is very open
  12164.     quite domain specific 
  12165.             
  12166. domain spec. lang     lisp-like language    Complete for the 
  12167. limited functionality of the kit.    not easily changed, no tools for 
  12168. extension.     very domain specific.    compiled
  12169.     HP Labs    all
  12170. glue language    (see dsl above)                        
  12171. generator    Included for processing kit's domain specific language
  12172.     Complete for kit and language features    Not easily extended
  12173.     Specific for the kit.    generation and app startup.    HP Labs
  12174.     Application specification and construction.
  12175. builder    IBACON conversational builder    Covers all features of 
  12176. the kit    Not easily extended.    Knowledge in IBACON is very 
  12177. specific to to-do list domain    Generates kit domain specific language.
  12178.     HP Labs    Application specification
  12179. tests    Generic application included as an installation test.    Tests kit 
  12180. installation only                    
  12181. end user docs    no                        
  12182. maint docs    no                        
  12183. kit use docs    brief manual and online documentation        
  12184.                 
  12185. feature set rationale    no                        
  12186. domain model    none                        
  12187. generic application    Generic application included with kit    Many 
  12188. kit features not included in the application are included in 
  12189. comments.    can be modified and saved as new application    
  12190.             application specification
  12191.  
  12192. 2.4  Summary and conclusions
  12193. This model of kits and kit analysis framework helps us identify and 
  12194. characterize key elements and attributes of effective reuse kits, and 
  12195. points the way for improvements in several kits we have analyzed. 
  12196. The definition of domain-specific kit (components, framework, glue-
  12197. language, generic applications and tools),  generalizes previous 
  12198. notions of toolkit or kit, and highlights  extensions we can make to 
  12199. enhance existing kit-like systems.  For example, most object-oriented 
  12200. frameworks do not systematically include either generic applications 
  12201. or integrated problem-oriented  languages , generators or builders. 
  12202. The analysis framework has been applied to several systems at HP 
  12203. labs and in HP divisions. It has also been used by participants in the 
  12204. WISR 6 reuse workshop. We believe that to effectively build, buy, 
  12205. and  make use of domain specific kits, an organization must be able 
  12206. to analyze and compare kits using a framework such as this one.
  12207. References
  12208. [1]    Brian W. Beach, Martin L. Griss, and Kevin D. Wentzel. Bus-
  12209. based kits for reusable software. In Proceedings of ISS'92, UCI, 
  12210. Irvine, pp. 19-28, March 1992.
  12211. [2]    Martin L. Griss, Software reuse: from library to factory,  IBM 
  12212. Systems Journal, 32(4), pp.1-23, November 1993.
  12213. [3]      Martin L. Griss and Kevin Wentzel, Hybrid domain-specific 
  12214. kits for a flexible software factory, Proceedings of SAC'94,  pp.  47-
  12215. 52,  ACM, March 1994.
  12216. [4]     Martin L. Griss and Will Tracz,  Workshop on software reuse,  
  12217. Software Engineering Notes, 18(2), pp. 74-85, April 1993.
  12218. Biography
  12219. Kevin Wentzel is a project leader in the Application Engineering  
  12220. Department of HP Labs' Software Technology Lab. For three years he 
  12221. lead a team performing experimental research in software 
  12222. engineering and domain specific reuse. Kevin's current role is leading 
  12223. research on extending Object Oriented Analysis and Design methods 
  12224. in toward distributed and concurrent application systems.  Kevin has 
  12225. been with Hewlett-Packard for 17 years. Prior to joining HP Labs, 
  12226. Kevin worked in various engineering and management roles in 
  12227. several HP divisions developing software products. Kevin has BS and 
  12228. MS degrees in Computer Science from the University of Wisconsin.
  12229.  
  12230. Reusing Requirement Specifications: Lessons Learnt
  12231.  
  12232. B R Whittle
  12233.  
  12234. Rolls-Royce University Technology Centre
  12235. Systems and Software Engineering
  12236. Department of Computer Science
  12237. University of York
  12238. York, UK, YO1 5DD
  12239. Tel: +44 1904433375
  12240. Fax:+44 1940 432708
  12241. Email: ben@minster.york.ac.uk
  12242.  
  12243. Abstract
  12244.  
  12245. This paper is a summary of the experience gained by introducing a 
  12246. change in technology used to specify requirements for real-time systems. 
  12247. Whilst some of the experiences and techniques described in this paper 
  12248. are specific to the development of safety critical systems, many of the 
  12249. ideas are applicable across systems in a wide range of applications.
  12250.  
  12251. Keywords: Software Reuse, System Reuse, Requirement Specification, Real-
  12252. time Systems.
  12253.  
  12254. Workshop Goals: Discuss domain modelling, assess suitability of software 
  12255. reuse principles to non-software domains
  12256.  
  12257. Working Groups:Reuse management and Organisation, Domain Analysis 
  12258. / Engineering, Reuse Adoption and Technology Transfer.
  12259.  
  12260. 1   Background
  12261.  
  12262. Ben Whittle works within the Rolls-Royce University Technology Centre 
  12263. for Systems and Software Engineering: Rolls-Royce established this 
  12264. research group within the University of York, England to examine systems 
  12265. and software development issues for the high integrity control systems, 
  12266. both in the aerospace and power generation industries, produced by 
  12267. Rolls-Royce plc.
  12268.  
  12269. One of the major activities of the group has been in establishing a 
  12270. successful reuse strategy within the company. This work has been 
  12271. principally undertaken by Ben Whittle and has examined artifact reuse 
  12272. across all phases of system development, from requirements 
  12273. specifications to test plans.
  12274.  
  12275. 2   Position
  12276.  
  12277. Detailed requirement specification is common in real-time systems. 
  12278. Reuse throughout the lifecycle is necessary to achieve significant cost 
  12279. savings, and there is a close relationship between the requirements, the 
  12280. design and implementation, and the testing phases. i.e. reuse of the 
  12281. requirements is a necessary, but not sufficient, factor, in the reuse of the 
  12282. code and test scripts. This paper abstracts some of the lessons that we 
  12283. have learned from changing the way that the requirements are specified 
  12284. to enable reuse. There are no examples in this paper as there is not 
  12285. sufficient space, however we have a paper in preparation which will 
  12286. describe our experiences in more detail [1]. Successful reuse is not only a 
  12287. matter of changing the requirements structure and the method that 
  12288. supports it, but also of establishing a culture that supports reuse. Whilst 
  12289. there are some changes to the method and the way that the 
  12290. requirements are specified, the greatest effect is likely to come from the 
  12291. changes in the non-technical factors. This section provides a brief resume 
  12292. of our experiences both in terms of the technical and non-technical 
  12293. issues.
  12294.  
  12295. 2.1  TechnicalIssues
  12296.  
  12297. The techniques described in this paper have moved requirements 
  12298. engineering for Rolls-Royce forward in a number of ways:
  12299.  
  12300. requirements are considered as groups, 'requirements components', with 
  12301. the interconnection between the requirements specifically recorded.
  12302.  
  12303. a 'requirements component' should exhibit high cohesion and low 
  12304. coupling.
  12305.  
  12306. wherever appropriate, customer specific detail should be abstracted 
  12307. away.
  12308.  
  12309. for similar systems the requirements document set forms an extensible 
  12310. generic structure which is used as the basis of a specification of a family 
  12311. of systems.
  12312.  
  12313. in some cases a family of systems, or part of a family, is specified as a 
  12314.  generic set of requirements and variants on that generic.
  12315.  
  12316. In practical terms this has meant that we have reduced the total 
  12317. number of requirements on the system by removing duplication. For 
  12318. example, a recent case study in the area of signal validation we 
  12319. discovered that there were 17 approaches to signal validation, depending 
  12320. on the specific characteristics of the hardware and combinations of 
  12321. inputs. In a brain storming session with the engineers,followed by a more 
  12322. careful appraisal of the results, we reduced the number of approaches to 
  12323. signal validation to 5. This reduction will have a significant impact on 
  12324. subsequent coding and testing timescales and costs.
  12325.  
  12326. 2.2  Process Issues
  12327.  
  12328. The requirements engineering process needs to be focused on the concept 
  12329. of the family of systems, rather than the bespoke system generation that 
  12330. most methods support. This is a cultural change, and has involved 
  12331. encouraging engineers by showing them concrete benefits through 
  12332. examples. The key areas of process change are in 
  12333.  
  12334. Planning: ensuring that the engineer knows that similar requirements 
  12335. already exist,and that he must extend these requirements wherever 
  12336. possible.
  12337.  
  12338. Project management: to ensure that reuse is properly budgeted, 
  12339. measured, and managed.
  12340.  
  12341. Review: to ensure that the best possible use of existing components has 
  12342. been made.
  12343.  
  12344. In addition, engineers must be encouraged to think of the activity of 
  12345. adding value through developing a generic or variant, as opposed to the 
  12346. creation of 'new' requirements. The reuse efforts have been gaining 
  12347. momentum over the last 18 months. The total effort on reuse in that 
  12348. time, both within the project and at the UTC has been approximately 2 
  12349. man years. Afurther 2 man years has been spent by the project in 
  12350. developing reusable components for this engine series. In response to the 
  12351. actual successes on the current project and the perceived benefits for 
  12352. future projects Rolls-Royce have significantly increased the proposed 
  12353. effort on reuse for the next year with a particular aim of establishing a 
  12354. reuse culture and developing a library of reusable requirements 
  12355. components.
  12356.  
  12357. 2.3  Management Issues
  12358.  
  12359. Reuse has a significant impact on the way that requirements 
  12360. specification is carried out. This will be apparent in the reduced 
  12361. timescales because of the change from bespoke requirements 
  12362. specification to reuse and adaptation within an existing requirements 
  12363. framework.  Managers must learn to exploit the reuse potential by 
  12364. considering the potential impact of reuse on project timescales and 
  12365. budgeting appropriately. A great deal of the management information 
  12366. needed to construct the project budget, the risk and impact analysis of 
  12367. changes, for example, can be used by the team leaders and requirements 
  12368. engineers as a driver for the scope of the requirements engineering task 
  12369. for a particular variant. Project management and budgeting must be 
  12370. backed up by systematic metrics collection. Three key metrics are:
  12371.  
  12372. actual time/cost saving accrued to reuse
  12373.  
  12374. effort spent in developing reusable components
  12375.  
  12376. effort spent in reusing
  12377.  
  12378. The first metric is used by the management to benchmark reuse, to 
  12379. provide a basis for evaluation of budgeting accuracy, and to provide a 
  12380. baseline for future budgeting.The other two metrics provide reuse 
  12381. management information that can be used to gauge the utility of 
  12382. particular components. The data for these metrics is being collected at 
  12383. the present time. The early stage of development of the current projects 
  12384. means that no meaningful results are currently available.
  12385.  
  12386. 2.4  Tool Support
  12387.  
  12388. Requirements specifications are often text based, together with tables and 
  12389. diagrams as appropriate. The better text editors can cope with the 
  12390. amount of elision, information hiding, etc. necessary to print a copy of a 
  12391. document with a certain view. In other words it can output the generic 
  12392. information plus that specific to an individual variant, without 
  12393. compromising the potentially sensitive information about other 
  12394. variants. The tool must also be able to handle configuration 
  12395. management issues because of the use of the requirements documents on 
  12396. more than one engine project.
  12397.  
  12398. 3   Comparison
  12399.  
  12400. Most of the research work in the area of requirement reuse has focused at 
  12401. a higher level of abstraction than the work presented in this paper. For 
  12402. example work by Maiden and Sutcliffe focuses on the use of analogy [2, 
  12403. 3]. There are a number of reasons for the difference between our work 
  12404. and the existing requirement reuse papers:
  12405.  
  12406.  
  12407. in the real-time systems domain requirement specifications tend to be 
  12408. less abstract, indeed many people would consider the specifications to be 
  12409. more akin to design documents. Design reuse is considered by Biggerstaff 
  12410. and Richter [4].
  12411.  
  12412. we consider the way that we have structured the information in the 
  12413. requirements documents so that it can be reused rather than considering 
  12414. the type of information retrieval and use of techniques to retrieve the 
  12415. information
  12416.  
  12417. the work described is very pragmatic, and intended to provide a basis for 
  12418. leverage of reuse later in the lifecycle. i.e. reuse of the requirements is 
  12419. only a partial goal.
  12420.  
  12421. 4   Summary of Position
  12422.  
  12423. In the domain that we are interested in, real-time systems, we believe 
  12424. that reuse of requirement specifications is necessary if we are going to 
  12425. achieve reuse in later stages of the lifecycle. This working paper has 
  12426. summarised the ways in which we have changed the structure of the 
  12427. requirements specifications to make them more reusable. There are a 
  12428. number of other factors that will enable reuse. The paper notes our 
  12429. approaches and the lessons learned in trying to adopt a reuse culture.
  12430.  
  12431. References
  12432.  
  12433. [1]B. Whittle, A. Vickers, J. McDermid, R. Rimmer, P. Essam, and J. Hill, 
  12434. "Structuring Requirements Specifications For Reuse," In Perparation, vol. 
  12435. The authors are with the Rolls-Royce UTC, University of York and Rolls 
  12436. Smiths Engine Controls Limited, 1995.
  12437.  
  12438. [2]N. Maiden and A. Sutcliffe, "People-Oriented Software Reuse: The Very 
  12439. Thought," in[5], pp. 176-185, March 1993.
  12440.  
  12441. [3]A. Sutcliffe, Analogy in Software Reuse, ch. 7 of [6], pp. 129-134. 
  12442. Chapman and Hall, 1992.
  12443.  
  12444. [4]T. Biggerstaff and C. Richter, "Reusability framework, assessment, and 
  12445. directions.," IEEE Software, vol. 41, March 1987.
  12446.  
  12447. [5]R. Prieto-Diaz and W. Frakes, eds., proceedings of the 2nd 
  12448. International Workshop on Software Reuse (REUSE'93), Lucca, Italy, IEEE 
  12449. Computer Society Press, ISBN 0-8186-3130-9, March 1993.
  12450.  
  12451. [6]P.Hall, ed., Software reuse,reverse engineering,and re-engineering. 
  12452. Chapman and Hall,1992.
  12453.  
  12454. 5   Biography
  12455.  
  12456. Ben Whittle graduated in Agricultural Economics from UW Aberystwyth 
  12457. in 1989. He subsequently completed a masters in Computer Science and 
  12458. proceeded to study for a PhD in the area of Software Component Reuse. 
  12459. Mr. Whittle is currently with the University of York, working within the 
  12460. Rolls-Royce sponsored Systems and Software Engineering University 
  12461. Technology Centre (UTC). His main task within the UTC is the 
  12462. introduction of advanced reuse techniques to the development of real-
  12463. time systems within Rolls-Royce. Mr Whittle has recently been elected 
  12464. chairman of the British Computer Society Reuse Special Interest Group 
  12465. committee and was formerly the editor of the group newsletter.
  12466. How to convince the management?
  12467.  
  12468. Aarne H. Yla-Rotiala
  12469.  
  12470. Nokia Telecommunications
  12471. P.O. Box 33
  12472. 02601 Espoo, FINLAND
  12473. Tel: (358) 0 5112 6542
  12474. Email: aarne.yla-rotiala@ntc.nokia.com
  12475.  
  12476. Abstract
  12477.  
  12478. Software reuse is a way to increase productivity and to get better quality. 
  12479. It seems that reuse is often stated as a goal for improvement programs, 
  12480. and that companies and other organizations feel the need to "do reuse". 
  12481. The order of steps is not predetermined, but then by keeping the actual 
  12482. goals - productivity, product quality, customer satisfaction - in mind one 
  12483. is able to travel towards a better software engineering solution. By 
  12484. improving the organization's state of the practice it is possible to finally 
  12485. stumble into reuse, but without having to bleed in the process. Doing the 
  12486. improvement in a planned manner with centralized resource allocations 
  12487. could be in some way more efficient than this Darwinian path, but the 
  12488. effect on customer-oriented and financially responsible units within a 
  12489. company can be negative. The conclusion of this presentation is that "It 
  12490. looks like having reuse as a goal is having the wrong goal", especially 
  12491. from the management perspective. The conclusion is followed by the 
  12492. question "What is wrong with this conclusion?".
  12493.  
  12494. Keywords: Quality, productivity, investment, management.
  12495.  
  12496. Workshop Goals:Practical experience exchange, counter arguments 
  12497. against my position.
  12498.  
  12499. Working Groups: Tools and environments,Software engineering 
  12500. management and economics
  12501.  
  12502. 1   Background
  12503.  
  12504. I have been a practicing software engineer for several years now. As such, 
  12505. I have gotten more or less acquainted with several methods to achieve 
  12506. better quality and productivity. Among these methods, reuse has been 
  12507. and still is one of my favorites. During my active career I have written 
  12508. and used (re-)usable components, and tried to get a grasp of what reuse 
  12509. is all about. So far I am in the wilderness: there seems to be little 
  12510. difference between "Solid Software Engineering" and "Software Reuse".
  12511.  
  12512. 2   Position
  12513.  
  12514. Motorola [1] and IBM [2] have documented successful reuse programs. 
  12515. These and other efforts like STARS are specificly aimed at enhancing 
  12516. reuse in the organization's software engineering process. This requires a 
  12517. lot of management support and commitment, up to the CEO level. 
  12518. Investments are huge, and the pay-off time is usually several years.  The 
  12519. positive effect of such a program is "enhanced reuse" and "better 
  12520. reusability"of the software products created in the organization. 
  12521. Eventually this is believed to result in lower overall costs, better quality 
  12522. and shorter time to market for new products, which are all desirable 
  12523. goals. These goals - and other similar ones - are what companies are 
  12524. actually looking for when they launch "quality", "productivity" or even 
  12525. "reuse" programs.
  12526.  
  12527. Given the time-scale and investment required to start and run a 
  12528. successful reuse program , it is not very likely that the average manager 
  12529. is willing to authorize such a program. If the program's goal is set to 
  12530. enhance reuse, the connection between the bottom line - or harder-to-
  12531. measure things like customer satisfaction - is very fuzzy at best. Fast 
  12532. programs with more concrete goals are likely to be easier to accept. 
  12533. Expensive initiatives that take years to complete should not focus on 
  12534. only one aspect or method to achieve better quality and larger profits, 
  12535. but on a holistic approach to the company's software engineering process 
  12536. and environments. The chain of deduction should go the other way 
  12537. round: Do something for better abstractions, create better tools, enhance 
  12538. communications, educate the engineers and preach about usability on 
  12539. all levels of you process and product, and eventually you'll get better 
  12540. quality, faster throughput, larger profits and even more (re-)usable 
  12541. software and more (re-)use of existing artifacts. My position is therefore 
  12542. that "reuse" is actually a synonym for several "Good Things" in Software 
  12543. Engineering, and that many software engineers and managers see it that 
  12544. way, and that to achieve these "Good Things"  ne should concentrate on 
  12545. good software engineering process and methodology improvement in 
  12546. general.
  12547.  
  12548. 2.1  The Case of Nokia Telecommunications
  12549.  
  12550. The above position stems from a few observations made at Nokia 
  12551. Telecommunications.There has been an ongoing discussion about "reuse" 
  12552. and the necessity of it, which actually seems to have blinded us from the 
  12553. fact that in a sense we are already there.
  12554.  
  12555. NTC's DX 200 product's internal architecture has been under scrutiny, 
  12556. and the results are being implemented. The product - and the 
  12557. organization - is organized into several platforms of different abstraction 
  12558. levels. New enhancements to common platforms are made partially by 
  12559. applying a standard procedure for generalizing specific features created 
  12560. initially for a narrow or even a customer-specific purpose. Different 
  12561. system and code generators have been built over the years, and the 
  12562. abstraction level for the average softare engineer is continuously getting 
  12563. higher and higher. All these - a common repository or a "platform"and 
  12564. the higher level tools - have been initiated as more or less independent 
  12565. projects. The end result from this drive towards clear goals is actually 
  12566. very similar to what is the cookbook approach toward reuse 1 . This is 
  12567. the observation that deserves some attention, since the word "reuse" has 
  12568. been mentioned only in the context that "we should be doing it", and 
  12569. usually it has been found out that "in a sense, we are already doing it", 
  12570. which revelation leads to either the conclusion that we are not doing 
  12571. enough or to the question about "where is the beef in reuse - do we need 
  12572. to think about it any more".
  12573.  
  12574. The way process and methdology enhancements have usually started is 
  12575. that there has been a clear idea of what should be done and what 
  12576. benefits the improvement would bring with it. Thus, on the road to the 
  12577. current situation,the motivation has always been something else but 
  12578. reuse - better quality, better productivity or whatever. In the tough 
  12579. competition there seems to be little or no room for two-phased 
  12580. improvement paths forcing the organization first to invest to reach an 
  12581. intermediate state of "Great Expectations", and from there to proceed to 
  12582. financial success. It is possible to justify and start large investments with 
  12583. long pay-off times if the benefits are clear and large enough, but it seems 
  12584. unlikely that such investments can be done if the promised benefits 
  12585. have no direct consequences in the company's competitiveness. For this 
  12586. reason reuse should not be stated as a goal for an improvement program, 
  12587. and no company should make the error of believing that "doing reuse" is 
  12588. the goal of any of its actions 2 .
  12589.  
  12590. 2.2  Planned company-level reuse can be bad for the company
  12591.  
  12592. Some successful companies - including Nokia 3 - try to avoid too much 
  12593. centralized control, and favor more or less independent business units 
  12594. with clear customer-orientation and local authority for all business-
  12595. related issues 4 . The business units are given responsibility of their 
  12596. customer accounts and products, they have precise profit goals, and 
  12597. therefore they have a large amount of authority. This implies that a 
  12598. company-wide program that affects the software production technology 
  12599. and the software engineering processes in the profit centers could disrupt 
  12600. the operations of the units. If a large-scale program is to be started, the 
  12601. program should be accepted both in the headquarters and in the units. 
  12602. Since the units usually have slightly different short-term and long-term 
  12603. goals, creating an agreement of what should be done, who pays for it and 
  12604. how much effort should be put in can be difficult.
  12605.  
  12606. All this implies that large-scale reuse programs can be hard to start in 
  12607. some business environments. The necessary "CEO support" - or, at 
  12608. business unit level, the "unit manager support" - means that the CEO or 
  12609. the unit manager should start interfering with the operations of the 
  12610. units or the departments, which implies that the management 
  12611. philosophy has to be more or less centralized. If not, interfering with the 
  12612. local authority can disrupt the smooth local operations,which is usually 
  12613. not a good thing. In exceptional cases it can be done; for example, a 
  12614. quality system and the ISO9000 approval must be a company-wide 
  12615. effort. Implementing a similar program for an individual technique or 
  12616. set of techniques like reuse in the corporate level is somewhat unlikely 
  12617. since a corporate program interferes and disrupts the operations of the 
  12618. units, and therefore breaks the corporatemanagement culture,which is 
  12619. usually much more valuable than an independent implementation-level 
  12620. technology. In the unit - or "domain" - level such a program is easier to  
  12621. start, but the acceptable amount of resource expenditure is naturally 
  12622. much smaller. That means that investments are smaller and that the 
  12623. technology to be used must scale down, too, and that there should be a 
  12624. mechanism of building software engineering infrastructure in general 
  12625. and reuse technology in particular at least partially in a bottom-up 
  12626. manner.
  12627.  
  12628. _______________________________
  12629.  1 Spend time and resources to get large common building blocks for 
  12630. application developers.Build system generators if you can. Take care of 
  12631. communications and quality control.
  12632.   2 Excluding companies that try to sell reuse, naturally.
  12633.   3 The CEOJorma Ollila has publicly stated that he is very happy with 
  12634. the distributed decision-making in the group and finds it a valuable 
  12635. asset.
  12636.   4According to the sales people of e.g. Hewlett-Packard, HP has similar 
  12637. attitude towards local versus centralized decision-making.
  12638.  
  12639. 3   Comparison with other work
  12640.  
  12641. This position seems to contrast the positive results from e.g. IBM and 
  12642. Motorola.  The described improvement method has a similarity with the 
  12643. Capability Maturity Model [3]. The difference can be only a superficial 
  12644. one: what has been said here is that the goals and motives for doing 
  12645. improvements should be suitable for the organization and that the goals 
  12646. should offer something measurable. This is in no contrast with what has 
  12647. been said in earlier work. On the other hand, the concept of having reuse 
  12648. as a goal for an organization is not believed to be universally true. While
  12649. it is OK to have e.g.  reuse as the initial theme for improvement, the 
  12650. goals should be connected to the company's business improvements. 
  12651. While the benefits of reuse programs cannot be denied, questions and 
  12652. doubts about the overall efficiency arises, and alternative what-if 
  12653. scenarios 5 would be very welcome to clarify the issues.
  12654.  
  12655. [4] attempts to explain the problems IBM faced in the computer 
  12656. industry after the introduction of the IBMPC. The given explanation can 
  12657. be argued, but the authors continue to describe a "Silicon Valley model" 
  12658. of high technology management, which emphasizes fast actions, 
  12659. concentration on the core competence and architectural domination of 
  12660. the market. The model includes emphasis on loosely coupled small 
  12661. organizations with well defined interfaces, which means distributed 
  12662. control and command. The text implies that such an organization is 
  12663. "goo d", and claims that the pace of technology requires it or some other 
  12664. adaptive and slick organizational model. True or not,the Ferguson's and 
  12665. Morris's arguments have a similarity with this presentation,and it would 
  12666. indeed be hard to devise a way to implement a long-range reuse program 
  12667. in a fast setting they describe.
  12668.  
  12669. The work about e.g. system generators [5] and other implementation 
  12670. level reuse technologies is in no contrast or agreement with this 
  12671. observation. The issue here is why and how should one run a reuse or 
  12672. other process improvement projects, not the actual steps in the potential 
  12673. projects.
  12674.  
  12675. Work and opinions about Software Process Automation [6] are 
  12676. compatible with my alleged observation. Goals need to be defined, steps 
  12677. determined and results measured when one is trying to improve the 
  12678. performance of the organization. What might be left unsaid is that the 
  12679. organization needs to be aware of what it really needs, and should not 
  12680. concentrate on secondary or technological issues, at least not if the 
  12681. technology is not the business of the organization.
  12682.  
  12683. _______________________________5
  12684. Such scenarios are naturally error-prone, and prove little, if nothing.  
  12685. They still present alternative lines of thinking, and are therefore 
  12686. valuable.
  12687.  
  12688. References
  12689.  
  12690. [1]R. L. Joos, "Software reuse at motorola," IEEE Software, vol. 11, 
  12691. September 1994.
  12692.  
  12693. [2]A. Endres, "Lessons learned in an industrial software lab," IEEE 
  12694. Software, vol. 10, pp. 58-61, September 1993.
  12695.  
  12696. [3]M. Paulk, B. Curtis,and C. et al., "Capability Maturity Model for 
  12697. Software," Tech. Rep. CMU/SEI-91-TR-24, Software Engineering 
  12698. Institute/Carnegie Mellon University, Pittsburgh, Pennsylvania, August 
  12699. 1991.
  12700.  
  12701. [4]C. H. Ferguson and C. R. Morris, Computer Wars. Times Books, 1994.
  12702.  
  12703. [5]D. Batory, V. Singhal, J. Thomas, S. Dasari, B. Geraci, and M. Sirkin, 
  12704. "The Genvoca model of software-systemgenerators," IEEE Software, vol. 11, 
  12705. September 1994.
  12706.  
  12707. [6]A. M. Christie, Software Process Automation. Springer-Verlag, 1995.
  12708.  
  12709. 4   Biography
  12710.  
  12711. Aarne H. Yla-Rotiala is a software engineer at Nokia Telecommunications. 
  12712. He works at the software engineering department, and is currently 
  12713. involved in a project that is developing the software engineering 
  12714. environment in use at the development of DX 200 software. He received 
  12715. a M.Sc from the university of Helsinkiin 1990, and is enlisted as a Ph.D 
  12716. student at the department of computer science.
  12717.