🎯 この記事を読み終わるころには、この問題が解けるようになります!
【例題】ソフトウェア開発モデル
ウォーターフォールモデルの特徴として適切なものはどれか。
ア. 開発の各工程を反復(イテレーション)しながら段階的に完成させる
イ. 各工程が完了したら次の工程に進み、原則として前の工程に戻らない
ウ. まず試作品を作成し、利用者の評価を得てから本開発を行う
エ. リスク分析を繰り返しながら、螺旋状に開発を進める
前回は情報セキュリティを学びました。今回は、基本情報技術者試験で頻出の「システム開発・マネジメント」を徹底解説します。ソフトウェア開発モデル、テスト手法、プロジェクト管理、ITサービスマネジメント(ITIL・SLA・RASIS・稼働率計算)、ソフトウェア品質特性、UMLまで、試験に出る内容を余すことなく解説します!
目次
- システム開発の手順
- ソフトウェア開発モデル(ウォーターフォール・スパイラル・アジャイル・プロトタイプ)
- ソフトウェア設計手法
- ソフトウェアテスト
- テスト技法(ブラックボックス・ホワイトボックス)
- レビュー技法(ウォークスルー・インスペクション)
- UML(統一モデリング言語)
- ソフトウェア品質特性
- プロジェクト管理(WBS・ガントチャート・PERT/CPM)
- ITサービスマネジメント(ITIL・SLA)
- システムの信頼性指標(RASIS・稼働率)
- 過去問チャレンジ!
- この章のまとめ
1. システム開発の手順
システム開発は、一般的に以下のような手順(フェーズ)に沿って進められます。
| 開発工程 | 概要 |
|---|---|
| 要件定義 | 利用者がシステムに何を求めているか(要求事項)を明確にし、システム化する範囲を決定する工程です。 |
| システム設計 | 要件定義をもとに、システムの具体的な仕様を設計します。画面や帳票など利用者から見える部分を決める「外部設計」と、データの処理方法など開発者向けの「内部設計」に分かれます。 |
| プログラム設計 | 内部設計をもとに、プログラムの処理単位(モジュール)ごとに具体的なアルゴリズムやデータ構造を設計します。 |
| プログラミング (実装) |
プログラム設計書に従って、実際にプログラミング言語を用いてソースコードを記述します。 |
| テスト | 作成したプログラムが正しく動作するかを検証します。「単体テスト」「結合テスト」「システムテスト」「受入テスト」の順で行われます。 |
| 運用・保守 | システムを本番環境で稼働させ(運用)、障害対応や機能追加などのメンテナンス(保守)を行います。 |
2. ソフトウェア開発モデル
▲ ソフトウェア開発モデルの比較
ソフトウェア開発を進めるための代表的な手法(モデル)には、以下の4つがあります。
| 開発モデル | 特徴・メリット |
|---|---|
| ウォーターフォール モデル |
上流工程から下流工程へと滝のように順番に進める手法。原則として後戻りをしません。スケジュール管理がしやすく大規模プロジェクトに向いていますが、仕様変更への対応は困難です。 |
| スパイラル モデル |
システムを独立した機能ごとに分割し、設計・実装・テストのプロセスを繰り返しながら、螺旋状に完成度を高めていく手法。リスクを早期に発見できるメリットがあります。 |
| アジャイル 開発 |
短期間(数週間など)の反復(イテレーションやスプリント)で小規模なソフトウェアを開発・リリースしていく手法。仕様変更に柔軟に対応できます。スクラムやXP(エクストリームプログラミング)などの手法があります。 |
| プロトタイプ モデル |
開発の初期段階で試作品(プロトタイプ)を作成し、利用者の評価・フィードバックを得ながら本開発を進める手法。認識のズレを防ぐことができます。 |
📝 ポイント:ウォーターフォールの特徴
「各工程が完了してから次へ進む」「原則として前の工程に戻らない」がウォーターフォールモデルのキーワードです。要件が明確に決まっている場合に適しています。
3. ソフトウェア設計手法
要件定義後の設計工程で用いられる主な設計手法には、以下のようなものがあります。
- 構造化設計(トップダウン設計):システム全体から始まり、上位の機能から下位の機能へと段階的に分割していく設計手法。データの流れを図示するDFD(データフロー図)などが使われます。
- オブジェクト指向設計:現実世界にある「もの(オブジェクト)」を中心にモデリングする手法。データと処理をまとめる「カプセル化」、性質を引き継ぐ「継承」、同じメッセージで異なる振る舞いをする「ポリモーフィズム」などが特徴です。
- モジュール分割の原則:プログラムを部品(モジュール)に分ける際の原則。結合度(モジュール間の依存度)は「低いほどよい」、凝集度(モジュール内の機能のまとまりの強さ)は「高いほどよい」とされています。
| モジュール結合度(低い方が良い) | 特徴 |
|---|---|
| データ結合(最も低い=良い) | 必要なデータ項目だけを引数として渡す |
| スタンプ結合 | データ構造(レコードなど)ごと引数として渡す |
| 制御結合 | 他のモジュールの制御(動作)を指示するフラグを渡す |
| 外部結合 | 外部宣言された単一の変数を共有する |
| 共通結合 | 外部宣言された共通のデータ構造を共有する |
| 内容結合(最も高い=悪い) | 他のモジュールの内部を直接参照・変更する |
4. ソフトウェアテスト
▲ ソフトウェアテストのV字モデル
テスト工程は、開発工程の逆の順番で規模を大きくしながら検証を行います。これをV字モデルと呼びます。
- 単体テスト(ユニットテスト):プログラム単体(モジュール)が正しく動作するか確認するテスト。対になる設計はプログラム設計。
- 結合テスト(統合テスト):複数のモジュールを連携させ、データの受け渡しが正しいか確認するテスト。対になる設計は内部設計。
- システムテスト(総合テスト):システム全体として、要件を満たしているか、性能面は問題ないかを確認するテスト。対になる設計は外部設計。
- 受入テスト(承認テスト):システムの納品前に、利用者や発注者が実際の業務に使えるかを確認するテスト。対になるのは要件定義。
5. テスト技法(ブラックボックス・ホワイトボックス)
プログラムのテストを行う際のアプローチには、大きく分けて2つの方法があります。
| テスト技法 | 概要と具体的な手法 |
|---|---|
| ブラックボックス テスト |
内部の構造(ソースコード)を意識せず、入力に対して正しい出力が得られるかを検証します。 ・同値分割法:入力データを同じ処理がされるグループに分け、それぞれの代表値でテストする。 ・限界値分析(境界値分析):グループの境界となる値(エラーが発生しやすい値)でテストする。 |
| ホワイトボックス テスト |
プログラムの内部構造(ロジック)に沿って正しく処理が分岐するかを検証します。 ・命令網羅(C0):すべての命令を少なくとも1回は実行する。 ・分岐網羅(C1):すべての分岐(真と偽)を少なくとも1回は通過する。 ・条件網羅(C2):すべての条件の真と偽の組み合わせを網羅する。 |
📌 重要:同値分割と限界値分析の違い
「入力値の境界付近はバグ(エラー)が発生しやすい」という特徴を利用してテストケースを作るのが限界値分析(境界値分析)です。試験でもこの理由がよく問われます。
6. レビュー技法(ウォークスルー・インスペクション)
開発の各段階で成果物(設計書やコードなど)をチェックして品質を向上させる手法をレビューと呼びます。
- ウォークスルー:開発者が自ら成果物を説明し、参加者全員で問題点やエラーを指摘し合う非公式なレビュー手法です。
- インスペクション:あらかじめ訓練された司会者(モデレータ)が進行する公式なレビュー手法。参加者の役割(モデレータ、著者、読み上げ者、記録者、検査員など)が明確に決まっています。
- デシジョンテーブル(決定表):複数の条件と、それによって実行すべき動作の組み合わせを、表形式で整理したもの。複雑な論理を整理する際に役立ちます。
7. UML(統一モデリング言語)
▲ ソフトウェア品質特性とUMLの種類
UML(Unified Modeling Language)は、オブジェクト指向システムを設計する際に、システムの構造や振る舞いを可視化するための標準的な図法(モデリング言語)です。
| 大分類 | 主な図(ダイアグラム)と役割 |
|---|---|
| 構造図 (システムの静的な構造) |
・クラス図:システムを構成するクラスの属性・操作や、クラス間の関係を示す。 ・オブジェクト図:ある時点でのオブジェクトのインスタンスの関係を示す。 ・コンポーネント図:システムの構成要素の依存関係を示す。 ・配置図:ハードウェアとソフトウェアの物理的な配置を示す。 |
| 振る舞い図 (システムの動的な動き) |
・ユースケース図:システムが利用者に提供する機能や、システムと利用者の関係を示す。 ・シーケンス図:オブジェクト間でやり取りされるメッセージの流れを時系列で表現する。 ・アクティビティ図:一連の処理の流れや分岐を示す(フローチャートに似ている)。 ・状態機械図:オブジェクトの状態の変化を示す。 |
📝 ポイント:クラス図とシーケンス図
UMLの中でも特に「クラス図」と「シーケンス図」が頻出です。クラス図はシステムの「静的な構造」を表し、シーケンス図はメッセージのやり取りを「時系列(動的な振る舞い)」で表すことを覚えておきましょう。
8. ソフトウェア品質特性
ソフトウェアの品質を評価する基準として、国際規格 ISO/IEC 25010 では以下の8つの品質特性が定義されています。
- 機能適合性(Functional Suitability):要求された機能が正しく実装されているか
- 性能効率性(Performance Efficiency):適切な資源(CPU・メモリ)を使って、期待する時間・速度で動作するか
- 互換性(Compatibility):他システムや製品と共存・連携できるか
- 使用性(Usability):利用者が使いやすく、分かりやすいか
- 信頼性(Reliability):指定された条件で、障害なく動作し続けられるか
- セキュリティ(Security):情報の機密性や完全性が保たれ、不正アクセスから守られているか
- 保守性(Maintainability):障害時の修正や、仕様変更・改善が行いやすいか
- 移植性(Portability):他の動作環境(OSやハードウェア)に移行しやすいか
📝 ポイント:旧規格(ISO/IEC 9126)
旧JIS規格(ISO/IEC 9126)では「機能性・信頼性・使用性・効率性・保守性・移植性」の6特性とされていました。試験ではこの旧分類で出題されることもあるため、両方知っておくと安心です。
9. プロジェクト管理(WBS・ガントチャート・PERT/CPM)
▲ プロジェクト管理とアローダイアグラム
- PMBOK(Project Management Body of Knowledge):プロジェクト管理のベストプラクティスをまとめた知識体系。10の知識エリアと5つのプロセス群で定義されています。
- WBS(Work Breakdown Structure):プロジェクト全体を細かい作業単位(タスク)に階層的に分解した構造図。一番下の最小単位をワークパッケージと呼びます。
- ガントチャート:縦軸に作業項目、横軸に時間をとり、各作業の開始・終了時期と進捗状況を帯状のバーグラフで表した図。全体のスケジュールと進捗の管理に使われます。
- PERT図(アローダイアグラム):作業の順序や依存関係を丸(ノード)と矢印(アロー)で表したネットワーク図。
- クリティカルパス:PERT図において、プロジェクトの開始から終了までをつなぐ「最長の経路」のこと。これがプロジェクト全体を完了するために必要な「最短の所要時間」になります。
パス1:A(3日) → B(2日) → D(4日) = 計 9日
パス2:A(3日) → C(5日) → D(4日) = 計 12日 ← クリティカルパス(最長経路)
※一番時間のかかるパス2が終わらないとプロジェクト全体が完了しないため、
プロジェクト完了には最低でも「12日」かかります。
📌 重要:クリティカルパスの計算
試験ではPERT図(アローダイアグラム)から日数を計算する問題が頻出します。「最長経路=プロジェクトの最短完了日数」となることを確実に覚えましょう。
10. ITサービスマネジメント(ITIL・SLA)
▲ ITサービスマネジメントとSLA
- ITIL(IT Infrastructure Library):ITサービスマネジメントのベストプラクティス(成功事例・最良の手法)を体系的にまとめた書籍群です。
- SLA(Service Level Agreement:サービスレベル合意書):ITサービスの提供者と利用者の間で結ばれる、提供するサービスの品質や水準に関する合意書。「稼働率99.9%を保証」「障害対応時間は4時間以内」などを明記します。
- SLM(Service Level Management):SLAで合意したサービスレベルをPDCAサイクルを使って維持・向上・管理するプロセスのことです。
- インシデント管理:システム障害やユーザーからの問い合わせ(インシデント)を受け付け、業務への影響を最小限に抑えて迅速なサービス復旧を目指すプロセス。
- 変更管理:システムへの変更(機能追加やバグ修正など)を計画的かつ安全に管理し、不要な障害を未然に防ぐためのプロセス。
11. システムの信頼性指標(RASIS・稼働率)
コンピュータシステムの信頼性を総合的に評価するための5つの指標の頭文字をとってRASIS(レイシス)と呼びます。
| 指標 | 意味と評価方法 |
|---|---|
| R – Reliability(信頼性) |
障害なく正常に動作し続ける能力。 MTBF(平均故障間隔):故障から次の故障までの平均稼働時間。長いほど良い。 |
| A – Availability(可用性) | システムが必要なときに正常に利用できる割合。 稼働率で表します。高いほど良い。 |
| S – Serviceability(保守性) |
障害が発生した際に、素早く復旧できる能力。 MTTR(平均修復時間):修理にかかる平均時間。短いほど良い。 |
| I – Integrity(完全性) | データが破壊されたり矛盾が起きたりせず、正確に維持されているか。 |
| S – Security(機密性) | 不正アクセスや情報漏えいからシステムが守られているか。 |
【システムの稼働率計算】
- 稼働率の基本公式:
稼働率 = MTBF ÷ (MTBF + MTTR) -
直列接続の稼働率:システムが一直線に繋がっている構成(全て動いていないとシステム全体が停止する)。
計算式:稼働率A × 稼働率B -
並列接続の稼働率:システムが並列に繋がっている構成(どれか1つでも動いていればシステム全体は稼働する)。
計算式:1 − (1 − 稼働率A) × (1 − 稼働率B)
・MTBF = 90時間、MTTR = 10時間の場合
稼働率 = 90 ÷ (90 + 10) = 0.9(90%)
・システムA(稼働率0.9)、システムB(稼働率0.8)を組み合わせた場合
直列接続:0.9 × 0.8 = 0.72(72%)
並列接続:1 − (1 − 0.9) × (1 − 0.8) = 1 − (0.1 × 0.2) = 1 − 0.02 = 0.98(98%)
📝 ポイント:稼働率の計算ルール
稼働率の計算問題は頻出です!「直列=掛け算(積)」、「並列=それぞれが停止する確率を掛けて、最後に1から引く」というルールを必ず覚えましょう。
12. 過去問チャレンジ!
🎯 記事冒頭の例題に、もう一度チャレンジ!
【問題1(再掲)】ソフトウェア開発モデル
ウォーターフォールモデルの特徴として適切なものはどれか。
ア. 開発の各工程を反復(イテレーション)しながら段階的に完成させる
イ. 各工程が完了したら次の工程に進み、原則として前の工程に戻らない
ウ. まず試作品を作成し、利用者の評価を得てから本開発を行う
エ. リスク分析を繰り返しながら、螺旋状に開発を進める
✅ 解答・完全解説
正解:イ
解説:
ウォーターフォールモデルは、上流工程から下流工程へと滝(ウォーターフォール)のように順番に開発を進め、各工程が完了した後に次の工程に進むため原則として前の工程には戻りません。
アはアジャイル開発、ウはプロトタイプモデル、エはスパイラルモデルの説明です。
【過去問 その2】PERT図(アローダイアグラム)
プロジェクトにおいて、次のアクティビティがある。このプロジェクトのクリティカルパスは何日か。
・アクティビティA(5日)は、BとCに先行する
・アクティビティB(3日)は、D(4日)に先行する
・アクティビティC(7日)は、D(4日)に先行する
ア. 12日
イ. 14日
ウ. 16日
エ. 18日
💡 解答・解説
正解:ウ
プロジェクトの完了に至る経路(パス)は2つあります。
パス1:A → B → D = 5日 + 3日 + 4日 = 12日
パス2:A → C → D = 5日 + 7日 + 4日 = 16日
クリティカルパスは最長経路を指すため、最長の「16日」が正解となります。
【過去問 その3】稼働率の計算(並列接続)
稼働率0.9のシステムAと、稼働率0.8のシステムBを並列に接続した場合の稼働率はどれか。
ア. 0.72
イ. 0.85
ウ. 0.98
エ. 1.0
💡 解答・解説
正解:ウ
並列接続の稼働率は「1 − (1 − 稼働率A) × (1 − 稼働率B)」で求めます。
稼働率 = 1 − (1 − 0.9) × (1 − 0.8)
= 1 − (0.1 × 0.2)
= 1 − 0.02
= 0.98
13. この章のまとめ
📌 システム開発・マネジメントのまとめ
- システム開発手順:要件定義→システム設計→プログラム設計→プログラミング→テスト→運用・保守
- 開発モデル:ウォーターフォール(後戻り不可)、スパイラル(リスク分析繰り返し)、アジャイル(反復開発)、プロトタイプ(試作品作成)
- ソフトウェアテスト:V字モデル(単体→結合→システム→受入テストの順に対応)。ブラックボックス(外部仕様重視)・ホワイトボックス(内部構造重視)
- テストデータ作成:同値分割(代表値)、限界値分析(境界値・エラー狙い)
- モジュール設計:結合度は「低い」ほどよい。凝集度は「高い」ほどよい。
- UML:クラス図は「静的構造」、シーケンス図は「動的時系列」、ユースケース図は「システムの機能と利用者」を表す。
- 品質特性(ISO/IEC 25010):機能適合性・性能効率性・互換性・使用性・信頼性・セキュリティ・保守性・移植性の8特性。
- プロジェクト管理:WBS(作業の階層分解)、ガントチャート(進捗管理)、PERT図(アローダイアグラムによる依存関係)。クリティカルパス=最長経路。
- ITサービス管理:ITIL(ベストプラクティス)、SLA(サービス品質の合意書)。
- RASIS:信頼性、可用性、保守性、完全性、機密性。
- 稼働率:稼働率 = MTBF ÷ (MTBF + MTTR)。直列接続は「稼働率の積」、並列接続は「1 − (1−A)(1−B)」。
学習難易度:★★★☆☆
システム開発やマネジメント分野は暗記要素が多いですが、計算問題(PERT図でのクリティカルパス算出や稼働率の直列・並列計算)は確実に得点源になります。用語の意味と計算パターンをマスターしましょう!
この記事について
基本情報技術者試験の合格を目指す方のために、参考書の内容を初心者向けにわかりやすく噛み砕いて解説しています。ITの基礎をしっかり固めて、一緒に合格を目指しましょう!
