システム開発で設計をするときに気をつけること

システム開発における設計フェーズは、前の工程で出来上がった要件定義やデザインを基に設計書を作成します。良い設計がなければ、エンジニアへの仕様の伝達が上手くいかず、後続の開発やテスト、運用がスムーズに進まないケースに発展する恐れがあります。今回は、システム開発で設計を行う際に特に注意すべきポイントについて解説します。

1. 要件定義やデザインとの整合性を保つこと

設計は、要件定義やデザインをもとに行われるため、まずは要件が明確に定義されていることが前提です。設計者は要件定義書やデザインを十分に理解し、それを正確に反映する必要があります。要件が曖昧であったり、デザインが全画面揃っていないと、それらがそのまま設計書にも悪影響を与え、後々の開発工程で大きな手戻りが発生する可能性があります。

具体的な注意点

要件定義フェーズで、明確になっていない箇所はユーザーやクライアントと詳細な確認を行い、明確にしていく必要があります。それ以外にも要件・デザインに矛盾や不足がないかは、設計者の観点からもチェックを行います。その結果によって、要件定義やデザインに対して修正や追加を提案していくことが後々の手戻り防止に大きな効果があります。

2. システムの拡張性を考慮する

システムは時間とともに機能の追加や変更が必要となる可能性が高いため、設計段階で拡張性を考慮することはシステムの利用可能年数を引き上げる上で重要な点になります。詳細としては、新しい機能を容易に追加できるようなモジュール構造やコンポーネント化、柔軟なデータベース設計が求められます。それ以外にも個別最適のような機能は開発ではなく、汎用的な機能にしていくことも重要なポイントです。

具体的な注意点

各機能やコンポーネントが独立して動作するような設計を目指していきます。またコードの再利用性を高める工夫も実施する必要があります。予想される将来的な拡張や変更に対して柔軟に対応できるアーキテクチャを採用するために、数年後の機能イメージもクライアントからヒアリングし、共有しておくと良いでしょう。

3. パフォーマンスを意識した設計

システムが動作する環境や、どの程度の負荷がかかるかを事前に予測し、パフォーマンスに配慮した設計を行うことも重要です。設計段階でパフォーマンスが軽視されると、開発後にシステムが期待通りに動作せず、コストや時間のロスにつながることが多くあります。

具体的な注意点

まず想定される同時接続数やデータ量をもとに、パフォーマンス要件を定義していきます。そして、ボトルネックとなりやすい部分(データベースのクエリ、ネットワーク通信など)を事前に特定し、対策を講じていきます。それらに対して、キャッシュや負荷分散などの技術や機能を設計に組み込んでいきます。そして、テストフェーズでは、実際に本番環境の想定データとスペックでの負荷テストも実施するように手配しておくことで検証もできます。

4. セキュリティの考慮

設計段階でセキュリティ対策を考慮しないと、システムの脆弱性が後々発覚し、大きな損害をもたらす可能性があります。セキュリティに関する要件は、初期段階から設計に組み込んでいくべきです。非機能要件としてどの程度のセキュリティレベルにするかを要件定義フェーズで確定させ、設計者に伝えておくことで、こちらも進めていくことができます。

具体的な注意点

SQLインジェクションやクロスサイトスクリプティングなどの一般的な脅威に対する対策を実施します。また認証・認可の仕組みを強固にします(多要素認証の導入、権限管理の適切な設計など)。管理するデータによっては、データの暗号化や通信の暗号化も検討して、設計に組み込んでいく必要があります。

5. ユーザビリティを考慮する

システムが使いやすくない場合、ユーザーにとっての価値が低くなる可能性があります。ユーザビリティは設計の初期段階から考慮し、最終的に直感的で操作しやすいシステムを提供することが求められます。
要件定義やデザインである程度話してはいますが、設計者から見た観点は別になります。設計者は実装のことも考慮した目線を持っているので、設計段階での意見は非常に重要なものになります。

具体的な注意点

ユーザの操作フローをシンプルかつわかりやすく設計にしていきます。デザイン段階でやっていない場合は、必要に応じてプロトタイプを作成し、ユーザーのフィードバックを早期に反映していきます。ユーザーインターフェース(UI)とユーザーエクスペリエンス(UX)の両方を意識した設計を実施していきます。こちらはデザインでも話をしていますが、よりイメージの高い設計者が行うことに意味があります。

6. ドキュメンテーションを怠らない

設計の過程で作成した仕様書や設計書は、開発チーム全体が理解できるよう、詳細かつ分かりやすくドキュメント化する必要があります。ドキュメントが不十分だと、後からシステムをメンテナンスする際に困難を伴うため、設計段階で適切な文書化を徹底しましょう。最低でも画面設計書とAPI設計書がないと、ソースコードを読まないと把握できないシステムになり、問題や引き継ぎが発生した際に大きな調査コストが発生することになります。

具体的な注意点

システムの構成や各モジュールの詳細を明確に記述していきます。ドキュメントは最新の情報を反映させ、開発中も必要に応じて更新していきます。運用・保守フェーズでも更新することが理想です。また、後続の開発者や保守担当者が理解しやすい形式で作成していきます。

7. テスト計画も設計に組み込む

システムの設計を行う際、テストがどのように行われるかもあらかじめ計画に含めるべきです。テスト可能な設計を心がけることで、後の開発工程で問題が見つかった際の修正コストを削減できます。

具体的な注意点

単体テストや結合テストをスムーズに実施できるように、設計を行います。自動テストの導入を前提にした設計を検討していき、テストコードの実装も徹底するように開発者に伝えていきます。各機能が正常に動作するかどうかを明確に確認できるテスト項目をあらかじめ設計段階で定義しておきます。

まとめ

システム開発における設計は、プロジェクトの成功を左右する非常に重要なステップです。要件定義やデザインとの連携、拡張性やパフォーマンスの考慮、セキュリティ対策、ユーザビリティの向上、そして適切なドキュメンテーションが鍵となります。また、テストを考慮した設計も忘れずに行うことで、後続の工程を円滑に進めることができます。これらのポイントに注意することで、持続可能でメンテナンス性の高いシステムを設計することができるでしょう。

関連記事

カテゴリー:

ブログ

情シス求人

  1. チームメンバーで作字やってみた#1

ページ上部へ戻る