rol are becoming key requirements. Programmers are faced with questions such as "What components do we have available?," "Which versions are they?," "Where are they stored?," and "What methods do they expose?"
Shared Work
A good solution for taming both sorts of difficulties -- problems with team development and component management -- is a central repository that manages components, design data, and documentation. A central repository manages the availability of the code, code versions, and the specifications of the code. A typical problem, however, is that industry-stan
dard development tools, such as C++ and Visual Basic (VB), can't access the proprietary architectures of existing repositories.
Two approaches aim to solve this problem. Companies with a solid background in repository technology, such as the German firm Softlab (Munich), open up their repositories to share meta-data with other vendors' tools. Microsoft, on the other hand, is trying to establish an ActiveX-based meta-data standard, called the Open Information Model (more on this later).
Like so many other industry buzzwords, the term
repository
means different things to different vendors. In the mainframe world, the term refers to a large shared database of documentation with automatic version and access control. In the CASE-tool industry, it often refers to a shared collection of process and data models (see "Best CASE Scenario: Choosing OO Methods," August 1996 BYTE, International Edition).
The idea of a repository that can track and relate the life histories of every part of a pro
ject is a seductive one, but it presents several problems, notably that the different parts -- program code, documents, and modeling diagrams -- tend to come in many different proprietary formats. That can be solved by suitable filters and mapping layers.
But a more serious problem is that, to relate these diverse items together, the repository needs to store a great deal of information about their relationships, such as object version, programmer identity, and build number. So far, there has been no standard format capable of enabling different tools to share this kind of
meta-data
. However, transparent repository architectures may do wonders here.
An industry-standard repository architecture must cover a description of components; the specification and designs on which they are based; access, usage, and modification privileges; project affiliation; and composition and relationship to other components. Repositories usually also contain project as well as metrics information, such as how
many hours developers spend on a project. In the case of a large project, this information can span many different sites across the world and encompass hundreds of different firms working on separate parts of the project. The benefit of a repository is that all these people have a central place where they can find the components that they need, and the project manager can easily keep track of where and how components are used and what the status of the project is.
Use Familiar Tools
A modern software-development repository contains components in source code and in precompiled form, such as C++ libraries, ActiveX components, OpenDoc parts, Smalltalk objects, or Java classes. The big advantage of an industry-standard repository is that tools from various vendors can directly access the information it contains, allowing a project's participants to use the tools they're familiar with. In addition, project managers and technical editors can access this information from word processors, pro
ject-management tools, or drawing packages. This means that such a repository must have three different access routes: an interactive browser, for quick navigation through the contents; a SQL-based query interface, for more-intensive retrieval operations; and an open API, so third-party tools can be plugged in.
Most of the repository-based development systems on the market today are derived from CASE tools, which support code-generation and team-development facilities. Examples are Reich Technologies' (Brest, France) Intelligent Software Factory (ISF) and MID's (Nuremberg, Germany) Innovator.
ISF's Intelligent Artifact Repository (IAR) tool builds on the Gemstone object-oriented (OO) database engine. The tool consists of an analysis-and-design module, a project-management program that provides support for Gantt and PERT, and a versioning module that works in conjunction with various commercial development environments, such as IBM's VisualAge, Microsoft Visual C++, and Symantec's Café.
IAR holds two separate subrepositories. The design repository comprises analysis, documentation, project-management, and testing data. The code-reuse repository manages class libraries, code patterns, and binary components.
MID's Innovator workbench deploys a multiuser client/server repository that can operate on WANs. Innovator also integrates with many other vendors' tools and supports exportation of project information. Project managers can customize Innovator's repository using the TCL public-domain scripting language.
Although these team development environments successfully integrate with a wide range of development tools, their meta-data structure is not open to third parties. In an effort to make third-party-tool integration more efficient, Softlab has opened up the repository architecture of its Maestro II tool and now markets the technology in a repository management system called Enabler. It's designed to integrate the data structures of mainframes, LAN-based desktop systems under Win
dows 95 and NT, and Web-based applications composed of HTML code, ActiveX controls, and Java applets.
Enabler is based on Softlab's Object Management System (OMS) technology, which is a general-purpose OO storage engine. In an OMS data store, you build models that describe objects and their attributes, relationships between objects, and the attributes of these relationships. Everything in the repository is tied together. The real-world objects that such a model describes can be anything at all: people, machines, documents, or program components.
OMS uses a pure OO approach, where all objects are instances of classes, but it incorporates the concept of versioning at the heart of its object schema. The object classes that you define as versionable store a graph of all the successive versions of their instances; whenever you create a new version of a versionable object, its predecessor becomes automatically protected against further modification so that only leaf nodes in the version graph are editab
le.
OMS handles
configurations
, defined as groupings of versions of a set of ob-jects, that can have only one version of any given object as a member and that cannot contain nonversionable objects. OMS automatically maintains a Working Configuration containing the latest versions of all objects, and it lets you distribute and maintain many versions of a configuration. It also supports workspaces to control the visibility of contexts.
A Terabyte of Data
An Enabler repository can contain up to a terabyte of data and is open to other vendors to integrate their development tools via a number of routes. All Enabler functions are accessible to tool writers through the Softlab Foundation Classes C++ class library. All its functions are also made available through an OLE Automation interface, including remote accesses via the Distributed Common Object Model (DCOM). Important repository services are also exposed as a series of ActiveX controls.
Enabler can object-wrap ordi
nary files so that they appear as a standard file system within the repository. Users can access and navigate this file system with file-oriented tools, such as Windows Explorer, without any conversion. Users can also customize access to the data in an Enabler repository using VB as a script language. A subset of VB, called
BasicScripting
, is also available on the server side. Finally, users can query the Enabler repository and read (but not write) its data using SQL, opening it up to ODBC-capable nonrepository development tools.
Softlab is positioning its repository technology as an integration framework aimed at business-system development, spanning mainframe, desktop, and Web applications. John Kopcke, chief technology officer of Softlab, says, "In the future, legacy-system environments, office workgroup environments, and Web development can be managed by using a common Enabler-based platform."
The Professional and Enterprise editions of Microsoft's VB 5.0 will, for the first time, shi
p with a repository. Microsoft Repository 1.0 is based on the aforementioned Open Information Model, which defines an exchange format, a standardized component description, and a common API for accessing components as well as descriptions. The SQL Server database engine provides the common storage facility for the components and descriptions. This open architecture allows other software-development tools and office applications to share components from the repository and use them correctly.
Says David Vaskavitch, Microsoft's vice president of database technology, "The adoption of an open, industry-standard repository will enable more collaborative and productive applications development. Developers will now be able to share models, components, and data, regardless of the tools with which they were built."
ActiveX Interfaces
The Open Information Model is a set of ActiveX-based interfaces that objects need to expose in order to plug into the repository -- a component becomes a rep
ository object
by exposing
the appropriate set of Microsoft Repository interfaces, allowing it to read and write properties and relationships to other objects. For example, developers might design component catalog browsers to have an ActiveX interface called iCatalog, which causes the catalog to include any component that exposes an ActiveX interface, such as iCatalogable Item.
Of course, this restricts the contents of the repository to ActiveX-enabled objects; however, presumably Java components will be able to squeeze in by using the JavaBeans APIs. The important point here is that the interaction between repository components depends only on interfaces, not on classes, which frees them from dependencies on any particular programming language.
Softlab's Enabler and Microsoft's Repository are competing technologies in that they use different underlying data models. Enabler uses Softlab's own Common Data Model (CDM), whereas Mi-crosoft uses ActiveX. Enabler, however, also pr
ovides OLE Automation and ActiveX interfaces.
Microsoft has been developing its repository technology over the past two years in conjunction with several industry partners. The most notable ones are Texas Instruments (Ashford, U.K.) and CASE-tool vendors Rational Software (Brighton, U.K.) and Select Software Tools (Cheltenham, U.K.).
Select Software Tools
Select Software Tools announced its new
Component Manager
(CM) system late last year. The system administrates the collaborative reuse of software components over the Web or corporate intranets, and it works with either Softlab's Enabler or Microsoft's Repository as the underlying repository technology. It enables components that are held in a repository to be stored, browsed, searched, and registered for reuse, either locally or at a remote Web site.
CM lets you segment a repository of components into user-, project-, and corporate-level sections, which can reside on the same machine or at remote lo
cations connected by the Web. It manages the distribution of components through the concept of
catalogs
: A supplier publishes available components in catalogs, and developers then browse these catalogs and retrieve components. Developers can register an interest in a particular catalog, and CM automatically sends notification of additions and upgrades via a MAPI-enabled messaging system.
Component management systems like Select Software Tools' CM will play an important role in globally dispersed software development projects because they integrate with open-repository architectures and make collaborative development projects over the Internet much easier. Will there be one standard repository architecture in the near future? Probably not. Most vendors of software tools for the Windows platform will rush to incorporate Open Information Model interfaces. But in a multiplatform environment, Softlab's open-repository initiative has a good chance of becoming the technology of choice.
Where to Find
Microsoft, Ltd.
Winnersh, Berkshire, U.K.
Phone: +44 1734 270001
Fax: +44 1734 270002
Internet:
http://www.microsoft.com