home *** CD-ROM | disk | FTP | other *** search
/ ftp.umcs.maine.edu / 2015-02-07.ftp.umcs.maine.edu.tar / ftp.umcs.maine.edu / pub / WISR / wisr6 / proceedings / ascii / kozaczynski.ascii < prev    next >
Text File  |  1993-10-19  |  15KB  |  267 lines

  1. Kozaczynski - 1
  2.  
  3.  
  4. Reuse Enabling Technology
  5. On Constructing Systems From Large-grained Components
  6.  
  7.  
  8. Wojtek Kozaczynski
  9.  
  10. Andersen Consulting
  11. Center for Strategic Technology Research
  12. 100 S. Wacker Dr., Chicago IL 60606
  13. Tel: 312-507-6682
  14. Email: wojtek@andersen.com
  15. Fax: 312-507-3526
  16.  
  17. Abstract
  18. This position paper addresses the technological requirements for domain-
  19. specific reuse of large-grained software objects. Large-grained software 
  20. objects are on the order of subsystems or self-sustained modules and we 
  21. assume that they encapsulate well defined functionality and have formally 
  22. specified interfaces. Our main concern is what technology must be in place 
  23. in order to support a development process where complex, distributed 
  24. systems are composed/assembled from such large-grained components. We 
  25. briefly describe what we call the Module Development, Coordination, and 
  26. Interconnection Technology. We argue that this technology should support 
  27. a system development process that naturally promotes and enables reuse. 
  28.  
  29. Keywords: reuse process, technology, specifications, problem domain
  30.  
  31. Workshop Goals: present an approach to enable reuse, obtain feedback, 
  32. learn, networking
  33.  
  34. Working Groups: process models, tool and environments, domain 
  35. analysis, management and economics
  36.  
  37. 1    Background
  38.  
  39. Andersen Consulting is one of the largest consulting companies in the world. A 
  40. very large part of its revenue comes from building computer systems that 
  41. support clients' mission-critical business operations. Andersen Consulting 
  42. perceives great potential value in implementing a large-scale reuse program. A 
  43. software reuse program can be looked at from three major perspectives: (i) the 
  44. management infrastructure (investment, dedicated resources/organizations, 
  45. enacting the process, incentive structure, legal issues, ...) (ii) the professional 
  46. skills and culture (polarization of skills, new skills development, attitudes, 
  47. education and training, ...), and (iii) the technical infrastructure.
  48.  
  49. This paper addresses the third perspective of reuse; the enabling technology. 
  50. We argue that in order to achieve significant gains from reuse, the process of 
  51. building systems must be changed. Specifically, the systems should be 
  52. assembled from large, ready to use components/modules encapsulating well-
  53. defined, domain-specific functionality. There is nothing new in this idea except 
  54. that we assume that:
  55. Ñ it should be possible to develop components independently from each 
  56. other, using languages that best suit their functionality, and let them 
  57. execute in environments that best suit their non-functional requirements 
  58. (including cost) 
  59. Ñ it should be possible and easy to assemble components in a number of 
  60. different configurations without need to change their internals, and
  61. Ñ it should be possible to interconnect the components into a running 
  62. system despite their heterogeneity (different languages and execution 
  63. environments). 
  64. To be able to do the above a new technology must be produced, integrated, 
  65. and instrumented with tools. We refer to it as Module Development, 
  66. Coordination, and Interconnection Technology. This technology, addressed in 
  67. more detail in the following section, should enable a domain architecture 
  68. specific, component-based process of building large, distributed systems. Before 
  69. we proceed, we should make two points explicit.
  70.  
  71. Point one is that the reuse we are interested in can be characterized as reuse of 
  72. large-granularity, or large-object reuse. Small-granularity reuse would be the 
  73. reuse of generic components independent of the problem domain. Examples of 
  74. small-grained components would be file/DB access functions, data structure 
  75. manipulation functions, individual object classes, I/O objects and functions, 
  76. etc. The parts we are interested in are on the order of complete functional 
  77. modules or subsystems. Examples of such modules would be an order 
  78. processing subsystem, a customer account maintenance module, an entire UI 
  79. client, or a production simulation module. 
  80.  
  81. The above point leads to an observation on the reusability of large-grained 
  82. components. These components encapsulate very domain-specific knowledge 
  83. and behavior. Due to their size and potential internal complexity, their 
  84. development may be costly. This cost can be amortized only if the 
  85. components are used repetitively with no (or only minimal) changes. 
  86. Fortunately, Andersen Consulting typically constructs many instances of a 
  87. generic system type (eg. inventory management) in the same domain for 
  88. different clients. Moreover, the company is organized along specific business or 
  89. industry domains (banking, insurance, utilities, ...). This simplifies the 
  90. facilitation and monitoring of a domain-specific reuse process. 
  91.  
  92. 2    Position
  93.  
  94. The Software Engineering Lab of the Center for Strategic Technology Research 
  95. (CSTaR) is evaluating the feasibility of producing the Module Development, 
  96. Coordination, and Interconnection Technology. The technology should support 
  97. a system building process that naturally promotes reuse by implementing the 
  98. principles of separation of concerns, abstraction, and functional 
  99. decomposition. The process, illustrated Figure 1, can be described as follows:
  100.                                                      
  101.  
  102. Figure 1. Domain-specific, component-based system development 
  103. process abstractions and products.
  104.  
  105. Ñ The interfaces of a reusable module are formally specified in an interface 
  106. specification language. Such a specification describes the services provided 
  107. and required by the module and the conditions under which they can be 
  108. rendered. The specification becomes a contract between module developers 
  109. and module users and separates their concerns. Modules are developed with 
  110. minimal assumptions of how they will interconnect with the other modules 
  111. they will request services from or provide services to. They can be written in a 
  112. number of languages for which the bindings (with the interface spec 
  113. language) are defined and can run on a set of predefined platforms 
  114. (computing environments). 
  115. Ñ Module interface specifications (not the modules implementations) are used 
  116. to develop a specification of module coordination and cooperation, and 
  117. assign modules to computing resources. The designer (a person who composes 
  118. the system from reusable modules) works with a set of abstractions of 
  119. communication services and computing resources rather than with particular 
  120. services or resources of an execution environment. These abstractions are 
  121. provided by the Connection Infrastructure Formalism. They are a boundary 
  122. between his concerns and the concerns  of the software engineer who will 
  123. implement the execution environment(s) for the system. Examples of these 
  124. abstraction are: 1-to-1 synchronous communication, 1-to-n asynchronous 
  125. communication with the "all must receive" requirement, process, etc.
  126. Ñ The abstractions of the connection infrastructure are mapped into a number 
  127. of different implementations of execution environments. For example, the 
  128. underlying execution environment can be Unix-based and use only RPCs to 
  129. support communication between modules. On the other hand, it may be a 
  130. proprietary software bus like Andersen's FCP (FOUNDATION for Cooperative 
  131. Processing) that runs on a network of different computers and workstations.
  132. Ñ The final run-time version of a system is assembled/made from the 
  133. functional modules (the reusable, domain-specific modules), modules 
  134. developed to help coordinate the work on the functional modules (the 
  135. control modules), automatically generated module adapters, and the 
  136. underlying execution environment services. The only part that we may not 
  137. be able to generate from the specifications (as shown in the Figure) are the 
  138. control modules. It would be naive to assume that a complex system can be 
  139. assembled entirely from reusable modules:
  140. - If functions are missing, new modules (hopefully reusable) must be 
  141. developed or existing ones must be modified effectively giving rise to new 
  142. modules or versions.
  143. - In order to support complex, multi-module interactions, control modules 
  144. may have to be written. These modules should have no domain-specific 
  145. function but coordinate the work of the functional modules.
  146.  
  147. We strongly believe that the technology to enable the above process can be 
  148. developed and packaged into tools. The process itself has a number of obvious 
  149. advantages:
  150. Ñ The development of a few systems in the same (sub)domain should result in 
  151. a library of reusable modules and system designs (module coordination and 
  152. cooperation and resource assignment designs). These modules and designs 
  153. are a very tangible form of a Domain-specific Software Architecture.
  154. Ñ The module development, testing and certification has been separated from 
  155. system assembly and testing. These activities can be delegated to different 
  156. groups of specialists and performed at different locations. For example, 
  157. Andersen Consulting is forming a number of geographically distributed 
  158. Solution Engineering Centers. Most of the module development and testing 
  159. will be done at these centers. However, systems assembly and testing will be 
  160. done by engagement teams at the client locations. Also, even if new modules 
  161. must be made for a system, their development can overlap in time with 
  162. system testing. This is simply done by using the module interface 
  163. specification as a contract and as a base for developing or generating a 
  164. module stub at the same time.
  165. Ñ System quality and process productivity should naturally increase with 
  166. every subsequent iteration of a system development. Similarly, the quality of 
  167. the reusable components and the system designs should increase. 
  168. Ñ The decomposition of a systems into relatively independent modules with 
  169. the interconnection, coordination, and communication logic removed from 
  170. them should allow for relatively easy construction of large, distributed, and 
  171. heterogeneous systems.
  172. Ñ The same decomposition of systems into modules with well specified external 
  173. behavior will enable flexible system adaptation and tuning. For example, a 
  174. new, better performing version of a module can be developed and put in 
  175. place of the old version with only minimal, automatically applied changes to 
  176. the system. 
  177. Ñ The approach provides a consistent way of treating and using legacy 
  178. systems. After a wrapper and an interface specification is developed for a 
  179. legacy system (or its part), it  can be treated as a module.
  180.  
  181. 3    Comparison
  182.  
  183. CSTaR's Software Engineering Lab is currently conducting three parallel projects 
  184. that collectively address the technology described in the previous section: 
  185. Ñ a project on module interface specifications
  186. Ñ a project on system distributed architecture design (related to the 
  187. coordination, cooperation and resource allocation design), and
  188. Ñ a project on software buses (related to the interconnection 
  189. infrastructures).
  190.  
  191. These projects borrow ideas from a number of other industrial and academic 
  192. research projects. Similar ideas of module interface specification and flexible 
  193. module interconnection can be found in the work of Jim Purtilo [6,7] and 
  194. Dewayne Perry [3,4]. Perry introduces an idea of module service pre- and post-
  195. conditions that improve the semantic richness of the module interface 
  196. specifications. Purtilo introduces the notion of a software bus (an 
  197. interconnection infrastructure), automatically generated adapters, and 
  198. application geometry design which is similar to the module cooperation and 
  199. coordination design. However, both authors are looking at small-grained 
  200. module reuse rather than large-grained module reuse. Perry also assumes that 
  201. modules are assembled into a single run-time unit and therefore share address 
  202. space. We assume explicitly that modules are distributed and communicate 
  203. only via messages. 
  204.  
  205. The idea of a unifying interconnection infrastructure and an interface 
  206. specification language is also central to OMG CORBA [2]. CORBA is a standard 
  207. for the developers of OO software buses. From our perspective a CORBA-
  208. compliant bus is one of many possible implementations of an interconnection 
  209. infrastructure. Some of the abstract services in our connection infrastructure 
  210. formalism have no equivalent counterparts in the CORBA specification and 
  211. have to be constructed from its lower-level services. Also, the issues of 
  212. distributed systems design are conceptually higher than the issues addressed 
  213. by CORBA.
  214.  
  215. The ideas of domain-specific software architectures and their role in reuse are 
  216. obviously not new [5]. However, we have defined domain-specific software 
  217. architectures very pragmatically as collections of reusable modules and 
  218. systems designs. On the other hand, it seems intuitive that our reusable 
  219. component libraries should be organized along domain-specific taxonomies 
  220. described in a formal way (similar to RLF [1], for example) and should contain 
  221. not only modules but also other design artifacts.  
  222.  
  223.  
  224. References
  225.  
  226. [1]    Technical  Concept Document : CARDS, STARS-C-04107A/001/01, PARAMEX, 
  227. 1993
  228. [2]    The Common Object Request Broker: Architecture and Specification , OMG 
  229. Document Number 91.12.1
  230. [3]    Dewayne E. Perry, "The Inscape Program Construction and Evaluation 
  231. Environment", Tech. Report, Computer Technology Research Lab., AT&T 
  232. Bell Laboratories, 1986
  233. [4]    Dewayne E. Perry, "Software Interconnection Modules", Proceedings of the 
  234. International Conference on Software Engineering, Monterey, CA, May-April 
  235. 1987
  236. [5]    Ruben Prieto-Diaz and Guillermo Arango, "Domain Analysis and Software 
  237. System Modeling", IEEE Computer Society Tutorial, Los Alamitos, CA 1991
  238. [6]    James M. Purtilo, "The POLYLITH Software Bus", University of Maryland CSD 
  239. Technical Report 2469, 1990
  240. [7]    James M. Purtilo, Richard T. Snodgrass and Alexander L. Wolf, "Software Bus 
  241. Organization: Reference Model and Comparison of Two Existing Systems", 
  242. DARPA Module Interconnection Formalism Working Group, Technical Note 
  243. No. 8, November 1991
  244.  
  245.  
  246. 4  Bibliography
  247.  
  248. Dr. Wojtek (Voytek) Kozaczynski is the director of the CSTaR's Software 
  249. Engineering Laboratory. Before assuming this position in 1992 he had been the 
  250. principal investigator on the software analysis and re-engineering project. The 
  251. project resulted in development of two experimental workbenches supporting 
  252. the activities of understanding and design recovery of legacy systems as well as 
  253. recovery of reusable components from these systems. 
  254. Dr. Kozaczynski's research interests include: software development 
  255. environments, software reuse, software renovation, program analysis and 
  256. understanding and automatic program transformation. He also has an 
  257. extensive database background that includes the development of a commercial 
  258. DBMS and work on adaptive database decomposition in distributed databases. 
  259. Prior to joining CSTaR in 1988 he was working as an Assistant Professor at the 
  260. Department of Information and Decision Sciences, University of Illinois at 
  261. Chicago, where he taught and researched the application of AI techniques to 
  262. information systems design and development and database design. Dr. 
  263. Kozaczynski came to the U.S. in 1982 after receiving his graduate degree from 
  264. the Technical University of Worclaw, Poland. 
  265.  
  266.  
  267.