構造制約と検証ロジック

構造制約とはオブジェクト間の関係に対してなんらかの条件をつけることで、0対1や多対1などのカーディナリティをはじめ順序や重複の有無などの制約があります。さらに「1回の購入金額が規定の金額を超えない」のように何らかのビジネスルールによって関係が制限されるようなものもあります。
これに加え、属性も1つのオブジェクトとしてとらえれば属性間の制約はオブジェクト間の制約と考えることができるので、1つのオブジェクト内の制約や、オブジェクトの属性の型や範囲チェック、一意制約なども上記と同じ構造制約として考えることができます。

ではこの構造制約をどのように識別して分析・設計し検証ロジックで利用可能にするかですが、基本的には、分析・設計クラス図を作成・洗練化する段階で追加することになります。なお、分析時などの早い段階では、エンティティの識別子の一意制約などほっておいても決まっていく暗黙的(テクニカル)な制約ではなく、ビジネス特有な制約を中心に識別して定義するのが良いと考えています。