【基本情報技術者試験対策】システム設計・ソフトウェア設計を図解でわかりやすく解説|アーキテクチャ・UI・品質特性

基本情報技術者試験対策

基本情報技術者試験対策として、システム設計とソフトウェア設計を初心者向けにわかりやすく解説します。

集中処理・分散処理、クライアントサーバ、Webシステム、3層アーキテクチャ、品質モデルなど試験頻出ポイントを図解付きで学べます。

システム設計とソフトウェア設計の違い

最初にシステム設計とソフトウェア設計の違いについて、要件定義も一緒に表で説明します。

工程決めること
要件定義何を作るか
システム設計システム全体をどう構成するか
ソフトウェア設計プログラムをどう作るか

システム設計とは

システム設計とは、要件定義で決定した内容をもとに、システムをどのような構成で実現するかを設計する工程です。

要件定義では「何をを作るか」を決めましたが、システム設計では「どのように実現するか」を具体的に検討します。

例えば、次のような内容を決定します。

  • ハードウェア構成
  • ソフトウェア構成
  • システムの処理方式
  • データベース方式

システム設計で決めること

システム設計では、要件定義で整理した内容をもとに、システム全体の構成を具体化します。

ハードウェア・ソフトウェア・サービス・手作業の機能分割

システム設計では、どの機能をコンピュータで実現し、どの作業を人が担当するかを決定します。

例えば、商品の検品業務では次のように役割を分担できます。

ハードウェア構成の決定

ハードウェア構成では、システムを動かすために必要な機器や構成を決定します。

例えば、次のような内容を検討します。

  • サーバは何台必要か
  • CPUやメモリの性能
  • ディスク容量
  • 障害に備えた冗長化(予備機の配置)

以下の例のように、要件定義でまとめた要件をもとにハード構成を設計します。

ハード構成が決まったら、全体構成図を作成します。

ハード設計はシステムの信頼性の知識も必要なので、参考にしてください。

ソフトウェア構成の決定

ソフトウェア構成では、システムを構成するソフトウェアやサービスを決定します。

例えば、次のような内容を検討します。

  • 自社で開発するか
  • パッケージソフトを利用するか
  • OSS(オープンソースソフトウェア)を利用するか
  • ミドルウェアを何にするか
ソフトウエア構成

OSSとは

OSSとは、ソフトウェアのソースコードが公開されており、利用者が内容を確認・改良・再配布できるソフトウェアのことです。

OSSは以下の特徴があります。

  • ソースコードが入手して自由にカスタマイズできる
  • 再配布が可能
  • 利用分野に制限がない
  • 派生ソフトウエアを際は賦する場合はソースコードを公開する必要があるが、再配布しない場合はソースコードを公開しなくてよい

システム処理方式の決定

システム処理方式とは、データをどのような構成で処理するかを決定することです。

代表的な処理方式には次のようなものがあります。

集中処理と分散処理

集中処理分散処理
すべての処理を1台の大型コンピュータ(ホストコンピュータ)でデータや処理をまとめて行う方式です。複数のコンピュータに処理を分散して実行する方式です。
例:銀行の勘定系システムのように、多くの利用者が同じデータを扱うシステムで採用されることがあります。例えば、Webサービスでは、Webサーバ、アプリケーションサーバ、データベースサーバなど、複数のサーバが役割を分担して処理しています。
【メリット】
・データを一元管理しやすい
・システム全体を管理しやすい
・セキュリティを確保しやすい
【デメリット】
・ホストコンピュータが故障するとシステム全体が停止する
・処理が集中するため負荷が大きくなりやすい
【メリット】
・処理負荷を分散できる
・一部のコンピュータが故障しても影響を抑えやすい
・システムを拡張しやすい
【デメリット】
・システム構成が複雑になる
・サーバ間の通信や管理が必要になる

クライアントサーバシステムとは

利用者が操作するクライアント(主にパソコン)と、サービスを提供するサーバに役割を分けたシステムです。

クライアントはデータの要求を行い、サーバはその要求に応じてデータを返したり、処理を実行したりします。

クライアントサーバシステムは、クライアントに専用アプリケーションをインストールして、専用アプリケーションからサーバへの要求と、サーバからの応答データを表示することが一般的でです。

■クライアントサーバシステムは分散処理
クライアントとサーバが協調して目的の処理を遂行する分散処理形態であり、サービスという概念で機能を分割し、サーバがサービスを提供する。

一方でクライアントに専用アプリケーションをインストールせず、WEBブラウザを使ってサーバへ要求や表示をするWEBシステムもクライアントサーバシステムのひとつです。

クライアントサーバシステム

■WEBブラウザを使ったクライアントサーバシステムのメリッ
・ブラウザがあれば利用できる
・利用者ごとにソフトウェアをインストールする必要がない
・クライアント環境の保守が軽減

システムアーキテクチャとは

システムアーキテクチャとは、システム全体をどのような構造で構築するかを定めた設計方針のことです。

