Using CASE
Computer-aided software engineering (CASE) is the
name
given to software that automates the software development process. CASE tools provide an integrated platform (or, more commonly, a series of non-integrated platforms) that can be used to drive the application development process from specification to the delivery of source code and an executable application system. The
term
CASE
, however, has no
universally
accepted definition and can comprise anything from a diagramming tool to a data dictionary to a code generator. CASE tools usually are separated into two categories: upper CASE tools and lower CASE tools.
You use an upper CASE tool to develop system specifications and detail design. It
generally
provides a front-end diagramming tool as well as a back-end dictionary to control the
components
of the application design. CASE tools can also provide support for enforcing a system methodology, documenting the development process, and capturing design elements from current application systems.
Lower CASE tools support the physical coding of the application. Tools in this category include system and program testing tools, project management tools, and code generators. This section concentrates on the code generation portion of CASE. An application code generator usually reads application specifications input into the CASE tool in one or more of the following formats:
-
A macro-level or English-like language that details the components of the application system at a pseudo-code level
-
Data flow diagrams generated by another component of the CASE tool (or sometimes by a different CASE tool)
-
Reverse-engineered program specifications or flowcharts
Based on the input, the code generator develops a program or series of programs to accomplish the specification of the application. IBM's VisualAge Generator (which
replaced
Cross System Product, or CSP) is an example of a code generator. The application programmer codes instructions, which can be executed in 4GL fashion, or host language code (such as COBOL) can be generated. Code-generating CASE tools try to provide the best portions of both the 3GL and 4GL
worlds
. They provide a quick application development environment because they raise the level of programming abstraction by accepting high-level designs or macro languages as input. They generally provide better performance than 4GLs because they can generate true, traditional 3GL source code.
Be careful when developing applications with this new method. Automatic code generation does not always produce the most efficient code. To produce efficient CASE-generated applications, follow the guidelines in the
next
section.
CASE Application Guidelines
The following guidelines are useful when using CASE tools to deploy DB2 applications.
Analyze Generated SQL Carefully
Code generators that develop embedded SQL programs usually produce functional SQL but do not always produce the most efficient SQL. Analyze the embedded SQL to verify that it conforms to the standards for efficient SQL outlined in Chapter 2.
Avoid Generalized I/O Routines
Sometimes a code generator produces source code that can be executed in multiple environments. This code often requires the use of an I/O routine to transform application
requests
for data into VSAM reads and writes, sequential file reads and
writes
, or database calls. When you use an I/O module, determining what SQL is accessing the DB2 tables is difficult. In addition, I/O routines usually use dynamic SQL instead of static SQL.
Favor code generators that produce true embedded SQL programs over products that use I/O routines. The programs are easier to debug, easier to maintain, and easier to tune.
Avoid Runtime Modules
Some code generators require the presence of a runtime module when the programs it generates are executed. Avoid these types of products because a runtime module adds overhead and decreases the efficiency of the generated application.
Favor Integrated CASE Tools
Choose a CASE tool that provides an integrated development platform instead of a wide array of disparate products to automate the system development life cycle. When a CASE tool provides integration of the system development life cycle, you can save a lot of time because the tool automatically carries the application forward from stage to stage until it is finished. If the CASE tools are not integrated, time is
wasted
performing the following
tasks
:
-
Converting the data from one phase to a format that can be read by the tool that supports the next phase.
-
Verifying that the data in the tool that accepts data from another tool is accurate and conforms to the expected results based on the status of the data in the sending tool.
-
Moving data from one tool to another. (Time is wasted installing and learning these tools, as well as debugging any problems that result from the migration process.)
To avoid these types of problems, choose a CASE tool that provides as many of the features listed in Table 14.1 as possible. Use this chart to evaluate and rank CASE tools to support the complete DB2 program development life cycle.
Table 14.1. CASE Tool Features Checklist
|
Features
|
Supported (Y/N)?
|
Ranking
|
|
Supports the Business Strategy
Enterprise data model capabilities
Business data modeling
Business decision matrices
Integrates with any ERP packages in use at your site
|
|
|
|
Supports Prototyping
Screen formatting
Report formatting
Rapidly developing executable modules
|
|
|
|
Supports Process Modeling
Methodologies
Supports UML
Linked to the data model
Linked to the code generator
Documentation
|
|
|
|
Supports Data Modeling
Entity relationship diagramming
Normalization
Conceptual data model
Supports subject areas
Logical data model
Physical data model
Provides physical design
recommendations
Generates physical objects
(such as tables or indexes)
Linked to process model
Documentation
|
|
|
|
Supports Diagramming
Graphical interface
Linked to process model
Linked to data model
Multiple diagramming techniques
Documentation
|
|
|
|
Supports System Testing
Administers test plan
Creates test data
User simulation
Performance testing
Stress testing
|
|
|
|
Supports System Testing
Acceptance testing
Documentation
Supports
EXPLAIN
|
|
|
|
Supports Quality Assurance
System failure administration
Quality acceptance testing
Documentation
|
|
|
|
Supports Development
Automatically generates SQL
Supports override of automatic SQL
Automates precompile and bind
Supports plans
Supports collections
Supports packages
Supports versioning
Generates code in your language of choice
|
|
|
|
Supports the Technical Environment
Supports current hardware platforms
Supports current software platforms (such as DBMS or languages)
Supports distributed data
Supports client/server processing
Supports required printer(s)
Interfaces with mainframes
Interfaces with midranges
Interfaces with PCs
LAN capability
Web capability
|
|
|
|
Supports Metadata Management
Captures metadata from applications
Captures metadata from database structures
Integrated with data modeling components
User-extensible to support non-standard applications and structures
|
|
|
|
Supports Input from Multiple Platforms
Word processors
Spreadsheets
Databases
HTML and XML
Other CASE tools
|
|
|
|