What is the Optimal Development Environment Using Designer/2000 and Developer/2000?
Dr. Paul Dorsey, Dulcian, Inc.
Overview
What is the Optimal Development Environment? The number of options that a developer has to build within the Oracle environment is very large. In addition to Oracle products, there are developers building applications with PowerBuilder, Visual Basic, C++, and JAVA. Each product and development environment has its fanatical devotees, each claiming that they have found the ideal development environment. In our shop, we have elected to use Designer/2000 and Developer/2000 together. One would think that once we have made the decision about which products to use, the optimal environment would be easy to define. This is not the case. Anyone who monitors any of the numerous Oracle lists or forums is well aware of the ongoing debate concerning 100% Designer/2000 generation. The purpose of this paper is not to try to provide the "right" answer to the question, but to walk through the thought process we used in determining how to use Designer/2000 and Developer/2000 together.
Striving for 100% Generation is Not Advisable
To produce high quality, state-of-the-art applications that meet the needs of an organization, building them entirely within Designer/2000 is not the best method. Like any single tool, Designer/2000 accomplishes some system development tasks particularly well, and others not so well. Trying to build a robust, complex module entirely in Designer/2000 is an arduous task that can consume great quantities of resources. Some modules that are worth building can’t be generated by Designer/2000 at all. Shops that insist upon all development work being done within Designer/2000 with 100% generation of all modules produce modules that are less sophisticated and functional with higher development costs than shops not restricted by the capabilities of the Designer/2000 generators.
This is not to say that the Designer/2000 generators are not useful. Some modules can be 100% generated. However, a fanatical devotion to the idea of 100% generation of all modules in a complex application is a bad decision.
Exclusive Use of Developer/2000 is Also a Bad Idea
State-of-the-art module development using Developer/2000 involves the use of sophisticated Forms templates. (For a full description of Forms templates, see "VRAD with Developer/2000: The Next Generation" by Dr. Paul Dorsey and Peter Koletzke in these proceedings). Using high-quality, sophisticated templates, it is possible to build applications just as quickly as they can be specified and generated in Designer/2000. In order to achieve that speed of development, you must use a sophisticated template. However, developers who insist that Designer/2000 specification and generation can be accomplished five times as fast as the same form can be built in Developer/2000, are uninformed with respect to the capabilities of Developer/2000 using the VRAD techniques discussed in the paper mentioned above. In addition, developers have greater control of the visual layout of a form built by hand. In the hands of a skilled GUI developer, forms can be more aesthetically pleasing and efficiently laid out when built by hand.
However, it is just as irrational to attempt a development project using Developer/2000 exclusively as it is to use Designer/2000 exclusively. The reason for this is that the cost of the project consists of more than just the initial development costs. In the absence of using Designer/2000 throughout the project life cycle, the development team must enforce their own development method. I am not going to assert that, simply by using Designer/2000, good development methodology is enforced. However, for a team that is methodologically weak, Designer/2000 will, at least, enforce a modicum of sound developmental strategy. This alone gives significant value to the use of the Designer/2000 product. In cases where the team brings a solid development methodology to the project, Designer/2000 does integrate very well with a traditional SDLC approach as described at length in The Designer/2000 Handbook by Dr. Paul Dorsey & Peter Koletzke. Designer/2000 also nicely integrates with RAD projects as described in the paper "Prototyping with Designer/2000 – Using CADM to Support RAD" by Dr. Paul Dorsey included in these proceedings.
The real value of using the Designer/2000 generators becomes apparent as changes to the data model occur. These changes will inevitably occur throughout the development process as well as the life of the project. As such changes are made to the data model, modification of the associated modules can be achieved much more quickly if they have been generated using Designer/2000.
Performing all module development with Developer/2000 will probably have the same development costs for the building of Version 1. However, even during the project development itself, a Developer/2000-centric approach will have a much higher cost because of the continual rewriting of modules. Long term maintenance of these modules will also come at a higher cost.
Using both Designer/2000 and Developer/2000
The best development method is to use Designer/2000 and Developer/2000 together. Use Designer/2000 for generating simple and moderately complex applications. Use Developer/2000 for building key complex applications. Every project will have some number of simple and some number of complex modules. The key to successful overall development is to use the appropriate tool for the appropriate task.
Generation Options
We advocate different approaches for different types of modules. Some modules will be 100% Designer/2000 generated. Others will not use the generators at all. We have developed a 4 level approach:
Level 1: 100% Designer/2000 generated modules
These modules must be relatively straightforward. It should be easy to specify preferences and usages to generate more or less cleanly the first time. All modifications to the module specifications are made within the Designer/2000 repository. The module is then iteratively generated.
Level 2: Generate in Designer/2000 and make modifications in Developer/2000 to the Form-specific template and/or attached libraries so that the module could be 100% generated.
If you allow developers to make modifications to module-specific templates and attached libraries, then the capabilities of what can be generated out of Designer/2000 are greatly enhanced. With highly skilled developers and good underlying templates, a large percentage of applications can be generated using the Level 1 and Level 2 strategies.
Level 3: Generate and break the link
This level involves generating modules in Designer/2000 and making modifications directly to the generated Developer/2000 modules, thus breaking the link to Designer/2000. The problem with this approach is that the ability to regenerate is lost. The best you can do is to document the post-generation modifications so that when the module is regenerated, someone can follow that script to bring the application to production. This is not a highly desirable solution. Changes should be documented in the repository so that the repository is an accurate reflection of the modules. The repository must be accurate so that impact analysis for system modifications, system documentation and potentially even user documentation can be automatically generated.
Level 4: No Generation
Some modules should be developed entirely outside of the Designer/2000 environment. For example, we have a highly complex flexible reporting front-end template that took many months to develop. We then went through a genericization process, which enabled us to build flexible reporting front-ends where users can pass arbitrarily complex sorts, breaks and filters to every report using lexical parameters. (A complete discussion of this module is available from the authors in "Building a Flexible Reporting System Template Using Developer/2000" by Joseph Strano and Dr. Paul Dorsey – email request to
cfisher.dulcian@worldnet.att.net)This module is more complex than anything that Designer/2000 can generate now or is likely to be able to generate in the foreseeable future. However, this module brings enough value to a project and decreases the overall project development time so significantly that its use is warranted even though the module is unable to take advantage of any of Designer/2000’s capabilities.
Presumably, the only time that development should take place entirely outside of Designer/2000 is when the module represents some level of specific module template such as the one described here. Even the largest and most complex modules can usually benefit from the Designer/2000 generators as well as having information about the modules stored in the repository for documentation purposes.
Project Plan to Determine the Ideal Development Environment
In order to determine what development environment is appropriate for a given project, a detailed project plan should be developed including the following steps:
Some important questions should be asked before the start of the project to guide the development team in making appropriate choices.
2. Set GUI Standards and Determine module types
Typically within organizations, the so-called GUI standards consist of a 5-page document of suggestions.
Setting down precise GUI standards is a large task. There may be many types of modules. This step will outline the look and feel of the module types. Questions to answer include:
The GUI Standards document should allow a developer to storyboard an application that is consistent with the corporate standard. It has been my experience that few GUI standards documents meet that criterion.
3. Classify Modules
Modules to be built must be classified according to the four levels of generation options. This often involves a re-examination of the GUI standards. During this phase, developers should ask themselves whether such a rigorous GUI standard is truly necessary. The goal is to classify as many modules as possible within Levels 1 and 2. Decisions must be made about whether to sacrifice some GUI standards or functionality in order to do this. By carefully examining what the Designer/2000 generators can do, it may be possible to modify modules without sacrificing either GUI standards or functionality.
4. Develop and test the modules
At this stage, the real development work begins. All of the Designer/2000 generator preferences must be set and appropriate templates built. Even during this stage, your decisions with respect to module classification will be changing. This is an ongoing, iterative process that evolves along with the developer’s depth of understanding of the tools being used.
After successfully using a template for over a year, we decided to fundamentally re-architect major portions of our template in order to reflect changes in our development methodology. The most difficult aspect of this step is determining when to stop. The template can always be improved or made more efficient. At some point, it is incumbent upon developers to deliver a first version of the project. Setting up templates and an appropriate development environment will be an ongoing process. Development should continue until an adequate set of templates and sets of preferences are in place to build a few projects. At this point, developers will have an improved understanding of the best development environment for their organization and can revisit the development architecture every year or so, or when new products become available.
5. Determine Specific roles
With good templates and well set-up preferences, the skill level needed to generate modules can be lower. The four minimum roles needed by a Designer/Developer project are:
6. Document the development method
It doesn’t help to have a good development method that no one can use or follow. The development environment created should be well documented and understood by the team. Some development strategies may be very complex. Without clear documentation, only the experienced developers will be familiar with the methodology making it very difficult to bring new people onto the team and maintain consistent standards.
7. Develop and execute the training plan
The final step is to ensure that developers can follow the specified development methodology. Training developers in necessary skills must take place in order for the project to move forward successfully.
Critical Success Factors for Building Applications with Both Designer/2000 and Developer/2000
The following factors are necessary in order to use the combined approach outlined above:
Conclusion
Using either Developer/2000 and Developer/2000 exclusively to build modules results in higher costs, lower quality applications or both. The right way to consider this is that Designer/2000 and Developer/2000 are not two isolated products. Rather, they should be considered as two parts of a unified development suite. It is only by taking advantage of the strengths of both products that development costs can be minimized and project success can be achieved.