SlideShare ist ein Scribd-Unternehmen logo
1 von 55
Downloaden Sie, um offline zu lesen
動詞de!! モデリング
~~描いて変形、読み上げて確認~~~~ 
セイコーエプソン株式会社
IIIITTTT推進本部ソフトウェア品質・生産技術部
ソフトウェア生産技術トレーニンググループ
萩原豊隆
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング
「動詞de!! モデリング」とは???? 
 ソフトウェアの振る舞いは動詞で表現できます。しかし今まで
のモデリング手順では、“動詞”を適切に扱えませんでした。
例えば名詞つまり目的語に着目する一方で、付随する動詞
を無視して振る舞いを漏らす。あるいは「○○制御」クラスの
ように振る舞いがすべて“制御”という言葉に隠れてしまう。
いずれも動詞の取り扱いのまずさに起因します。
 そこで目的語と共に動詞も同時にクラス図へ変換する手法を
作りました。モデリングツールを使って、目的語と動詞の組み
合わせをサクサクとクラス図に変換していきます。クラス図の
良し悪しは読み上げて確認です。単純かつ明快なので誰も
がセンスに依存せずにモデリングできるようになります。
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング2
自己紹介
担当業務::::ソフトウェア工学の導入推進
 名前:::: 萩原豊隆
 所属部門
 IIIITTTT推進本部ソフトウェア品質・生産技術部
 ソフトウェア生産技術トレーニンググループ
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング3 
 経歴
 IIIIEEEEEEEEEEEE1111333399994444 WWWWDDDDMMMMドライバ開発 
 業務用小型プリンタのアーキテクチャ設計
 社外活動
 一般社団法人ヘルスソフトウェア推進協議会
技術教育委員会オブザーバー
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング4 
出展書籍
『モデルベース開発とエンジニア育成の最前線』 
http://www.amazon.co.jp/dp/4906864066 
目次 
■開発技術編 
• 第1 章モデルベース開発の概要 
• 第2 章制御系分野におけるモデルベース開発技術 
• 第3 章MBD 適用の実例と勘所 
• 第4 章情報系/ 組込み系分野におけるモデリング 
• 第5 章複合分野にまたがるモデルベース開発 
■人材育成編 
• 第6 章MBD エンジニア育成のフレームワーク 
• 第7 章MBD エンジニア育成の実践事例 
• 第8 章MBD エンジニア育成に関するパネル討議 
詳しくはこちらを参照ください
動詞de!! モデリング
目標:::: センスに依存しないモデリングを実現する 
1. 教えられないという問題
2. 明確な手順と規準を用意する
3. モデリングの具体論
4. 成果と課題
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング5 
5. まとめ
Ⅰ. 教えられないという問題
Ⅰ....教えられないという問題 
Ⅱ....明確な手順と規準を用意する 
Ⅲ....モデリングの具体論 
Ⅳ....成果と課題 
Ⅴ. まとめ
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング6
Ⅰ. 教えられないという問題
センスに依存する部分が多いと教えられない
 “できる人”なら“できる”では業務で使えない
1. 手順を言語化できない
2. 良いと悪いとを判断できない
3. 真似して習得ではアートと同じ
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング7
1. 手順を言語化できない
「できるけど説明できない」では展開できない
 手順を言語化して、誰でも実践可能にする
お手本を見ながら
のスキル向上は
良い方法!!!! 
しかし習得スキルは
属人的な技能となり
展開できない
モデルの出典:::: 「組み込み分野のためのUMLモデルカタログ」2010年10月1日UMTP, Japan 
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング8
2. 良いと悪いとを判断できない
良し悪しをセンスの有無にしてはいけない
 規準が無いとセンスの問題になってしまう
これがダメで
これが良いは、
なぜなのか???? 
モデルの出典:::: UMTPModelingForum2010 「組み込み分野のためのモデルカタログ」講演資料
組み込み分科会副主査((((株))))エクスモーション芳村美紀氏 
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング9
3. 真似して習得ではアートと同じ
技術((((AAAArrrrtttt))))から工学技術((((EEEEnnnnggggiiiinnnneeeeeeeerrrriiiinnnngggg))))へ移行する 
 科学的な理論に基き、誰でも実践できること
