サイトアイコン しらかわるーむ

【基本情報技術者】システム開発について

山場も超えて、12章に突入です。あとは消化試合でしょうか。どうだろか?

ともかくやってみよー!

本日も気合を入れていきますよ!!

スポンサーリンク

基本情報技術者~システム開発~

システム開発技術

基本情報技術者試験では、「システム」と「ソフトウェア」、この2つの用語を明確に使い分けています。試験で効率よく合格するためにも、この2つの違いを明確にして覚えておきましょう。

システムとソフトウェア

システムは、ハードウェアとソフトウェアから構成されています。ソフトウェアはシステムの一部です。

ソフトウェアライフサイクルプロセス

ソフトウェアライフサイクルプロセス(Software Life Cycle Process;SLCP)とは、ソフトウェアの企画、要件定義、開発、運用、保守までの一連の活動のことです。ソフトウェアライフサイクルプロセスは国際規格であり、ISO/IECで標準化されています(ISO/IEC 12207)。

共通フレーム

共通フレームとは、システム開発に関わる人たちが、同じ言語で話ができるように、用語などの定義を統一した本のことです。

5つのプロセス

プロセス説明
企画経営目標を達成するために、システムに必要な要件を集め、計画を立てるプロセス。
要件定義システムが持つべき機能や性能を決めるプロセス。
開発実際にシステムを作成するプロセス。
運用システムの本番への移行や、システムを安定的に稼働させるプロセス。
保守不具合の修正やソフトウェアのアップデートなどを行うプロセス。

開発プロセス

システム開発とは、必要なハードウェアを調達し、必要な機能を持ったソフトウェアを新たに作ることです。これは、手作業で行っているような作業をシステムに置き換えることです。

家づくりの場合工程説明
打合せ
システム要件定義システムで実現したいことを決める工程。
設計
システム設計システム要件定義で決めたことを実現するために、ハードウェアとソフトウェアの仕様や動作を決める工程。
建築作業
プログラミング実際にソースコードを書く工程。
品質確認・検品
テストシステムが仕様どおりに動くか確認する工程。

(※上は、ウォーターフォールモデルと呼ばれる開発モデルの例)

ひとつ注意したいのが、ソフトウェアライフサイクルプロセスの「要件定義」と、ここで出てくる開発プロセスの「システム要件定義」と、「ソフトウェア要件定義」はすべて別物です。

システム要件定義

システム要件定義とは

システム要件定義とは、システムに必要な条件(システム要件)を決める工程です。簡単にいうと「どのようなシステムを作るのかを、開発会社と明確にするプロセス」です。

システム設計

システム要件定義でどのようなシステムを作るかが決まったら、次はシステム設計です。システム設計のプロセスは、次の4つの工程に分割することができます。

 (1)システム方式設計
 (2)ソフトウェア要件定義
 (3)ソフトウェア方式設計
 (4)ソフトウェア詳細設計

(1)システム方式設計

システム方式設計とは、システム要件定義プロセスで洗い出したシステム要件を、「ハードウェア」「ソフトウェア」「手作業」のいずれかに振り分けるプロセスです。手作業に振り分けられたプロセスは、手作業で実現します(システムには実装しない)。

(2)ソフトウェア要件定義

ソフトウェア要件定義とは、ソフトウェアの要件(機能や性能)を決める工程です。(1)システム方式設計で「ソフトウェア」に振り分けられたシステム要件を、この工程で具体化していきます。

代表的なソフトウェア要件には次のようなものがあります。

・インターフェースの要件(画面、帳票、ファイルなど)
・データの要件(データの種類、データベースの要件など)

記号名前説明
外部業務プロセスに入力されるデータの発生源を表す。業務プロセス外の「人」「組織」「システム」など。業務プロセスが加工したデータの行き先を表す。DFDでは必ず、「外部」からデータが入力され、「外部」へ出力される。
データフローデータの流れを表す。
プロセス(処理)プロセス(処理)を表す。「外部」「データストア」、もしくは別の処理からデータを受け取り、データを加工する。データの加工は必ずこの「処理」で行われる。
データストアデータの保管を表す。通常はデータベースを表すが、稀に紙媒体のデータを表す場合もある。「データストア」はデータの加工は行わない。

DFDでは、必ず次の条件を満たす必要があります。

・2つ以上の「外部」(入力と出力)
・1つ以上の「プロセス」(プロセスがないと何もしていないことになるため)

(3)ソフトウェア方式設計

