Prototyping with Designer/2000 – Using CADM to Support
RAD
Dr. Paul
Dorsey, Dulcian, Inc.
Overview
In the CASE Application Development
Method (CADM) from The Designer/2000 Handbook, Peter Koletzke and I
expanded the original CASE method and outlined how large systems development
projects should be done. The process that we described was methodical, very
detailed and involved a lot of care with respect to Analysis, Documentation and
Quality Control. Meticulously followed, such a process virtually guarantees
that the system built will meet system requirements to the best of the
abilities of the designers and developers. This process minimizes the risk of
project failure but does not minimize cost. The CADM method implicitly assumes
that, at project initiation, little is known about the final system
requirements of how the system should work. It is an extension of the
traditional SDLC intended for large project development and legacy system
redesigns.
CADM represents the conceptual foundation
for how to build and design systems. Within it, we identify a way of thinking
about systems design, the objectives associated with each phase and how the
development team can prove to themselves and the user community that the
project is moving forward successfully. It is not, and should not, be
considered a road map that is slavishly adhered to for every system.
There are four different criteria with
corresponding goals that must be managed in any project development strategy:
Criteria |
Goal |
|
Low cost |
· Time to complete system |
Fast development time |
· Quality (features, bugginess) |
High quality |
· Failure risk |
Low risk of failure |
These criteria interact with and
influence each other. The most important thing to recognize is that it is not
possible to achieve all four goals simultaneously. In the best of all possible
worlds, you can, at most, manipulate three variables, thus determining the
fourth. For example, as long as cost is constrained on a project (as it almost
always is), you must accept that either you will not have a firm completion
date or settle for a lesser quality system. If both fast development time and
high quality are required, the likelihood of project failure is greatly
increased. There is no way to avoid any of these four criteria on any project,
large or small.
In CADM, we took the approach of
minimizing risk and maximizing quality at the expense of cost and development
speed. Realistically for most projects, of the four factors involved, only two
goals are able to be achieved. The RAD (Rapid Application Development) CADM
method discussed in this paper applies to small to medium sized projects with
the main goal of the fastest possible development time and sometimes
concurrently, lowest cost. However, this assumes more risk and the likelihood
of accepting lower quality than with a traditional systems development
approach. The chart below demonstrates the relationship among the criteria.
Chart 1 – Relative Relationship of RAD-CADM and CADM
Criteria
Of course, this is a generalization. In
general, what will be described here is an approach that optimizes development
speed.
What is a RAD-CADM
approach?
The RAD-CADM approach greatly abbreviates
the Analysis phase of system development. Instead, an iterative development
process is used to determine the requirements. This assumes that the
development cost is low enough to justify building a substantial portion of the
system two or three times for a lower cost than that of doing a full Analysis
phase. Thus, instead of performing a full-blown Analysis phase, RAD-CADM
amounts to building a series of system prototypes.
One of the problems with traditional
Analysis documents is that you can ask users what they want the system to do,
they tell you; but there is no guarantee that what they tell you is really what
they need. It isn’t until users can actually see the system in prototype that
they can intelligently assess whether the system will meet their needs.
RAD-CADM overcomes this problem.
When can a RAD-CADM
approach be used effectively?
RAD-CADM is effective when the system
being built is not very large or complex. You cannot intelligently use a RAD
approach with multiple complex systems interacting over a centralized generic
data model. Where a RAD-CADM approach is best applied is for small to medium
sized systems when doing a "rehost," i.e. porting a legacy system on
a different platform to an Oracle system where similar functionality in the new
system is acceptable.
Another instance where RAD is appropriate
is when the new system has been recently attempted and has failed one or more
times. In this situation, Analysis may have already been done. Although the
existing Analysis documentation is inadequate, the users and any remaining developers
who already worked on the failed system have just been through the process.
They will have thought through the difficult analysis issues. The quality of
the user resources has therefore been enhanced. Their knowledge can act as the
analysis document.
A final instance where RAD is useful is
for small systems with a small number of users. Again, the users themselves can
act as surrogates for the Analysis document.
RAD-CADM is a high-risk strategy for a
number of reasons:
In order to avoid this situation, the
following steps can be taken:
In summary, it is possible to limit the
time allowed for the project by defining a finish date, use cost to limit the
number of prototype iterations, and provide a model (existing legacy system)
for the expected quality of the new system. These constraints will help to
reduce the risk of project failure when using a RAD-CADM approach.
Limitations to
RAD-CADM
Because we are not capturing requirements
in written form, but instead, are relying on informal notes and quick
application development, developers will invariably forget things that users
have told them. This means that users may have to be re-interviewed about the
same material multiple times. The development team may discuss a particular
requirement with users and inadvertently omit it from the system. Also, users
will occasionally make decisions about requirements and limitations that they
are willing to accept that they will later deny. Such disagreements are
inherent in the RAD-CADM approach and should be anticipated.
Critical Success
Factors for Making RAD-CADM Work
The following factors are necessary if a
RAD-CADM approach is to be successful:
This management
of user expectations is the key critical success factor for RAD-CADM
development. It is vitally important that users are fully engaged in the
development process. If the relationship between developers and users becomes
less than cordial or even antagonistic, the probability of project success is
greatly diminished.
Details of the
RAD-CADM Process
The following steps outline the RAD-CADM
system development process:
Even though we
are attempting to work as quickly as possible, we still need to prepare a basic
Strategy Document outlining the scope, problem, approach, team roles, etc. of
any project. This Strategy Document is just as critical in a RAD project as any
other. The CADM concept is that the Strategy Document acts as a contract
between all interested parties. For a complete discussion of the Strategy phase
and Document, see The Designer/2000 Handbook by Dr. Paul Dorsey and
Peter Koletzke.
In a RAD-CADM
approach, we do not prepare an Analysis Document. Instead we go directly to
building the logical data model. For this to be effective, a highly skilled
data modeler must be a part of the development team. Ideally, the data modeler
should be able to accurately model 20 or more entities (unattributed) per day.
A 100-table data model should be able to be completed in approximately one
week. The attribution of such a model should take an additional week.
It is crucial to
be able to complete this model quickly since it is the first deliverable
presented to the users. There has been much debate about whether a data model
should be delivered to a non-technical user. Users should not simply be shown
the data model and asked to comment. The data model should be used as a guide
for discussion of the system. Developers can describe how various business
entities relate and what the limitations of the model are. They can also
discuss the kind of information that can be stored.
Finally, the
data model is derived from a process flow. Even if the process flow is not
drawn for time constraint reasons, it can be described to the users. As part of
Analysis, you may also want to create the first set of screen prototypes.
In CADM, we
create a full prototype of the system prior to doing the physical design of the
database. In RAD-CADM, we use our intuition about what the ultimate system
design will be to move directly to the physical database design. Since we
actually prototype the application, we may do further database tuning and
denormalization. However, if the RAD project is going to stay on schedule, it
is necessary to create an accurate data model at this point in the process.
If the project
is a legacy system redesign, legacy system migration should begin immediately
at this point so that the forms and reports will have some data to use as
sample data. If the project is not a legacy system redesign, no sample data is
used at this stage. Sample data will be created by prototype applications as
part of the testing process. Again, it is key to be able to migrate the legacy
data quickly using some type of data migration tool. In order to facilitate
migration, we looked at the available tools on the market and were not satisfied.
We therefore wrote our own migration utility. (A complete discussion of this
tool can be found in Joseph Hudicka’s paper #103 "Data Migration and
Designer/2000" also presented at this conference.)
Both forms and
reports must be prototyped. If a legacy system redesign, report modules should
be prototyped first since this will validate both the data model and the data
migration. If there is no legacy data, then forms modules should be prototyped
first. There are two alternatives for generating prototype modules:
Both approaches
have merit and can be used effectively. The decision about which approach to
use should be based upon the skills of the development team.
Developers
should be able to build a form or report prototype in a few hours to one day.
The idea in the early prototypes is not to include extensive functionality in
modules until user feedback is obtained. Usually, the approach should be to
develop a very primitive prototype without much functionality. If users are not
satisfied with the first prototype, a second primitive prototype should be
developed. Once users are satisfied with the basic functionality, the prototype
should be built to production. Users should then be allowed a maximum of one
more opportunity to critique the module. After this point, the only work that
should be done is debugging.
Testing is a
RAD-CADM environment is no different from that of a traditional system
development life cycle with the inherent risks and decisions to be made. For a
complete discussion of Testing and Implementation, see The Designer/2000
Handbook by Dr. Paul Dorsey and Peter Koletzke.
Conclusion
RAD-CADM provides an effective
alternative to a full CADM process for small to medium-sized projects as long
as the development team is skilled and has a good understanding of what the
system should do before the project is started and the risks are understood and
willing to be assumed. If all of these conditions are met, then RAD-CADM can be
used to bring a system to production relatively quickly at a lower cost than a
traditional SDLC.
©1997 Dulcian, Inc.