| 開発者 | 言語弁護士、エイダ・ラブレス |
|---|---|
| 対象プラットフォーム | Ada プログラミング言語のアプリケーションと静的解析 |
| 状態 | アクティブ |
| ライセンス | 独自 |
Adaセマンティック インターフェイス仕様( ASIS ) は、ベンダーに依存しないAdaライブラリ環境へのアクセスを提供する階層化されたオープン アーキテクチャです。これにより、 Ada プログラムとライブラリの静的分析が可能になります。これは、Ada 環境とそのツールおよびアプリケーションで構成される、公開されているオープン インターフェイス ライブラリです。
ASISワーキンググループの説明によると、
「ASIS は、ISO/IEC 8652:1995 (Ada リファレンス マニュアル) で定義されている Ada 環境と、この環境からの情報を必要とするツールとの間のインターフェイスです」 (SIGAda、2020)
これは、プログラミング言語アプリケーションと Ada プログラムの静的分析にのみ使用され、コンピュータ支援ソフトウェア エンジニアリング (CASE) と関連する開発者に関連情報とアクセスを提供します。ASIS は、関連するソフトウェア エンジニアリング ツールを利用する機能も備えており、Ada 環境表示の複雑さを簡単に理解できます。さらに、リファレンス マニュアルや抽象構文木 (AST) にある独占情報にアクセスするために非常に役立つ手順、関数、関連情報を提供します。これにより、ASIS は Ada ツールの情報と用語を転送および保持するための移植性が向上します。[1]
「ASISは21のパッケージで構成され、そのうち2つはオプションで、これらのパッケージ内で349のクエリが定義されています」。[2] ASISは、その中に「エラーコンパイル単位、Ada環境、実装、例外、要素、反復子、宣言、式、句、定義、ステートメント、テキスト、ID」を含む子パッケージを含むパッケージで構成されます。[3]
全体的に、ASIS は ADA プログラムからデータを収集する簡単な方法であり、Ada ツールの移植性を向上させます。

