# CADES

CADES (Computer Aided Design and Evaluation System) was a software engineering system produced to support the design and development of the VME/B Operating System for the ICL New Range - subsequently 2900 - computers.
From its earliest days, VME/B was developed with the aid of CADES, which was built for the purpose using an underlying IDMS database (latterly upgraded to IDMS(X)). CADES was not merely a version control system for code modules: it was intended to manage all aspects of the software lifecycle from requirements capture through to field maintenance.
It was the design of CADES that paved the way for the Alvey Project in IPSE (Integrated Project Support Environments) and Process Control Engines. Because CADES was used for more than 20 years throughout the development of a large software engineering project, the data collected has been used as input to a number of studies of software evolution.

## Early history

CADES was conceived in 1970 by David Pearson and Brian Warboys when working for ICL's New Range Operating System Technology Centre, OSTECH, in Kidsgrove. Pearson, a theoretical physicist by training, had become a computer simulation specialist and joined ICL in 1968 after working in finite-element modelling at Cambridge and simulation research at Imperial College. Warboys had been chief architect for the ICL System 4 multi-access operating system, Multijob.
ICL's commitment to large scale software development for the 2900 Series of computers provided the basis for the Pearson and Warboys early work on a new software development environment which would address the issues of designer/programmer productivity, design integrity, evaluation and testing, version control and systems regression.
In designing the initial architecture of the CADES environment, Pearson in particular looked to parallels with the leading hardware computer-aided design systems of the time, even attempting the use of graphics in the design process. The CADES design approach, called Structural Modelling, was rigidly data-driven and hierarchical, and expressed in a formal design language, SDL. Design specifications written in SDL were processed by the Design Analyser, before being input to the CADES Product Database, a design and implementation database supporting its own query language and forming the kernel of the Product Information System.
The intention was that these designs could be evaluated/simulated using the Animator, and S3 implementation code automatically generated from them using the Environment Processor. Build generation and version control was also based on the Product Database, resulting in a highly disciplined approach to new system builds. System Regression was therefore controlled from a very early stage in the software life-cycle.

## Fundamentals

In order to control the development of VME/B, each development was sub-divided for easier management. The structure was hierarchic, with each significant components of VME (kernel, file store, etc.)divided into sub-systems. Development activity on each sub-system created a sequence of versions.
These divisions and sub-divisions of VME/B were reflected in the hierarchical structure of the CADES database. This enabled the reuse of code within VME/B (one of the goals of software engineering). This, coupled with a suite of tools, and the use of SDL (Software Design Language) as the development language, version history and the concept of trusted source code (that is code that has passed QA and subsequently resides within CADES filestore) improved development time whilst providing satisfactory audit trails and QA processes.
CADES adopted the term "holon" to refer to modules of code (such as procedures and macros). The word came from the Greek holo meaning whole, and was lifted from Arthur Koestler's book The Ghost in the Machine. Pearson always claimed that he formulated the architecture of CADES while studying Koestler's book on a beach in Tunisia. Arranged in a hierarchy, holons provide a 'family tree' (for each sub-system), utilising parent/child relationships. Holons also maintained attributes of interaction, enabling one Holon to interact with other Holons, thus enabling more modular development and facilitating reuse. In a similar fashion CADES also retained information with regard to constant values (aka literals), user-defined types and user-defined structures.

## Development using CADES

Development under CADES was achieved using a suite of tools known as MODPRO (Module Processing) which acted as an interface (or broker) between developer and CADES. These tools enabled the developer to focus more on development that administrative, QA or SCM tasks. It was not necessary to know how to manipulate data within CADES, the application generated the required DNL (Data Navigation Language) to achieve the required results.
Development using MODPRO did not require specific knowledge of either S3 nor SCL (target language for subsequent compilation), but SDL, the Software Design Language: an abstraction above the former two. Which when coupled with the enhance-editor EDSDL (Edit SDL) interacted with CADES to manage development, or re-work. Then, again with information from CADES, when used with MODPRO tool EPETC (aka Environmental Processor or EP etc.) enabled the resultant file to be correctly targeted for S3 or SCL compilation. Subsequent tools within the suite facilitated various steps within development, such as:
* Detailed Holon information using CHED (CADES Holon Environment Details),
* Interaction with CADES using DIL (Database Interface Language, used to produce DNL),
* Report production, using CRP (CADES Report Producer),
* Transfer valid files/code in to or extract out of the secure repository, namely CADES, using XFER.
The following illustrates the typical MODPRO development route.