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 / detex / griss.detex < prev    next >
Text File  |  1992-04-29  |  14KB  |  258 lines

  1.  
  2.   Bus-Based Kits for Reusable Software 
  3.          
  4.   Martin L. Griss 
  5.   
  6.   Hewlett-Packard Laboratories 
  7.   1501 Page Mill Road 
  8.   Palo Alto, CA  94301 
  9.   415-857-8715,  griss@hplabs.hp.com 
  10.  
  11.   
  12.                     Abstract
  13.  
  14.   Hewlett-Packard's interest in a reuse-based software construction
  15.   process involves both a corporate reuse program and research into
  16.   methods and technology.  We describe research in domain-specific,
  17.   architecture-driven, reuse-based software construction technology,
  18.   specifically the notion of domain-specific kits.  This work is explored
  19.   in the context of distributed information management environments.
  20.  
  21.   Keywords: software reuse, software bus, software construction kits,
  22.             corporate reuse program, domain-specific reuse, 
  23.         distributed applications
  24.  
  25.  
  26.  
  27. 1  Introduction 
  28.  
  29. Hewlett-Packard's great interest in significantly improving its
  30. software process has led to several software initiatives, including a
  31. Corporate Reuse Program to make software reuse a systematic part of
  32. HP's software process for the 1990s [7].  This program is a
  33. broad, coordinated effort involving management, process, technology,
  34. education and research, for HP divisions developing domain-specific 
  35. (or application specific) common architectures, frameworks and
  36. reusable components for families of related products, such as embedded
  37. software for instruments, printers, chemical and medical systems. 
  38.  
  39. HP Labs and Corporate Engineering are developing a domain-specific
  40. reuse process for develop for reuse, develop with reuse, and workproduct 
  41. management [4].  In this context, domain refers to set (or subset) of systems 
  42. that share a significant number of common user requirements, and admit of 
  43. common implementation(s).  Different domains might be best implemented using
  44. different technologies, different tools, different architectures, and
  45. (hence) different development processes.  For example, the use of a 4GL
  46. for the domain of certain financial problems might naturally lead to
  47. much more of a ``prototyping'' mode of developing.  These guidelines
  48. and methods involve domain analysis, the definition of an architectural
  49. framework and components, and the construction, management and
  50. integration of these components.  Corporate Engineering focuses on
  51. process, education and best practices, while HP Labs concentrates on
  52. research in processes, tools and environments.
  53.  
  54. This paper summarizes HP Labs research in component-oriented
  55. construction of novel, distributed applications, using kits,
  56. software-bus frameworks, and hypertext.  Related work includes
  57. user-programmable UI components, OO methods and domain analysis.
  58.  
  59.  
  60.  
  61. 2  New ways of building systems: Reuse based kits 
  62.  
  63. Application development has become more complex, involving novel,
  64. distributed systems, multi-media, and support for collaboration,
  65. information sharing and manipulation. Use of complex, standard,
  66. object-oriented environments and interfaces, the desire for more
  67. end-user programmability and customizability, and the pressure to
  68. radically decrease time to market, require new approaches. Several
  69. technologies and methods must be used in concert to produce
  70. domain-specific application construction and execution environments,
  71. such as reuse, frameworks, generic applications, (reuse-based)
  72. prototyping, generators, user-programming languages, mega-programming, etc.
  73.  
  74. Application developers need kits of extensible components that can be
  75. combined into ``domain-specific, `yet still somewhat generic'
  76. applications'', i.e., almost complete, customizable applications (or
  77. application skeletons) that need to be further tailored, or completed,
  78. by the end-user or local programmer.  A kit will comprise several
  79. compatible sub-systems: a reuse library, a glue/extension language, a
  80. set of rules and constraints, a component integration framework, and
  81. supporting development/customization environment.  Often a (partially
  82. domain specific) generic kit is extended with additional domain
  83. specific components and constraints, and released as a tailorable,
  84. domain specific kit.  Examples are domain-specific stacks for (generic)
  85. HyperCard, which are still extensible via HyperTalk.  Similar are the
  86. domain-specific AutoCAD drafting packages (e.g.  landscaping), written
  87. in AutoLisp.
  88.  
  89. We are developing our first kit, using an object-oriented software bus 
  90. architecture [2, 10, 9, 11] to produce distributed applications that are easy 
  91. to customize, extend, and combine to produce application-oriented environments. Later, we will explore to what degree several kits can be themselves built from common kit-building technology.
  92.  
  93.  
  94.  
  95. 3  Message based component integration 
  96.  
  97. HP's CASE integration platform (SoftBench) [3] loosely couples independent 
  98. software tools into powerful, customizable programming environments.  
  99. Underlying control-integration technology for this `mega-programming' [12] 
  100. architecture is a Broadcast Message Server (BMS), and support to monitor or 
  101. debug messages, and to encapsulate existing tools.  Each tool (an independent
  102. `mega'-component), registers its services and interests as message string
  103. patterns.  Running tools broadcast their state or needs, or react to such 
  104. messages, by starting other tools, logging results, or checking consistency.  
  105. HP also uses BMS for other distributed applications.
  106.  
  107. Extending the BMS idea, we have developed a software bus framework (Bart) [2] 
  108. for control and data integration, which provides a communication substrate 
  109. that ALL components must use for data exchange and control coordination.  
  110. A Bus Manager is invoked to establish communication paths between components, 
  111. so that (subject to security) they can be monitored.  Bart has three layers of 
  112. service: multi-cast transport (synchronous and asynchronous) of typed messages, a database-like view mechanism for components to publish and subscribe to 
  113. various information subsets and connections, and software glue that describes 
  114. connections and message data-models.  Components use ports (data and control) 
  115. to permit a class of objects and its methods to be distributed across a set 
  116. of components.  Each component is event based, with a top loop waiting or 
  117. polling for several input sources.  Bart routes events via the control ports.
  118. These mechanisms make it easier to write components independently, and then 
  119. combine them and their (incompatible) data-models with appropriately 
  120. customized behavior.
  121.  
  122.  
  123.  
  124. 4  Novel, distributed system prototypes 
  125.  
  126. We have independently constructed several systems, with related but partially 
  127. incompatible technology. Each system is evolving in similar directions. We 
  128. would like to decrease redundant work and increase synergy.
  129.  
  130. Kiosk [5, 6] is a workstation-based single-user general-purpose hypertext 
  131. framework built on Unix, C++ and InterViews [8].  Kiosk manipulates Unix 
  132. file-based information, and interfaces well to other Unix tools and 
  133. shell-scripts.  It is a flexible base for experimenting with hypertext-based 
  134. Reuse tools and textual information management.  Kiosk manages software
  135. workproducts, reusable libraries (e.g.  InterViews) and other textual 
  136. information (catalog entries, manual pages, header files, mail messages, etc.).
  137.  
  138. Kiosk has 3 major parts: a semantic layer implementing a hypertext-engine, with persistent, typed nodes and links, mapped to Unix files; a graphical and 
  139. textual browser/editor built upon a general presentation layer; and, a 
  140. schema-driven hypertext builder, which uses a structural description, a 
  141. specification of input files and types, and rules (parsers and 
  142. pattern-matchers) to identify and link `interesting places' between files.  
  143. The layers communicate via a  notification manager which registers dependencies between semantic objects and (several) presentation objects to ensure the
  144. consistency of multiple views of the same objects.
  145.  
  146. We have built a small-team email-based Group Memory using Kiosk.
  147. Arriving email from team members, or external sources, is incrementally
  148. linked into a hypertext.  It is mechanically processed for interesting
  149. places to link to, and for people to inform.  It is put on a `new'
  150. list, and an announcement sent to each person, to be displayed in an
  151. action panel on his workstation.  The email can then be read, marked as
  152. seen, further linked into the global or private hypertext, etc.
  153. Multi-user aspects in the first prototype were handled via several
  154. scripts and processes attached to the notification manager in each
  155. Kiosk.  While showing the correct behavior, this has proven clumsy and
  156. unreliable.  We are restructuring Kiosk to use Bart so that multiple
  157. interacting/coordinated browser/editors can share one hypertext-engine
  158. (semantic layer).  Our initial steps have been to connect Bart to the
  159. Kiosk notification manager, by introducting a liaison presenter,
  160. which appears as a presenter to the notification manager, but can
  161. accept socket based connections from the software-bus.  We have
  162. interfaced both InterViews and Motif to Bart, and had to deal with
  163. differences in UI drivers and issues of `who is in charge', `where do
  164. events come from', and event loop conflicts.
  165.  
  166. The Physician's Workstation (PWS) is a multi-component environment to
  167. help several physicians and supporting functions deal with their daily
  168. activities.  Independent components implemented in C for each activity
  169. (appointment calendar, patient record, prescription writer/drug
  170. interaction analyzer, lab record alert) interact via BMS and Unix
  171. sockets.  Key components are a knowledge-base (KB), editor and global
  172. patient record database.  Rules and facts describing patients, drugs
  173. and symptoms are recorded and modified here; messages from components
  174. are monitored by the KB, and inferences provide constraints and
  175. guidance to the physician.  Issues involve the customizability of the
  176. systems to fit local preference, system configuration, security, etc.
  177. We have implemented a Bart model of the PWS.  Originally, we tried
  178. simple re-engineering, replacing BMS calls with Bart calls.  Instead,
  179. it was easier to first produce a    template  (an inner, component
  180. architecture) to correctly set up the appropriate components and ports,
  181. and then quickly embelish to emulate the behavior and communication
  182. patterns of the PWS.  Within this PWS-model skeleton, we can now add
  183. more complete PWS functionality to each component.
  184.  
  185. The Matisse [1] team programming environment is a distributed, object-
  186. oriented, rule-based system for small teams of software developers.  It 
  187. manages fine-grain software representations as a software-hypertext and 
  188. provides support for software process modeling and enactment.  Matisse 
  189. consists of several processes written in C.  A central global database server 
  190. encapsulates a relational database to present a multi-user low-level persistent object server.  Developer workstations have several tool processes (editor, 
  191. browser, etc.) connected to a local, active (AI) database.  Rules 
  192. (in SE-KRL, a software-engineering knowledge representation language) manage 
  193. a local cache of objects, handling loading, flushing and locking of the cache
  194. and coordination between users and server, keeping multiple views
  195. consistent, etc.  The local data-base also implements higher-level
  196. structured data-types, and performs rule-based computations, using a
  197. LISP-based forward chaining inference engine.
  198.  
  199.  
  200.  
  201. 5  User progammable  User Interface  components 
  202.  
  203. Driven by the goal of user-programmability, a companion project (ACEkit) 
  204. [13, 14] has built a variety of higher-level, user-extensible UI `widgets' in 
  205. InterViews.  Each of these widgets has associated with it a data-structure 
  206. (a descriptor) that can be interrogated at execution time to determine 
  207. parameters, modify presentation options, etc.  Several basic InterViews objects are also wrapped with a descriptor (via multiple-inheritance).  These
  208. descriptors are then used with interactive tools and interpreted glue
  209. language to permit simple applications to be extended and customized by
  210. the end-user using a combination of visual and procedural mechanisms.
  211. Widgets built so far are a general purpose table object (like an extended 
  212. spreadsheet entity), a graph object (DAG and tree), and several editors.
  213.  
  214.  
  215.  
  216. 6   Next steps 
  217.  
  218. Each of the above systems has related technology, and similar needs for
  219. distribution, display, coordination, information sharing, locking,
  220. hypermedia, etc.  We will extract useful technology and re-engineer it
  221. into bus-compatible components, to produce a common distributed,
  222. object-oriented hypertext platform.  We also contemplate including ACE
  223. widgets and extension technology into a UIMS component for the
  224. environment.  We will then reconstruct and extend several of these
  225. applications, and test our ideas on extensiblity and application
  226. compatibility by implementing additional components.  We will complete
  227. the replatforming of Kiosk and Matisse on Bart.  We are repackaging our
  228. software components for a set of useful components in the software
  229. construction/engineering domain.  We will also work with pilot(s) to
  230. investigate applicability to other domains. 
  231.  
  232.  
  233.  
  234. 7  Acknowledgements 
  235.  
  236. This work would not have been possible without the energy, insight,
  237. support and comments of members of the HP Labs Software Construction
  238. and Evolution projects, particularly Brian Beach, Mike Creech, Dennis
  239. Freeze, Jon Gustafson, Joe Mohan and Kevin Wentzel, and our summer
  240. students, Mark Gisi and Mark McAuliffe.
  241.  
  242.  
  243. 8  Biography 
  244.  
  245. Martin L.  Griss  is Principal Laboratory Scientist for Software Engineering 
  246. at Hewlett-Packard Laboratories, Palo Alto.  He leads research on software 
  247. reuse, software-bus frameworks, and hypertext-based reuse tools.  He works 
  248. closely with HP Corporate Engineering to systematically introduce software 
  249. reuse into HP's software development processes.  He was previously Director 
  250. of HP's Software Technology Laboratory, researching expert systems, 
  251. object-oriented databases, programming technology, human-computer interaction, 
  252. and distributed computing.  He serves on HP software engineering councils and 
  253. is a consultant to HP management on software engineering.  Before that, he was 
  254. an Associate Professor of Computer Science at the University of Utah, working 
  255. on computer algebra and portable LISP systems (PSL).  He has published numerous papers, and was an ACM national lecturer.  He received a Ph.D. in Physics from 
  256. the University of Illinois in 1971.
  257.  
  258.