Configuration Management applied to Uniface

Since Uniface was first publicly released, developers have loved and loathed the fact that their source code has been stored in the database. Now Uniface developers can have the best of both worlds, CM using standard tools, and the source code stored in a structured fashion.

Before we look at how to use Uniface with source code control, there are some ground level decisions that need to be made. We call it 'A methodology for Uniface source code control'.

Uniface without controls

When Uniface is used without an external source code manager, all your source code is stored in the one place, in a database of your choosing. Whether it is code that is 'in progress' or 'being fixed' or code that is not being modified at all.

You may set up several databases, and copy code between them, using TRX import/export, however each database contains ALL of your source code.

Uniface requires this since it stores your source code in database tables. For example: A single table may contain 2 'components', one a hidden form or service, and another a display form. The display form is being fixed, but the hidden form is 'reference code' that the developer should not change. However since they are in the same database table, if the developer has access rights to modify one record, he/she can modify any.

This is usually controlled by only exporting/importing the components that SHOULD HAVE changed. This however often leads to errors in the test or QA environments, or worse, when the other program is SUPPOSED to be changed, later on, miscellaneous uncontrolled changes leaking in from the earlier developers efforts.

Uniface with UD6/CMtool driver and a SCM/CM tool

The UD6/CMtool driver prevents these code control issues by storing EACH COMPONENT in its own file that may be controlled by a SCM/CM tool or operating system permission system.

However this now means that you have some choices to make, that you never had before. The most basic is, this:

Furthermore, the second question, 'where do I store my developer code' breaks down into:

Various combinations of these 3 techniques can be used, but it is important to understand how.

The source code that developers CANNOT change

UD6/CMtool driver stores your Uniface source code in plain ASCII text files (in XML format), in a directory tree as defined by your assignment file and the joins file (see the Guide to Installing UD6/CMtool driver for more information on these files).

Once your source code is loaded into this 'tree', and compiled, the first step of implementing change control is usually to make this 'read-only', either by setting operating system permissions, or loading it into a source code control repository or a combination of both.

Some SCM tools ONLY store your source code into a repository and provide no way of providing a read-only view. For these tools (like CVS and PVCS), a 'script' must be ran each time an object is checked in or checked out, to maintain a 'reference area'. March Hare provides details of how to set these scripts up in the relevant sections of this help file.

Other CM tools like ClearCase provide their own NFS-like file systems for providing read-only access.

The source code that one or more developers CAN change

Configuration control is more than simply making a file read only or read-write. A change should not be committed to the 'reference area' until it is complete. In that way, some users of the source code can see the 'work in progress' whilst other users can still see the 'authorised' version.

Therefore, when a developer wishes to modify code it is 'copied' to another place. This is called the INUSE area, sandbox, developers area, working directory etc. The UD6/CMtool driver differentiates these files from the main stream of code, by listing them in the INUSE file. The INUSE file is maintained by the auxiliary programs add2list.exe and del2list.exe.

March Hare provide details of how to automate the calling of these programs during check-in and check-out operations for most popular SCM/CM tools. Please see the relevant sections of this help file for specific instructions.

If you wish for several or all developers to be able to see code that is being modified:.

Protecting the source from tampering

Some people wish to go a step further, and prevent the developers having direct access through the operating system to source code that they should not able modify. The March Hare UD6/CMtool Driver supports this through the use of Polyserver.

In this situation, the files exist on server(s) and can be 'seen' by the machine running the polyserver. The INUSE file, JOINS file etc. all exist on the polyserver host. Different developers, or development teams, can have their own INUSE and JOINS files through the use of different logins (set in the client assignment file).

The developer cannot 'see' the source code except through the IDF. In the IDF the developer can only see and access the source code that the SCM/CM tool and the UD6/CMtool driver configuration files are set up to allow them.

Setting the UD6/CMtool Driver up in this way is straightforward for an administrator with suitable Polyserver training. If you do not have such a person available, March Hare can assist with trained consultants.

A word of advice

March Hare have found that if an organisation that develops with Uniface wants to use more of the features of source code control, like developer workgroups etc., that to achieve success they need to:

We have seen an especially high rate of failure when the developers are 'protected' from the underlying source code manager/configuration manager. The organisations that have built and sell tools like PVCS, eChange Man and ClearCase have invested considerable time and money into developing products that assist developers.

Hiding these from the developers seems to create a high level of failure.

Read more about Uniface Version Control

$Revision: 1.11 $ $Date: 2013/09/24 06:51:57 $[go to top]