I first focused my attention on the reverse-engineering algorithms, since that was the kernel of the system. By the way, back then the term reverse-engineering was practically unknown. There were no books on "How to reverse a Relational Database". Only Peter Chen's software, ER-Modeler, and IBM's Bachman offered something similar. So I had to figure out how to recognize the relationships from the physical structure of the database. Maria Elisa, data administrator for Metal Leve, a huge Brazilian Company which I consulted at the time, handed me dozens of graphical data models, which I studied over and over.
I used Nuntucket's Clipper (today CA Clipper), which I mastered, to develop the first version of the reverse-engineering algorithms. Initially I thought it was possible to find the relationships in a single-pass algorithm, but after countless frustrations and sleepless nights, I gave up and headed for a two-pass alrogithm. I had to rewrite the algorithms seven times until I found a satisfactory version. The first tests were made at ALCAN (Canadian Aluminum Company) with DBase structures.
Initially, the reverse-engineering algorithms produced as output a report of relationships (from-table, to-table, attributes). I then matched manually that report with the graphical model, relationship by relationship, trying to find out errors in the algorithm, or errors in the model.
After making sure the engine worked properly, I focused on how to present that information. Obviously, that report, although the information presented was valuable, was not commercially appropriate. Who would pay for a report like that? A couple of months before starting the Data Workstation project I had finished an experimental software, call DOC-DB, that read the source code of a Clipper program and produced an printed Yourdon-like module diagram. Although it was not a graphical software, some of the ideas were useful to develop the first version of the model design algorithm. But I based the design module on an algorithm I developed while at the University to guide a rocket through a field of moving obstacles. Obviously, to design a static model was a much simpler task.
After a some nights and weekends, the reverse-engineering engine and the graphical output were connected and tested, in MS-DOS Clipper environment. Just to test this version thoughtfully, I developed an interface to download database scripts from the Datacom catalog and transform them in DBase tables, which in turn I processed. To validate the software was a real pain. Just imagine checking table by table, relationship by relationship, on a -say- 80 models table. Find the first table in both designs, find the second table in both designs, check the relationships, and so on. After a couple of days I grew so fed up that I implemented a Manual Positioning Matrix. Before the design, if you choose Manual Design, a Design Matrix was presented in the screen. Each cell contained the name of a table. Moving that name from one cell to another (free) cell, would move the table in the design. That really helped to test the software, since I could position the tables in the same position of the graphical model that was handed to me by the user.
So the first real product out of the Data Workstation project was born: Data Model Designer, and it was meant to design automatically the graphical data model out of the physical database. Just that (but THAT, back in 1990, was a huge accomplishment).