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

分析・設計・テストで活きる ユースケースシナリオの書き方と使い方

男爵
December 08, 2021

分析・設計・テストで活きる ユースケースシナリオの書き方と使い方

『現場から学ぶモデル駆動設計 ユースケース駆動開発をやってみた』の発表資料です。
https://modeling-how-to-learn.connpass.com/event/229330/

男爵

December 08, 2021
Tweet

More Decks by 男爵

Other Decks in Programming

Transcript

  1. コーバーンのシナリオフォーマット • 主アクター、支援アクター • 設計スコープ • 目的レベル • 事前条件 •

    主成功シナリオ(主シナリオ、基本コース) • 拡張(副シナリオ、代替コース) • 成功時保証(事後条件) • etc...
  2. 商品をカートに追加する 主アクター:買い物客  支援アクター:なし 設計スコープ:システム(ブラックボックス) 目的レベル:ユーザー目的レベル 事前条件: • 対象の商品は販売停止されていない 主シナリオ: 1.

    買い物客は「カートに追加する」ボタンを押す 2. システムは対象商品の在庫を確認する 3. システムはカートに対象商品を一つ追加する 4. システムは「カートに追加しました」というメッセージを表示する 副シナリオ: 3a. 在庫切れだった場合:  3a1. システムは「在庫切れにつきご購入できません」というエラーを表示する  3a2. ユースケースを終了する 4a. 同一の商品がすでにカートに入っていた場合:  4a1. システムはカートに入っている商品の個数を 1増加させる 事後条件: • カートの中には一つ以上の商品が入っている
  3. シナリオ記述のポイント • 設計スコープを定義する • ユーザー目的レベルにフォーカスする • 各ステップの主語を明記する • 主シナリオをシンプルに保つ •

    読み手と共通の語彙(ユビキタス言語)を使う • UIの詳細ではなくアクターの意図を書く • 事前条件を書いて冗長な副シナリオを減らす • 事後条件はステップとは別の言葉で書く
  4. 完 全かつ完 結したコミュニケーションはまったく不 可 能だ。自分では自分の意図する内容がわかっていた としても、コミュニケーションの 受 け 手 はどこかで

    ギャップを埋めなければならない。しかも受け手だけ で行わなければならない。 『アジャイルソフトウェア開発』
  5. オブジェクト指向とユースケース オブジェクト指向分析設計 • 抽象データ型が持つ振る舞い • 順序に依存しない性質を考える • ボトムアップで積み上げる • ネットワーク構造

    • etc… ユースケース • ユーザーとシステムの境界を描き出す • ステップの順序を明記する • 機能をトップダウンで分解 • ツリー構造 • etc…
  6. 機能のスライスごとの受け入れテスト 1. 主シナリオが動くところまで実装する 2. 主シナリオの受け入れテスト 3. 1つ目の副シナリオが動くところまで実装する 4. 1つ目の副シナリオの受け入れテスト 5.

    2つ目の副シナリオが動くところまで実装する 6. (以下略) 外側の1巡目のサイクル 外側の2巡目のサイクル 外側の3巡目のサイクル *これはまだ実践できてません
  7. 参考文献 • ユースケース実践ガイド • ユースケース駆動開発実践ガイド • アジャイルソフトウェア開発 • オブジェクトデザイン •

    実践テスト駆動開発 • RDRA2.0 ハンドブック • オブジェクト指向入門 第2版 方法論・実践 • Alistair Cockburn - Wikipedia • ヘキサゴナルアーキテクチャ(Hexagonal architecture翻訳)