|Lemon Home Page |

部品の分散管理 (Distributed Component Repository)


部品の分散管理を行なう理由

背景と目的 でも述べたように, 我々の最終的な目的は 分散環境でのオブジェクト指向ソフトウェアの協同開発 をそのライフサイクル全般を通して支援することである. 例えば, 数人の開発者が協同して一つのソフトウェアシステムを 開発しているような場合を考える. このような場合に ライブラリや部品を協同利用した時に生じる問題としては 以下のようなものが上げられる.

  1. 多種多様な部品とその間の関係を 統合的かつ分散透明に管理する

  2. アクセス制御,バージョン管理, 意見調整支援,理解支援など協同作業特有のもの

As for the latter, there have already been many research results and commercial products regarding access control and version management: for example, [SCCS] and [RCS] are version management systems for source codes. However, most of them are based on centralized management mechanisms, and do not suit wide-area cooperative development well. Negotiation support has been studied in the field of Groupware (or CSCW) [GW], and results have begun to be applied to cooperative software development [Vessey, Kraul].

On the other hand, as for software component management, there are some researches on source code databases \cite{IBMSE}. However, software components include not only source codes but also various kinds such as specification documents, machine codes, test data, notes, comments etc. Design patterns \cite{Coad92,Pattern} and frameworks are considered as abstract components. In addition, there are various kind of relationships between components such as abstract-concrete, inheritance, aggregate and reference. All these must be managed in an integrated fashion.

As network is spreading, cooperative development environments have become widely distributed, and conventional centralized approaches to component management apparently have deficiencies in such environments. Therefore, transparent management is crucial not to let users be concerned about real (physical or geological) locations of components.

In this consequence, this paper focuses on integrated and transparent management of components and their relationships. We present the design and implementation of a distributed component management system. This system is the first step towards our ultimate aim mentioned above, and will be one of the most important basis for cooperative development support.

First, we consider integratedness of management. Various forms and relationships of components are unformatted, therefore it is difficult to manage them formally using databases. A hypertext is the most effective alternative to manage such unformatted information.


Hypertext

A hypertext \cite{Hypertext} stores information in the form of network consisting of nodes connected by links. A node is an unformatted container of an information unit, which may be anything that can be stored in computers, for example, texts or image data. A link represents an arbitrary relation between nodes. Searching a node is done by tracing links successively in hypertext network. Using a hypertext, software components can be managed integratedly, by nodes representing components and links representing their relations.

In the standard reference model of hypertext called Dexter \cite{Dexter}, a hypertext consists of three layers: the storage layer, the run-time layer and the within-component layer. The storage layer prescribes basic structures of the hypertext, i.e. atomic components, composite components and behaviors of links. The run-time layer prescribes interface from applications to the storage layer. This paper focuses on the within-component layer, i.e. how components should be stored in nodes and how their relations should be formed as distributed transparent links. Transparent implementations of distributed hypertexts has been already realized; World Wide Web (WWW) is one of typical examples.

Storage Model


Distributed Hypertext

Component Linkage

Distributed Repository

Hypertext structure of class-related information

Location Management

Some mechanisms of World Wide Web (WWW) in part are utilized to implement a distributed hypertext. Node locations on a distributed environment are identified using Universal Resource Locator (URL) of WWW. However, WWW enables us only to trace links but not to manage node locations. Therefore, we put a table which manages the names and the locations of nodes using a simple database in order to locate nodes efficiently. Every site, i.e. every workstation in the network, has a table and its management routine which acts as a server for other parts of the system. There is no centralized server nor database in the system, but all the site servers collaborate in a decentralized manner to achieve overall management of nodes and queries in the distributed hypertext.

Overview of the system

An overview of the systems is shown in Figure One of c-s, where ``httpd'' is the WWW server, ``cmpd'' is the table management server to manage the Class-URL table, and ``add\_class'', ``list\_class'', ``query\_class'' are client routines respectively. Add\_class is the input transformation part, which analyzes a given C++ program and extracts type/class information, and creates corresponding node files and links in the form of Hyper-Text Markup Language (HTML; the WWW node format) automatically. List\_class and query\_class together are the output transformation part, which deal with reference requests and inspection requests. The following protocols are delivered between the server and the clients,


Related Works

Related works that tried to apply hypertexts to component management for software development support include the following examples:

Dynamic Design

Dynamic Design developed at Tektronix \cite{Tek} is a CASE environment for C programs. In its hypertext, nodes represent requirements, specifications, design notes, design assumptions, comments, sources, objects (machine codes), symbol tables, documents and reports, and links represent relations of ``leads to'', ``comments'', ``refers to'', ``calls procedure'', ``follows from'', ``implements'' and ``is defined by''.

Dynamic Design is built on a virtual machine for hypertexts called Hypetext Abstract Machine (HAM) \cite{HAM}. HAM manages and handles graphs, contexts, nodes, links and attributes as elements of a hypertext. A graph represents network structure consisting of nodes and links, and it is used for visualization of the network structure. A context represents the order of nodes, and it is used for version management. An attribute is an annotation for other elements. Among those, graphs and contexts are the most interesting concepts. However, HAM has a centralized management mechanism, and therefore does not suit distributed transparent management in wide-area network.

Chimera

Chimera \cite{Chimera} is a part of the Arcadia system which is an integrated distributed development support environment for Ada programs. It provides interface to development tools using a hypertext as an abstract data type, and it acts as a middleware system to deal with contents of distributed component databases. Unlike our research, Chimera focuses more on hypertext modeling in heterogeneous distributed environments and implementation of application programming interface (API), rather than how to manage software components and their relations in an integrated and transparent fashion in distributed environments.


Conclusion


Mika Ohtsuki <mika@db.is.kyushu-u.ac.jp>
Last modified: Fri Dec 26 14:26:01 JST 1997