必要なこと
1111.... 解くべき問題を捉える方法
• 解くべき問題====情報処理の目的を的確に捉える
• 目的を俯瞰することで、整理し本質化する
2222.... 問題からソフトウェア構造を作る方法
• 情報処理の目的を反映する構造を作る
• 目的を反映するだけでなく、良い構造にする
保守性と移植
性が高い
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング10
4. まとめ
センスに依存する部分が多いと教えられない
ポイント
1111.... 「できるけど説明できない」では展開できない
2222.... 良し悪しをセンスの有無にしてはいけない
3333.... 技術((((AAAArrrrtttt))))から工学技術((((EEEEnnnnggggiiiinnnneeeeeeeerrrriiiinnnngggg))))へ移行する
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング11
Ⅱ. 明確な手順と規準を用意する
Ⅰ....教えられないという問題 
Ⅱ....明確な手順と規準を用意する 
Ⅲ....モデリングの具体論 
Ⅳ....成果と課題 
Ⅴ. まとめ
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング12
Ⅱ. 明確な手順と規準を用意する
誰でもできる技法を用意してトレーニングする
 技法((((mmmmeeeetttthhhhoooodddd))))====手順((((pppprrrroooocccceeeedddduuuurrrreeee))))++++規準((((ccccrrrriiiitttteeeerrrriiiiaaaa)))) 
1111.... 誰でもできる手順
2. 妥当性を確認する規準
3333.... 変換の正しさを検証する規準
※ 
※定義の出典:::: 「ずっと受けたかったソフトウェア設計の授業」((((飯泉純子、大槻繁共著, 2011年)))) 
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング13
1. 誰でもできる手順
BBBBeeeeffffoooorrrreeeeからAAAAfffftttteeeerrrrへの変換手順を用意する 
 冗長であっても、一歩ずつ進める手順とする
特徴
1111.... 変換手順である
正しいものを正しく変換すれば最後まで正しい
 トップダウン的に進める手順は分かりやすい
2222.... 途中で間違いを修正できる
構造化分析と同じ
とは言え、間違いに気づき修正できることは重要!!!! 
 早期に修正しながらボトムアップ的に作り上げる
実際に役に立つ設計手法に
トップダウンのものはない
※株式会社一 
大槻繁氏の言葉
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング14
1.1 分かりやすい規準も設定する
正しいものを正しく作っているかを判断する
 間違いにすぐに気づくことが重要
気づいたら、その場で
すぐに直す
規準の種類
1111.... 妥当性確認(vvvvaaaalllliiiiddddaaaattttiiiioooonnnn))の規準
正しいことを確認する
 作るものは目的を満たしているか???? 
2222.... 検証((((vvvveeeerrrriiiiffffiiiiccccaaaattttiiiioooonnnn))))の規準
正しく行っていることを検証する
 途中で間違いが混入していないか???? 
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング15
2. 妥当性を確認する規準
読み上げたとき機能が目的を満たしている
 読み上げると、機能を表現する文章になる
正確に読み上げるため
必ず助詞を書く
「クラス図の美しさ」などで
なく、日本語で確認する
デバイスタイマー
省電力デバイスを節電する節電指示者
手順
読み上げて、クラス名、関連名、ロール名の正しさを確認する
 「タイマーは、デバイスを節電する」と読む。
 「タイマーは、節電指示者の役割で、デバイスを節電する」 
 「タイマーが節電するとき、デバイスは省電力デバイスの役割になる」
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング16
3. 変換の正しさを検証する規準
ブザー
を取得する
パネル
を鳴動する
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング17 
パネル
キー状態
を鳴動する
Keyロックを有効
にする
同じものには
同じ名前を付
ける 
「キーの状態」
と言える
ブザー
キー 
- 状態
- ロック
の状態を 
取得する
のロック
を有効に
する 
同じものを
統合する
統合で複
数の関連
ができる
情報がモレな
いように名前
を言い換える
変換前後で読み上げ結果が一致している
 読み上げ結果が同じなら変換に間違いはない
