home *** CD-ROM | disk | FTP | other *** search
/ ftp.umcs.maine.edu / 2015-02-07.ftp.umcs.maine.edu.tar / ftp.umcs.maine.edu / pub / WISR / wisr4 / proceedings / ascii / batory.ascii < prev    next >
Text File  |  1991-10-28  |  10KB  |  234 lines

  1. On the Differences Between 
  2.  
  3. Very Large Scale Reuse 
  4.  
  5. and 
  6.  
  7. Large Scale Reuse
  8.  
  9. Don Batory
  10. Department of Computer Sciences
  11. The University of Texas
  12. Austin, Texas  78712
  13.  
  14. dsb@cs.utexas.edu
  15.  
  16. Abstract
  17.  
  18. Very large scale software reuse (VLSR) is an every-day occurrence
  19. whereas large scale software reuse (LSR) remains an elusive and 
  20. unrealized goal.  We offer an
  21. explanation for this apparent contradiction in this paper.
  22.  
  23. Keywords:  Genesis, realms, software building-blocks.
  24.  
  25.  
  26. Introduction
  27.  
  28. Very large scale software are systems of 50K lines of code or greater.
  29. As-is reuse is the reuse of software without modifications.
  30. As-is very large scale software reuse (henceforth called as-is VLSR)
  31. is an every-day phenomena.  Each time we build an application on top of Unix, 
  32. we are reusing Unix as-is.  Each time we build a graphical 
  33. front-end using Motif or Interviews, we are reusing Motif or 
  34. Interviews as-is.  Since both Motif and Interviews are built 
  35. upon X-windows, X-windows is reused as-is.  Creating pipes 
  36. in Unix, where processes of prewritten file filters are glued 
  37. together, is yet another example.  In general, 
  38. as-is VLSR occurs anytime we build applications upon existing software.
  39.  
  40. There are two general conditions for as-is reuse to occur.  They 
  41. are when users (1) agree to use the abstractions provided by existing 
  42. software and (2) agree to use the existing implementations of 
  43. these abstractions.  Both points are self-evident: if the abstractions 
  44. presented by software components in a library are not relevant to an 
  45. application, they obviously will never be (re)used.  Similarly, 
  46. if performance or special features are critical requirements and 
  47. existing software doesn't provide either, then that 
  48. software cannot be (re)used without modification.
  49.  
  50. There probably is universal agreement that in the ideal case software 
  51. components should be reused as-is.  Since as-is VLSR
  52. is already is a daily occurrence, 
  53. and large scale reuse (LSR) is known to be a fundamentally difficult 
  54. problem, where is the contradition?  Why 
  55. has as-is VLSR been successful while as-is LSR has not?  To
  56. answer this question, we introduce a model of VLSR and LSR.
  57.  
  58.  
  59. A Model of As-Is Reuse
  60.  
  61. >From our work on Genesis and Avoca [Bat88, Bat91a-b, Oma90, Pet90], we 
  62. have shown that large software systems correspond to type expressions.  
  63. Our idea
  64. is simple.  Let R be the function-call interface to a software system.
  65. In principle, we know that there can be many different implementations 
  66. of R.  We define the realm of R to be the set of all software systems that
  67. support exactly interface of R.  The members of realm/interface R 
  68. can be listed as an enumerated type.  Two possible realms 
  69. R and S are shown below:
  70.  
  71. R  =  {  a, b, c  }
  72.  
  73. S  =  {  d[ x:R ], e[ x:R ], f[ x:R ] }
  74.  
  75. Interface R has three implementations, namely the software components a,
  76. b, and c.  Similarly, interface S is implemented
  77. by the components d, e, and f.  Observe that realms group 
  78. together all components that are plug-compatible and
  79. interchangeable.  For example, because all components
  80. of R implement the same interface, one can swap one 
  81. implementation/component of R with another.  The same applies
  82. for components of other realms.
  83.  
  84. Components may have parameters.  All components of S,
  85. for example, have a single parameter of type R.  What this means
  86. is that a component d[ x:R ] of S translates objects and
  87. operations of the interface of S to objects and operations
  88. of the interface of R.  The translation itself does not
  89. depend on how R is implemented.  This
  90. means that any implementation of R can be `plugged'
  91. into component d to make it work.
  92.  
  93. Software systems correspond to type expressions.  Two systems
  94. are shown below:
  95.  
  96. System_1  =  d[ b ]
  97.  
  98. System_2  =  f[ b ]
  99.  
  100. System_1 is a composition of component d with b; System_2 is
  101. a composition of component f with b.  Since both of these systems
  102. present the same interface (i.e., both present the interface of S),
  103. System_1 and System_2 are also interchangeable implementations of S.
  104.  
  105. The way we have modeled software makes as-is reuse easy to
  106. spot.  Consider two systems and their type expressions.  If both
  107. expressions reference the same component, then that component is being
  108. reused.  Note that System_1 and System_2 reuse component b.
  109. More generally, if two systems have a common subexpression, then 
  110. these systems share a common subsystem.
  111.  
  112. Finally, observe that our model of software construction is independent of 
  113. component size.  Components can be very large (i.e., the size of Unix and
  114. X-windows), or they could be substantially smaller [Bat91a-c].  Thus, our
  115. model can be used to explain as-is VLSR as well as as-is LSR.
  116.  
  117.  
  118. An Example
  119.  
  120. Consider the following realms.  Let UNIX denote the realm of systems 
  121. that implement the Unix interface.  Let XW denote the realm of
  122. X-window interface implementations, and MOT be the realm of implementations of
  123. the Motif interface.  Finally, let APPL be the realm of applications
  124. whose interface takes command-line and mouse-click inputs.  Typical
  125. population of these realms are:
  126.  
  127. UNIX   =   { bsd4.3, system5 }
  128.  
  129. XW    =   { xwindows[ x:UNIX ] }
  130.  
  131. MOT   =   { motif1.1[ x:XW ] }
  132.  
  133. APPL  =   { myprog[ x:MOT, y:UNIX ], ... }
  134.  
  135.  
  136. We have taken a few liberties in defining the above realms to keep our
  137. example simple.  Note that we have lumped bsd4.3 and system5 together in 
  138. the same realm (UNIX).  Actually, there are significant differences between 
  139. Berkeley Unix and System 5, and in reality each belongs to its own distinct 
  140. realm.  For our purposes, however, both implement a common
  141. subset of interface functions which we define as the 
  142. UNIX realm interface.  Another point worth
  143. mentioning is that we have simplified our model of the motif[ ]
  144. and xwindows[ ] components by omitting parameters (i.e., their calls to the
  145. Unix interface).  We leave it to readers as a straightforward exercise
  146. to eliminate these simplifications.
  147.  
  148. Recall that systems correspond to type expressions.  Suppose `myprog' is 
  149. an application program that makes calls to the Unix and Motif interfaces.  
  150. Motif, in turn, translates its calls into X-window calls, which in turn, 
  151. translates into calls to Berkeley Unix.  The layering of very large scale 
  152. software that defines this system is given by the expression:
  153.  
  154. My_System  =  myprog[ motif1.1[ xwindows[ unix4.3 ] ], unix4.3 ]
  155.  
  156. By swapping the unix4.3 component with system5, we have 
  157. ported My_System to System 5 Unix.
  158.  
  159. As a step toward understanding the problems of LSR, consider the
  160. membership of contemporary realms.  As a general rule, most realms today 
  161. have very few components.
  162. The members of the UNIX realm, for example, are the current implementation(s)
  163. of Unix plus out-dated versions.  The same for XW (X-windows)
  164. and MOT (motif).  The reason is simple: interfaces to software systems
  165. tend to be ad hoc and unique.  The institution that designed the interface 
  166. of a system also built that system, and maintains only one implementation
  167. of it (modulo version and platform upgrades).  The idea of
  168. building a family of different implementations for an interface is not
  169. yet popular.  Consequently, typical realms have singleton (or very small) 
  170. memberships.  This provides us with a key clue to resolving the contradiction we
  171. identified earlier.
  172.  
  173. Explaining the Contradiction
  174.  
  175. As mentioned earlier, 
  176. as-is VLSR is an every-day occurrence while as-is LSR remains an
  177. unrealized goal.  The techniques that have been proposed
  178. for as-is LSR (e.g., formal methods) have had difficulties scaling-up.
  179. Oddly enough, the simple ideas that have made as-is VLSR work have not 
  180. been successfully scaled-down so that large (sub)systems like unix4.3, 
  181. xwindows, motif1.1, etc., can themselves be defined from compositions of 
  182. more primitive components.
  183.  
  184. Recall the two conditions for successful as-is reuse.  Users must (1)
  185. agree to use the interface abstractions of existing software and (2)
  186. agree to use the implementations of these interfaces.  As a community,
  187. we have not been successful in agreeing on the interfaces/abstractions that lie
  188. inbetween the interfaces of major systems (e.g., interfaces/abstractions
  189. in between Motif and X, between X and Unix, etc.).  Nor have we, as
  190. a community, truely realized the importance of families of systems
  191. that share the same interface but have different implementations.
  192.  
  193. Until these two issues are bridged, as-is LSR will continue to remain 
  194. elusive and unrealized.
  195. In [Bat91a], we explore these issues further, and present a validated
  196. approach for achieving as-is LSR.
  197.  
  198. References
  199.  
  200. [Bat88]    D.S. Batory, `Concepts for a Database System Synthesizer', ACM PODS 1988, 184-192.
  201.  
  202. [Bat91a]    D.S. Batory and S.W. O'Malley, `The Design and Implementation of
  203. Hierarchical Software Systems Using Reusable Components', submitted for
  204. publication.
  205.  
  206. [Bat91b]    D.S. Batory and S.W. O'Malley, `Genvoca: Reuse In Layered Domains',
  207. Proc. 1st International Workshop on Software Reuse, Dortmund, Germany, 1991.
  208.  
  209. [Bat91c]    D.S. Batory and S.W. O'Malley, `A Definition of Open Architecture
  210. Systems with Reusable Components: Preliminary Draft', ICSE Domain Modeling Workshop,
  211. 1991.
  212.  
  213. [Pet90]    L. Peterson, N. Hutchinson, and H. Rao, and S.W. O'Malley, `The 
  214. x-kernel: A Platform for Accessing Internet Resources'.  IEEE Computer 
  215. (Special Issue on Operating Systems), 23,5 (May 1990), 23-33.
  216.  
  217. [OMa90]    S.W. O'Malley and L. Peterson, `A New Methodology for 
  218. Designing Network Software', University of Arizona TR 90-29 
  219. (Sept. 1990). Submitted for publication.
  220.  
  221.  
  222. Bibliography
  223.  
  224. Don Batory is an Associate Professor in the Department of Computer
  225. Sciences at The University of Texas, Austin.  He received his 
  226. Ph.D. from the University of Toronto in 1980, he was Associate
  227. Editor of the IEEE Database Engineering Newsletter from 1981-84
  228. and was Associate Editor of ACM Transactions on Database Systems
  229. from 1986-1991.  He is currently a member of the ACM Software 
  230. Systems Award Committee, and his research interests are in 
  231. extensible and object-oriented database management systems 
  232. and large scale reuse.
  233.  
  234.