システム方式設計とは?システム方式設計ですること5つと注意点を解説

システム方式設計とは?システム方式設計ですること5つと注意点を解説

システム方式設計とは

システム方式設計とは、システム開発における設計工程のひとつで、要件定義の次の工程です。要件定義で取り決めた各要件を実現するために、ハードウェアやソフトウェア、ネットワーク構成などを決定します。また、システムの範囲と手作業の範囲を明確にします。システム方式設計で決定したことが、システム開発における全体の作業に広く深く影響するため、しっかりと検討し決定する必要があります。

システム設計のフロー

システム方式設計が全体のどこに位置するのか、またシステム方式設計の重要度を理解するうえで、まずはシステム設計全体の流れを押さえておくべきでしょう。ここでは、システム設計全体のタスクと流れについて解説します。システム設計全体の流れを押さえつつ、システム方式設計の位置関係について確認してください。

案件定義(基本計画)

何のために(背景)、何を実現し(目的)、実現するためにどのようなシステムを構築するか(要件)を明確にします。この後の全ての工程を左右する重要な工程といえるでしょう。また、システム方式設計をして、次工程の外部設計が着手できる状態にしておきます。システム方式設計のアウトプットとして、システム方式設計書を作成します。

外部設計

システム開発における基本設計となる部分です。案件定義で取り決めた事項(要件)やシステム方式設計に基づき、実現方法をより明確にしていきます。具体的には、実行環境は何にするか、ハードウェアやソフトウェアはどのように実装するか、どのプログラミング言語を使うかなどを決定します。

内部設計

外部設計で取り決めた内容を、システム内部でどのように実装するかを決定します。詳細設計を含めることもあります。ソフトウェアの実装方法を具体的にするソフトウェア方式設計や、データフロー図の作成、実装する機能などに分解し、細かく決めていきます。最終的には、プログラムを製造できる状態にすることが目的です。

プログラミング

内部設計に基づき、プログラムを作成する工程です。プログラムのコーディングとプログラムごとの動作確認(単体テスト)を実施します。前述の「案件定義」の取り決めが不足していると、この工程で欠陥が判明し、これまでの設計を見直す事態に陥る危険性があります。

テスト

作成したプログラムを全て連携し、システム全体が稼働するかテストしますテストでは、「案件定義(基本計画)」で取り決めた要件を全て満たしているか確認します。ユーザーにも操作してもらい、実際の使用感もチェックします。

システム方式設計ですること5つ

システム方式設計で取り決める具体的な内容を解説していきます。大きくわけて、5つのことについて、システムの要件を満たすためにどうすべきかを検討し決定します。システム方式設計は、後の工程を左右する内容ですので、あらゆることを想定しながら検討する必要があります。過去の経験やノウハウがあれば、活用するとよいでしょう。それでは1つずつ見ていきましょう。

1:ハードウェア構成の決定

システムを稼働させる性能を持ったハードウェア(サーバ)を決定したり、サーバの構成を決定したりします。サーバの構成とは、サーバを複数の拠点に分散する、中間サーバを設ける、バックアップ専用のサーバを設置するといったようなことです。また、複数のサーバを稼働させる場合、負荷分散装置(ロードバランサ)の設置の有無などについても決定します。システム方式設計の注意点については後述していますが、障害に備えた構成や、どの程度のレスポンスが求められているかといった非機能要件についても漏れなく考慮しておく必要があります。

2:ソフトウェア構成の決定

ソフトウェアをどのように開発し、実装するかを決定します。ソフトウェアとは、簡単にいえばプログラムです。具体的には、プログラムを社内で開発するのか、他社のパッケージを導入するのか、プログラムを動かすためのミドルウェアをどうするかなど、決定します。

3:ネットワーク構成の決定

サーバのネットワーク構成について決定します。具体的には、負荷を分散するための構成や、障害に備えた予備のサーバを構成するネットワークなどについて検討します。ハードウェアとネットワークは密に関わることから、前述の「ハードウェア構成の決定」とセットで検討していくとよいでしょう。

4:開発フレームワークの決定

開発において使用するフレームワークを決定します。フレームワークとは、あらかじめ開発された機能のことで、利用すれば開発作業が削減され効率的に進めることを期待できます。具体的には、「Bootstrap」や「Ruby on Rails」などが代表的な例として挙げられます。開発フレームワークは便利である一方、利用するためには独自のスキルが必要なので、学習しなければいけません。よって、学習時間なども考慮しておく必要があるでしょう。

5:開発言語の決定

どの言語を使用して、システムを開発するか決定します。開発言語は、さまざまな角度から検討し、適した言語を選択する必要があります。具体的には、作業の容易さ、開発期間、サポートの充実度などを考慮して決定しなければいけません。

システム方式設計の注意点

システム方式設計をするうえでの注意点を解説します。結論を先に述べると、システムに求められる直接的な要件(機能要件)以外の部分に関しても、漏れなく検討することが注意点として挙げられます。システム方式設計での検討が漏れると、それ以降は検討する工程がないため、漏れに気づくのが遅くなり、多大な労力がかかってしまう危険性があります。

技術リスクを考える

過去に使ったことのない技術やミドルウェアを使用する場合は、想定外の問題が発生するリスクがあるので十分に調査をする必要があります。特に、流行りのサービスなどは注意が必要です。事前に使ってみるなどして、どのようなリスクが考えられるかチェックしておくとよいでしょう。

パフォーマンスを検討する

求められた機能とは別のパフォーマンスについて検討する必要があります。たとえば、「画面のレスポンスは3秒以内」といったような要件についても実現方法を明確にしておかなければなりません。この辺りは、最終的なテストにならないと表面化しないので重要な点といえるでしょう。

非機能要件を考慮する

前述のパフォーマンスの検討や、セキュリティ、性能といったシステムの直接的な機能ではない部分についてしっかりと考慮する必要があります。やりたいことが実現できても、画面のレスポンスが遅すぎたり、すぐにシステムがダウンしたりしてしまっては使い物になりません。ユーザーからの要求にはないことが多いので、システム開発側から提案していく姿勢が必要です。

システム方式設計について理解しよう

以上のように、システム方式設計で決定した内容に基づき、その後の開発作業が進められますので、非常に重要な工程といえるでしょう。システム方式設計での設計ミスや設計漏れがあると、スケジュールが遅延することにもなり兼ねません。システム方式設計について理解し、ユーザーも開発者も納得するシステムの開発を目指しましょう。

インフラエンジニア専門の転職サイト「FEnetインフラ」

FEnetインフラはサービス開始から10年以上『エンジニアの生涯価値の向上』をミッションに掲げ、多くのエンジニアの就業を支援してきました。

転職をお考えの方は気軽にご登録・ご相談ください。