はじめに――システム開発って何をすること?
幽灯子/基本情報技術者副専門官私たちの日常生活には、スマホアプリ、銀行のATM、交通系ICカードのシステムなど、無数のITシステムが溢れています。こうしたシステムは「ある日突然できる」わけではなく、決まった手順と方法論に従って、チームで作り上げられるものです。
基本情報技術者試験では、このシステム開発の流れや手法が重要な出題範囲となっています。プログラミングの経験がなくても理解できる考え方がほとんどなので、ぜひ最後まで読んでみてください。
① システム開発の全体像――「ソフトウェアライフサイクル」





システムを作る工程全体を「ソフトウェアライフサイクル(SLCP)」と呼びます。家を建てるときと同じで、「設計→建築→検査→引き渡し→維持管理」という流れがあるように、システム開発にも決まったステップがあります。
大まかな流れは次のとおりです。
企画・要件定義 → 設計 → 実装(プログラミング) → テスト → 運用・保守
それぞれのフェーズで「何を決めるか」「誰が何をするか」が明確に決まっており、各段階を「工程(フェーズ)」と呼びます。試験ではこの工程の名前と目的が問われます。
② 開発モデルの種類――どんな順番で作る?



システムをどんな順番・進め方で作るかを「開発モデル」と呼びます。代表的なものを押さえておきましょう。
ウォーターフォールモデル
最も古典的な手法で、工程を滝(ウォーターフォール)のように上から下へ順番に進めていきます。前の工程が終わってから次の工程に進む、という直列型の開発です。
- メリット:計画が立てやすく、進捗管理がしやすい
- デメリット:途中で仕様変更が起きると手戻りが大きくなる
スパイラルモデル
システム全体を小さなパーツに分けて、「設計→実装→テスト」のサイクルをパーツごとにらせん状に繰り返す手法です。開発途中でもフィードバックを取り入れながら改善できます。
アジャイル開発
近年特に注目されている手法で、短いサイクル(スプリントと呼ばれる1〜4週間)を繰り返しながら、動くソフトウェアを少しずつ完成させていきます。変化への対応を重視するため、スタートアップや変化の激しいプロジェクトに向いています。試験では「スクラム」「XP(エクストリームプログラミング)」といったアジャイルの具体的な手法も出題されます。
プロトタイピングモデル
本番システムを作る前に試作品(プロトタイプ)を作り、ユーザーに確認してもらってから本開発に進む手法です。「こんなイメージで合ってますか?」と確認しながら進められるため、要件のズレを早期に防げます。
③ 要件定義――「何を作るか」を決める最重要フェーズ


要件定義とは、「このシステムで何を実現したいのか」を明確にする工程です。家で言えば「間取りや部屋数を決める」段階にあたります。
要件定義が甘いと、開発後半になって「こんなつもりじゃなかった」という事態が発生します。試験では次の2種類の要件が問われます。
- 機能要件:システムが「何をするか」(例:ユーザーがログインできる、商品を検索できる)
- 非機能要件:システムが「どれくらいの品質で動くか」(例:1秒以内に応答する、99.9%の稼働率を保つ)
④ 設計フェーズ――「どうやって作るか」を決める



要件が決まったら、次はシステムの設計に入ります。設計には大きく2つの段階があります。
外部設計(基本設計)
ユーザーから見た画面のレイアウト、入出力の形式、他システムとの連携など、外側から見えるシステムの姿を設計します。「どんな画面が表示されるか」「どんなデータが出力されるか」といった部分です。
内部設計(詳細設計)
外部設計を受けて、プログラマーが実際にコードを書けるレベルまでシステムの内部構造を細かく設計します。データベースの構造やプログラムのロジックなどを決めます。
⑤ テストの種類――作ったものが正しく動くか確認する



開発が終わったら、きちんと動くか確認する「テスト」を行います。テストには段階があり、それぞれ確認する範囲が異なります。
| テストの種類 | 確認する範囲 | たとえで言うと |
|---|---|---|
| 単体テスト | プログラムの部品一つひとつ | ネジ一本を単独で検査 |
| 結合テスト | 複数の部品を組み合わせた動作 | 部品を組み合わせて接続を確認 |
| システムテスト | システム全体が要件を満たすか | 完成品を動かして確認 |
| 受入テスト(UAT) | ユーザーが実際に使って確認 | お客様に納品前の最終確認 |
試験では、それぞれのテストで「誰が・何を・どう確認するか」が問われます。
⑥ ソフトウェアの品質特性――良いシステムとは?





「良いシステム」とはどんなシステムでしょうか?基本情報ではISO/IEC 25010という国際規格で定められた品質特性が出題されます。代表的なものを紹介します。
- 機能適合性:必要な機能が正しく備わっているか
- 信頼性:障害が起きにくく、起きても回復が早いか
- 使用性(ユーザビリティ):使いやすく、分かりやすいか
- 保守性:バグの修正や機能追加がしやすいか
- 移植性:別の環境に移してもちゃんと動くか
品質は「動けばOK」ではなく、こうした多角的な視点で評価されます。
⑦ レビュー手法――人の目でミスを防ぐ



コードや設計書をプログラマー自身だけが確認するのではなく、チームで確認し合う「レビュー」も重要な品質向上手段です。
- ウォークスルー:作成者が説明しながら参加者と一緒に確認する
- インスペクション:モデレーターが主導し、役割を分担して厳格に検証する
どちらも「一人よりも複数の目でチェックするほうがミスを発見しやすい」という考え方に基づいています。
まとめ――システム開発技術は「チームで良いものを作るための共通言語」
基本情報技術者試験に出るシステム開発技術の内容を振り返ると、共通して見えてくるのは「チームが同じ方向を向いて、品質の高いシステムを効率よく作るための仕組み」だということです。
開発モデルを選ぶことで「いつ・何を・どんな順番で進めるか」が明確になり、要件定義や設計を丁寧に行うことでゴールのズレを防ぎ、テストやレビューで品質を担保する――この流れは、ITの世界だけでなくものづくり全般に通じる普遍的な考え方です。



試験勉強をしながら「なぜこの手順が必要なのか」を考えると、理解が深まり記憶にも残りやすくなります。ぜひ丸暗記ではなく、「現場でどう使われるか」をイメージしながら学んでみてください。














コメント