基礎検討(要件定義〜案件立ち上げまで)の進め方
0.はじめに
システム開発していく工程の中で、最も上流に位置する工程に、「要件定義」というものがあります。
ユーザーがシステムに求めるものや、システムに期待される役割や効果を明確にし、それを実現するために必要な機能や性能等の要件を定義していく、システムの方向性を左右する非常に重要な工程です。
システム開発が成功するか、失敗するかは、この要件定義にかかっているといっても過言ではありません。
今回は要件定義から案件立ち上げまでを、基礎検討とし、その進め方を簡単にまとめました。
1.基礎検討の流れ
基礎検討で必要な作業をざっくりまとめると、以下の通りです。
今回は、特に重要な①〜②にポイントを絞って説明します。
・①:要件定義
・②:方式設計
・③:プロジェクト計画書の作成
・④:プロジェクト計画書のレビュー(関係部署、ステークホルダー向け)
・⑤:稟議承認(費用精緻化、立ち上げ、申請/回付)
2.要件定義
ユーザーのあいまいな要求から、具体的に何ができて(機能)、何ができないのか(制約)を明確にし、ユーザーに提示(確認)する作業フェーズです。
具体的には、「機能要件」と「非機能要件」を取り決め、SLAに内容をまとめます。
このSLAの内容に沿って、以降のフェーズを進めるため、手戻りが発生しないようにユーザーと意思疎通を図りながらまとめていくことが重要です。
特に、非機能要件はユーザーから直接的な要求として提示されないので、あいまいになりやすく注意が必要。
非機能要件の詰めが不十分なままシステム構築を進めると、後工程で重大な問題となり結果的に「予算オーバー」「作業の手戻り」「プロジェクトの遅延」を引き起こし、失敗プロジェクトに直結してしまいます。
2.1.機能要件の抽出
業務機能上の「実現したいこと」に基づいて「仕様」を決めます。例えば、「〜を画面から入力する」や「〜を帳票に印刷する」などが該当します。
ユーザーから伝えられる「実現したいこと」は非常に抽象的であり、さらに相反する要求を含みます。そういう中から、ユーザーの要求を特定して仕様化したり、目標の数値化を行います。
2.2.非機能要件の抽出
機能や仕様には現れないシステム要件。具体的には「性能」「信頼性」「拡張性」「セキュリティ」「運用性」などです。
非機能要件は、一般にユーザーが具体的に提示するのは非常に困難なので、システム担当者側から非機能要件を一つひとつ具体的に提案し、ユーザーに必要な要件を選択してもらうようにしましょう。
非機能要件は見えにくいので、非機能要求グレードや社内にあるフレームワークなどを参考にするといいです。
2.3.SLA(Service Level Agreement)の作成
Service Level Agreementの略で、「サービズ合意書」の意味。
内容として、システムのサービス内容と範囲、品質水準の明確化などがまとめられ、ユーザーとシステム担当者間で認識を合わせるものです。
文書としてまとめることで、抽出した「機能要件」と「非機能要件」を見える化し、ユーザーから合意を得るようにします。
3.方式設計
要件を確定したら、システムのアーキテクチャを設計します。アーキテクチャの設計は、以下で示すように大きく3つに分けて設計を進めましょう。
- アプリケーション・アーキテクチャ
- インテグレーション・アーキテクチャ
- システム基盤アーキテクチャ
併せて、運用シナリオも作成し、システムの評価をします。運用シナリオは、表や文書だけで表現されがちな(静的な)設計を、「動く仕様」にしてくれます。
代表的な業務や運用の動きをシナリオ化することで、性能設計や運用設計のほか、テストフェーズのテストパターン作成にも役立ちます。
3.1.アプリケーション・アーキテクチャ
業務の具体化である機能要件を実現するもの。業務機能、データ、入出力(画面や帳票)などを指します。
3.2.インテグレーション・アーキテクチャ
内部システム間および外部システム間における統合や連携を実現するもの。主にインターフェース設計や接続先システム一覧などを指します。
3.3.システム基盤アーキテクチャ
主に非機能要件を実現するもの。性能設計、信頼性設計、運用設計、システム構成などを指します。
3.4.運用シナリオ
システムを実際に稼働した場合を想定し、運用シナリオを作成します。運用シナリオは、業務観点だけでなく、非機能要件を検証するための運用シナリオも忘れないようにしましょう。
例えば、Webシステムが複数のアプリケーションから成る場合、どのアプリケーションの重要度が高く、処理のピーク時にはどのアプリケーションのどの処理を優先的に処理しなければならないかなどです。
この運用シナリオが、後の性能設計や信頼性設計やテストフェーズで参考になります。
4.まとめ
要件定義はプロジェクトにおける最上流工程の1つで、システム開発において最重要と言っても過言ではありません。
ユーザーとシステム担当者間で密なコミュニケーションをとりながら、ユーザーの要求に沿った要件定義を作ることができれば、プロジェクトがうまく進行し、最適なシステムも作り上げることができるでしょう。
要件定義の重要性や進め方を学び、システム開発を成功に導きましょう。
Discussion