4. まとめ
誰でもできる技法を用意してトレーニングする
ポイント
1111.... BBBBeeeeffffoooorrrreeeeからAAAAfffftttteeeerrrrへの変換手順を用意する 
2222.... 読み上げたとき機能が目的を満たしている
3333.... 変換の前後で読み上げ結果が一致している
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング18
Ⅲ. モデリングの具体論
Ⅰ....教えられないという問題 
Ⅱ....明確な手順と規準を用意する 
Ⅲ....モデリングの具体論 
Ⅳ....成果と課題 
Ⅴ....まとめ 
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング19
Ⅲ. モデリングの具体論
機能一覧をクラス図へ変換する手順を作った
 要求を機能((((目的語++++動詞))))として捉える
1. 機能を定義する
2. 機能をクラス図に対応付ける
3. クラスの粒度をそろえる
4. 空のクラスを削除する
5. 本質的な関連に整理する
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング20
1. 機能を定義する
情報処理の
目的語と動詞で、目的となる機能を捉える
 機能とは、目的語+動詞である
※出典:::: 「新・VEの基本価値分析の考え方とプロセス」((((土屋裕監修、産能大学VE研究グループ著、1998年))))を元に作成
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング21 
機能の表現
<<定義の対象>>>> <<<<目的語>>>><<<<動詞>>>> <<<<制約条件>>>> 
腕時計は時刻を示す±10秒////月差
機能の割付対象機能((((言葉のモデル)))) 
記述のポイント
• 定義の対象を一般化して捉えないで、対象特有のはたらきを定義する
「を制御する」ではダメ
※
1.1 機能一覧を作る
クラス図に対応づける機能を一覧表にしておく
 構造に反映する機能をすべて洗い出す
目的語動詞制約条件
ホームタイムの都市情報を設定するアジャストボタンで
時刻をデジタル表示する12/24時モードで表示方
法を決める
時刻をアナログ表示する
アラームを鳴らすアラーム時刻の場合
ストップウォッチを計測開始する
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング22 
機能一覧の記述例
Who(だれが)、What(何を)、 
When(いつ)、Where(どこで)、 
How mach((((どの程度)))) 
How to (どのように) など 
※この機能一覧の記述例は、「ずっと受けたかったソフトウェア設計の授業」((((飯泉 
純子、大槻繁共著))))の第5555章「振舞い」の腕時計の例題を参考に作成した
1.2 機能を事前に整理する
UUUUSSSSDDDDMMMMで整理しておくと機能一覧を作りやすい
 要求に現れる目的語と動詞を一覧に反映する
USDMによる要求と要求仕様の整理例※ USDM : Universal Specification Describing Manner 
要求M01-02 複数のキーワードを組み合わせてメールを検索できる 
主に構造((((クラス図))))に
反映される機能
理由可能性のあるキーワードで確実にメールを見つけたい 
□ M01-02-1 検索したいキーワードを入力できる 
□ M01-02-2 複数のキーワードを「AND」と「OR」でつなぐことができる 
□ M01-02-3 キーワードは最大8個まで指定できる 
要求M01-03 検索されたメールをリスト表示して、そこからメールを選択し 
て表示する 
主に関数内に反
映される機能
理由該当するメールが複数あるときは内容を確認して絞り込みたい 
□ M01-03-1 検索されたメールの「Subject」を一覧で見せる 
□ M01-03-2 メールが10件を超えるときはスクロールバーを表示する 
・・・・ 
※出典:::: 「要求を仕様化する技術表現する技術改定第2222版」((((清水吉男著、2010年)))) の要求仕様の記述例
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング23
2. 機能をクラス図に対応づける
目的語はクラス、動詞は関連名にする
キー状態
を点滅する
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング24 
目的語動詞
キー状態を取得する
ブザーを鳴動する
LED を点滅する
ブザー
規準
 目的語をクラスにしている
 助詞と動詞を関連にしている
LED 
を取得する
を鳴動する
関連を記述する都合
上、空クラスを置く
目的語をク
ラスにする
機能一覧表
2.1 機能一覧から作ったクラス図
機能一覧をクラス図に対応づける
 クラスと関連を読み上げると機能一覧に戻る
便宜上の
空クラス
ホームタイムの都市
情報を設定する
時刻をデジタル
表示する
目的語が同じなら、関連
も同じクラスにつなぐ
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング25
3. クラスの粒度をそろえる
細かくなったクラスを統合する
を鳴動する
ブザー
Keyロックを有効
にする
を取得する
「キーの状態」
と言える
を鳴動する
統合で複
数の関連
ができる
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング26 
同じものには
同じ名前を付
ける 
規準
キー状態
 同じものには、同じ名前をつけている
 属性レベルのクラスを統合している
 統合したクラスの関連をつなぎ直している
