RADE |
Source Code Manager |
OverviewPurpose and main functionalities of the CAA V5 Source Code Manager |
Technical Article |
AbstractSCM is a Software Configuration Management System designed for
supporting CAA V5 developments. Throughout workspaces' features SCM
provides a way for a company to organize and to control software
developments between development departments. |
The SCM system was first designed for CAA V5 developers, that is numbers of developers involved in the production of various software products. In such a situation the main goal was to maximize reusability: A solution can be brought by a good component-oriented design but when hundreds of developers need these components, you quickly need to control how they operate: this is the role of SCM and its workspace management.
|
From the CAA V5 point of view the benefits of
component-oriented design are the followings:
|
|
|
Using SCM, concurrent engineering and integration become
easier to bring into operation
SCM is just one part of CAA V5 RADE, there are other tools which contribute to the software production by helping the users to build, run, test, document their programs. Each of them can be seen - and used - as an independent tool but sharing a common concept: the components. While other tools are designed for operating on a given file tree without any exchange between different file trees, the SCM purpose is to help people work and share components in a cooperative development process. In the figure 2, one can see that
All these functionalities are provided by SCM which allows people to get a copy of components, to work on them and to deliver them. |
[Top]
Like the file tree is the foundation of most CAA V5 tools, the workspace is the main concept of SCM.
|
The workspace [1] is a database
object having a name and owning a set of components : in CAA V5
development world, components are named frameworks and have
internal components named code modules and data modules. The
code module is dedicated to source files while the data module contains
various files such as resources (message files, icons, etc).
Using SCM, the unit of copy is the framework: if one user wants to work on some specific files, he cannot access directly these files but rather gets a copy of the whole component these files belong to. This ensures that the user will have a complete environment to test his/her modifications. A set of components being available, any workspace is allowed to get a copy of any component. As shown in the figure 3, the number and names of components belonging to a workspace may vary from one workspace to another one. |
[Top]
|
Workspaces do not exist independently from each other.
If two workspaces share at least one component (i.e. having a copy of the same component) they must be managed in a common workspace tree. This ensures a good control of data exchanges. |
[Top]
A workspace is created by one user and any user may have several workspaces.
As explained before, the workspace object is managed in the SCM repository and this object owns a set of components. However, what is interesting for the developer is to have those components on his/her machine.
The copies of components (files and directories) is made concrete by the use of images. From the user point of view, one image is identified by a root directory under which all frameworks he/she is working on are projected from the SCM repository. Files and directories are created automatically by SCM regarding the frameworks belonging to the workspace. Like the other CAA V5 development tools, SCM manages a particular file tree:
Using SCM, the developer will use the same file tree as the one he might have learned using other CAA V5 development tools.
|
The figure 5 shows the SCM view and the users view of a
workspace tree:
|
[Top]
Like any configuration system, users' files are represented in SCM
repositories by object identifiers. However, all user commands take files and
directories as parameters, this eases learning and use of the system. In a same
way, any information displayed by commands are user oriented.
Object identifiers can be displayed or used by some administration commands
operating directly on database objects.
[Top]
This section is intended for people having a knowledge on the field of Software Configuration Management and it explains how SCM provides some configuration management capabilities.
[Top]
SCM manages versions of any objects in a workspace: frameworks, modules, directories and files. SCM provides commands for creating, modifying or removing frameworks, modules, directories or files and any action is recorded into the database.
|
Inside a workspace, any modification is local. It means that SCM creates isolated versions of objects and maintains in parallel different versions of the same objects when they are modified in different workspaces. | |
|
Versions of compound objects (components, directories) are also managed by SCM. While versions of files correspond mainly to file content modifications, versions of compound objects represent different compositions of these objects. |
In fact, even if version management exists in SCM, there is no user commands for accessing them. We consider that the developer does not need to manipulate versions of files but simply files. The usual view on a software is the file system view which is a flat view while a versioning system offers a deeper view. Sometimes it is interesting to access the history of an object but most often the last state is the best one.
Using SCM and its workspace management, users do not manipulate directly versions of files and directories but rather the "current" state of them: the best state. Of course, when a development is under way, files are not always good, that's why the workspace is an isolated place from which new versions of objects cannot be retrieved without its owner's needs. New versions are available only when the workspace delivers them (send them to a specific workspace) or publish them (make them available for others workspaces).
[Top]
Configuration management is the ability to group simple objects in compound
objects and to manage the composition evolution all along the object life.
In SCM, there are five kinds of compound objects (or configuration objects):
SCM provides commands for managing each kind of these objects and the
composition is maintained by the system.
For example:
[Top]
Check-in and Check-out are the basic actions offered by all Software Configuration Management systems:
These two operations are provided by SCM:
Concurrent modifications are also managed by SCM, the defaults are:
These defaults are set regarding the kind of file because two versions of a
text file can be merged to obtain a new version (integrating the two sets of
modifications) while a binary file cannot be merged (this requires particular
tools regarding the type of binary file: executable, resource file, document,
...).
However these defaults can be overridden at check-out time.
[Top]
SCM is provided as a set of user commands and a set of administrator
commands. Installing SCM consists in setting up SCM databases and daemons on SCM
servers and installing user commands on each user hosts.
A profile is given for setting up the user working environment.
SCM is available on Windows and Unix platforms and the commands and the way to use them are exactly the same on all platforms. The available commands are listed in the Command Reference page [2], classified by topics (workspace management, framework management, etc.).
SCM commands can be integrated in various applications by calling them and treating commands' outputs.
|
On Windows, the SCM system has been integrated into Developer Studio. Please, refer to the relevant documentation for learning about it. |
[Top]
SCM is a configuration system which manages CAA V5 components (frameworks, modules) inside workspaces. Workspaces are database objects organized in trees whose purpose is to control data exchanges between users. Users work on files on their personal file systems and interact with each others by commands involving the whole workspace.
[Top]
[1] | The Workspace Object |
[2] | User Command Reference |
[Top] |
Version: 1 [Mar 2000] | Document created |
[Top] |
Copyright © 2000, Dassault Systèmes. All rights reserved.