マネジメント系システム開発技術出題頻度 ★★★

システム開発の流れ

要件定義・外部設計・内部設計・プログラミング・テスト・受入れ・保守というシステム開発の工程を、注文住宅づくりの例で図解。設計とテストを対応させるV字モデルや機能要件と非機能要件の違いも押さえ、工程を問う問題が解けるようになります。

この単元の用語:要件定義 / 機能要件 / 非機能要件 / 外部設計 / 内部設計 / V字モデル / 受入れテスト / ソフトウェア保守 / 共通フレーム / レビュー

システムって、いきなりプログラムを書き始めるんですか?

いやいや、それは設計図なしで家を建てるようなものだよ。システム開発には決まった工程(手順)があるんだ。注文住宅づくりにたとえながら見ていこう。

注文住宅にたとえると

家を建てるときは、いきなり柱を立てたりしませんよね。システム開発もこれと同じ流れで進みます。

家づくりシステム開発の工程
「4人家族で、在宅勤務の部屋がほしい」と希望を伝える要件定義
間取り図・外観のデザインを決める外部設計
配線・配管・柱の位置など構造を決める内部設計
大工さんが実際に建てるプログラミング
水漏れや傾きがないか検査するテスト
施主が完成した家を確認して引き渡しを受ける導入・受入れ
住みながら修理・リフォームする運用・保守
要件定義 何を作るかを利用者と決める 外部設計 画面・帳票など「見える部分」を設計 内部設計 プログラムの分け方など「中身」を設計 プログラミング 設計書どおりにプログラムを書く テスト 単体 → 結合 → システムの順に確認 導入・受入れ 本番環境に移し、発注者が確認して受け取る 運用・保守 実際に使いながら、修正・改良を続ける
上から順に「決める → 作る → 確かめる → 使う」と進む

この工程を上から順番に一度だけ進めるのがウォーターフォールモデル、短い期間で何度も回すのがアジャイル開発です(進め方の違いは「ウォーターフォールとアジャイル」の単元で扱います)。どちらの進め方でも、「決める・作る・確かめる」という作業そのものは必要です。

要件定義 ― 「何を作るか」を決める

要件定義は、利用者(発注者)の要望を聞き取り、システムに求めること(要件)を決める工程です。ここで決めたことが、後の工程すべての土台になります。

要件は大きく2種類に分けられます。

種類意味例
機能要件システムで何ができるか商品を検索できる、注文履歴を表示できる、請求書を印刷できる
非機能要件機能以外の品質や制約3秒以内に表示(性能)、24時間止まらない(可用性)、不正アクセスを防ぐ(セキュリティ)、操作がわかりやすい(使いやすさ)

機能要件 =「何ができるか」、非機能要件 =「どれくらい良くできるか」。 家なら「部屋が4つある」が機能要件、「地震に強い」「冬も暖かい」が非機能要件です。

「〇〇できる」と書いてあっても、速さ・止まりにくさ・安全さ・使いやすさなどの「質」を表すものは非機能要件です。選択肢の文末だけで判断しないようにしましょう。

設計 ― 外側から内側へ

要件が決まったら、それを実現する方法を設計します。設計は外側(利用者から見える部分)から内側(中身)へと進めます。

  • 外部設計:画面のレイアウト、帳票(印刷物)の様式、ほかのシステムとのやり取りなど、利用者から見える部分を決める。利用者にも確認してもらう
  • 内部設計:外部設計の内容を実現するために、プログラムをどう分けるか、データをどう持つかなど、システム内部の仕組みを決める。主に開発者側の作業

設計が終わると、設計書に従ってプログラミング(コーディング)を行います。

レストランでいえば、外部設計は「メニュー表と料理の見た目」、内部設計は「厨房での調理手順と食材の仕込み方」です。お客さんが気にするのは前者、料理人が気にするのは後者ですね。

V字モデル ― 設計とテストは対になる

作ったものは、テストで確かめます。このとき、どの設計の内容を、どのテストで確かめるかを対応させた図が V字モデル です。

要件定義 外部設計 内部設計 プログラム設計 プログラミング 受入れテスト システムテスト 結合テスト 単体テスト
左を下りながら作り、右を上りながら確かめる。点線が「確かめる相手」
テスト何を確かめる?主に誰が?
単体テストプログラムの部品(モジュール)1つずつ開発者
結合テスト部品を組み合わせたときのデータの受渡し開発者
システムテストシステム全体が外部設計・要件どおりに動くか(性能なども含む)開発者
受入れテスト要件を満たしていて、受け取ってよいか発注者(利用者)

受入れテストだけ、やる人が違うんですね。

そう!家の引き渡し前に施主さんが自分の目で確かめるのと同じだね。「受入れ = 発注者が主役」は試験でよく問われるよ。テストの細かい技法は「テストの種類」の単元で詳しくやろう。

導入・運用・保守、そして廃棄

  • 導入:完成したシステムを本番環境に移し、使える状態にする。利用者への操作教育やマニュアル整備も行う
  • 運用:日々システムを動かし、利用者を支える
  • 保守:稼働後に見つかった不具合の修正や、法改正・業務の変化に合わせた改良を行う
  • 廃棄:使い終わったシステムを停止し、データを確実に消去する

システムは「作って終わり」ではなく、使っている期間のほうがずっと長いのが普通です。

工程をまたいで使われる道具

レビュー

各工程で作った設計書やプログラムを、複数の人で読んで誤りを探すことを レビュー といいます。誤りは早い工程で見つけるほど、直す手間(手戻り)が小さくなります。

方法特徴
ウォークスルー作成者が中心となり、関係者と一緒に成果物を順に追って確認する
インスペクション進行役(モデレータ)が主導し、役割と手順を決めて公式に行う

共通フレーム

発注者と開発会社で「要件定義」などの言葉の意味や作業範囲がずれると、トラブルになります。そこで、システム開発の作業内容や用語を標準化した「共通の物差し」として 共通フレーム(SLCP-JCF)が作られています。

  • 工程の順序は 要件定義 → 外部設計 → 内部設計 → プログラミング → テスト → 導入・受入れ → 運用・保守
  • 機能要件は「何ができるか」、非機能要件は性能・可用性・セキュリティ・使いやすさなどの「質」
  • 外部設計は利用者から見える部分(画面・帳票)、内部設計はシステムの中身
  • V字モデル:要件定義↔受入れテスト、外部設計↔システムテスト、内部設計↔結合テスト、プログラム設計↔単体テスト
  • 受入れテストは発注者(利用者)が主体
  • 誤りは早い工程で見つけるほど修正コストが小さい(レビューが大事)
  • 共通フレームは、取引の当事者が同じ言葉で話すための作業・用語の標準

確認クイズ

選択肢をタップすると、すぐに正解と解説が表示されます。

Q1新しい通販システムの要件のうち、非機能要件に当たるものはどれか。

Q2外部設計で行う作業として、最も適切なものはどれか。

Q3システム開発の工程を、一般的な順序に並べたものはどれか。

Q4受入れテストの説明として、最も適切なものはどれか。