例えば、Webシステムでは次のような構成がよく利用されます。

  • 利用者が操作するWebブラウザ
  • リクエストを受け付けるWebサーバ
  • 業務処理を行うアプリケーションサーバ
  • データを管理するデータベースサーバ
システムアーキテクチャの例

主なシステムアーキテクチャは以下のものがあります。

  • クライアントサーバアーキテクチャ
  • Webアーキテクチャ(3層アーキテクチャ)
    プレゼンテーション層(画面)、アプリケーション層(業務処理)、データ層(データベース)の3つで構成されます。
  • マイクロサービスアーキテクチャ
    システムを小さなサービス(機能)ごとに分割して構築するアーキテクチャです。
    例えばネットショッピングサイトの例だと、会員管理サービス、商品管理サービス、注文管理サービスを独立して構築するといった内容です。

データベース方式の決定

データベース方式では、システムで利用するデータベースの種類を決定します。

データベースの方式については「データベースモデル・DBMSの機能・3層スキーマ」を参照ください。

ソフトウェア設計とは

ソフトウェア設計とは、システム設計で決定した内容をもとに、ソフトウェアをどのように作るかを具体的に設計する工程です。

システム設計ではシステム全体の構成を決定しましたが、ソフトウェア設計ではプログラムの構成や画面、データの受け渡し方法など、ソフトウェア内部の仕様を詳しく決定します。

例えば、ネットショップであれば、次のような内容を設計します。

  • 商品検索画面の構成
  • 注文データの受け渡し方法
  • プログラムの役割分担
  • テスト方法

ソフトウェア設計で決めること

ソフトウェア設計では、ソフトウェアを開発するために必要な仕様を具体化します。

主に次のような内容を決定します。

  • ソフトウェアの構成
  • インタフェース
  • テスト方法

ソフトウェア設計

ソフトウェア設計では、システムを複数のプログラム(モジュール)に分割し、それぞれの役割を決定します。

例えば、ネットショップであれば次のように機能を分割できます。

ソフトウエア設計 機能分割

このように、ソフトウェアは機能ごとに分割(モジュール化)して設計します。

モジュール化することで、開発やテスト、保守がしやすくなります。

インタフェース設計

インタフェース設計とは、利用者や他のシステムとどのように情報をやり取りするかを設計することです。

ユーザインタフェース(UI)

例えば、次のような内容を決定します。

  • 入力画面の項目
  • ボタンの配置
  • エラーメッセージ
  • 他システムとのデータ受け渡し方法(APIなど)

ヒューマンインタフェース8指針

使いやすく直感的なUI/UXを設計するためのデザイン原則「ヒューマンインタフェース8指針」というのがあります。

項目説明
操作の一貫性操作方法、レイアウトなど全体を通して一貫したデザインにする。
一貫性の例
ショートカットの活用熟練ユーザーが素早く操作できるよう、ショートカットキーなどを提供する。
ショートカットの例
情報のフィードバック操作に対する適切な応答を返す。
達成感を与える開始・途中経過・終了(完了)の状態を明確にし、次のステップへ進む安心感をもたらす。
達成感の例
エラー検出や回復万が一エラーが発生した場合でも、分かりやすいエラーメッセージを表示して簡単な操作で回復できるようにする。
エラー検出と回復の例
逆操作を可能にする入力やアクションの取り消し(アンドゥ機能)を容易にする。
統御感(主観的な制御)システムが勝手に動作するのではなく、ユーザーの意志で操作できるようにする。
主観的な制御の例
短期記憶の負担軽減ユーザに情報の記憶が必要な設計を避け、画面上で選択肢やパラメータを常に視認できるようにする。

インタフェース設計は、他システムとのデータ連携(APIやファイル)もインタフェース設計に含まれます。

テスト設計

テスト設計とは、ソフトウェアが要件どおりに動作することを確認するために、どのようなテストを実施するかを計画・設計することです。

テストは設計の後のソフトウェア開発後に実施しますが、テスト設計はこの設計フェーズで作成しておきます。

ソフトウェア品質とは

ソフトウェア品質とは、「正しく動作するか」や「処理が速いか」など、ソフトウェアが利用者の要求をどれだけ満たしているかを表す指標です。

利用時の品質モデル

利用者にとって使いやすく、役に立つかという視点の品質を表します。

品質特性概要
有効性目的を達成できるか
効率性少ない時間や労力で利用できるか
満足性利用者が満足できるか
リスク回避性事故や損失のリスクを減らせるか
利用状況網羅性さまざまな利用環境に対応できるか

製品品質モデル

製品品質モデルとは、ソフトウェアそのものが持つ品質を表します。

品質特性概要
機能適合性必要な機能を満たしているか
性能効率性処理速度や資源効率が良いか
互換性他システムと連携できるか
使用性使いやすいか
信頼性安定して動作するか
セキュリティ不正利用を防げるか
保守性システムを修正しやすいか
移植性別の環境へ移しやすいか

腕試し(理解テスト)

腕試し(理解テスト)に挑戦する場合はこちらをクリック。

コメント

タイトルとURLをコピーしました