ソフトウェア開発において上流の設計工程でミスがあると、手戻りコストが大きく致命的な問題に発展する可能性があります。そのような状況にならないためにも、可能な限り防止したいと考える人も多いでしょう。
今回はソフトウェア開発における設計ミスをできる限り防止するためのポイントを解説します。
設計ミスの事例
設計書の記載内容に漏れや誤りがある
設計工程で作成される設計書は、後工程のインプットとして使われます。このとき、設計内容に漏れや誤りがあると、間違った設計のまま開発・テストやリリース後になって発覚するケースがあります。
例えば、設計後に仕様変更が発生した場合、漏れなく変更内容を設計書に反映しなければなりませんが、それを怠っていた場合、開発すべき内容と設計書の内容が異なる事態が発生します。
後続の開発・テスト工程で設計書がインプットとして使われるため、設計書の漏れや誤りに気づけなければ、大きな問題に発展する可能性があります。
考慮不足
必要な機能を実装するために、考慮しておかないといけない点があるにもかかわらず、設計段階でその考慮が漏れているケースです。これは開発工程で必要な機能の開発を忘れていたり、テスト工程でテストパターンが漏れていたりするなど、他の工程でも起こりえます。
コミュニケーション不足、認識齟齬
設計工程は「要件定義」と「開発工程」の間にあり、担当者が異なる場合はその内容を正しく認識できていないといけません。
要件定義の工程では、クライアントからヒアリングした内容を元に要件定義書を作成します。例えば要件定義書に記載されている内容が実際の要件と異なる場合や、要件定義書の内容があいまいで設計者が本来の意図と異なる解釈をしてしまった場合、その機能が設計から漏れたり、誤った内容で設計を行ったりする可能性があります。
これと同じように、設計工程の後に行われる開発工程でも、設計内容がきちんと担当者に伝わっていなければ、誤った内容のプログラムが開発される可能性があります。
2.設計ミスの原因
設計担当者自身の問題
考慮漏れの原因については、クライアントのシステムや要件についてきちんと理解していない場合や、調査を怠っている場合など、設計担当者自身に問題があることが考えられます。これは、プロジェクトに入ったばかりや設計経験が浅いエンジニアで起こりえます。
他にも、担当範囲が広範囲にわたり、細部まで目が行き届かないために考慮漏れが起こる場合も考えられます。一人でソフトウェアの全容を完璧に把握するのは無理ですし、担当者への負荷が高いと作業品質が低下します。
ミスは誰しもありえるため、考慮漏れを設計担当者個人で完全に回避することは不可能です。知識不足は本人が勉強することで対応できますが、担当者の作業負荷軽減や経験の浅いエンジニアへのフォローは、第三者が支援を行う必要があります。
レビューの問題
各工程の成果物に対するレビューは必ず実施されますが、レビューが不十分だと記載漏れ、考慮漏れがあっても気づかず、そのまま次の工程に進んでしまいます。設計ミスが開発・テスト工程で発覚した場合は、レビューに問題があるといえます。
例えば、レビューアが一人で属人化されていたり、何度もレビューを行うことでレビューそのものが形骸化され「こんなものでいいだろう」と細部まで目を通さなかったりした場合などが考えられます。
他にも、要件定義書に記載漏れや考慮漏れがあり、それが元で設計工程にも問題が発生するケースです。その場合は、要件定義書のレビューに問題がある可能性が考えられます。その場合は影響が広範囲に及ぶため、類似のミスが他の設計にも発生していないか確認しておきましょう。
設計ミスを起こさないための対策
人間が設計する以上、ミスはつきものです。しかし、対策を行うことによって可能な限りミスが発生する可能性を下げることは可能です。重要なのは同じミスを繰り返さないよう、対策を考えきちんと実施することです。ここでは、設計ミスに対する対策を5つご紹介します。
設計書のテンプレートを利用する
最低限設計すべき内容を網羅したテンプレートを利用することで、設計漏れを防ぐことができます。
例えば、複数の設計者によって設計書が作成される場合、設計者の技術力によって設計書の品質が異なる可能性が出てきます。そのような状況を防止するためにも、テンプレートを用いて統一感のある設計書を作成するとよいでしょう。
また、万が一設計ミスが発生した場合も、今後の対策としてテンプレートに盛り込むことで、再発防止にも繋がります。
チェックシートを利用する
作成された設計書の内容が一定の品質を担保されているか確認するため、チェックシートを利用するのも有効です。各機能で共通して押さえておかなければならない内容や、必ず記載すべき内容が網羅されているかを確認しておくと、記載ミスを防止できます。テンプレートと併用することで、より品質を高める効果が期待できるでしょう。
3.3 仕様変更時の更新ルールを決めておく
設計された内容と開発されたプログラムの内容を必ず一致させるため、仕様変更が発生した場合の更新ルールを明確にしておきましょう。よくあるケースが、先にプログラムを修正してリリースしたものの、設計書への反映を怠たり、設計書とプログラムの内容が異なるケースです。
仕様変更や不具合対応などで更新が発生した場合は「設計書を先に修正し、それを元にプログラムを改修する」というルールを徹底しましょう。ルール化することで、漏れをなくすことができます。
レビューの品質を高める
設計レビューを行う際にレビューアの人数を増やしたり、レビューの機会を増やしたりすることで、設計者以外の多様な視点から設計書を確認し、品質を高めることができます。これは、コミュニケーション不足や認識齟齬による設計ミスの防止にも繋がります。
作成された設計書は、設計した個人の視点による要件の理解に基づくため、複数のレビューアからの視点を加えることで、考慮漏れや認識誤りを見つけられる可能性が高まります。
実績があるものを利用する
多くの現場で利用された実績のあるものを利用すると、品質を高めることができます。例えば、以下のものが挙げられます。
・オブジェクト指向設計であればUMLを利用する
・デザインパターン(汎用的な設計パターン)を利用する
・インフラ設計にはベンダーが提供するベストプラクティスを利用する
1から設計・開発するものについては十分なチェックが必要ですが、すでに運用実績があるものであれば品質が高まり、また作業効率向上も期待できます。
まとめ
本記事では、ソフトウェア開発における設計ミスについて解説しました。人間が設計している以上、設計ミスを完全になくすことは不可能ですが、対策を行うことでミスを防止することは可能です。
大切なのは、同じミスを繰り返さないために、ミスの原因を突き止めて対策を行い、実績を積み重ねることです。テンプレートやチェックシートを利用するのも有効ですし、UMLやデザインパターンなど、すでに実績があるものを利用するのも有効です。これは、開発工程でフレームワークやモジュールを利用するのと同じです。
設計ミスが起こり、その発見が遅れれば遅れるほど、大きな問題へと発展します。そうならないためにも、事前にしっかり対策をうち、設計ミスを防止しましょう。
- カテゴリ:
- キーワード: