Uniface

Uniface（ユニフェイス）は、携帯、メインフレーム、Web、SOA、Windows、JEEとNETの環境で動作するエンタープライズアプリケーションを開発、実行するプラットホームである。Unifaceアプリケーションは、データベースとプラットホームに依存しない。Unifaceで作成されたアプリケーションは主なデータベース製品と統合を可能にする“インテグレーションフレームワーク”を提供する。
例えばメインフレームの製品（CICS、IMS）、Webサービス、SMTPやPOP電子メール、LDAPディレクトリ、.NET、C、C++プログラムとJavaとの統合を実現する。そして、Windows、Windows Mobile、Unixや（いろいろな）Linux、IBM iSeries/AS400、z/OSやVMSの下で稼動する。
Unifaceは、企業に不可欠なビジネスプロセスもサポートしており、重要な企業データを維持する複雑なシステムで利用が可能。
例えば、Webオンラインショッピング、金融取引、給与管理や在庫管理です。現在Unifaceは30カ国以上の数千社で使われている。そして、インストールベースでは数百万ライセンスにも上る。作成可能なUnifaceアプリケーションは、クライアント/サーバアプリケーションからWebアプリケーションの範囲に及ぶ。そして、データエントリー処理から、ワークフロー業務もカバーし、同様にイントラネット及び、インターネットを利用したポータルからアクセスも可能。Unifaceは1984年Inside Automationによってオランダで誕生し、後にUniface B.V.へとなる。そして1994年 デトロイトに拠点を置くCompuware社によって買収される。2014年には Marlin Equity Partners の買収により、オランダ アムステルダムに本社を構え、ワールドワイドにオフィスを持ったUniface B.V.へと戻る。

Application development（アプリケーション開発）

Uniface開発はモデルドリブンとコンポーネントベースを基本に構築される。データ構造、ビジネスルール及びアプリケーションのデフォルト動作は、アプリケーションモデルから反映される。モデル定義はコンポーネントによって受け継がれ、再利用することも可能。 そして、コンポーネントに固有の機能を追加して、テンプレートは生産性を向上させ、モデル定義を利用することで、システムの一貫性を実現する。

Application Model（アプリケーションモデル）

アプリケーションモデルは、参照一貫性と共にエンティティ(テーブル)、フィールド、キー(インデックス)とリレーションを定義する。モデル内のエンティティとフィールドは、一式のトリガーとプロパティを持っている。 ビジネスルールは事前にアプリケーションモデル上のプロパティの設定を行い、アプリケーションモデル上のトリガーにProcコード（Unifaceの手続き型言語）を記述する。
トリガーはコードにとっての格納場所。トリガーがユーザの行うシステムイベントを受け付ける。例えば、<Occurrence Gets Focus>や< Read>、< Leave Field>というトリガーが存在する。トリガーは他にチェック機能を記述したり、関連チェックを行うトリガーも存在する。
アプリケーションモデルレベルのトリガーの使用は、ビジネスオブジェクトを集約するのに利用される。故に物理データ構造から論理的にロジックを分離が可能になる。一箇所にシステム全体の標準の動作を記述することが可能になり、再利用性の高い、3層アーキテクチャのアプリケーションを迅速に作成することが可能になる。

Components （コンポーネント）

アプリケーションモデルで記述されたオブジェクトはコンポーネントで再利用される（継承される）。開発者は、アプリケーションモデルから、画面の部品をレイアウトキャンバス（画面レイアウト作成用の画面）に描画するか、コンポーネントストラクチャーのツリーにオブジェクトの挿入を行い、作成するコンポーネントにオブジェクトを配置する。アプリケーションモデルにないオブジェクト（例、制御部品、フィールド、メニュー、コンポーネント変数）を加えることもできる。
アプリケーションモデルに定義されたプロパティとトリガーはコンポーネントにコピーされることによって継承される。個別の機能を提供するために、コンポーネント単位に変更することは可能。これは、アプリケーションモデルとコンポーネントの継承を断つことになる（継承をアプリケーションモデルの内容に戻すことは可能）。　アプリケーションモデル上に記述したコードもしくは、プロパティをモデル上で変更した時は、各コンポーネントに保持しているすべてのオブジェクトの定義を更新するために再コンパイルが必要になる。

Uniface Repository（リポジトリ）

Unifaceは、アプリケーションモデルの再利用を目的として、データベースにメタデータ（コンポーネント定義、コンポーネントレイアウト、PROCコード、その他）を維持する。リポジトリはUniface 開発環境を経由しアクセスされ、リポジトリ整合性（機密性）を守る。しかしながら、リポジトリ構造についてドキュメント化されており、例えば(推薦されていないけれども)レポート作成の為に直接リポジトリとのインターフェースを可能にする。 集中化したリポジトリを利用することで、ソフトウェア開発チームで共有される。（チームビルディングが可能）Unifaceは、Microsoft Common Source Code Control Interfaceをサポートするソースコードコントロールシステム（SCCS）と連携が可能。

Application deployment（デプロイメント）

Unifaceアプリケーションは、コードを変更することなく、携帯からメインフレームまでのプラットホームで展開（運用）することが可能。コンポーネント（スタートアップシェル、メニュー、ツールバーパネル、グリフ、グローバルPROC、インクルードPROC）は圧縮ファイルにパッケージ化され、全てのプラットホームに配布が可能なランタイムオブジェクトにコンパイルされる。ランタイムオブジェクトは、バーチュアルマシンとプラットホーム固有のインタプリタを使用し実行される。(後に、Javaと他の言語は、この方法でUnifaceに続いた) Uniface Virtual Machineが存在している環境なら、1台のマシンの上でコンポーネントをコンパイルして、別の環境で実行可能。

Database Connectivity （データベース接続性）

Unifaceは、データベースコネクタ（ドライバ）を利用して、サポートするさまざまなデータベースとファイルシステムにアクセスを行う。DBMSコネクタは、Unifaceデータフォーマットを特定のデータベースに最も適当したフォーマットに変換しマッピングする。実行時にデータベース特有の拡張機能を利用するパラメータを設定することも可能（利用しなくすることも可能）。データベースコネクタが対応可能であれば、異なるデータベース間でデータを変換することも可能。UnifaceはAPI（Database Connector Interface）を提供します。これをカスタマイズすることで、データベースコネクタを作成することができる。

Licensing（使用許諾）

使用許諾はCompuware Distributed Licenseマネージャ(DLM)を利用して管理される。クライアント環境にライセンスを提供するサーバライセンス管理システム。この機能により、ローカル環境にライセンスを保持する必要をなくする。