要件定義
どこからどこまでを要件定義とするか、はプロジェクトによって異なる
要件定義のモチベーション
これを知らないと「要件定義が必要だから要件定義をする」になってしまうmrsekut.icon
「要件」を定義したい
開発の目的を明確にする
開発のゴールを明確にする
どこまで作れば「完成」なのか、完成の定義を決める
責任範囲 (スコープ)を定める
作り始めてから、仕様変更の繰り返し、仕様漏れになるのを避ける
完成してからコレジャナイになるのを避ける
相互の期待値のコントロールをする
注文する側と、作る側の認識を合わせる
口頭の抽象的な議論を進めると無駄に期待が膨らむ可能性がある
高速でアニメーション盛り盛りのアプリケーションをイメージしている可能性がある
スケジュールなども加味して、この機能は含めません、などの判断を行う
流れ
要求分析を行う
要件定義を行う
AsIsモデルを参考にして、制限を整理する
人、モノ、金などの制限
これらの制限を加味して、理想のモデルの実現可能性を検討する
実現可能性が低い場合は、以下を修正して更新する
ToBeプロセスモデル
ToBeデータモデル
この際に、要求、要件、機能を対応付ける
提案
要求の検討の結果を注文者に伝える
代替案の提案
NGである理由を伝える
AsIsから、ToBeへ至るプランを作成する
どうやって移行するかを考える
対象とするスコープを確定させる
機能一覧、非機能一覧を作る
要件定義に含める項目の例
システム化の目的
システムの概要
その経緯、理由
システムの構成図
業務フロー
ユースケース図
機能要件
機能一覧、機能の詳細
入出力要件
入力データ一覧、詳細
出力データ一覧、詳細
e.g. 帳票、UI
非機能要件
セキュリティ要件
品質・性能要求
導入・移行計画
スケジュール
ステークホルダー関係図
人員の体制
#WIP
https://speakerdeck.com/haru860/yao-jian-ding-yi-tohasomosomohe-ka
要件定義はWhat
https://tracery.jp/articles/entry/purpose-and-goal-of-requirements-definition
要件定義のゴールは
「設計プロセスを円滑に進めるための
明確で具体的なインプット
を提供すること」
要件定義書って誰が読むん?
非エンジニア?エンジニア?
それによって前提をどこまで説明するかが大きく変わる
作る手順
例えば、最初に業務フローを書いて、全体感を掴んだ後に詳細に進めるとか
例えば、明日から実装を始めよう!となった時に、
ここの仕様決まってないじゃん!になるのを避けるようにイメージするとか
要件定義に時間を掛けすぎても仕方がない
どこかで線を引いて、そこまでにできる要件定義をしてしまい、
その後は、基本設計などを進めていく中で、詳細な要件定義をする
要件定義とはこういうもので、
後から変更すると大変なんだよ、ということを
ちゃんとユーザーと共有しておく必要がある
要件定義の段階で
要件化できなかった要求がある場合は、どういう制約があったのかを明確にする
よくある制約の例 ref 『要件定義のセオリー』.icon p.105
人: 技術者がいないなど
モノ: インフラ、環境、ツールが用意できないなど
金
時間
技術的困難
技術的制約
現状との乖離
要件定義書
用語を定める
表記ゆれしないように
導出項目を明記する
税額 = 金額 * 消費税のような値を扱う時、UI上では、税額と金額は現れるが、消費税は現れない
ここで要件定義時に、消費税の存在をちゃんと明記しておく必要がある
UIとしてのエラーメッセージ
異常系もちゃんと定義する
UI → 機能 → データの順に考える
画面遷移図を書く
画面内の表示項目、入力、操作
どういうイベントによって別の画面に遷移するのか
機能
出力、処理
でーた 
ER図
ワークセットを階層構造にして表現すると良いかも?
定義すべき要件の内容
ソフトウェアを完成するために必要な情報
UI, 機能、データ
要件定義することで、ソフトウェア開発プロセスにおける要件定義後の工程に対する理解を深める
企画書
全体像
利用ttする実装技術(要求一覧)
実現したいこと一覧
行動シナリオ
概念データモデル
ラフイメージ、モックアップ
画面遷移図
項目の説明
機能の入出力定義
機能の処理定義
統合ERD
why→what→howの順序で設計書には書くと理解しやすい
要件定義より前に行うこと
企画
要求の一覧化と整理
企画書 (決定報告書)の作成
全体像を描く
ユーザーの種類
ステークホルダー
各ユーザーが新システムとどういう関わり方をするか
を俯瞰したもの
連携するシステムも書いておく
連携先のシステム側の修正も必要になるかもしれない
どういうデータをやり取りするかも書いておく
システム内のモジュール同士の関係なども書いておく
実行する順序(フロー)がある場合、それも考慮する
『はじめよう! 要件定義 』 chapter 7,8
要求分析
雑なER図を書く
詳細なものは要件定義内で行う
モデルベース要件定義というものがあるらしい
RDRA