Upgrade to Pro — share decks privately, control downloads, hide ads and more …

概念モデリングはどこまで数学的になれるか ー 集合論編その1

Hirohide Yazaki
January 10, 2020

概念モデリングはどこまで数学的になれるか ー 集合論編その1

2020/01/10(金)DDD Meet Upでライトニングトークをさせていただいたときのマテリアルです

Hirohide Yazaki

January 10, 2020
Tweet

More Decks by Hirohide Yazaki

Other Decks in Design

Transcript

  1. 所属 株式会社メソドロジック 取締役/CTO 専門 開発方法論、データモデリング、オブジェクトモデリングのコンサルティング 経歴 主に基幹システムの再構築プロジェクトにモデラーとして参画 • 某都道府県警の通信指令システム(いわゆる110番) •

    テレビ局営報システム(番組編成・CM・放送 これDDDでやりました!) • 化学工業の生産管理 • 鉄鋼メーカー合併によるシステム統合 etc. メディア • Writing Effective Use Cases(著者Alistair Cockburn)翻訳(2001年) • 最近マイクロサービス系を翻訳中(今年夏ごろ出版予定) 自己紹介 矢崎博英
  2. 3 ドメインモデル プロセスモデル システム 受注担当 顧客 : 注文 未承認 承認済

    承認 却下 却下 出荷済 出荷 トリガー 入金済 入金 トリガー 注文 注文明細 商品 会員 在庫 在庫引当 通常会員 特別会員 概念モデル 状態遷移モデル
  3. 集合 • 集合とは、いくつかのものをひとまとめにして考えた’ものの集まり’ • 数学的には“どんなものをとってきても、それがその集まりの中にあるかない かがはっきりと定まっている“ようなものでなければならない 集合の記法(個々の集合を具体的に表す記法) • 外延的記法:集合の要素を列挙して集合を表す 例){1,

    2, 3, 4, 5, 6, 7, 8, 9} • 内包的記法:条件Pを示して集合を表す{x | P(x)} 例){x | 0 < x < 10, x ∈ ℤ} 集合の例 • 自然数全体の集合(ℕ)、整数全体の集合(ℤ)、有理数全体の集合(ℚ)、 実数全体の集合(ℝ)、複素数全体の集合(ℂ) • 当社社員全員からなる集合 4 集合
  4. 元(または要素) • 集合に含まれるものを元(または要素)という • aが、集合Aの元であることを、記号で a ∈ A と書く(元でないときは a

    ∉ A) • 集合A、Bがまったく同じ元からなるとき、かつ、そのときに限りAとBは等しい(A = B) • {1, 2, 3} = {3, 2, 1}, {1, 2, 3} = {1, 2, 2, 3} 有限/無限集合 集合には元の数が有限個の有限集合と無限個の無限集合がある 単集合 1つの要素しか含まない集合を単集合という {x | 0 < x < 2, x ∈ ℤ} = {1} ※ {1} ≠ 1 空集合 要素を1つも含まない集合を空集合という {x | 0 < x < 1 x ∈ ℤ} = {} = ∅ 5 集合 集合と元 単集合 空集合
  5. 6 取引先 当社 2乗して負になる実数 - 代表電話番号 - 住所 - 社名

    <<singleton(単集合)>> 当社 取引先 2乗して負になる実数
  6. 集合Aの任意の元が集合Bの元であるとき、AはBの部分集合であるといい A ⊂ B と書く • AはAの部分集合である • ∅は任意の集合の部分集合である •

    A ⊂ B かつ B ⊂ A ならば A = B • A ⊂ B かつ A ≠ B ならば AはBの真部分集合という A∩B:={x|x∈Aかつx∈B}を集合Aと集合Bの共通部分という A∪B:={x|x∈Aまたはx∈B}を集合Aと集合Bの合併(和集合)という A - B :={x|x∈Aかつx∉B}をAとBの差という 7 部分集合・共通部分・合併・差 部分集合 共通部分 合併 差 A B A B A B A B
  7. 8 8 会員 偶数 B ゴールド会員 偶数 5の倍数 偶数かつ5の倍数 5の倍数

    偶数 5の倍数 偶数 5の倍数 会員 ゴールド会員
  8. 直積 集合Aの任意の元aと集合Bの任意の元bとの順序づけられた組(a, b)の全体からなる集合をA とBとの直積といいA×Bと書く A×B={(a, b)| a ∈A, b ∈

    B} 対応 • A, Bを2つの集合とし、ある規則Γによって、Aの各元aに対してそれぞれ1つずつBの部 分集合Γ(a)が定められているとき、その規則ΓのことをAからBへの対応という • 規則Γによってa∈Aに対して定まるBの部分集合Γ(a)を、Γによるaの像という • Γ(a)は∅でも、Bと等しくてもよい 写像 • 対応の特別なケースで任意のa∈Aに対してΓ(a)の要素数(#Γ(a))が1であるとき、そ の対応(規則)を写像という 1 2 a b c 対応 A B 10 直積集合・対応・写像 1 2 a b c (1, a) (1, b) (1, c) (2, a) (2, b) (2, c) 直積 A B Γ(1) Γ(3) 1 2 a b c 写像 A B 3 Γ(2) 3
  9. ΓがAからBへの対応であることを、以下の記号で表す Γ:A→B A, Bをそれぞれ、対応Γの始集合、終集合 という fがAからBへの写像であることを、以下の記号で表す f:A → B; a

    → f(a) Aは写像fの定義域という 対応のグラフ、写像のグラフ 対応Γ:A → Bのグラフとは直積A×Bの部分集合 G(Γ)={(a, b) ∈A×B| b ∈ Γ(a)} 写像 f:A→ Bのグラフも直積A×Bの部分集合 G(f)={(a, b) ∈A×B| b ∈ f(a)} 11 対応・写像についてもう少し 11 1 2 a b c (1, a) (1, b) (2, c) 対応ΓのグラフG(Γ)⊂A×B A B 3 1 2 a b c (1, a) (3, a) (2, c) 写像fのグラフG(f)⊂A×B A B 3
  10. 12 1 2 a b c 対応 エンジニア プロジェクト 12

    1 2 a b c 写像 エンジニア プロジェクト 3 3 エンジニア プロジェクト * * 参画 エンジニア プロジェクト 0..1 * 参画 1 2 a b c (1, a) (1, b) (2, c) 対応ΓのグラフG(Γ)⊂A×B エンジニア プロジェクト 3 エンジニア プロジェクト * * 参画 参画 ロール ロール 対応・写像は規則 対応・写像のグラフは集合 対応・写像のグラフが、別 の対応・写像の定義域にな るとき、関連クラスとして 表現する
  11. 13 関連も属性も写像・商集合・直積を定義域とする写像 貨物 航海 0..* 0..1 ブッキング貨物 <<quotient set>> 貨物

    / 同一の航海にブッキング 1 0..* quotient mapping (商写像) <<value object>> サイズ合計 0..* 1 サイズ合計 <<value object>> 積載量 0..* 1 積載量 * * <<direct product(直積)>> 積載量×サイズ合計 Boolean 1 0..* オーバーブッキングポリシー オーバーブッキングポリシー - 積載量 航海 - サイズ 貨物 * {貨物サイズの合計 < 航海の積載量 * 1.1} ドメイン駆動設計P.19
  12. 直和分割 集合Aとその部分集合系Xについて、以下が成り立つとき、XはAの直和 分割である 1. Xの全要素の合併はAと等しい 2. Xの任意の要素a, b に対して a

    ≠ bならばa ∩ b=∅ 対応・写像の制限 対応Γ:A → Bに対して、Aの部分集合であるA‘に対して対応Γ:A’ → B を考えたとき、この対応をΓのA’への制限といい、Γ | A’ と書く。写像 についても同様 14 直和分割 直和分割 1 2 a b c 対応の制限 A B Γ(1) Γ(3) 3 Γ(2) A‘
  13. 16 対応の制限 Γ|有料会員 ▶ プロジェクト ロール * 1 プロジェクトリーダ エンジニア

    * Γ = アサイン 1 対応先も部分集合になることを明示する 多重度が変わる(対応から写像に変わる) Γ|プロジェクトリーダ ▶ 会員 有料会員 購入 有料会員購入 会員 有料会員 購入 - 購入 - 会員 0..* 1 Γ = 購入 - 獲得ポイント数 有料会員購入 0..* 1 プロジェクト ロール インスタンス PG SE PL PL PG SE
  14. 集合論の本 19 参考文献 集合をベースにモデルを説明している古いオブジェクト指向の本 集合・位相入門 著者:松坂和夫 出版社: 岩波書店 ※新刊が別表紙で出ています ・「対応(スライド10)」について

    は、最近の本ではあまり説明されてい ないようですが、この本のP.22~に 記載あり。 ・「写像(スライド10)」を対応の 先の部分集合の要素が1つであるもの という説明は、この本に依った。 集合と位相 著者:斎藤 毅 出版社:東京大学出版会(2009/9/1) ・「商写像(スライド9)」について は、この本のP.46から Advanced Object-Oriented Analysis & Design Using UML 著者:James J. Odell 出版社: Cambridge University Press (1998/2/1) 著者はマーティンファウラーの師匠筋 にあたる人。また、OMG’s Analysis and Design Task Force のco-chairを16年間務めた Designing Object Systems: Object- Oriented Modelling With Syntropy 著者:Steve Cook, John Daniels 出版社: Prentice Hall (1994/11/1) 以下からPDFで読める https://www.semanticscholar.org /paper/Designing-object- systems%3A-object-oriented- modelling-Cook- Daniels/3bfd6687f6500d44b67dcc 30632b53be45753253 ※記述はOMT法