ソフトウェア方針設計とは、(2)ソフトウェア要件定義で決めたソフトウェア要件(機能や性能)をプログラムの単位まで細分化する工程です。ソフトウェア要件をどのようにプログラムで実現するかを決めます。また、ソフトウェアは「プロセス」と「データ」の2つの要素で構成されています。

(4)ソフトウェア詳細設計

ソフトウェア詳細設計とは、(3)ソフトウェア方式設計で「プログラムの単位まで分割された要件」を、さらに「コーディングできる単位」まで落とし込む工程です。
具体的には、動作ロジックを検討し、その結果を流れ図(フローチャート)にして表します。

以下は、モジュール結合度を6つのレベルに分類した表です。モジュール結合度が最も弱いのは「データ結合」となっています。

種類説明結合度
データ結合モジュール間で「データ」を引数として受け渡す。

|
|
|
|
|
|

スタンプ結合モジュール間で「データ構造」を引数として受け渡す。
制御結合モジュール間で「制御フローをコントロールするデータ」を引数として受け渡す。
外部結合モジュール間で「単一のデータ型のグローバル変数」を共有する。
共通結合モジュール間で「複数のデータ型のグローバル変数」を共有する。
内容結合あるモジュールが別のモジュールの内部を直接参照する。

外部設計と内部設計

システム設計には4つの下位工程がありますが、この工程を別の分類で分けることもできます。それが、「外部設計」と「内部設計」です。

小休止!お試しトライ!過去問①

問1 モジュール結合度

問題
モジュール結合度が最も弱くなるものはどれか。

令和元年度

ア.一つのモジュールで、できるだけ多くの機能を実現する。
イ.二つのモジュール間で必要なデータ項目だけを引数として渡す。
ウ.他のモジュールとデータ項目を共有するためにグローバルな領域を使用する。
エ.他のモジュールを呼び出すときに、呼び出したモジュールの論理を制御するための引数を渡す。

解答
ア.から順に見ていきます。

ア.モジュール強度の説明です。
イ.データ結合の説明です。一番強度は弱いです。
ウ.外部結合の説明です。
エ.制御結合の説明です。

従って、解はイ.となります。

プログラミングとオブジェクト指向

オブジェクト指向

上で解説した「データ中心アプローチ」の概念をさらに進めたものが「オブジェクト指向」です。
オブジェクト指向とは、クラスや継承という概念を使って、ソフトウェアを部品化することで、ソフトウェア開発の生産性を上げる手法です。
なお、プロセス中心アプローチやデータ中心アプローチで「処理」と呼んでいたものを、オブジェクト指向では「メソッド」と呼びます。

オブジェクト指向のメリット

車のように、同じ規格の製品を大量に作ったほうが効率が良いという考えを取り入れ、ソフトウェア開発に応用したのがオブジェクト指向です。

オブジェクト指向の特徴

UML

UML(Unified Modeling Language)とは、オブジェクト指向のソフトウェア開発で、ソフトウェアの設計を図示するための表記法です。

説明
クラス図クラス間の関係を表す。
オブジェクト図オブジェクト(インスタンス)間の関係を表す。
アクティビティ図ある振る舞いから次の振る舞いへの制御の流れを表す。
シーケンス図オブジェクト間の相互作用を時系列に表す。

小休止!お試しトライ!過去問②

問1 継承

問題
オブジェクト指向において、あるクラスの属性や機能がサブクラスで利用できることを何というか。

平成30年度

ア.オーバーライド     イ.カプセル化
ウ.継承          エ.多相性

解答
単純に、オブジェクト指向のところで習ったのは、カプセル化と継承です。
そして、問題文の説明と一致するのは、継承です。

従って、解はウ.となります。

問2 カプセル化

問題
オブジェクト指向におけるカプセル化を説明したものはどれか。

平成28年度

ア.同じ性質をもつ複数のオブジェエクトを抽象化して、整理すること
イ.基底クラスの性質を派生クラスに受け継がせること
ウ.クラス間に共通する性質を抽出し、基底クラスを作ること
エ.データとそれを操作する手続を一つのオブジェクトにして、データと手続の詳細をオブジェ
  クトの外部から隠蔽すること。

解答
カプセル化を表すキーワードとして、外部からの隠蔽というワードが挙げられます。

従って、解はエ.となります。

テスト

テストとは

