Enterprise Analyzer は、プログラマやシステム運用担当者による日常の保守業務の生産性を著しく向上させます。ソースコード上でのマウスのポイント&クリック操作によって関連箇所に自在にハイパーリンクされ、思考の流れを途切れさせることなくコードの解析・修正を行うことができます。
さらに、着目しているコード箇所のフローチャート表示や段落間呼び出し関係のグラフ表示など、コードの理解を深めるためのビジュアル化を行います。
Enterprise Analyzer を使用してコードの修正が他に及ぼす影響を漏れなく理解することが容易になります。また強力なクエリー機能は、膨大な既存コード内に潜在する同一原因による障害を素早くそして漏れなくリストアップします。
さらにデッドコードや使用されないデータ項目などの整理を支援することによって、作業の対象範囲自体を最適化します。
Enterprise Analyzer は、リポジトリの作成時にアプリケーションのソースコードなどのテクニカルな情報だけでなく、開発者やエンドユーザーの知識として蓄えられている情報をもインポートすることができます。これによって、いわゆるリバースエンジニアリングツールの限界を超えて、ビジネスユーザーが真に求める情報までをも提供することができます。
Enterprise Analyzer はスタンドアロン構成で使用することも可能ですが、その真価はクライアント・サーバー構成で複数の利用者がリポジトリを共有する形態で発揮されます。全開発者・管理者が共通のリポジトリを「唯一の事実」として作業することができ、情報に対して加えられた変更は即時に全員が共有することができます。
Enterprise Analyzer の出力する各種レポートはすべて、HTML、Excel、Word などの再利用可能な形式にエクスポートすることができます。これによって様々なプロジェクト作業文書の中で活用することができます。また、各種のチャート、ダイアグラムはJPEG/GIFF などの画像ファイルとしてだけでなく、Visio による再加工可能な形式でもエクスポート可能です。
Enterprise Analyzerのリポジトリはワークスペースと呼ばれる単位で管理されます。ワークスペースはさらに複数のプロジェクトを内包することができます。ワークスペースを作成したらインベントリレポートを出力することによってワークスペース内に登録された各対象オブジェクト(プログラム、ジョブ、画面定義など)の一覧を概観することができます。
このレポートには各オブジェクトについて、行数、リポジトリ登録時の問題点などが表示されます。
アプリケーションのより詳細な棚卸し情報を HTML 形式で提供します。「アプリケーション要約」ビューには、プログラム・ボリューム、保守容易性、サイクロマティック複雑度、障害の数など、業界標準メトリックに関する統計が表示されます。
出力されたコンテンツをイントラネット上にアップロードして関連作業者 全員で共有することができます。
メインフレームから他の環境にマイグレーションする際の移行性に特化した棚卸し情報をHTML形式で提供します。使用されているがソースコードのないメンバーや、どこからも使用されていないメンバーの一覧に加え、16進定数、LE関数の使用、テープの使用などのメインフレーム固有のプログラミング箇所をハイライトします。
特に Enterprise Serverへのマイグレーションに特化した機能として、サポートされないCICS構文とIMS DLI構文の使用箇所を抽出します。
データベース・データファイルのアクセスに関してどのプログラムからどのデータを生成(Create)、参照(Read)、更新 (Update)、削除(Delete)しているかについてのクロス参照情報をレポートします。
COBOLのI/O文のみならず、JCLのDD文やCICSリソース定義をも包括的に解析するため、物理的に同一のデータセットに対する正確なCRUD情報を生成できます。また EXEC SQL文によるCRUD情報はメインフレームではないオープン環境のCOBOLアプリケーションからも抽出することが可能です。
プログラマがソースコードのウォークスルーを対話型で行うための包括的なサポートを提供します。ソースコード上のデータ項目名や手続き名をクリックすればその定義箇所や他の使用箇所へ素早くナビゲートされます。着目している段落をフローチャート表示することでコードの理解を促進します。また、プログラムの先頭から着目している箇所に至るまでのPERFORM / GO TOの流れを図示し、プログラム全体の処理の流れの把握も支援します。
システム全体の中から特定の条件に合致するコード箇所を漏れなく抽出するクエリー機能です。豊富に用意された定義済みクエリーに加え、ユーザー定義のクエリーもウィザードを使用して対話型で作成することができます。ユーザー定義クエリーは、一例としてコードのバグ修正に対して潜在する類似のコードを一括抽出したり、納品されるコードの発注条件合致性の検査などで活用することができます。
アプリケーションが出力する最終結果である画面フィールドや帳票上の項目に着目し、この出力を得るに至った経路(元となるデータベースのカラムや途中の計算式など)を追求することができます。また、逆にデータベースの特定のカラムを出発点として、それがプログラム中でどのように加工されて最終的に画面や帳票に出力されているかを追求することができます。
分析対象となる影響波及経路は、転記、計算、ファイル入出力、SQL文、CICS/IMSの画面入出力が含まれます。
これを活用して複雑で膨大なプログラムの中から業務上本質的なビジネスロジックの部分を抽出し、業務の仕様を理解することができます。
例えばファイルのキー項目のようにアプリケーション全体にとってキーになるようなビジネスエンティティについて桁数拡張などの項目属性変更を行う場合、アプリケーションの変更量は膨大になります。また、変更漏れによるリグレッションのリスクを回避することも必須です。変更分析プログラムがこのようなケースで活用できます。
まず、出発点となるシードフィールドを項目名で定義します。項目名の除外パターンも定義することができます。たとえばAKEYが含まれる項目名であっても AKEIMEIが含まれるようなものは除外することができます。
次に、これらのシードフィールドから出発して同義語を一括抽出することができます。同義語はMOVE文による転記や REDEFINES句によって波及する対象です。これによってシードのパターンに適合しなくても実際には変更する必要のある項目の候補を抽出することができます。これらの候補を目視によって振り分けることによりシードパターンをさらに精緻化することができます。
最後にこれらの同義語全体に対してクリッパークエリーでその使用箇所の条件抽出を行うことができます。
プログラム、データファイル、画面、ジョブといった構成オブジェクト間の関係をグラフィカルに表示し、理解を促進します。図示する対象のオブジェクトと関係は自由に選択することができ、利用者の目的に応じて最適なグラフ化が可能です。グラフの形状は、階層型、スター型、ツリー型など各種選択が可能で、さらに利用者による表示位置の修正や、自由形式のコメント付けにも対応しています。各種作業文書に再利用するための作図を簡単に行うことができます。
ジョブの構造を複数の視点から理解することを支援するビューワーです。ジョブ内のステップ毎に実行プログラムとデータセット(DD)を構造的に表示し、プログラム側またはデータセット側から逆引きでの表示を行うことも可能です。
外部宣言・未割り当て変数・複数個所で定義されている属性が異なるファイル・パラメータが不一致のプロシージャ呼び出しなどの箇所を抽出するクエリが用意されています。クエリの結果レポートにより、アプリケーションの分析や移植性を確認することができます。
Enterprise Analyzerは、シングルユーザー環境またはマルチユーザー環境で展開が可能です。
シングルユーザー環境では、ワークスペースリポジトリはローカルマシンに存在し、マシンのオーナーのみがアクセスすることができます。他のユーザーと作業を共有する機能は制限されます。
この用途のためにEnterprise AnalyzerにはSQL Server Expressがバンドルされており、製品のインストール後即座に利用を開始することができます。
マルチユーザー環境では、ワークスペースリポジトリはデータベースサーバーに存在し、適切なデータベース権限を有するすべてのユーザーがアクセスすることができます。
この形態ではデータベースサーバーとして、別途 SQL Server、PostgreSQL ををご用意いただく必要があります。
通常の実運用ではマルチユーザー環境に展開し、シングルユーザーモードは特別な要件でのみ使用されることをお勧めします。
マルチユーザーのEnterprise Analyzer環境では、開発チームのメンバーに対して、データベースサーバー上のワークスペースリポジトリに共通のアクセスが付与されます。ワークスペースのセットアップは、マスターユーザーの担当で、これによって、他のチームメンバーは、それぞれの業務に専念できます。共通アクセスにより、チーム中で情報を共有することが簡単になり、チームメンバーが同じソースを表示し、同じオプション設定で作業を行えるようになります。
解析対象のアプリケーションが日々メンテナンスされている場合には、Enterprise Analyzerのリポジトリもそれに追従して日々更新されなければなりません。この目的のために以下のような各種のスクリプティング機能が用意されており、夜間の自動運転などで活用することができます。
このような自動運用によって、利用者は毎日アプリケーションの最新の状態で作業を行うことができます。
Enterprise Analyzerはソースコードを解析してワークスペースリポジトリに情報を投入します。この作業は複数プロセスで並列化することができリポジトリ構築の所要時間を短縮することができます。このためリポジトリ構築を行うサーバーには十分なコア数のCPUを搭載することが推奨されます。
ワークスペースリポジトリのためのディスク容量は、ソースコードサイズのおおよそ60倍と見積もることができます。たとえば1,000行のプログラム1,000本で約80MBになりますが、この場合のリポジトリサイズは5GB程度になります。
リポジトリを保管するディスクをSSDドライブにすることによってリポジトリ構築の所要時間を短縮することができます。
ワークスペースの管理、検索の実行、レポートの生成を実現するためにREST API による Web サービスが提供されています。製品に含まれるUI を利用することにより、簡単に独自のインターフェースを使用して Enterprise Analyzer を操作できます。
REST API を利用した Jenkins との統合が可能です。これにより CIツールをトリガーとしたレポートを生成できます。
プラグイン使用することにより、Eclipse 上にコードサーチビューが追加され、リポジトリ内を検索できます。
Enterprise Analyzer で作成したコードクエリーの定義ファイルをエクスポートして、Fortify Static Code Analyzer (SCA) や Fortify on Demand (FoD) for security analysis にインポートして利用することができます。