UML のポートには型があり、これを IBM® Rational® Rhapsody® では契約 といいます。ポートの契約は、オブジェクトのクラスに似ています。
ポートに契約がある場合、(例えば、インターフェース I)、そのポートは定義上 I を提供します。ポートに追加インターフェース (例えば、インターフェース J) を提供させたい場合、UML によれば I は J を継承する必要があります (ポートは 1 つの型のみ持つことができるため)。Rational Rhapsody の場合は、この継承は提供インターフェースのリストに J を追加した時点で自動的に作られます (これは明示的契約 I を持つポート)。UML 標準によると、I と J が無関係であれば、新しいインターフェースを契約として指定し、このインターフェースに I と J の両方を継承させる必要があります。
特定のインターフェース仕様をポートの契約として強制することが適切でない場合もあります。このような場合のために、Rational Rhapsody は、暗黙的契約 の概念を提供します。つまり、契約が暗黙的であれば、互いに関連しない提供インターフェースと要求インターフェースのリストを指定できる一方、契約インターフェースは暗黙的なままにすることを意味します (特定のインターフェースをモデル内のポートの契約として明示的に定義する必要はありません)。
暗黙的契約の使用には利点と欠点があります。ポートが、その提供および要求インターフェースのサブセットのみ提供および必要とする他のポートに接続されている場合、暗黙的契約を使用する方が自然です。しかし、ポートがまったく「逆」の別のポートに接続されている (ポートの「フィーチャー」ウィンドウのチェック・ボックスを参照) か、他のポートが同じインターフェースのセットを提供および要求する場合、明示的契約を使用するのは当然です。明示的契約の処理は、クラスとは別にオブジェクトを指定するのに似ています。または、このタイプの単一のオブジェクトまたはクラスだけがシステム内に存在するケースで暗黙的クラスを持つオブジェクトを指定するのに似ています。
高速ポートは、提供インターフェースと要求インターフェースを持たないポートです (つまり、明示的契約を持つポートは定義上契約インターフェースを提供するので契約は暗黙的です)。これらのポートは、それらを通るすべてのイベントをリレーします。高速ポートの概念は、Rational Rhapsody 固有で、ユーザーはポートを使用して高速プロトタイピングを行うことができます。この機能は、分析および設計の初期段階で契約を詳しく記述する必要がないためステートチャートを使用して振る舞いを指定するユーザーに特に役立ちます。