ASISの特徴
ISO/IEC 8652 Ada 95 リファレンス マニュアル (Ada 言語参照マニュアル、1994) に基づく Ada セマンティック インターフェース仕様は、Aria 環境と、Aria 環境からの情報を必要とするその他のツールとの間のインターフェースとして定義されています。
ASISベースのツールの特徴としては次のようなものが挙げられます。[4]
- 高品質なコード分析
- 自動コードモニター
- ブラウザ
- コールツリーツール
- コード改革者
- コーディング標準準拠ツール
- 正確性検証者
- デバッガー
- 依存関係ツリー分析ツール
- デザインツール
- ドキュメントジェネレーター
- メトリクスツール
- リバースエンジニアリングツール
- リエンジニアリングツール
- スタイルチェッカー
- テストツール
- タイミング推定器
- 翻訳者
ASIS は、Ada ライブラリにある構造情報とセマンティック情報への限定的なアプローチも提供しており、Ada の定義とまったく同じセマンティック レベルではないにしても、類似した情報を提供および生成することを目指しています。これにより、関心のある個人やクライアントに、Ada プログラミング言語 (LRM) のリファレンス マニュアルとまったく同じ定義と情報を提供するのに大いに役立ちます (Ehrenfried)。
主な抽象化
ASISでは、Adaの「プライベート」型に3つの主要な抽象化が存在します。これは、Context、Compilation_Unit、Elementで構成されています。 [5]追加の抽象化タイプも存在しますが、前述の3つが基本です。
コンテクスト
ASISのコンテキスト抽象化は、ASIS照会で利用可能な定義、用語、条件で構成されています。また、Ada環境のメソッドと論理ハンドルとしても使用されます。[4]
コンパイルユニット
コンパイル ユニットは、Ada 環境の論理ハンドルでもあります。この抽象化は、Ada リファレンス マニュアルでさらに説明されているプロパティと特性も定義します。Ada のプログラミング言語実装を使用して、ASIS を通じてコンパイル ユニットを伝えます。Adacore によると、
「ASISはCompilation_Unit、コンパイル単位を全体として考慮し、その単位の「ブラックボックス」ビューを提供します。ASISに分解してElementから、「ホワイトボックス」方式で分析することもできます。」[4]
これらのプロパティの例としては、次のものが挙げられます。
- 最終更新日時
- ユニットのソーステキストを含むオブジェクトの名前
要素
同様に、要素抽象化は、上で説明したコンパイル ユニットへの論理ハンドルでもあり、これは明示的または暗黙的になります。
ASISの構造
ASISアプリケーション構造は、セットアップASIS分析、プロセスコンパイルユニット、完全なASIS分析の3つのカテゴリに分類できます。この構造は、Adaプログラミング言語で表示されるさまざまなコード分析プログラムをサポートするのに役立ちます。[3]
ASIS分析のセットアップ
ASIS 分析の構造化の最初のステップは、それを効率的に設定することです。このステップでは、さまざまなタスクとプログラムが初期化され、確立されます。たとえば、William Colket (1999) が特定したように、このステップでは、ASIS プログラムが ASIS を初期化し、ASIS コンテキストと状態オブジェクトを確立し、ASIS コンテキストを分析に関連付け、ASIS コンテキストを開き、ASIS 分析をサポートするために必要な前処理を実行します。通常、最初のステップは、ASIS 分析を起動して実行し、効率的かつ効果的に使用できるように準備することです。
プロセスコンパイル単位
セットアップの後には「コンパイル ユニットの処理」が続きます。この間、要素がサンプリングされ、分析されて、ASIS 構造の最初に開かれ、関連付けられた ASIS コンテキストに適合します。このステップでは、主に ASIS コンテキストと相関して ASIS アプリケーション要素のほとんどが処理されますが、処理の前後にコンパイル ユニットを実行する機能も追加されています。
完全なASIS分析
ASIS 構造の最後の段階は、ASIS 分析の完了です。ここでは、すべてが最終決定され、ASIS 分析のポスト処理を実行するためにレビューされます。ASIS コンテキストも閉じられ、関連付けが解除され、ASIS は最終的に完了します。
設計基準
ASISが進化し続けるのと同様に、その設計基準も進化しています。ASISの設計基準は、幅広い受け入れ、移植性、統一性と凝集性、実装性、技術の状態、拡張性、ADA用語とスタイル、パフォーマンス、最小限のインターフェースセットの9つのカテゴリに分類できます。[6]
1. 幅広い受け入れ
ASIS にさまざまなツールを使用できるようにするには、この基準に従って設計する必要があります。この基準に従って設計すると、インターフェイス ライブラリの柔軟性が高まり、他のプラットフォームや Ada ベンダーの実装のツールでも使用できるようになります。また、ツール ユーザーと開発者のトレーニング時間も短縮されます。
2. 輸送性
ASIS は、あるコンピュータから別のコンピュータへ、または別の環境から別の環境に転送できるように設計する必要もあります。
3. 統一性と結束性
また、プロパティ、概念、タイプ、操作において一貫性を保つ必要がありますが、操作はシンプルで一貫性を保つ必要があります。
4.実装可能性
ASISは、「妥当な努力でどのAdaコンパイラベンダーでも実装可能」であるとも批判されている。[4]プログラム全体を通して一貫性を維持することも同様である。
5. 技術の現状
問題が発生しないようにするには、テクノロジの状態を常に更新し、進歩させる必要があります。さらに、ASIS のあらゆるバリエーションとバージョンが一貫性があり、効率的であることを保証する必要があります。
6.拡張性
「ASIS設計モデルと抽象化を利用する拡張を排除すべきではない。」[4]
7. Adaの用語とスタイル
ASIS は、Ada リファレンス マニュアルのスタイルと定義の条件にも適合する必要があります。
8. パフォーマンス
「ASIS設計は、クライアントの視点と実装の視点の両方から効率性を考慮しなければならない」[4]
9. 最小限のインターフェース
「提供された基本的な操作を使用して、クライアントが追加の階層化インターフェースを実装できるようにする必要があります。」
ASISの用途
GNAT 用 ASIS
ASIS は、Adacore によって、ASIS-for-GNAT アプリケーションの利用における ASIS 標準の実装に使用されています。ASIS は、次のような一般的なアプリケーションを通じて GNAT に使用できます: 「静的分析 (プロパティ検証)、コード インストルメンテーション、設計およびドキュメント生成ツール、メトリック テストまたはタイミング ツール、依存関係ツリー分析ツール、型辞書ジェネレーター、コーディング標準強制ツール、言語翻訳ツール、品質評価ツール、ソース ブラウザーおよびフォーマッター、構文指向エディター」(ASIS for GNAT)。
この方法論は、ASIS の支援を受けて、次のような多数のツールの開発にも使用されています。
- グナテリム
- グナツタブ
- グナチェック
- グナットップ
- gnatmetric。
絶縁体としてのASIS
Pace Drury (1999) は、ASIS を使用して「SIDPERS-3」というプロジェクト用のコードを作成しました。このコードは、データベースのやり取りから生成された市販製品 (COTS) に見られる詳細な詳細とバリエーションを識別するために使用されています。Drury はプロジェクトに ASIS を使用しました。ASIS は Ada コードの新たなレイヤーを作成し、ソフトウェア開発者を同じ生成された Ada コードの詳細からうまく分離しました。[7]
主に Ada コードで構成される「generate_db_support_code」という非常に難しいコードを記述し、その目的は 2 つのファイルを開いて内容を調べ、前の 2 つのファイルに基づいて 2 つの新しいファイルを作成することです。ASIS はコードの構造を効率的に調べるために使用され、Ada 言語を含むリストの保存とリンクが容易になりました。ASIS は要求された作業を首尾一貫して完了し、プロジェクトのニーズを満たすデータベース情報への継続的かつ安全なアクセスを正常に取得します。
アダコントロール
AdaControl は、Ada プログラム内のさまざまな構造の使用を検出する無料 (GMGPL) ツールです。その用途には、コーディング標準のチェック、Ada 機能の使用の調査、統計の作成などがあります。ASIS のすべての機能を活用しており、最も典型的な ASIS アプリケーションと見なすことができます。
参考文献
- ^ Sward, Ricky E.; Chamillard, AT (2004). 「Ada でのグローバル変数の再設計」。2004年 ACM SIGAda 国際会議の議事録、Ada に関する: Ada および関連技術を使用したリアルタイムおよび分散システム向けの正確で信頼性の高いソフトウェアのエンジニアリング。第 XXIV 巻。米国ジョージア州アトランタ: ACM プレス。pp. 29– 34。doi :10.1145/ 1032297.1032303。ISBN 978-1-58113-906-8. S2CID 31415676。
- ^ Strohmeier, Alfred; Fofanov, Vasiliy; Rybin, Sergey; Barbey, Stéphane (1998)。「Quality-for-ASIS: A portable testing facility for ASIS」。Asplund, Lars (ed.) 著。Reliable Software Technologies — Ada-Europe。Lecture Notes in Computer Science。Vol. 1411。ベルリン、ハイデルベルク: Springer。pp. 163– 175。doi :10.1007/ BFb0055003。ISBN 978-3-540-69802-9。
- ^ ab Colket, William Currie (1999年9月). 「ASISを使用した安全性重視のリアルタイムソフトウェアのコード分析」. ACM SIGAda Ada Letters . XIX (3): 67– 76. doi : 10.1145/319295.319306 . ISSN 1094-3641.
- ^ abcdef 他
- ^ 「4. ASIS の概要 — ASIS-for-GNAT ユーザーズ ガイド 22.0w ドキュメント」。docs.adacore.com 。2020 年 11 月 20 日閲覧。
- ^ Bladen, James B.; Spenhoff, David; Blake, Steven J. (1991). 「Ada セマンティック インターフェース仕様 (ASIS)」。TRI -Ada '91 カンファレンス議事録 - 今日の成果、明日の期待 - TRI-Ada '91。ニューヨーク、ニューヨーク、米国: ACM プレス。pp. 6– 15。doi : 10.1145 /126551.126552。ISBN 0-89791-445-7.S2CID 19422485 。
- ^ Drury, Pace (1999 年3 月)。 「データベース絶縁のための ASIS の使用」。ACM SIGAda Ada Letters。XIX ( 1): 64– 65。doi : 10.1145/311457.311486。ISSN 1094-3641。S2CID 37063586 。
追加
- ISO/IEC 15291: 情報技術 - プログラミング言語 - Ada セマンティック インターフェイス仕様 (ASIS)
- Ada 言語リファレンス マニュアル。バージョン 6.0、1994 年 12 月 21 日。Copyright (C) 1992、1993、1994、1995 Intermetrics, Inc.
- ASIS 2.0仕様
外部リンク
- ASISワーキンググループ
- Ada リファレンス マニュアル