ブザー
キー 
- 状態
- ロック
の状態を 
取得する
のロック
を有効に
する 
同じものを
統合する
情報がモレな
いように名前
を言い換える
3.1 粒度が適正化されたクラス図
クラスの粒度を適正化すると属性が現れる
 属性化で言葉の散らばりも、少し解消する
統合で関連をつ
なぎなおした
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング27 
属性レベルのク
ラスを統合した
「の都市コード」
等は属性として
取り込まれる
4. 空のクラスを削除する
関連をつなぎ直して、空クラスを削除する
を鳴動する
空のクラス
を削除する
を点滅する
LED 
パネル
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング28 
パネル
のロック
を有効に
する 
キー 
- 状態
- ロック
規準
の状態を
取得する
ブザー
 読み上げたとき主語となるクラスに関連をつなぎ直している
 関連が無くなった空のクラスを削除している
ブザー
キー 
- 状態
- ロック
の状態を
取得する
を鳴動する
のロック
を有効に
する 
を点滅LED 
する 
関連をつな
ぎなおす
をロックする
をロックする
主語====目的語なら
自分自身につなぐ
4.1 空クラスを削除したクラス図
空クラスを削除すると、クラス図らしくなる
 つなぎなおすときに、モレが見つかる
空クラスへの
関連が無くなる
主語====目的語なら
自分自身につなぐ
モレていた
クラスを補う
機能一覧が不完
全だと孤立する
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング29 
制約条件からも
主語となるクラ
スを特定できる
5. 本質的な関連に整理する
細かい関連はメソッドとしてクラスに取り込む
制御元
条件付
き関連パネル
の状態を
取得する
条件判定は非
公開メソッドとし
て取り込まれる
- 
- チャイルドロックを判定する() 
キー 
- 状態
- 検出
+ 検出を可能にする() 
+ 検出を不能にする() 
+ 状態を取得する() 
確認元
関連名の動詞は、
公開メソッドとして
取り込まれる
の検出を不
能にする
制御対象
制御元
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング30 
チャイルド・ロックの
場合、の検出を可
能にする
規準
パネル
キー 
- 状態
- 検出
 関連をメソッドとしてクラスに取り込んでいる
 取り込んだ関連を本質的な関連に置き換えている
を確認する
確認先
を無効にする
制御対象
制御元確認元
制御対象
ロールが異
なる関連は
確認先統合しない
5.1 関連を整理したクラス図
関連を整理すると、クラス図として完成する
 あとは洗練させるだけ!!!! 
関連をメソッドと
して取り込んだ
複数の関連が
統合された
とりあえず
自分自身への関
連はプライベート
関数になる
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング31
5.2 関連の統合
VEで活用する
図の一種
関連の統合は、機能系統図で考える
 「何のために????」と問い、上位機能を抽出する
