UML モデルにおいて、制約とは UML モデル要素のセマンティクスを洗練するための拡張機構です。制約は、モデル要素が準拠すべき条件または制限をテキスト記述で表現することにより、モデル要素を洗練します。
制約の例として、{count > 10} などの条件があります。制約はシステムの設計で強制される必要があります。制約の本文で条件または制限を指定します。
制約には通常、名前がありません。その代わり、本文の内容で識別されます。一般的に使用される一部の制約は、本文の内容を反復する必要をなくすために、名前で識別されることもあります。複数の関連が 1 つのクラスに共通して関連付けられる場合、XOR 制約が適用されます。
OCL についての詳細は、Object Management Group (OMG) の Web サイトから入手可能な統一モデリング言語の仕様を参照してください。一般に、本文の構文または本文の言語プロパティーは強制ではありません。
制約は、右上隅が折り返された長方形の中に、中括弧 ({}) で囲まれたテキストで表示されます。
以下の目的で、モデルに制約を追加できます。
ソフトウェア・システムを示すモデルにおいて、他のモデリングする方法が見つからない条件または制限を制約で示します。
スピードが重視されるソフトウェア・システムのモデルにおいて、相互作用の時間の相対値または絶対値を制約で記述します。
モデルの制約は、あらゆるタイプの UML 図、およびフリー・フォームの図で表示できます。
制約を検証することができます。実施される制約の検証レベルは、検証される制約のタイプによって異なります。制約には以下の 3 タイプがあります。
制約に «metaConstraint» ステレオタイプが適用されているか、または制約がプロファイルで定義されている場合、制約の構文および式が検証されます。
«metaConstraint» ステレオタイプが適用されておらず、制約がプロファイルで定義されていない場合、制約の構文のみが検証されます。