Genitor Corp.'s Genitor Workstation
As the year 2000 draws ever nearer, the software engineering industry is attracting an increasing number of people of varying programming proficiency, and there is an increasing need for code reuse and rapid application development (RAD). Despite this, the C++ language is not getting any less complex. These circumstances alone justify the need for a software development package like Genitor Workstation.
This set of applications, produced by Genitor Corp., Ann Arbor, Mich., is different from most CASE (Computer Aided Software Engineering) tools in many ways. It does not include a C/C++ compiler, nor does it come with its own class libraries. What it does consist of is a visual interface for C++ development and a code tracking database which work together to facilitate code sharing and easier construction of C++ classes and methods.
Genitor is designed to work with Scotts Valley, Calif.-based Borland International Inc.'s OWL (Object Windows Library), Microsoft's MFC (Microsoft Foundation Classes) and any C/C++ compilers. There is extensive support for Version Control Systems such as SourceSafe, PVCS and CA-Pan, for which Genitor provides an object check-in and check-out interface.
Workstation system is divided into four main components: the Class Editor, the
Class Workshop, the Auxiliary File Generator (AFG) and the Database Configuration
Utility. The Class Editor is where any actual editing, configuration or organizing
at the class level is performed. It supports most of the current Windows C++
attributes like explicit WINAPI call types, virtual functions, MFC CObject support
and OWL Response Tables. Within the Class Editor, the programmer can create
C++ classes, or C/C++ structures, unions or function groups. The Class Workshop
acts as the overall coordinator for development of multiple classes and imports
and exports classes from the database and working with class documentation.
In the Auxiliary File Generator, templates, help projects, module definition
files and user-definable external files can be developed. The Genitor Workstation
system is divided into four main components: the Class Editor, the Class Workshop,
the Auxiliary File Generator (AFG) and the Database Configuration Utility.
The question that most likely comes to everyone's mind will be: "Is it worth it to have to manage, support and use one more complex CASE tool on top of the compilers and development environments we already have?" The answer is yes, but it is heavily dependent on the way you have your software engineering team and environment set up.
Genitor's nature is such that it is functional enough to be insanely useful for development and code reuse, but is unobtrusive enough to not interfere with the Integrated Development Environments (IDEs) like Visual C++ the programmer uses to actually compile, debug, tweak and assemble code.
So what advantages does Genitor offer over the leading C++ IDEs in terms of code writing? For starters, it generates some of the most readable code of its kind, as well as header files and source files that are in perfect sync with each other. Genitor provides, via the Class Editor, a graphical interface that depicts the class, member functions, methods and all associated properties. As you expand the tree and get down to the actual node representing the function body, you are one click away from source editing, where you can write the details of each method. The advantage of this is threefold. First, by having a nice visual representation of your class or function group, you can keep track of the big picture rather than the oft-cumbersome syntactical details of function declaration or class definition. These are often the most intimidating aspects for the novice moving from C to C++ or the most annoying for the expert programmer who wants to get down to the meat of the class when they have a flash of inspiration. Secondly, in contrast to many RAD tools of today, it does not attempt to take over control of the source code because the actual body of any method still belongs to the text editor and, therefore, the programmer. And lastly, Genitor provides natural object-oriented programming discipline.
The other major asset of Genitor is its code database, which the corporation describes as "the heart of the Genitor System." This is where each class a user develops in Genitor is stored.
While the aforementioned qualities of Genitor are admirable, there are a few quirks. Most importantly, the installation could be a bit smoother and more helpful considering the strength of the product once it is setup. The software comes on floppy disks rather than on CD-ROM, which is odd considering that it takes up to six diskettes. On Windows 95/NT 4.0, the Genitor Workstation folder on the Start Menu does not automatically branch into a sub-menu like it should, thus forcing the user to launch the folder from the Start Menu and then double-click on the desired shortcut. Also, the installation must be followed by quitting and then running the "Workstation Setup" program, which is annoying in that the install wizard does not allow the user to simply move on to this mode immediately following initial setup.Genitor Workstation
Ann Arbor, Mich.
On a more abstract level, it is important to understand that while Genitor
is a wonderful addition to the programmer's environment, it is not a stand-alone
IDE or RAD tool. In addition to having no compiler of its own, it does not provide
any graphical development tools for application windows, event handling or client/server
interaction. Genitor is simply a database for developing, maintaining and deploying
reusable classes and/or class templates, and a simple user interface for quickly
creating and diving through the overlying syntax that governs C++ classes.
If code management and reuse across large workgroups and development teams are a priority, then Genitor will deliver an impressive enhancement to your repertoire of CASE tools. Even if these issues are not a central concern, Genitor's ability to automate much of the complicated syntax and coordination of C header and source files without getting in the way of the primary IDE or forcing the user through a grueling training phase should augment productivity considerably.