仕事でやっているシステム開発。要件定義をやってみた。
対象業務はシステム開発そのものとしています。
1 前提
・Angular + Web APIのwebシステム開発→モデルに値を入れてやりとりする
・Web API は C#で作成
・EntityFrameworkを採用
・EntityFrameworkはDBファースト
↑改善対象となる業務はなんなのかを明確にする。
2 課題
・コーディングが定形になっているので、プログラマに単純作業をさせてしまうことなる
・慣れてない人が書くとコードにバラつきが発生する
・設計書からコードを起こすときに、間違いが発生する
・モデルファーストを採用していないので、定義書からテーブル作成クエリを作る必要がある。
↑前提で問題になっている部分はなんなのかを明確にする。
3 対策
・設計項目をシステムに登録し、登録されている値をもとにコードと設計書を生成する。対象成果物は以下のとおり。
・モデルの設計書、C#のコード、タイプスクリプトのコード
・APIの設計書、C#のスケルトンコード、タイプスクリプトのコード
・DB定義書と生成クエリ
↑課題を解消するための対策。無駄なことをやっていないか、業務の見直しを考えるのが先。システム解決はあくまで手段のひとつ。
とはいえ、ユーザーから頼まれるときは、システム解決しかないと結論づけているケースが多い。そこをあえて踏み込むか、踏み込まないかはエンジニアの判断。
4 アクターの抽出
・システム管理者:システムを管理する人
・プロジェクトマネージャー:成果物を確認する人
・開発者:開発する人。設計者、プログラマ、外注含む
↑業務にかかわる人を抽出する。システムが決まっているなら、システムを使う人を抽出する。
5 ユースケース
・モデル、APIの値を登録する - 開発者
・出力したコードをソースに反映する - 開発者
・設計書を出力する - 開発者、プロジェクトマネージャー
・プロジェクト領域を作成する - システム管理者
↑アクターが何をするかを書く。上記例は箇条書きだが、ユースケース図を使ったほうがベター。
こんな単純なこと書かなくてもわかるだろうと思うかもしれないが、こんな単純なことでもユーザー、プロマネ、開発者間で認識がずれていることがある。
6システムフロー
・モデル、APIの値の値を登録する
1.プロジェクトを選択する - 開発者
2.画面設計書をもとに項目を登録する - 開発者
3.画面設計書のイベントから呼び出すAPIを定義する - 開発者
4.モデルをもとにDB項目を定義する -開発者
5.内容をレビューする -プロジェクトマネージャー
・出力したコードをソースに反映する
1.画面に表示されたコードをコピーする - 開発者
2.ソースにペーストする - 開発者
3.テーブルの場合はコピーしたスクリプトを実行する。 - 開発者
・設計書を出力する - 開発者、プロジェクトマネージャー
1.設計書を出力する - 開発者、プロジェクトマネージャー
2.納品物件としておさめる - プロジェクトマネージャー
・プロジェクト領域を作成する - システム管理者
1.プロジェクトの作成依頼をする - プロジェクトマネージャー
2.プロジェクト領域を作成する - システム管理者
3.ユーザーを追加する - システム管理者
4.プロジェクト情報を登録する - プロジェクトマネージャー
↑ユースケースごとにシステムフローを作成する。箇条書きではなく、システムフロー図を作成する。だれが何をするかと、画面を抽出する
7 画面機能一覧
・モデル登録画面・・・モデルの登録とコード出力
・API登録画面・・・APIの登録とコード出力
・DB項目登録画面・・・DBの登録とコード出力
・モデル一覧画面 ・・・モデルの一覧と設計書の一括出力
・API一覧画面・・・APIの一覧と設計書の一括出力
・テーブル一覧画面 ・・・テーブルの一覧と設計書の一括出力
・プロジェクト選択画面 ・・・プロジェクトの選択とログインユーザー情報の入力
・ホーム画面 ・・・選択後のTOP画面。プロジェクトの説明とメニューを表示
↑システムフローで抽出した画面の一覧。どの画面にどの機能を持たせるかはエンジニアのセンス。画面を抽出したら具体的なイメージを作成する。
8 システム方式
・開発者に「外注」が含まれているので、Webシステムとする
・Azure PaaS(web Apps + SQL Database)
・開発言語:Angular + Web API (C#)
↑どういった構成でシステムを組むのか。開発言語まで指定しないと外注手配できない。
今回の「要件定義やってみた」はシステムを使った特定の業務の改善になります。プロジェクトの特性や規模によっては現状運用フロー、新運用フロー、費用対効果、開発計画、要員計画、セキュリティ要件などが必要になってきます。