COBOLコンソーシアム利用技術分科会
柳川 哲也 (日本アイ・ビー・エム株式会社 ソフトウェア開発研究所)
開発生産性を向上させたり、アプリケーションの品質を高めるためには、優れた開発環境を利用することが重要です。COBOLアプリケーションの設計からプログラミング、実行、テスト、デバッグ、保守のあらゆる開発局面で作業効率を向上させる多くのツールが各ベンダーから提供されています。
開発支援ツールの中核となるエディター、デバッガー、プロジェクト管理といった機能は、コンパイラーを含めた統合開発環境として統合され、連携して機能することによって、より開発生産性を向上させるものとなっています。また、最近のオープン系COBOL開発環境では、GUI画面構築ツールを標準的に組み込むようになってきました。操作性の良いWindows上の統合開発環境は、Windows以外にもメインフレームやUNIXをターゲットにした開発までも可能にしています。
COBOLアプリケーションの開発のためには、要求定義やアプリケーション設計を行う上流設計ツールから影響分析ツールまで幅広い種類のツールが提供されていますが、ここでは、COBOL言語に依存したサポートを行う統合開発環境に含まれるツールを中心に紹介します。
各ベンダーから提供されている開発ツールで多少の機能の差異はありますが、多くのベンダーでは、COBOLに特化した同様の機能を提供しています。以下に、各ベンダーのCOBOL開発環境の中からIBM VisualAge COBOLを例として用い、開発ツールの中核となる設計ツール、COBOLエディター、テスト支援ツール、デバッガー、プロジェクト管理機能について説明します。
COBOLアプリケーションで使用するファイル/レコード定義、画面定義、帳票定義を簡単に構築できる多数のツールが提供されています。これらのツールは定義を直感的に判りやすいGUIで作成できるようになっています。作成した定義からCOBOLコードに自動変換したり、COBOLから呼び出し可能なサブ・プログラムを作成したりすることによってアプリケーションから使用可能となります。
開発者は操作性の良いGUIで対話的に、アプリケーション利用者の実イメージのまま設計・開発が行えるので、開発効率が非常に良くなります。
「COBOL利用技術のご紹介 -第2回- GUI」に画面作成の例がありますので、詳しくはそちらをご覧ください。
統合開発環境では、COBOL言語依存の機能として、COBOL予約語や定数、標識領域/A領域/B領域のカラムによる色分け表示機能、COBOL言語に依存したタブ/インデント機能を実現したCOBOLエディターが提供されており、ソース編集を効率良くできるようになっています。エディターのCOBOL解析機能を利用することにより、コンパイルする前に不注意なエラーをある程度無くすことができますので、効率的なプログラミングが可能となります。
図1は、COBOLエディターの例です。COBOL文法上に問題がある部分は、色分けやエラー・メッセージによって開発者がエラーだと分かるようになっています。例えば、リテラルの終わりの区切り文字が見つからない場合には、編集中にエラー・メッセージが出力されます。また、DISPLAY命令を記述する場合に、"DISLPAY"とスペル間違いをしても、COBOL予約語の色付けがされないので、開発者は直ぐにスペル間違いがあることに気付いて修正することができます。
●図 1 COBOLエディター図2は、エディターで表示されるモジュール構造図の例です。プログラミングを行う場合、プログラム全体の概要構造を把握する必要性がでてきます。例えば、他のプログラマーが作成したプログラムの保守を行う場合に、プログラム全体の構造を知りたい時があります。視覚的に全体構造を把握できれば、プログラム構造の理解がし易くなります。
●図 2 モジュール構造図また、その他にもCOBOLに特有な機能として、COPY句ファイルの展開表示機能、行番号の自動割り振り機能、COBOL構造を意識した畳み込み機能などが殆どのCOBOLエディターで提供されています。
テストには単体テストやシステムテストなどがありますが、COBOL用開発ツールとしてはビジネスロジックの単体テスト支援ツールを提供しているものがあります。
単体テスト支援ツールは、メイン/サブ・プログラム、ファイル、データベースなどの呼び出しシミュレーション機能、テストデータの作成支援、実行パス解析などの機能をサポートし、COBOL単体プログラムの品質を高めることができます。
単体プログラムのテストの品質は重要です。なぜなら、単体プログラムの品質が十分でないと、後のシステムテストにも影響がでてきます。システムテストで見つかった単体プログラムの不具合は、生産性を低下させる原因となります。単体テストの必要性は認識されていますが、実行するための手間がかかるために現実には行われていないことが多くあります。支援ツールを使用することにより、単体テストの実施が可能になります。
図3は、単体テスト支援ツールの例です。サブ・プログラムをCALLしているプログラムのテストを行う場合、まだサブ・プログラムが開発されていなかったら、ダミーのサブ・プログラムを作成してパラメーターを設定しないと、呼び出し元のプログラムは実行できません。単体テスト支援ツールは、サブ・プログラムをスタブとして自動的に作成し、設定されたパラメーターを使用して、CALL文をシミュレートします。このシミュレーション機能により、サブ・プログラムがない場合でも呼び出し元のプログラムの単体テストが可能になります。
シミュレーション機能は、呼び出しプログラムの他にファイルやデータベースをアクセスするプログラムの単体テストにも利用可能です。特に大量のテストデータを用意してバッチ実行の単体テストを行う場合に効果を発揮します。テストデータはGUI画面で簡単に作成することができます。CSVファイルもサポートされていますので、表計算ツールで大量にテストデータを作成して利用することが可能です。
また、単体テスト支援ツールはシミュレーション機能だけでなく、パス・カバレッジ機能も提供しています。プログラムは通常、多岐にわたる分岐条件文を含んでいます。この場合、様々なテストデータを与え、全てのパスの実行テストを行うことが重要です。支援ツールを使えば、容易にテストデータを作成し、様々なテストデータを与えた場合の実行パスを解析し、実行されていないパスを見つけることができます。
●図 3 テスト支援ツール統合開発環境には、各種条件付きブレークポイントの設定、データ項目の値の参照/変更などが可能な対話型ソース・コード・デバッガーが提供されています。
組み込みSQL文などを含むプログラムは、プリプロセス処理を行ってからCOBOLのコンパイルを行う必要があります。以前は、プリプロセス処理後の元のソースとは異なったソースでデバッグしなければいけませんでした。しかし、最近ではコンパイラーにプリプロセッサー機能を組み込んで、元の組み込みSQL文のままデバッグできるようになっています。
図4は、デバッガーの例です。1ステップずつの実行やブレークポイントまでの実行制御やデータ項目のモニターが可能です。メインフレームをターゲットにした開発の場合、COBOLソースをWindows環境にダウンロード、あるいはWindows環境にCOBOLソースを新規作成して、Windowsの直感的なGUI機能を利用して容易にデバッグが可能となります。ツールによっては、ホストで稼動するCOBOLアプリケーションをホストと通信しながらWindowsのGUI環境でデバッグできるものもあります。
●図 4 デバッガー統合開発環境では、開発資産の管理を行い、その依存関係を表示するとともに、リソースの依存関係に基づくコンパイルの自動化機能が提供されます。この機能によって、更新されたソースと関連あるファイルのみのコンパイル、リンクが行われます。複数のソースから構成されるプロジェクトはプロジェクト管理機能によって一元管理することができます。
COBOL言語に限らず、COBOLソース/COPY句などのソースコードの変更履歴の保持、複数のユーザーが同時に編集をすることを防ぐ排他制御の機能は、資産を管理する上で重要です。これらの管理機能を実現するソース管理ツールは、統合開発環境に組み込まれて利用でるようになっています。
図5は、プロジェクト管理を含む統合開発環境の例です。プログラムの編集、コンパイル、実行、デバッグといった一連の開発作業が行えるようになっています。複数のソースから構成されるアプリケーションは、1つのプロジェクトとして管理されます。ソース編集後、依存関係に則ったコンパイルおよびリンクが行われます。
各機能は連携しており、例えば、コンパイルを行ってコンパイル・エラーが発生した場合には、ウィンドウの下部に出力されているコンパイル・エラーメッセージをクリックするだけで、自動的にエディターが起動され、ソースコードのエラー行にジャンプすることができます。
●図 5 プロジェクト管理機能を持ったCOBOL統合開発環境上記に説明したCOBOL開発環境の機能によって、開発者は高い生産性をあげ、品質の高いアプリケーションを開発することが可能となります。
さらに、最近の傾向としては、Webコンピューティング、オブジェクト指向技術への対応、Javaなどの他言語のラッピングツールなど最先端の技術を開発環境に取り入れて、益々、充実した開発環境になっていこうとしています。
なお、実装されているツールの種類や機能は各ベンダーのCOBOL開発環境によって異なりますので、利用の際には確認してください。