<<目的>>>> 
ストップウォッチ
<<<<手段>>>> 
ストップウォッチ
を計測開始する
ストップウォッチ
を計測終了する
で経過時間を計る
メソッドとして
取り込まれる
関連名になる
上位機能下位機能
機能のイン
タフェース関数のイン
タフェース
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング32 
機能系統図
((何のために????))))
(参考ツール) astah* 
操作をクラス間で移動
検索によって同じ言葉がハ
イライト
 国産のUMLツール。( http://astah.change-vision.com ) 
 さくさく編集できるので動詞de!! モデリングに便利。
 例えば、、、
 属性や操作を、ドラッグドロップでクラス間移動できる。
 キーワード検索(Ctrl-F)でキーワード検索・ハイライトすることで、言
葉の散らばりが確認できる。
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング33
6. まとめ
機能一覧をクラス図へ変換する手順を作った
ポイント
1111.... 目的語と動詞で、目的となる機能を捉える
2222.... 目的語はクラス、動詞は関連名にする
3333.... 細かくなったクラスを統合する
4444.... 関連をつなぎ直して、空クラスを削除する
5555.... 細かい関連はメソッドとしてクラスに取り込む
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング34
Ⅳ. 成果と課題
Ⅰ....教えられないという問題 
Ⅱ....明確な手順と規準を用意する 
Ⅲ....モデリングの具体論 
Ⅳ....成果と課題 
Ⅴ. まとめ
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング35
Ⅳ. 成果と課題
適用事例も出始め定量的な効果も上がっている
1. C言語でのモデル駆動開発
2. 低リソース環境でのSPLE挑戦
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング36
1. C言語でのモデル駆動開発
モデル駆動開発((((MMMMDDDDDDDD))))へつなげることができた 
 C言語を使う技術者でもMMMMDDDDDDDDを実践できた 
オブジェクト指向
開発が未経験の
JEITAソフトウェアエンジニアリング技術分科会
2222000000009999年度ワークショップ発表で発表
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング37
1.1 定量的な効果
後続機種において部品化の効果も出ている
 再利用しやすい構造も作りこむことができた
1111.... 再利用性
後続機種で高い再利用率を実現できた
 コンポーネント再利用率====99991111%%%% 
※ コンポーネント再利用率====....hhhhと....ccccのペアを修正無く再利用できた割合 
2222.... 生産性
再利用性の向上が生産性の向上にもつながった
 開発工数の22220000%%%%削減 
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング38
2. 低リソース環境でのSPLE挑戦
厳しいリソース環境でも適用できた
 SSSSPPPPLLLLEEEEの基盤となるコンポーネントも作った 
JEITAソフトウェアエンジニアリング技術分科会
2222000011111111年度ワークショップ発表で発表
※SPLE : Software Product Line Engineering 
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング39
2.1 定量的な効果
トレーニング後にさらに品質と生産性が向上した
 単にモデル化するよりも高い効果がでた
1111.... 部門独自で取り組んだとき
品質悪化に歯止めができ生産性も向上した
 不具合を88880000%%%%削減、開発期間を33330000%%%%削減した 
2222.... トレーニング受講後の継続開発
コンポーネントが改善されて品質が安定した
 不具合発生率は、引き続き低く抑えられている
 生産性がさらに44440000%%%%向上した 
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング40
3. まとめ
適用事例も出始め定量的な効果も上がっている
ポイント
1111.... モデル駆動開発へつなげることができた
2222.... 厳しいリソース環境でも適用できた
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング41
Ⅴ. まとめ
Ⅰ....教えられないという問題 
Ⅱ....明確な手順と規準を用意する 
Ⅲ....モデリングの具体論 
Ⅳ....成果と課題 
Ⅴ....まとめ 
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング42
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング43 
Ⅴ. まとめ
センスに依存しないモデリングを実現する
ポイント
1. センスに依存する部分が多いと教えられない
2. 誰でもできる技法を用意してトレーニングする
3. 機能一覧をクラス図へ変換する手順を作った
4. 適用事例も出始め定量的な効果も上がっている
Tips.名前をつけて詳細を無視する
名前付けはソフトウェア工学の基本である
 黎明期の指摘をやり切ることができていない
抽象化の定義
 演算に名前をつけて、 
※E.W.Dijkstra, C.A.R Hoare, O-J.Dahl, 
“構造化プログラミング”,1972 (日本語訳1975) 
その動作の仕組みを無視すること
 データに名前をつけて、 
その構造の詳細を無視すること
ルーチンが行うことをすべて表現する。
ルーチン名には、すべての出力とすべての副作用が記述されていなければならない。
・・・「コードコンプリート----完全なプログラミングを目指して」ステーブマコネル著,,,,1111999999994444 
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング44
Tips. やり切っていないだけ
パルナスは語る
 WWWWhhhhaaaatttt aaaarrrreeee tttthhhheeee mmmmoooosssstttt eeeexxxxcccciiiittttiiiinnnngggg////pppprrrroooommmmiiiissssiiiinnnngggg 
ssssooooffffttttwwwwaaaarrrreeee eeeennnnggggiiiinnnneeeeeeeerrrriiiinnnngggg iiiiddddeeeeaaaassss oooorrrr tttteeeecccchhhhnnnniiiiqqqquuuueeeessss oooonnnn 
tttthhhheeee hhhhoooorrrriiiizzzzoooonnnn???? 
 IIII ddddoooonnnn''''tttt tttthhhhiiiinnnnkkkk tttthhhhaaaatttt tttthhhheeee mmmmoooosssstttt pppprrrroooommmmiiiissssiiiinnnngggg iiiiddddeeeeaaaassss aaaarrrreeee 
oooonnnn tttthhhheeee hhhhoooorrrriiiizzzzoooonnnn.... TTTThhhheeeeyyyy aaaarrrreeee aaaallllrrrreeeeaaaaddddyyyy hhhheeeerrrreeee aaaannnndddd 
hhhhaaaavvvveeee bbbbeeeeeeeennnn hhhheeeerrrreeee ffffoooorrrr yyyyeeeeaaaarrrrssss bbbbuuuutttt aaaarrrreeee nnnnooootttt bbbbeeeeiiiinnnngggg 
uuuusssseeeedddd pppprrrrooooppppeeeerrrrllllyyyy. 
 既にやるべきエンジニアリングはある。ただそ
れをきちんとやっていないだけ
※D.L.Parnas “ACMのフェローインタビュー”,2007 URL:http://www.sigsoft.org/SEN/parnas.html 
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング45 
Q. 
A.
©SEIKO EPSON CORPORATION 2009. All rights reserved.
(おまけ)モデ脳の問題をモデリングする
モデ脳検定に受かることはできるのか???? 
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング47 
1. 問題文
2. 機能一覧を作る
3. 機能一覧からクラス図を作る
4. クラスの粒度を適正化する
5. 空クラスを削除する
6. 関連を整理する
7. モデリングの結果
1. 問題文
モデ脳の“漁夫の利”をモデリングしてみる
 漁師が利益が得ることを示せるか???? 
蛤(ハマグリ)が日向ぼっこをしていた 
ところに、鷸(シギ)がやってきて、蛤の 
肉をつかみました。蛤も、負けじと殻を 
とじて、鷸のくちばしをはさみました。ど 
っちも離そうとせず、ずっと争っていた 
ところに漁師が来て、鷸と蛤をいっぺ 
んに捕まえてしまいました。 
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング48 
問題文
※出典:::: UMTP モデ脳検定http://www.umtp-japan.org/modules/modeno/
2. 機能一覧を作る
クラス図に対応づける機能を一覧表にしておく
 構造に反映する機能をすべて洗い出す
目的語動詞制約条件
ハマグリの肉を掴むシギが掴む
ハマグリの殻を閉じるハマグリが閉じる
シギのクチバシを挟む殻を閉じるとき
ハマグリを捕まえる争っているとき
シギを捕まえる争っているとき
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング49 
機能一覧の記述例
Who(だれが)、What(何を)、 
When(いつ)、Where(どこで)、 
How mach((((どの程度)))) 
How to (どのように) など
3. 機能一覧からクラス図を作る
機能一覧をクラス図に対応づける
 クラスと関連を読み上げると機能一覧に戻る
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング50
4. クラスの粒度を適正化する
クラスの粒度を適正化すると属性が現れる
 属性化で言葉の散らばりも、少し解消する
統合で関連をつ
なぎなおした
属性レベルのク
ラスを統合した
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング51
5. 空クラスを削除する
空クラスを削除すると、クラス図らしくなる
 つなぎなおすときに、モレが見つかる
主語====目的語なら
自分自身につなぐ
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング52 
モレていたクラス
を主語として補う
制約条件からも
主語となるクラ
スを特定できる
6. 関連を整理する
関連を整理すると、クラス図として完成する
 モデ脳解答例とは異なる結果になる
自分自身への関
連はプライベート
関数になる
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング53 
関連をメソッドと
して取り込んだ
複数の関連が
統合された
漁夫の利のモデリング結果
モデ脳解答例
※解答例の出典:::: UMTP モデ脳検定http://www.umtp-japan.org/modules/modeno/
7. 結果
モデルは作れるが、漁夫の利は見出せない
ポイント
1111.... 問題文にない機能はモデリングできない
「漁師が利益を得る」という機能は問題文にない
 問題文にない機能はモデルに表現できない
 とは言え、途中で気づく可能性はある
2222.... “コト”に関するモデリング力が弱い 
「争い」のようなコトはクラスに表現できない
 機能一覧でコトを表現しておく必要がある
©SEIKO EPSON CORPORATION 2014. All rights reserved. 動詞de!! モデリング54
©SEIKO EPSON CORPORATION 2009. All rights reserved.

Weitere ähnliche Inhalte

Ähnlich wie Modeling by Verb

Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Atsushi Kambara
 
DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発
Tomoharu ASAMI
 
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
智治 長沢
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
 

Ähnlich wie Modeling by Verb (20)

Hokkaido.pm #11
Hokkaido.pm #11Hokkaido.pm #11
Hokkaido.pm #11
 
Semat - a Japanese introduction
Semat - a Japanese introductionSemat - a Japanese introduction
Semat - a Japanese introduction
 
鹿駆動
鹿駆動鹿駆動
鹿駆動
 
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
 
iOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPracticeiOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPractice
 
[Cloud OnAir] 機械学習はこうやる!準備と実際のプロセスをお見せします。 (LIVE) 2018年5月24日 放送
[Cloud OnAir] 機械学習はこうやる!準備と実際のプロセスをお見せします。 (LIVE) 2018年5月24日 放送[Cloud OnAir] 機械学習はこうやる!準備と実際のプロセスをお見せします。 (LIVE) 2018年5月24日 放送
[Cloud OnAir] 機械学習はこうやる!準備と実際のプロセスをお見せします。 (LIVE) 2018年5月24日 放送
 
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
 
DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発
 
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive ProgrammingへのアプローチMonadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
 
Interop2017
Interop2017Interop2017
Interop2017
 
Ruby on Rails 入門
Ruby on Rails 入門Ruby on Rails 入門
Ruby on Rails 入門
 
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
 
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
 
2017 05-21.overview
2017 05-21.overview2017 05-21.overview
2017 05-21.overview
 
AIビジネスクリエーションワークショップ@東京
AIビジネスクリエーションワークショップ@東京AIビジネスクリエーションワークショップ@東京
AIビジネスクリエーションワークショップ@東京
 
Adminとうまく共存するためのApex開発Tips
Adminとうまく共存するためのApex開発TipsAdminとうまく共存するためのApex開発Tips
Adminとうまく共存するためのApex開発Tips
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
 
Deep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlowDeep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlow
 
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
 
継続的にテスト可能な設計を考える
継続的にテスト可能な設計を考える継続的にテスト可能な設計を考える
継続的にテスト可能な設計を考える
 

Mehr von ChangeVision

Astah professional スタートガイド
Astah professional スタートガイドAstah professional スタートガイド
Astah professional スタートガイド
ChangeVision
 
Astah UML スタートガイド
Astah UML スタートガイドAstah UML スタートガイド
Astah UML スタートガイド
ChangeVision
 

Mehr von ChangeVision (10)

PlantUML Plugin 紹介スライド
PlantUML Plugin 紹介スライドPlantUML Plugin 紹介スライド
PlantUML Plugin 紹介スライド
 
コミュニケーション図をシーケンス図に変換するスクリプトを3時間で書いた話
コミュニケーション図をシーケンス図に変換するスクリプトを3時間で書いた話コミュニケーション図をシーケンス図に変換するスクリプトを3時間で書いた話
コミュニケーション図をシーケンス図に変換するスクリプトを3時間で書いた話
 
テレワーク下の要件定義(RDRA:ラドラ
テレワーク下の要件定義(RDRA:ラドラテレワーク下の要件定義(RDRA:ラドラ
テレワーク下の要件定義(RDRA:ラドラ
 
astah*関西勉強会7/14
astah*関西勉強会7/14astah*関西勉強会7/14
astah*関西勉強会7/14
 
koredake modeling
koredake modelingkoredake modeling
koredake modeling
 
modeling-by-verb
modeling-by-verbmodeling-by-verb
modeling-by-verb
 
Astah professional スタートガイド
Astah professional スタートガイドAstah professional スタートガイド
Astah professional スタートガイド
 
Astah UML スタートガイド
Astah UML スタートガイドAstah UML スタートガイド
Astah UML スタートガイド
 
Astah Plug-ins 作ろう!試そう!プラグイン!
Astah Plug-ins 作ろう!試そう!プラグイン!Astah Plug-ins 作ろう!試そう!プラグイン!
Astah Plug-ins 作ろう!試そう!プラグイン!
 
Astah Community スタートガイド
Astah Community スタートガイドAstah Community スタートガイド
Astah Community スタートガイド
 

Modeling by Verb