ざっくり要件定義の目的とは?
- 2024.04.27
- programming
システム開発の上流工程を学びたいと思いUdemy等の動画教材や、書籍で学習をしています。
そこで、出てきたのが「要件定義」。
要件定義ってなに?なんで要件定義が必要なの?
この辺りの疑問をざっくりまとめました。
要件定義について
要件定義とは何か?
要件定義は、プロジェクトやシステムの成功のために必要な機能や特性を明確に定義するプロセスです。これは、プロジェクトの計画段階で行われ、関係者が期待する成果や要求を明確化するために重要です。
システム開発の全体像
画像引用:https://webrage.jp/techblog/v_shaped_mode/
要件定義は全体像の最初の方で行います(上流)。
そして、上記の画像からシステムテストと対になっています。つまり、システムテストを行うときに、要件定義に照らし合わせてにテストが行われるのです。
システムテストの結果が要件定義に合っているかという観点でテストされるということです。
要件定義はなぜ必要なのか?
結論:ビジネスサイドとエンジニアサイドの共通認識を作るため。
① システム開発の登場人物
システム開発には大きく分けて二人の登場人物がいます。ビジネスサイドとエンジニアサイド。
ビジネスサイドはシステムを発注する側(システムの利用者)。エンジニアサイドは、システムを受注し製作する側。
そして、この両者の立場の違いから、それぞれの思惑が異なるという前提があります。具体的には以下に見ていきます。
② ビジネスサイドの思惑
ビジネスサイドの考える良いシステムとは、ユーザーにとって使いやすいということ。
・機能性
ソフトウェアが提供する機能がユーザーの要求や期待に適合しているか。
・信頼性
ソフトウェアが安定して動作し、予期せぬエラーや障害を引き起こさないか。
また、障害が起こっても復旧が早いか。
・使用性
ソフトウェアが利用者にとって使いやすいかどうか。
③ エンジニアサイドの思惑
エンジニアサイドの考える良いシステムとは、日々のメンテナンスが楽になるということ。
・効率性
ソフトウェアがリソースを効率的に利用し、処理を迅速かつ効率的に行うか。
・保守性
ソフトウェアが変更や修正を容易に受け入れ、保守が容易であるかどうか(コードの読みやすさ等)。
・移植性
ソフトウェアが異なる環境やプラットフォームに移植され、正常に動作するかどうか。
参考:国際規格 ISO9126
④ 両者の共通認識を作る
上記のように立場の違いから異なる思惑が生じます。
そのため、システム開発の成功のためには、両者の認識を合わせる必要があります。
そこで、要件定義によって、必要な機能や特性を明確に定義する必要があるのです。
要件定義のゴール
要件定義の目指すべきゴールは、
ビジネス側の「どんなシステムが欲しいのか?」をエンジニアに伝えること。
例えば、次のことを明確にしてエンジニアサイドに伝える必要があります。
- プロジェクトの目的や、システムでどんな課題を解決したいのか?
- どんな機能が必要なのか?
- いつ、誰が、なんの為にシステムを使うのか?(ユースケース)
要件定義の失敗例
要件定義の失敗例として、以下のようなことがあります。
・エンジニアサイドに丸投げ
ビジネスサイドが「ざっくりとこんな感じでシステテムを作って!」と依頼してしまい、要件定義もエンジニアサイドに任せてしまうパターンです。
エンジニアサイドからしたら作っては見たものの、ビジネスサイドからこんなはずではないと言われてしまうケースが多いです。
・要望を全て盛り込む
ビジネスサイドで出た要望を全てエンジニアサイドに伝える場合です。
そもそも、システム開発には予算と期限があり、全ての要望を実現することは不可能です。
また、仮に全ての要望を受け入れてシステム開発をしたところで、「本当にその機能使うの?」と不要な開発に労力と時間とお金をかけてしまいます。
要件定義作成のプロセス
①関係者の特定
最初に、プロジェクトに関係する全ての関係者を特定します。
これには、エンドユーザーや顧客、プロジェクトマネージャー、開発チーム、システム利用者などが含まれます。
②要件の収集
関係者から要求や期待を収集します。
これは、ユーザーインタビューやワークショップ、アンケート、既存の文書やシステムのレビューなど、さまざまな手法を使用して行われます。
③要件の分析
収集した要求を分析し、重要な要件や矛盾した要求を特定します。この段階では、要件の重要性や優先順位も評価されます。
④要件の優先順位付け
特定された要求を優先順位付けし、必須の要求とオプションの要求を区別します。
これにより、開発リソースが最適化され、最も重要な要求に焦点が当てられます。
⑤要件の文書化
要件を明確かつ具体的に文書化します。
一般的には、要件仕様書やユースケース、フローチャート、ワイヤフレームなどが使用されます。要件文書は、関係者が理解しやすい形式で提供される必要があります。
⑥要件の検証
文書化された要求がプロジェクトの目標を満たしているかどうかを検証します。
これにより、開発プロセスの途中での不備や不足を早期に発見し、修正することができます。
⑦変更管理
プロジェクトの進行中に新しい要求が出てくることがよくあります。
変更が必要な場合は、要件を適切に管理し、変更が他の要件やスケジュールに与える影響を評価します。
以上のステップを通じて、要件定義はプロジェクトやシステムの成功に不可欠な基盤となります。
関係者の要求や期待を十分に理解し、明確に定義された要件を持つプロジェクトは、開発プロセス全体を効率化し、期待に応えることができます。
-
前の記事
ざっくり、大規模言語モデル(LLM)とLangChainについて 2024.04.06
-
次の記事
Linux カーネルパニック(Kernel panic)が起こった時の対処法 2024.05.25