テストとは、システムが仕様通りに動くかを確認するための工程です。テストを行うことで、不具合を見つけ、不具合を潰していきます。また、それと同時に、要件定義プロセスで明確にした「業務に必要な条件(業務要件)」がきちんと実装されているかを確認します。

種類説明担当者
単体テストプログラムに誤りがないかを検証する。通常、「ホワイトボックステスト」でテストする。開発者
結合テスト単体テストが完了したプログラム同士を組み合わせ、データの受け渡し、連携がうまくいっているかを検証する。通常、「ブラックボックステスト」でテストする。開発者
システムテストシステムの要件通りに動作するかを検証する。開発者
運用テスト本番環境と同じ条件下でシステムを運用し、業務要件通りにシステムが動くかを検証する。ユーザー
リグレッションテストシステムに修正や機能追加をしたときに、別のところで新しいバグが出ていないかを検証する。開発者

ホワイトボックステスト

通常、単体テストで「ホワイトボックステスト」が行われます。ホワイトボックステストでは、プログラムの内部構造まで見て、プログラムに記述されているすべての処理を実行し、動作を確認します。

  (1)命令網羅
  (2)判定条件網羅(分岐網羅)
  (3)条件網羅
  (4)判定条件/条件網羅
  (5)複数条件網羅

流れ図の記号の読み方

テストケースの数を算出するには、流れ図を正しく読める必要があります。

名称説明
判定条件(もしくは分岐)ひし形の中に記載する。下図の例では「X>0 かつ Y>0」が判定条件。
条件ひし形の中に記載する。下図の例では「X>0」と「Y>0」の2つが条件。
命令長方形の中に記載する。下図の例では「3→X」が命令。

(1)命令網羅

命令網羅とは、すべての「命令」を少なくとも1回は実行するテストです。「判定条件」は考慮せず、5つの網羅性テストの中で最も網羅性が低いテストになります。

(2)判定条件網羅(分岐網羅)

判定条件網羅(分岐網羅)とは、プログラム中のすべての「判定条件」で、真と偽の両方を少なくとも1回は実行するテストです。判定条件の真と偽を1回ずつ通るようなテストになります。

(3)条件網羅

条件網羅とは、判定条件が複数の条件からなる場合に、それぞれの条件の真と偽の両方を少なくとも1回は実行するようなテストです。ここまで来ると見えてきたと思いますが、(1)が網羅性が低く、(5)に向かうほど網羅性の高いテストとなっています。

(4)判定条件/条件網羅

判定条件/条件網羅とは、判定条件網羅と条件網羅を組み合わせたテストです。テストケースは、3つとなります。

(5)複数条件網羅

複数条件網羅とは、すべての条件の真と偽の組み合わせを少なくとも1回は実行するテストです。これが一番手間がかかり、めんどくさいテストとなります。

ホワイトボックステストの問題では、流れ図が提示され、各網羅性のテストケースの数を問う問題がよく出題されます。

ブラックボックステスト

結合テストとシステムテストでは「ブラックボックステスト」が行われます。
ブラックボックステストとは、入力と出力だけに注目し、ある入力に対して期待通りの出力が得られるかをテストします。

各テストのメリットとデメリット

種類メリットデメリット
ホワイトボックス
テスト
すべての処理(分岐経路)を検証できる。プログラマの誤解による不具合(バグ)は見つけられない。
ブラックボックス
テスト
仕様通りの動作をするかを検証できる。すべての処理をテストしないので、珍しい不具合(バグ)が残る可能性がある。

トップダウンテストとボトムアップテスト

結合テストには、ブラックボックステストの他にも、トップダウンテストやボトムアップテストといったものがあります。これらを扱った設問では、「モジュール」という用語が登場します。

小休止!お試しトライ!過去問③

問1 ボトムアップテスト

問題
ボトムアップテストの特徴として、適切なものはどれか。

平成27年度

ア.開発の初期の段階では、並行作業が困難である。
イ.スタブが必要である。
ウ.テスト済みの上位モジュールが必要である。
エ.ドライバが必要である。

解答
ボトムアップテストの特徴としては、ドライバが必要というものがあります。

従って、解はエ.となります。

最後に

作業を始めてみると、システム開発も結構量がありました。みなさま、さくさく覚えられたでしょうか?

ちなみに、テキストを読まないと完全な学習は行えませんので、ぜひ下で紹介している本をご購入いただけたらと思います。

こちらが参考にさせていただいているテキストです。

白川秋

ではでは、参考までに

モバイルバージョンを終了