見出し画像

概念モデリング ~ 虎の巻

※ 本ドキュメントの利用は、https://github.com/kae-made/kae-made/blob/main/contents-license.md に記載のライセンスに従ってご利用ください。
※ 本稿は、Knowledge & Experience への許可なく、本稿のPDF、XPS、スクリーンショット等による電子文書化、紙への印刷等を行い、第三者に提供する行為は、一切禁止とさせていただきます。

https://github.com/kae-made/kae-made/blob/main/contents-license.md

はじめに

デジタルトランスフォーメーションやデジタルツインを活用したシステムの構築では、IT システム上に、現実世界の写しが必要です。現実世界の写しは、ビジネスで扱う様々なデータ群をモデル化した、いわゆる、概念モデルが無いとそもそも成り立たないコンセプトです。
Art of Conceptual Modeling」で解説している概念モデリングの技法によって、デジタルトランスフォーメーション、デジタルツイン、メタバースの根幹となる、ビジネスを可視化する概念モデルが作成できます。概念モデルが出来上がると、「Technique of Transformation」で解説している、”概念モデルからの変換による実装”の技法により、ビジネスを支援する IT システムの基盤構築に必要なコード一式を、自動生成で得ることができます。この開発プロセスは、ビジネスでどんな価値を提供したいかが明確になるだけでなく、従来型の開発方法と比較して、規模が大きくなればなるほど開発効率は上がり、嫌われがちなベンダーロックインの回避や、IT システムが提供する機能を変えることなく、その時々の旬で進化した実装技術への移行も可能です。
概念モデルからの変換による実装”は、その仕組みから判るように、現実世界のビジネスでやりたいことを正確に、かつ、忠実に写し取った、”概念モデルが作成できること” が前提です。しかし、残念ながら、そんな素敵な概念モデルを実際に作ることができるスキルを持った人は極めて少数なのが現実です。概念モデリングの基本を、「Art of Conceptual Modeling」で解説してはいますが、このドキュメント群を読んだだけでは、実用に足りうる概念モデリングのスキルが身につくはずもありません。
筆者が紹介する概念モデリングの技法体系は、Shlaer-Mellor 法(現在は eXecutable & Translatable UMLに改称)をベースとしています。筆者は、92年に、この技法に出会い90年代終盤から2000年代初めにかけて、実製品開発でこの技法を実践していましたが、実用に足る概念モデルが作れるようになるまで5年以上かかってしまいました。
当時は、関連する技術情報も概念モデルのサンプルも少なく(今もほぼ皆無ですが:苦笑)、実地に試しながら自らコツをつかんでいくしかありませんでした。加えて、当時はオブジェクト指向開発方法論普及の黎明期で、様々な人が様々な主張を展開していて、攪乱された事も習得が延々と進まない理由の一つでした。
概念モデリング、及び、概念モデルからの変換による実装に取り組み始めてから、気が付けば早30年、スキル獲得後の社内コンサル的な技法の普及活動や、マイクロソフト在籍中のエバンジェリストとしての普及啓発や実案件支援おいて、技法の活用を続けてきました。
これまでの活動で得た知見の中から、「これだけ知っていれば、実用に足る概念モデルが作成できるパターン」と「パターン適用時のコツ」を本稿にまとめてみました。

パターンを覚える

様々な主題領域に対して概念モデリング作成の経験を積んでいくと、モデル化対象をパッと見ただけで概念モデルのあらましが頭に浮かんでくるような回路が脳味噌の中に出来上がり、頭に浮かんだ概念情報モデルを図にし、詳細を肉付けして、実用レベルのモデルを作成できるようになるものです。しかし、昨日今日取り組み始めた初学者にそんな芸当ができるわけもありません。
モデル化対象の概要を書いたテキストを漫然と眺めていても、適切な概念クラスやその特徴値、Relationship を抽出できるものではありません。それは上級者にとっても同じです。
概念モデリングの上級者は、モデル化対象となる制御やビジネスの流れを絵で描いてみることから始めます。絵心が無くても構いません。絵が下手でも構いません。主題領域に現れる、ヒトやモノ、役割、出来事、それらの時系列的な流れを絵で描いてみます。
モデル化対象の主題領域は様々なのですが、順番に並んでいたり、階層化されていたり、限られた資源を必要としたり…と、多くの主題領域に共通して現れるパターンがあります。上級者は、それぞれのパターンについて、概念情報モデルでどう使えばよいか知っていて、パターンを当てはめながら、概念クラスや特徴値、Relationship を抽出して概念モデルを作っていきます。初学者も、よく使われるパターンを覚えれば、より早く概念モデリングのスキルが向上するはずです。

パターンには、データの基本構造に関する、概念情報モデルに関するパターンと、概念情報モデルだけでなく、状態モデルも伴うパターンが存在します。実用に足りうる実践的な概念モデルを作成するには、後者のパターンも必須になります。
本稿では、それぞれのパターンについて、以下の順番で、解説していきます。

  • 順番に並んでいる

  • 階層化されている

  • 仕様が決まっている

  • 細分化されている

  • 同一概念インスタンスのマイグレーション

  • 限られた資源の割当て

  • 中断・再開・中止

これらのパターンのうちの幾つかは、「概念振舞モデル」でも紹介しているので、併せて読んでみてください。
また、既に、公開済みのチュートリアルや解説で、

の3つのサンプルモデルを公開しています。これらも、本稿で解説するパターンを駆使しているので、読み込んでみて使われているパターンを発見してみてください。

モデルは、xtUML(eXecutable and Translatable UML)の専用ツールの BridgePoint で描いています。BridgePoint の使い方は、「ビジネスをモデル化する ~ BridgePoint を使ってみよう」をご覧ください。

順番に並んでいる

注文の順次受付やラインに順番に並んだ工作機械、決まった一連の手順、等々、様々な主題領域で、”順番に並ぶモノ”、あるいは、”順序付けられたモノ・コト”がでてきます。並ぶモノ、あるいは順序付けられた概念インスタンスを表現したい場合は、

図1. 一番単純な「順番に並んでいる」モデル

ここから先は

31,045字 / 38画像

¥ 5,500

この記事が気に入ったらサポートをしてみませんか?