基本情報技術者試験で問われるシステム開発手法の解説!

システム開発手法
目次

システム開発手法とは

システム開発は一般的に長期間のプロジェクトとなり、多額のコストも発生します。システム開発の失敗はプロジェクトの失敗にとどまらず、経営の失敗につながるものです。

システム開発を成功に導くために、様々な開発手法が考え出されています。システムの開発手法は一通りではなく、業務やシステムの特性に応じて様々な選択肢から選ぶ必要があります。その中でも、現代では主にウォーターフォールモデルとアジャイルが現在の開発手法の主流となっています。

ウォーターフォールモデル

ウォーターフォールモデルは、流れる水のように上流工程から下流工程に向けて作業を実施していく開発手法のことです。大きく、要件定義、システム設計、開発、テスト、移行・リリースの工程から構成されます。

一般的に、大規模なシステム開発においてはウォーターフォールモデルがほぼ唯一の選択肢となっており、多くのシステム開発の現場で利用されています。

要件定義

ウォーターフォールモデルでは、まず最初に必要なシステムの内容を整理する工程を行います。これを要件定義工程と呼びます。

要件とは、発注者の要求をシステム開発できるように体系立てて整理したものを指します。

要件定義工程では、業務のモデル化手法やUMLなどを用いて発注者の要求を可視化します。また、実際のシステム利用者にインタビューを行い、要望事項や改善リクエストなどを洗い出します。

現状で行われている業務について確認するために、業務フローを作成してシステムの利用ケースを確認することなども行います。

発注者の要望事項は、要件定義書としてドキュメントにまとめます。要件定義書がシステム開発の原点となり、以降の工程では要件定義書の内容に沿ってシステム開発を進めていきます。

システム設計

設計工程では、システム開発を行うために要件定義で定めた内容を具体化します。設計工程では、画面・データベース・処理ロジックなどを設計書としてドキュメント化します。各設計書の記載内容は以下の通りです。

設計書名 記載内容
画面設計書 システムの画面に設けるボタンやラベルなどの表示項目や、それらを操作した際の処理内容を記載する。
テーブル定義書 システムが持つデータを整理し、データのまとまりごとにテーブルとして記載する。
処理設計書 システムが行う処理について処理フローや処理内容を記載する。
帳票設計書 システムが出力する帳票について、帳票の表示項目や各項目の値の作成方法等について記載する。
システム方式設計書 システムを実現するためのハードウェア、ミドルウェア、ソフトウェア、ネットワーク等について記載する。

開発(プログラミング)

開発工程では、システム設計工程で作成した設計書に基づき、プログラミングを行いシステムを構築します。画面設計書で定めた画面を作成したり、データベースを構築してデータを保管できるようにします。

開発工程は、大まかに内部設計とプログラミングに分かれます。内部設計ではプログラムモジュール単位の検討や処理方式の詳細化などを実施します。その後、実際にプログラムを作成する流れとなります。

テスト

テスト工程では、プログラムが正しく動くことを確認するための動作確認を行います。テストは、処理単位で実施する単体テスト(ユニットテスト)、システムの機能単位で実施する結合テスト、業務単位で実施するシステムテストの各段階ごとに実施します。

各テストではチェックポイントを設け、バグの洗い出しと修正が確実に実施されていることを確認したうえで次のテスト工程に移ります。これにより、手戻りを最小限にすることができます。

また、システムの処理能力が要件定義どおりであるかを確認する性能テスト(パフォーマンステスト)や、システムの切り替えが問題なく行えるかを確認する移行テストなども合わせて実施します。

移行・リリース

移行・リリース工程では、すべてのテストが終了し、システムにバグがないことを前提に、システムが正しく業務で利用できるように準備を行います。

システムを利用するためには、初期セットアップ作業として利用するユーザアカウントの登録や、初期設定項目の登録などを行います。また、既存システムが存在する場合は、既存システムから新システムへデータを移行する作業も必要となります。

設定したリリース日を迎えたら、システムの利用が開始されます。システムの利用開始直後は一般的に不安定であり、一定の間は移行期間としてシステムを重点的に監視し、問題が発生したら即座に対応できる体制を整えます。

アジャイル開発

アジャイルとは、「素早い」という意味の英単語です。アジャイル開発は、その言葉通りにスピード感を持った開発手法です。

工程を細分化して大きな流れとして開発するウォーターフォールモデルと比較して、アジャイル開発では発注者の要求を少しずつ開発しリリースすることを繰り返す点が大きな特徴です。

アジャイル開発の流れ

アジャイル開発では、スプリントと呼ばれる数週間程度の開発単位ごとに開発を繰り返します。発注者の要求は優先順位ごとに並び替えられ、優先度の高いものから開発を行います。

