| 仮想マシン環境 | |
|---|---|
| 開発者 | インターナショナル・コンピューターズ・リミテッド、富士通 |
| 書かれた | S3、C |
| 作業状態 | 現在 |
| 初回リリース | 1970年代半ば |
| サポートされているプラットフォーム | ICL 2900シリーズ、ICLシリーズ39メインフレーム |
| 影響を受けた | マルチクス、ジョージ3 |
| ライセンス | 独自の商用ソフトウェア |
| 公式サイト | VMEサイト |
VME(Virtual Machine Environment)は、英国のInternational Computers Limited( ICL、現在は富士通グループ傘下)が開発したメインフレーム用オペレーティングシステムです。1970年代にICLの当時の新製品2900シリーズメインフレーム向けにVME/B、後にVME 2900として開発されましたが、現在はUnixサブシステムを組み込んだOpenVMEとして知られ、ICLシリーズ39およびTrimetra [ 1 ]メインフレームコンピュータ、そして業界標準のx64サーバで動作しています。[ 2 ]
ニューレンジシステムの開発プログラムは、 1968年にインターナショナル・コンピューターズ・アンド・タビュレーターズ(ICT)とイングリッシュ・エレクトリック・コンピューターズが合併したことから始まりました。その基本的な決定の一つは、新しいオペレーティングシステムを採用することでした。ICL社内では、様々な実現可能性調査と設計検討が行われ、その中で最も注目すべき3つは次のとおりです。
VME/Bの主任設計者はブライアン・ウォーボーイズで、彼は後にマンチェスター大学のソフトウェア工学教授となった。その設計には、 MulticsやICLの初期のオペレーティングシステムGeorge 3など、多くの影響が見られるが、本質的にはゼロから設計された。
VME/Bは商用オペレーティングシステムとしてIBMメインフレームのSystem/370 と主に競合すると考えられており、EBCDIC文字エンコーディングを採用した。[ 3 ]
1974年10月にニューレンジが初めて発売されたとき、そのオペレーティングシステムは「System B」と呼ばれていました。最初の納入時には「VME/B」に名称が変更されました。[ 4 ]
VME/K (当初は社内で「Tiny」の頭文字をとって「System T」と呼ばれていた) は独立して開発され (Campbell-Kelly によれば「Ed Mack の気まぐれで」)、後に 2960 などの小型メインフレームとともに提供されました。当時の VME/B は依然としてパフォーマンスと信頼性の問題に悩まされており、主にアメリカ人で構成される経営陣はそれについて不安を抱いていました。
System Dと呼ばれるプロジェクトもありました。これは、カスタマイズされた準リアルタイムアプリケーションの構成と構築を目的として設計された、高度でモジュール化された高度なオペレーティングシステムでした。このプロジェクトはイギリス国鉄のシステム入札に使用されましたが、エンジニアリングリソースの制約により、後に中止されました。
ICLは、ダルムシュタットの運用センターでメテオサットのデータを処理するため、欧州宇宙機関(ESA)に大型システムを販売していました。顧客の要件を満たすため、VME/Kの特注バージョンであるVME/ESAが現地で開発されました。
1980年の金融危機の後、ICLには新たな経営陣が就任した。会長にクリストファー・レイドロー、マネージング・ディレクターにロブ・ウィルモットが就任した。新経営陣は早々にVME/Kを廃止することを決定した。[ 5 ]こうして1981年7月、VME 2900が発売された。[ 4 ] : 340 顧客にはVME/BとVME/Kの統合製品として提示されたが、実際にはVME/BをベースにVME/Kから厳選された機能をいくつか追加しただけだった。これにより、一部の旧式化機能を削除する機会が生まれ、それらを必要とする顧客には「BONVME」オプションの形で提供された。
ICLが1985年にシリーズ39を2900シリーズの後継として発売した際、システムバージョン213(SV213)で「2900」という接尾辞は削除され、「Open」という接頭辞はSV294以降に追加された。VMEは、VME/Xと呼ばれるUNIX System V Release 3ベースのサブシステムを通じて、元々 Unix向けに書かれたアプリケーションをホストできるようになった。このサブシステムはVME上で動作し、ASCII文字エンコーディングを使用している。[ 6 ] [ 7 ] [ 8 ]
2007年に富士通は、 x86-64ハードウェア上のMicrosoft Windows、SUSE、またはRed Hat Enterprise Linux内でホストサブシステムとして実行されるsuperNovaと呼ばれるVMEバージョンを発表しました。[ 2 ]
2012年、VMEユーザーグループAXiSは、ユーザーベースの減少により、約40年の歴史を経て解散することを発表しました。[ 9 ]
富士通は2020年まで顧客のコンピュータ上でVMEをサポートする予定であった。[ 10 ]
2020年に富士通は、英国歳入関税庁のアプリケーション13件を自社のコンピュータから富士通の仮想管理VMEホスティングプラットフォームに移行しました。[ 11 ] [ 12 ]
2021年現在、労働年金省は、受賞歴のあるVME-R交換プログラムの完了に伴い、VMEベースのシステムを完全に交換しました。[ 13 ]
VMEは複数のレイヤーから構成されており、各レイヤーは異なる抽象レベルのリソースにアクセスできます。あるレイヤーが提供する仮想リソースは、その下のレイヤーが提供する仮想リソースから構築されます。各レイヤーのリソースへのアクセスは、アクセスレベルによって制御されます。プロセスが特定のアクセスレベルのリソースを使用するには、そのレベルへのアクセスを提供するアクセスキーが必要です。この概念は、Multicsの「保護リング」に似ています。このアーキテクチャでは16のアクセスレベルがサポートされており、そのうち外側の6レベルはユーザーレベルコード用に予約されています。
アクセスレベルとは直交する形で、オペレーティングシステムは仮想マシン(VM)の形でアプリケーションにリソースを提供します。VMは複数のプロセスを実行できます。実際には、VMEにおけるVMは他のオペレーティングシステムにおけるプロセスの概念に近い一方、VMEプロセス(またはアプリケーションが生成したサブプロセス)は他のシステムにおけるスレッドの概念に近いと言えます。ただし、VM内で実行されるプロセスは同時に実行できないため、他のシステムにおけるユーザースレッドに似ています。 [ 14 ] : 32同じVMを共有するプロセス間の制御の移行には、専用の命令が用いられます。[ 8 ] : 483
仮想マシンへのリソースの割り当てはスタックモデルを採用しています。スタックがポップされると、そのスタックレベルに割り当てられていたすべてのリソースが解放されます。したがって、アプリケーションからオペレーティングシステムへの呼び出しは、同じプロセススタックを維持しながら、保護レベルを変更した呼び出しによって行われます。結果として得られるシステムコールの効率性は、このアーキテクチャの競争力を高める特徴の一つです。
仮想マシン間の通信は、イベント(名前付き通信チャネル)と共有メモリ領域によって実現されます。ハードウェアアーキテクチャは、セマフォ命令INCT(インクリメント・アンド・テスト)とTDEC(テスト・アンド・デクリメント)も提供します。
ファイルやその他の永続オブジェクトは、「カタログ」と呼ばれるリポジトリに記録されます。ファイルの命名階層は、特定のテープやディスクボリューム上のファイルの場所とは独立しています。オフラインストレージの需要が高かった時代には、これにより、ファイルの場所に関係なくファイルを追跡し、名前を変更せずに場所間でファイルを移動することが容易になりました。カタログは、ファイルだけでなく、ユーザーとユーザーグループ、ボリューム、デバイス、ネットワーク接続、その他多くのリソースも追跡します。ファイルのメタデータは、「ファイル記述」と呼ばれるオブジェクトに保持されます。カタログは、後にエンティティ・リレーションシップ・データベースと呼ばれるようになるものの最初の例と言えるでしょう。
割り込みは、関連するプロセスのスタック上に新しいスタック フレームを作成し、この新しい環境を使用して割り込みを処理し、スタックをポップして割り込みされたプロセスに戻ることによって処理されます。
偶発事象と呼ばれる実行時例外は、オブジェクト プログラム エラー ハンドラー (OPEH) によってキャプチャされ、対話形式でレポート (スタック トレースに相当) を生成したり、ジャーナルに書き込んだりすることができます。
コンパイルされたオブジェクトコードは、OMF(オブジェクトモジュールフォーマット)と呼ばれる形式で保持されます。これはコンパイラの出力であると同時に、ローダーが使用する形式でもあります。様々なコンパイラやユーティリティが利用可能で、中でも特にCollectorは複数のOMFモジュール内のコードを単一のモジュールにリンクし、実行時のロード効率を向上させます。また、Module Amenderは、アセンブリ言語構文を使用してOMFモジュール内の命令にパッチを適用し、バグを修正します。
VME のコマンド言語は SCL (System Control Language) と呼ばれます。
これは、他のほとんどのオペレーティング システムで見られるジョブ制御言語やシェル言語よりもはるかに明確に型付けされた高水準プログラミング言語です。表面的な構文はAlgol 68から派生していますが、JavaScriptなどのスクリプト言語に似ています。
SCLは、コンソールまたはコマンドファイルから行単位の対話型使用と、実行可能なスクリプトまたはプログラムの作成(他のVMEプログラミング言語と同様に、言語をオブジェクトモジュール形式にコンパイルした場合)の両方を可能にするように設計されています。SCL内でのプロシージャの宣言は、対話型端末からプロシージャを呼び出すための簡単なフォームまたはテンプレートの定義としても機能します。フィールドは、基礎となるプロシージャパラメータのデータ型、またはデフォルトのプロシージャパラメータ値に基づいて検証されます。
組み込みコマンド語彙は、命令形の動詞に名詞を付けるという一貫した命名規則を採用しています。例えば、DELETE_FILE や DISPLAY_LIBRARY_DETAILS などです。コマンドは完全な形で記述することも、動詞と名詞の標準的な略語を組み合わせた省略形で記述することもできます。例えば、XF (X は DELETE、F は FILE) や DLBD (D は DISPLAY、LB は LIBRARY、D は DETAILS) などです。
SCLはブロック構造になっており、begin/endブロックは変数宣言の語彙的スコープを定義するという2つの相補的な役割を果たし、オペレーティングシステムから取得したリソースを解放するポイントを定義します。言語内の変数(アプリケーションからは環境変数の形でアクセス可能)は、文字列、スーパー文字列(文字列のシーケンス)、ブール値、整数など、さまざまな単純な型を持つことができます。また、ファイルやネットワーク接続などのシステムリソースへの参照を格納するためにも使用されます。
READ_SCL(またはRSCL)コマンドを使用して、OMFからSCLプログラムを「逆アセンブル」し、SCLソースコードに戻すことができます。ただし、出力は必ずしも完璧ではなく、ユーザーの介入なしには再コンパイルが停止してしまうようなエラーが含まれることも少なくありません。
簡単なコード例は99本のビールのウェブサイトで見ることができます。[ 15 ]
より現実的な例として、SCLを用いてS3で書かれたプログラムをコンパイルする例を以下に示します。この例は、コロンビア大学のKermit実装アーカイブから引用したものです。[ 16 ]
始める いつでも 結果 GT 0 +_ それから +_ SEND_RESULT_MESSAGE (RES = 結果、 ACT = "QUIT()" FI INT KMT_SRC、KMT_OMF、KMT_REL ASSIGN_LIBRARY (NAM = KERMIT.SOURCE、 LNA = KMT_SRC) ASSIGN_LIBRARY (NAM = KERMIT.OMF、 LNA = KMT_OMF) ASSIGN_LIBRARY (NAM = KERMIT.REL、 LNA = KMT_REL) 始める DELETE_FILE (NAM = *KMT_OMF.KMT_DATA_MODULE(101)) DELETE_FILE (NAM = *KMT_OMF.KMT_DH_MODULE(101)) DELETE_FILE (NAM = *KMT_OMF.KMT_EH_MODULE(101)) DELETE_FILE (NAM = *KMT_OMF.KMT_FH_MODULE(101)) DELETE_FILE (NAM = *KMT_OMF.KMT_HELP_MTM(101)) DELETE_FILE (NAM = *KMT_OMF.KMT_MAIN_MODULE(101)) DELETE_FILE (NAM = *KMT_OMF.KMT_PH_MODULE(101)) DELETE_FILE (NAM = *KMT_OMF.KMT_PP_MODULE(101)) DELETE_FILE (NAM = *KMT_OMF.KMT_SP_MODULE(101)) DELETE_FILE (NAM = *KMT_OMF.KMT_SP_MTM(101)) DELETE_FILE (NAM = *KMT_OMF.KMT_UI_MODULE(101)) DELETE_FILE (NAM = *KMT_REL.KERMIT(101)) DELETE_FILE (NAM = *KMT_REL.KERMIT_MODULE(101)) 終わり S3_COMPILE_DEFAULTS (LIS = オブジェクト & XREF、 DIS = エラーライン) S3_COMPILE (INP = *KMT_SRC.KMT_DATA_MODULE(101)、 OMF = *KMT_OMF.KMT_DATA_MODULE(101)) S3_COMPILE (INP = *KMT_SRC.KMT_DH_MODULE(101)、 OMF = *KMT_OMF.KMT_DH_MODULE(101)) S3_COMPILE (INP = *KMT_SRC.KMT_EH_MODULE(101), OMF = *KMT_OMF.KMT_EH_MODULE(101)) S3_COMPILE (INP = *KMT_SRC.KMT_FH_MODULE(101)、 OMF = *KMT_OMF.KMT_FH_MODULE(101)) NEW_MESSAGE_TEXT_MODULE (CON = *KMT_SRC.KMT_HELP_MTM(101)、 OMF = *KMT_OMF.KMT_HELP_MTM(101)) S3_COMPILE (INP = *KMT_SRC.KMT_MAIN_MODULE(101)、 OMF = *KMT_OMF.KMT_MAIN_MODULE(101)) S3_COMPILE (INP = *KMT_SRC.KMT_PH_MODULE(101)、 OMF = *KMT_OMF.KMT_PH_MODULE(101)) S3_COMPILE (INP = *KMT_SRC.KMT_PP_MODULE(101)、 OMF = *KMT_OMF.KMT_PP_MODULE(101)) S3_COMPILE (INP = *KMT_SRC.KMT_SP_MODULE(101)、 OMF = *KMT_OMF.KMT_SP_MODULE(101)) NEW_MESSAGE_TEXT_MODULE (CON = *KMT_SRC.KMT_SP_MTM(101)、 OMF = *KMT_OMF.KMT_SP_MTM(101)) S3_COMPILE (INP = *KMT_SRC.KMT_UI_MODULE(101)、 OMF = *KMT_OMF.KMT_UI_MODULE(101)) 集める () ---- INPUT(*KMT_OMF.KMT_DATA_MODULE(101) & *KMT_OMF.KMT_DH_MODULE(101) & *KMT_OMF.KMT_EH_MODULE(101) & *KMT_OMF.KMT_FH_MODULE(101) & *KMT_OMF.KMT_HELP_MTM(101) & *KMT_OMF.KMT_MAIN_MODULE(101) & *KMT_OMF.KMT_PH_MODULE(101) & *KMT_OMF.KMT_PP_MODULE(101) & *KMT_OMF.KMT_SP_MODULE(101) & *KMT_OMF.KMT_SP_MTM(101) & *KMT_OMF.KMT_UI_MODULE(101)) 新しいモジュール(*KMT_REL.KERMIT_MODULE(101)) 抑制する 保持(カーミット・ザ・フロッグ) リストモジュール 実行する ++++ COMPILE_SCL (INP = *KMT_SRC.KERMIT(101)、 出力 = *KMT_REL.KERMIT(101)、 COD = NOTIFWARNINGS、 OPT = FIL) 終わり
このフラグメントで説明されているコマンドには、WHENEVER (エラー処理ポリシーを宣言)、ASSIGN_LIBRARY (ファイル ディレクトリのローカル名をバインド)、DELETE_FILE (永続ファイルを一時ファイルにし、ブロックの終わりで削除)、S3_COMPILE (S3 で記述されたプログラムをコンパイルします。このコマンドは、通常の動詞と名詞の規則に違反します)、NEW_MESSAGE_TEXT_MODULE (ローカライズに適したパラメーター化されたエラー メッセージを含むモジュールを作成します)、および SCL プログラムをオブジェクト コードにコンパイルする COMPILE_SCL があります。
COLLECTコマンドは、異なるオブジェクトコードモジュールを単一のモジュールに結合します。このコマンドは、SCL内の区切り文字「----」と「++++」の間にインラインで組み込まれた独自のローカルコマンドファイルによって実行されます。サブコマンドINPUTとNEWMODULEは、入力モジュールと出力モジュールの名前を識別します。SUPPRESSとRETAINは、収集されたモジュール内の名前付きプロシージャの外部からの可視性を決定します。LISTMODULEは、出力モジュールを説明するレポートを要求します。
階層的なファイル名の各部分を区切るために「.」が使用されていることに注意してください。先頭のアスタリスクは、ASSIGN_LIBRARYコマンドでバインドされたライブラリのローカル名を表します。ファイル名の後の括弧内の数字は世代番号です。オペレーティングシステムはすべてのファイルに世代番号を関連付け、特に指定がない限り、ファイルを要求すると最新の世代を取得します。新しいファイルを作成すると、デフォルトで次の世代が作成され、前の世代はそのまま残ります。ただし、このプログラムは、パブリックリリースを識別するために、意図的に世代101を作成しています。
ICL は、英国公共部門、特にOPCON CCISなどの特別なセキュリティ要件を持つ部門へのコンピュータ サービスの提供に深く関わっていたため、セキュア システム市場に早くから参入しました。
VMEは、ICLのセキュアシステム分野における活動の中核を担っていました。VMEは、これまでに設計された最後の大規模オペレーティングシステムであり、ゼロから構築されたため、その基盤となるアーキテクチャには、セキュアシステムの開発に必要な多くの基本要素、特に、あらゆるプロセス(ユーザーを含む)が取得できる権限を制限するハードウェア支援型アクセス制御レジスタ(ACR)が組み込まれていたという利点がありました。
このため、1980年代半ば、英国政府の中央計算電気通信庁(CCTA)はICL防衛技術センター(DTC)にプロジェクト・スペースマンの資金を提供し、VMEのセキュリティを強化したバージョンを開発することとなった。 [ 17 ] ICLはこれを補完的な製品として立ち上げ、商用リリースは高セキュリティオプション(HSO)、政府提供暗号化(GFE)技術を含む公共部門リリースは政府セキュリティオプション(GSO)と呼ばれた。
HSO と GSO は、 ITSECおよびCommon Criteriaの前身の 1 つであるCESG UK (セキュリティ) 評価スキームに基づいて正式にテストされ、正式に認定された最初の主流のオペレーティング システムとなりました。
ICLは1985年にVME向けのホスト型Unix機能を発表し、18ヶ月以内に戦略的アプリケーションのサポートと提供を開始する予定でした。[ 18 ] SVR1をサポートするこの機能は「フィールドトライアル」段階にあり、1987年夏の一般リリース前にSVR2にアップグレードされる予定でした。 [ 19 ]その後、既存のVME顧客に限定的な提供が発表され、その他の顧客はICLのClan Unix部門システムシリーズに誘導されました。[ 20 ]
1987年10月、ICLはSVR2をVME Unixシステムゲストとして実行するためのサポートを追加したVMEのSV221リリースをリリースした。[ 21 ]この実装は「非市販」製品としてVNSとしても知られ、1991年にリリースされXPG3準拠と認められた新しい実装であるVME/Xの設計に影響を与えた。1992年にはXPG4ベース1準拠も認められた。[ 8 ] : 489–490 ICLのOpenVMEの宣伝資料には、VMEがXPG3準拠を獲得した最初の非Unixオペレーティングシステムであり、XPG4ベース準拠を獲得した最初のオペレーティングシステムであると記されていた。[ 22 ]
1995年、ICLはOpenVME用のUNIXインターワーキングオプションの形でインターネットプロトコルスイートのサポートを追加しました。これはTCP/IP、UDP/IPの実装とファイル転送プロトコル、Telnet、ネットワークファイルシステム(NFS)プロトコルのサポートを特徴としています。NFS機能には、OpenVMEファイルストアの一部をNFSクライアントに提供できるようにするサーバーが含まれており、Telnet機能によりOpenVMEシステム上のユーザーはUnixホストにアクセスできます。また、プロトコルを使用するリモートユーザー向けにOpenVMEへのログイン機能もサポートされています。Unixアプリケーションで既に広く使用されていたBerkeleyソケットプログラミングインターフェースに加えて、この製品はプロトコル非依存とVMEソフトウェアで慣習的に使用されるOSIプロトコルのサポートのためにX/Openトランスポートインターフェースも提供しました。[ 23 ]
シリーズ39では、分散共有メモリの新しい実装であるノーダル アーキテクチャが導入されました。これは、マルチプロセッサシステムとクラスタ設計のハイブリッドともいえます。各マシンは複数のノードで構成され、各ノードには独自のオーダー コード プロセッサ (CPU) とメイン メモリが搭載されています。仮想マシンは通常 (常に) 1 つのノード上に存在しますが、どのノードでも実行でき、ノード間で再配置できます。ディスクやその他の周辺機器はノード間で共有されます。ノードは高速光バスを使用して接続され、アプリケーションに仮想共有メモリを提供します。共有としてマークされたメモリ セグメント (パブリック セグメントまたはグローバル セグメント) は各ノードに複製され、更新はノード間ネットワークを介してブロードキャストされます。非共有メモリ セグメント (ノーダル セグメントまたはローカル セグメント) を使用するプロセスは、他のノードおよびプロセスから完全に分離して実行されます。
VMEは元々 、 Algol 68Rをベースに特別に設計されたシステムプログラミング言語であるS3でほぼ完全に記述されていました(ただし、VME/Kは主にアセンブリ言語であるSFLで記述されていました)。高級言語が使用されているにもかかわらず、オペレーティングシステムは基盤となるハードウェアアーキテクチャから独立して設計されているわけではなく、むしろソフトウェアとハードウェアアーキテクチャは密接に統合されています。
1990 年代初頭以降、いくつかのまったく新しい VME サブシステムが、部分的にまたは全体的にC プログラミング言語で書かれるようになりました。
VME は当初からCADESと呼ばれるソフトウェア エンジニアリングリポジトリ システムの支援を受けて開発されました。CADES は元々、コンピュータ サイエンティストの David Pearson 氏によって設計、管理され、基盤となるIDMSデータベースを使用する目的で構築されました。CADESは単なるコード モジュールのバージョン コントロール システムではありません。要件の取得、設計方法論と仕様から現場での保守まで、ソフトウェア ライフサイクルのすべての側面を管理します。CADES はVME モジュール開発において、データ構造 (モード)、定数 (リテラル)、手続き型インターフェイス、コア アルゴリズムの個別の定義を保持するために使用されました。これらの各コンポーネントには複数のバージョン (「ライブ」) が存在する可能性があります。アルゴリズムはシステム開発言語 (SDL) で記述され、プリプロセッサによって S3ソース[ 24 ]に変換されました。同じモジュールの複数のバージョンが生成される場合があります。
VME で提供されるアプリケーション開発ツールは、次の 2 つのカテゴリに分類されます。
VMEのツールセットは非常に均質化されており、ほとんどの顧客が同じコア言語とツールセットを使用しています。その結果、ツール間の統合も非常に良好です。サードパーティ製ツールの影響は比較的小さいです。
長年にわたり、VMEユーザーの大多数はCOBOLでアプリケーションを作成し、通常はIDMSデータベースとTPMSトランザクション処理モニターを利用していました。その他のプログラミング言語としては、Fortran、Pascal、ALGOL 68RS、Coral 66、RPG2などが挙げられましたが、これらは少数派でした。その後、1980年代半ばには、 Unix サブシステムの内外を問わず、主にリレーショナルデータベースシステムなどのソフトウェアの移植を可能にするために、 C 用のコンパイラが利用可能になりました。IBMから ICL ハードウェアへのプログラム移植を支援するために、 EEC によって PL/Iサブセットコンパイラが作成されたことは興味深いことです。
ICL内で開発されたコンパイラは共通のアーキテクチャを共有しており、場合によってはコードジェネレータなどのコンポーネントも共有しています。多くのコンパイラはALICE(アセンブリ言語内部共通環境)というモジュールを使用し、ROSEと呼ばれる初期のプリコンパイル済みコード(Pコード)を生成しました。これにより、コンパイル済みオブジェクトモジュールフォーマット(OMF)ライブラリを、その範囲内のどのマシンでもロード可能になりました。
VMEオペレーティングシステム自体の開発だけでなく、コンパイラやトランザクション処理モニタなどのシステムソフトウェアの開発にも、S3が主要な言語として使用されています。これは、多くの点でAlgol 68をベースにした高水準言語ですが、データ型や低水準関数、演算子は2900シリーズのアーキテクチャに厳密に準拠しています。
アセンブリ言語SFL ( S ystem F unction L anguage) も使用できます。これは、高級言語では十分なパフォーマンスが得られないと設計者が確信していなかった VME/K の開発に使用されたほか、サードパーティ製品として作成されたため、 IDMSデータベース システムのカーネルにも使用されました。SFL は当初、 M acro A ssembler P rogramming L anguag E (MAPLE) と呼ばれていましたが、2900 アーキテクチャは高級言語マシンで構成されると位置付けられていたため、ICL Marketing の要請により名前が変更されました。これは System D のツールキットの一部として開発されましたが、その後キャンセルされました。他のアーキテクチャ用の関連アセンブラ ファミリ (VME で実行される CALM-xx、Pascal で開発されさまざまなホストで実行される PALM-xx) は、社内使用向けに開発されました。
S3もSFLも、エンドユーザーアプリケーション向けの商用開発ツールとして宣伝されたことはありませんでした。どちらも通常、オペレーティングシステムの標準機能として提供されておらず、また、独立した製品として明示的に販売されることもなかったためです。しかしながら、SFLとS3はどちらも、特定のニーズを持つユーザー組織やサードパーティ向けにオプションとして提供されていました。
VME上のQuickBuildアプリケーション開発環境は、アプリケーションの大部分がVME環境に縛られているにもかかわらず、大きな成功を収めてきました。この環境は、データ辞書システム(DDS、OpenDDSとも呼ばれる)を中心としています。これは、開発ライフサイクル全体を完全にサポートし、他のすべてのツールをサポートする包括的なリポジトリを構築するという、初期の非常に成功した試みです。この辞書は、データベーススキーマ、ファイルおよびレコードの記述に加えて、レポートやクエリ、画面デザイン、4GLコードなどのオブジェクトを追跡します。また、要件定義レベルでは、エンティティ・リレーションシップ・モデルやプロセス・モデルなど、さまざまなモデルをサポートします。
QuickBuild 4GL は、次の 2 つの形式でパッケージ化されています。
どちらも高水準宣言型言語であり、設計パラダイムとしてジャクソン構造化プログラミングを採用しています。ApplicationMasterは、ユーザーセッションを単一の会話型プロセスで実行されているかのように扱い、ユーザーインタラクション間の状態維持の複雑さを完全に隠蔽するという点で、アプリケーション設計に対する独自のアプローチを採用しています。4GLやスクリーンデザイナーなどのツールは、データベーススキーマも保持するDDSディクショナリのみを扱うため、他の4GLではほとんど実現されていないメタデータの再利用が顕著です。
の知識や能力では評価できない様々な理由から、VME/Kは成功どころか、トラウマとなった。VME/Kは最終的に1981年に、新たにマネージング・ディレクターに就任したロブ・ウィルモットによって終了した。
{{cite news}}: CS1 maint: bot: 元のURLステータス不明(リンク){{cite book}}: CS1 maint: bot: 元のURLステータス不明(リンク)