2024年4月13日土曜日

Q.次の記述のどこがいけないのでしょうか?

 Ans.

男同士の夜勤禁止が、間違っています。「かつ」は、「全員」という意味です。この制約を言葉にしてみると、

男全員が男全員と入りをすることは禁止

という意味になります。そもそも男全員が夜勤に入ること自体があり得ないので、それを禁止にしても意味はありません。

問題は、二つあり

■同じ集合である「男」と「男」を禁止にしていること、

■全員の意味である「かつ」を使用している


ことにあります。ペア制約で、意図通りにするには、上図のように、「男」集合を分割し、「看護師男」と「介護男」とします。演算子は、「または」を使用します。「または」は、少なくとも一人以上という意味になります。この制約を言葉にしてみると、

看護師男の少なくとも一人以上が、介護男の少なくとも一人以上と夜勤をすることを禁止。

と、制約意図と合致していることが分かります。



ペア制約での記述でも間違いではありませんが、Betterな記述は、次のように列制約で記述します。
このとき、スタッフプロパティは、以下のようにします。

この記述スタイルの利点は、以下です。

ペア制約で個人名を使わずに記述可能。スタッフプロパティシートは毎月変更するので、スタッフの退職・入職等の変更等のメンテナンスはこのシートを弄ることになります。制約は時が経つと忘れてしまいますが、このシートは、全項目をメンテする、とだけ覚えておけばよい。
ペア集合1、2、3の変更はスタッフプロパティシート上で自由である。また複数人数のペア禁止も可能、使わなければブランクでもOK。列制約で制約したことは忘れてよい。メンテナンス性が良い。より汎用的であり、将来の変更のし易さが違います。
■ペア制約では、「看護師男」、「介護男」と集合を分けて記述する必要がありますが、このスタイルでは、「男」だけで記述でき、新たに集合を合成する必要がない

0 件のコメント:

コメントを投稿