開発途中で優先度を変更したい場合は、随時変更することもできます。一度要件定義を行うとそれ以降の工程での変更が難しいウォーターフォールモデルと比較して、アジャイル開発は柔軟性の高い開発手法といえます。

各スプリントでは、機能の開発に加えてテスト・リリースまでを一連の流れとして実施します。スプリントを実施するごとに、システムに新しく機能が追加されていくことがアジャイル開発の大きな特徴です。

実際に利用者がシステムを利用してみて、機能が不十分であったり不具合があったりすれば、次のスプリント内で修正を行うこともできます。

アジャイル開発のメリット

上述した通り、ウォーターフォールモデルでは一度決めた要件を変更することは難しいですが、アジャイル開発ではスプリントごとに開発を行うためシステム開発の軌道修正がしやすいというメリットがあります。

また、ウォーターフォールモデルの要件定義では、発注者の要望は要件定義書というドキュメントにまとめられるだけで、実際のシステムの使い勝手までは想像することは難しく、ユーザの使い勝手や利便性は犠牲になりがちでした。

一方で、アジャイル開発では実際のシステムを触れるため、ユーザインタフェースにこだわった開発を実現できます。

その半面、アジャイル開発にはシステムの完成時期が見通しにくいというデメリットがあり、定められたリリース期日までに開発が必須となるシステムへのアジャイル開発の適用は難しいといえます。

XP(エクストリームプログラミング)

XP(エクストリームプログラミング)は、システムの質を高めるために行うべき実用例(プラクティス)をまとめたものです。エクストリームプログラミングでは、以下の要素などが有効なプラクティスとして定められています。

推奨プラクティス 概要
ペアプログラミング 複数人で相互に確認をしあいながらプログラミングを行うことで、ソースコードの質を向上させる。
テスト駆動開発 テストを自動実行する機能を作成したうえで、プログラムを修正するたびにテストを実行しプログラムのデグレーションを避ける。
リファクタリング 一定のタイミングでソースコードを修正し、ソースコードの質を向上させる。
継続的インテグレーション すべての開発者が作成したソースコードを、定期的(一日に数回)にマージして共通化することで、プログラムを常に最新化する。

スクラム

スクラムは、アジャイル開発における開発手順を表したものです。

スクラムガイドとして、アジャイル開発を効果的に進めるための要素が以下のように定められています。

タイトル 概要
開発チーム編成 スクラムでは、開発チームの人数は5人から9人程度の少数が良いとされている。開発チーム内には、システムの総責任者であるプロダクトオーナー、スクラムを管理するスクラムマスターといった役割が存在する。
バックログの作成 スクラムでは、システムへの要求を一覧にしたプロダクトバックログを作成する。各要求には優先度を設定し、それぞれのスプリントでは優先度が高い機能から開発する。
開発工程 スクラムでの開発工程は、リリース計画・スプリント・クロージャから構成される。リリース計画で次のスプリントで開発する機能を確定し、スプリントで開発を実施、クロージャで最終的なデバッグなどを行い開発サイクルは終了する。

プロトタイピングモデル

ウォーターフォールモデルとアジャイル開発に加え、基本情報技術者試験ではいくつかの開発手法について問われます。そのうち、まずはプロトタイピングモデルについて解説します。

プロトタイピングモデルでは、本番システムを構築する前にプロトタイプシステムを作ることで、システムの有用性や業務適用性などを判断する開発手法です。プロトタイプの開発には一定の期間や費用がかかりますが、本番システムをいきなり開発して大失敗するのを避けるために必要なコストと考えます。

プロトタイプシステムを作ることでシステムの課題が明らかになり、本番システムの品質向上にもつながります。主に、過去に開発したことがないような未知のシステムで用いられることが多い開発手法です。

スパイラルモデル

スパイラルモデルはウォーターフォールモデルに近い開発手法ですが、一度ですべての機能を開発するウォーターフォールモデルと異なり、複数回に分けて開発を行うことが特徴です。

スパイラルモデルでは、要件定義からテストまでの工程を繰り返し実施し、リリースされたシステムを発注者と受注者で都度確認することで、システムの品質を高めます。前述したアジャイル開発手法と近い考え方ですが、各開発段階では要件定義からリリースといったウォーターフォールモデルに従う点が大きな違いとなります。

まとめ

この記事では、基本情報技術者試験を受けようとされている方に向けて、システム開発手法についての解説を行いました。システム開発手法の理解は、基本情報技術者の試験対策になるのはもちろん、実務においても必ず必要となります。

特にウォーターフォールモデルとアジャイル開発については、システム業界で仕事をするのであれば押さえておく必要があります。ぜひ、分からない点については見直して学習してみてください。

基本情報技術者コラム一覧へ戻る