開発手順、どういう順番でなにをやれば良いかを考えていきます。
企画に対してユースケースを考える → 付随する要件・仕様を決める
企画 → 要件 → 要件と1:Nで仕様を決めていく
企画→要件 の段階で登場した「操作」「人物」「外部システム」等全てに対して要件・仕様を決めていく
ユースケース
- 動作の種類
- 開発目標となる成果の単位と成り得る
- 例
- メールアドレスでアカウント作成できる
- メールアドレスとパスワードでログインできる
- アカウント認証により投稿ができる
要件
ユースケースを文章で書いた際に
「ユーザー」「アカウント」「サインアップ」「サインイン」という単語が出てきたとする
- 登場人物:ユーザー
- 実体概念:アカウント
- 操作:サインアップ、サインイン
この4つの概念について要件をまとめ上げる
仕様
- 全体仕様がある(ログとか)
- 1要件を満たすために複数の仕様がある
例
アカウントを作成し個人が特定できる形で記事を残すシステムを例に考える
-
システム全体
- 要件
- 第三者が閲覧できる記事を投稿できるシステムである
- 仕様
- アカウント認証により記事を投稿
- 記事の閲覧は誰でも可能
- 要件
-
投稿者
- 要件
- 投稿者は記事を投稿できる
- アカウントによる個人特定を行う
- 仕様
- 記事の投稿、編集、削除ができる
- 要件
-
アカウント
- 要件
- 投稿者はアカウントにより個人を識別・認証できること
- 閲覧時はアカウント不要
- 仕様
- メールアドレス、Googleアカウント等、個人識別できる情報から作成可能
- 作成決定時にSMS認証必須
- 要件
-
記事
- 要件
- 投稿者を特定できること
- 仕様
- 認証済みアカウントにより投稿可能
- 投稿者ID、日時を保存する
- 30日で削除(閲覧不可能)
- 要件
-
ユースケース
- メールアドレスでアカウント作成
- Googleアカウントでアカウント作成
- 記事の投稿
- 記事の閲覧
データ構造として考える要件・仕様・ユースケース
要件:仕様 → 1:N
ユースケースは独立した存在であるため、n:m やツリー構造等で表現する物ではない
システム利用時に起きうるイベントを想定し作成する
開発手順
全体要件、全体仕様にて必要な概念を登場させます
次以降の項目で概念毎にユースケースを作りつつ要件と仕様を定義していく
ユースケースは企画者側、又はそこに近い人間が考えうるだけ考えて列挙する
要件・仕様は目的・ルールとして考えてユースケースに付随する形で後付していく
実装の具体的案として、APIバックエンドであれば
ユースケース1つにつき1フォルダ、1ファイルを作成しそこに実装する
# 10のユースケースで駆動するシステムであれば次のような構成がフォルダが10個存在するイメージ
usecases/signup/usecase.py
usecases/signin/usecase.py
実装時のファイル構成
ユースケースのステップ別にファイルを分けると良いかも?
API一回呼んで済むような処理なら素直に一ファイルで良いですが。
- メールアドレスを入力
- メール送信バッチを起動
- マジックリンク認証
- 完了ボタンクリック
みたいな手順でアカウント作る場合には次のように処理順に並ぶようにファイルを作るとわかりやすい
usecases/
signup/
step001_request_signup.py
step002_send_verification_email.py
step003_verify_magiclink.py
step004_complete_signup.py
だいたいこんな感じだと思います。
適当に修正追記していきます