アジャイル開発の第一人者である平鍋 健児さんが、UMTP(UMLモデリング推進協議会)のセミナで行ったプレゼンテーションがとても良かった。
(日本語)
アジャイル開発が導入されている中で、どのようにモデリングを使っていったらいいのか、というお話である。現在、アジャイル開発の主流となっているスクラムでも、ほとんど言及がされることがないモデリングに関して、とりあげています。
ここでは、ずばり、平鍋氏がアジャイル開発において、モデルをどうのように扱うのかを、具体的に明確に説明しているので、まとめてみた。
モデルは、Keeps と Temps にわける
アジャイルにおいては以下のふたつのモデルを使い分けることが大事である。
- Keeps: ”財産として継続的に更新して維持するモデル”
- Temps: ”効果的にコミュニケーションを行うために使う臨時的なモデル”
https://umtp-japan.org/pdf/agile/report/20140224_agile_modeling_1.pdf
この”Keeps”と”Temps”をわけるアイデアは、本当に使えるアイデアである。
これは、モデルだけに限らず、あらゆるソフトウェア開発で作成する文書に言えることであると思う。常に最新の状態を維持し続ける”Keeps”、その場の関係者間のコミュニケーションのみに使われる”Temps”。多くの現場では、本来、”Temps”でよいドキュメントをKeepし続けようとするところに悲劇が起きるのである。
では、”Keeps”するモデルには何があるか?
以下の3つである。
- Architecture: 全体システムの構造を表します。パッケージ図、クラス図が使われることが多い。
- Domain Model: アプリケーション動作の問題領域に対する概念的な分類法を説明します。クラス図、ER図が使われることが多い。ただ、用語集を作るだけでもいい、と平鍋氏は述べています。ただ、その場合でも、日本語のようなローカル言語の他に英語も併記するように述べています。英語の表記がクラス名、エンティティ名になっていくので、翻訳揺れが発生しないようにするためです。
- Key Use Case: ユーザの観点でシステムを表現します。ユースケース、シーケンス図、コミュニケーション図が使われることが多い。Key Use Case は、アーキテクチャを串刺しする、代表的なものを選び、それを維持していきます。
https://umtp-japan.org/pdf/agile/report/20140224_agile_modeling_1.pdf
”Temps”は、どうやるのか?
これは、”Keeps”のモデルを印刷して、その上に議論しながら、書き込んでいく、という方法でモデリングすることができます。または、ホワイトボードに書くこともできます。
結論
アジャイル開発だからといって、モデリングをすっ飛ばしていいわけではない。かといって、スクラムは、モデルに関しては、何も教えてくれないのである。その”ミッシング・リンク”を埋める平鍋氏の公演および資料は、ソフトウェアエンジニアにとっての朗報であると思う。私も、KeepsとTempsのモデリングを現場で実践していけたら、と思う。
参考
アジャイル時代のモデリング
資料は、以下。
https://umtp-japan.org/pdf/agile/report/20140224_agile_modeling_1.pdf
https://www.infoq.com/jp/articles/kenji-modeling-agile/
https://astahblog.com/2016/10/26/modeling-in-the-agile-age/
参照文献
ここでは、平鍋氏の”アジャイル時代のモデリング”で紹介されている書籍を記載する。
上記の日本語版は以下。
以下、Volume 1
Volume 2
Volume 3
Volume 4
Volume 5
日本語訳は、Volume 1のみでているようだ。
DDD本
DDD本 日本語版
英語版のみのようだ
英語版のみのようだ