システム開発において、修正作業は珍しくありません。指示書の記載ミス、直前の仕様変更、認識の違いによる指示ミスなど、さまざまな要因によって修正が必要となります。
しかし、修正作業は余計なコストと時間がかかります。納期に追われることで品質も低下しやすいことから、避けるべき内容といえるでしょう。
要件定義は、そのような修正作業を減らすために必要な要素です。顧客との認識を合わせることで、顧客の要望に沿ったシステム開発が可能となります。
要件定義では、どのような定義を行うのか。要件定義の重要性や定義の流れなどを紹介します。
要件定義とは何か?
要件定義とは、必要な機能や必須条件などを明確に定める工程のことですが、よく分からない、言葉自体が分かりづらいといった印象を受けるかと思います。
「製造ラインの新しい機械を導入するための準備」に例えて言い換えるなら、必要な機能(機械の生産能力)、使用感(操作の容易さ)、設置場所、連携するシステムなど機械に関することから導入の目的や現状の把握、導入後に期待される効果・成果、導入後の組織間の連携のギャップ、導入までのスケジュールなど導入する上で明確にしておくことなど準備する段階で決めておかなかった場合に後々困ることが多々あります。
システム開発においても同様に考えることがあり、上述の内容をシステム開発会社(エンジニア)とシステム導入会社(顧客)の間で認識をすり合わせて、齟齬が無いようにする必要も出てきます。
話し合いが大きくなるにつれ、目的がズレてしまうことは珍しくありません。あれもこれもとアイデアを取り入れた結果、予算超過や機能過多となってしまうでしょう。
また、顧客とエンジニアとでは、システム開発における理解が異なります。理解が異なることで話に食い違いが生じ、それによって認識のズレが生じることも多いです。
当然ですが、顧客ニーズに合っていないシステムは、いくら性能が良くても顧客から望まれません。注文に応えるためにはシステムの修正が必要となり、余計なコストがかかってしまいます。
目的からズレて余計な開発コストをかけないためにも、要件定義による明記が必要とされるのです。
要件定義の定義と目的
要件定義の目的は、関係者全員(システム開発会社も顧客も含めて)の認識を揃えることです。プロジェクトの目標や条件をまとめて明記することで、関係者全員がプロジェクトの目的や方向性を理解し、それに沿った開発ができるようになります。
要件定義を行う目的は、顧客ニーズを正しく開発チームに伝えるためにあるのです。
システム開発における要件定義の重要性
顧客と開発チームとの橋渡しだけではなく、システム開発においても要件定義は重要です。要件定義がしっかりしていることで、誤解による手戻り作業を防ぐことができます。
手戻り作業があると、余計なコストがかかります。同時に、納期の遅れも考えられるでしょう。さらに、納期の焦りや無理な修正によって、品質が低下する恐れもあります。
「品質:Quality」「コスト:Cost」「納期:Delivery」(QCD)はどれも製造業において欠かせない要素であり、企業の信用を守るためにも必ず守るべき要素です。QCDを保つためにも、要件定義は必要といえます。
ほかにも、目的が明確なことで設計を組みやすくなったり、手戻り作業を減らすことで労働時間を短縮できるなど、要件定義の設定によりさまざまなメリットもあります。
要件定義を作成するまでの流れ
要件定義は、主に以下のような流れで行われます。
- 現状や問題・課題をヒアリング
- 現行システムの仕様の確認
- ヒアリングした内容でシステム要件を決める
- システムに必要な機能などの要件をまとめる
現状や問題・課題をヒアリング
まずは、要件定義としてまとめるための、現状分析から行います。現在の生産状況やプロジェクトの業務フローなどを確認をして、問題や課題をまとめてください。図や表にまとめ業務の流れを可視化することで、より流れがイメージしやすくなります。
また、利用者の求める条件を知るため、ヒアリングも大切です。顧客との対話や作業員へのアンケートなど、さまざまな角度から必要な情報を収集しましょう。
情報収集は、今後のシステム開発をするうえでとても重要な要素です。情報収集が不十分だと、顧客ニーズにあったシステムは作れません。
営業やプロジェクトマネージャーとの連携も密にして、しっかりと顧客とコミュニケーションを取るようにしましょう。
現行システムの仕様の確認
要望をヒアリングするだけではなく、現行システムについても確認をしてください。現行システムと互換性がないと、システムを導入しても活用ができません。
また、新しくシステムを導入することで、既存システムの良い部分をダメにするようでは問題があります。問題がない部分はそのままに、問題がある部分だけを改善することが大切です。
ヒアリングした内容でシステム要件を決める
必要な情報が集まったら、システム要件を決めていきます。顧客が必要としている機能や、システム開発の条件などを洗い出してください。
また、システム要件を決めるなかで、「実現できない要望」も出てくると思います。そのような場合は、顧客やプロジェクトマネージャーなどと相談して、「実現できる要望」へと変えていきましょう。
システムに必要な機能などの要件をまとめる
システム要件が決まったら、関係者全員が共通認識しやすいよう内容をまとめます。必要な場合は、図やグラフなども用いてわかりやすくまとめてください。
また、要件をまとめるとともに、開発スケジュールも組んでいきます。作業の優先順位や開発日程なども決め、プロジェクト開始の準備を整えていきましょう。
テンプレートがあれば、まとめやすく、見る側も理解しやすいです。もし、テンプレートがなければ、今後のことを踏まえて、Excelなどで作っておくことをおすすめします。
要件定義を成功させる4つのポイント
要件定義を成功させるためにも、以下のポイントを意識してみてください。
- 内容や役割分担は具体的に明記する
- 現行システムと業務フローを詳細に把握する
- 開発者と認識のすり合わせを綿密に行う
- 要件の抜け漏れがないか徹底して確認する
内容や役割分担は具体的に明記する
一つ目は、担当するタスクなどを具体的に明記することです。要件定義に限ったことではありませんが、明記があやふやだと、「誰がどの担当なのか」がわからなくなり、現場が混乱してしまいます。
場合によっては、「必要なタスクが行われていない」「重複したタスクがある」などの問題も出てくるでしょう。
迷いなくプロジェクトが進められるよう、担当者や作業内容などを、誰が見てもわかりやすいよう明記してください。
特に、参加人数が多い大規模なプロジェクトになるほど、具体的に明記することへの必要性が高まります。
現行システムと業務フローを詳細に把握する
二つ目は、現行システムや業務フローを把握することです。新しいシステムが現行システムに適応するよう、それぞれの詳細を把握する必要があります。
もし、現行システムを把握せずに開発を進めてしまうと、システムが競合することでトラブルが生じてしまいます。また、業務フローが把握できていないと、作業プロセスに無理が生じ、無茶な開発スケジュールとなってしまうでしょう。
開発したシステムのほとんどは、単体で完結するシステムではありません。導入先のこともしっかり踏まえたシステム開発をする必要があります。
開発者と認識のすり合わせを綿密に行う
三つ目は、関係者同士のコミュニケーションを綿密に行うことです。開発者と相互誤認があると、のちにトラブルが発生し、仕様変更などの修正作業が必要となります。
修正作業は、QCDに悪影響を与えることから避けるべき要素です。開発スタッフへの負担にもなりますので、「当たり前」だと思っている部分も含め、隅々まですり合わせを行ってください。
特に、専門用語の説明は注意が必要です。専門用語が多いとわかりにくい説明になりますので、専門用語は最小限に抑え、初めて聞く人でもわかりやすい内容になるよう心がけましょう。
ほかにも、プロジェクトが進行した後も、定期的にすり合わせをすることで、細かなトラブル回避につながっていきます。
要件の抜け漏れがないか徹底して確認する
四つ目は、要件の抜けや漏れがないかを確認してください。情報が不足していると、あとでトラブルとなり開発が長引く原因となります。
顧客も含め関係者複数人で確認をし、話し合いやフィードバックを行うことで、不足箇所を念入りに探してください。
また、不足箇所が見つかったら、チェック項目として記録しておくと良いです。次回、要件定義を行う際は、チェック項目を意識することで抜けや漏れを防ぐことができます。
まとめ:業務にあったシステムを導入するために最も重要な準備工程
要件定義は、顧客とエンジニアの相互誤認をなくすために必要な要素です。要件定義をしっかり定義することで、顧客ニーズに沿ったシステムを開発できます。
システム開発では、要件定義を基にシステムやタスクなどが組まれていきます。根底となる定義であり、システムの導入や開発をするうえで、最も重要な準備要素といえるでしょう。
顧客満足度の高い生産管理システムを開発するためにも、要件定義を定めたうえで、開発を進めてみてください。