【問題5】ソフトウェア開発モデルについて:“組み込み力”向上! ETEC対策ドリル Step2(5)
「ウォーターフォールモデル」や「スパイラルモデル」など、ソフトウェア開発で用いられる開発モデルについて解説する
前回の課題演習―【問題5】は、ソフトウェア開発モデルの1つである「スパイラルモデル」に関する問題でした。
組み込みソフトウェア開発では、「ウォーターフォールモデル」やスパイラルモデルなどの開発モデルが用いられます。
今回は、問題の解答に続いて、「ソフトウェア開発モデル」について解説します。この機会にしっかりと理解しておきましょう。
それでは、解答を発表します!
課題演習―【問題5】の解答
解答は、「イ.ソフトウェアを複数の機能に分割し、機能ごとに要件定義、設計、プログラミング、テストの各工程を繰り返す」です。
アは、ウォーターフォールモデル。ウは、「プロトタイピングモデル」。エは、「インククリメンタルモデル」です。
開発プロセスの必要性
ソフトウェアには目的があり、そのソフトウェアを利用するユーザーがいます。自分用にプログラムを書くだけなら簡単ですし、間違いもすぐに直せます。しかし、非常に多くのユーザーが利用するソフトウェアはどうでしょう。多くのユーザーが問題なく利用できるソフトウェアを作るためには、「プログラミング言語を知っている」「ハードウェアに詳しい」というだけではダメです。職業としてソフトウェア開発に携わるのであれば、技術的な知識はもちろんのこと、「ソフトウェアの開発技術」や「プロジェクトの管理技術」なども必要になります。
近年、ICチップの高集積化に伴い、組み込みソフトウェアの多機能化・大規模化が進んでいます。例えば、携帯電話のソフトウェア開発の場合、100人以上のエンジニアがかかわる大規模プロジェクトになります。しかし、その一方で開発期間は短くなる傾向にあります。短期間で高性能・高品質のソフトウェアを作るためには、“開発プロセスをきちんと理解し、いかに効率的に作業を行うかを考えること”が重要になります。
開発プロセスと開発モデル
開発プロセスとは、ソフトウェアの企画から実際の製造作業、運用・保守に至るまでの過程において、どの段階でどのような作業を行うかを規定した枠組みのことです。開発や管理にかかわる人に対し、実施する作業について共通認識を持たせ、作業の効率化を図ることを主な目的とします。
一般的に、開発プロセスには表1のようなものがあります。
開発プロセス | 説明 |
---|---|
要件定義 | ソフトウェアの機能やパフォーマンスなどの条件を明確にする。また、開発方法、スケジュール、コストなどの分析を行う |
基本設計 (外部設計) |
ソフトウェアの機能をサブシステムに分割し、ユーザーインターフェイスや入出力などの設計を行う |
詳細設計 (内部設計) |
サブシステムをさらに細かくモジュールに分割し、具体的な機能を設計する |
プログラミング | 詳細設計を基にコーディングを行い、プログラムを作成する |
単体テスト | 作成したプログラムについてモジュールごとに機能を満たしているかどうかをテストする |
結合テスト | モジュールを結合して、サブシステムあるいはソフトウェアとして動作するかどうかをテストする |
総合テスト・ システムテスト |
実際の運用環境において、ソフトウェアが要件どおりに動作するかどうかをテストする |
導入・運用 | 要件定義で挙げられた機能やパフォーマンスなどの条件を満たしていることを確認し、ソフトウェアをリリースする |
表1 開発プロセスの例 |
これらの開発プロセスを実施する順番や形式をモデル化したものが開発モデルです。開発モデルには、ウォーターフォールモデル、スパイラルモデルなど、さまざまなものがあります。
ウォーターフォールモデル
ウォーターフォールモデルは、最も基本的な開発モデルです。その名のとおり、水が高いところから低いところへ流れるように、各開発プロセスを1つずつ順番に進めていきます。各開発プロセスの最後にはそのプロセスで作成したドキュメントなどの成果物をレビューし、必要な作業がきちんと行われているかどうかを確認します。基本設計では「要件定義書」を基に、詳細設計では「基本設計書」を基に……、といった具合に前のプロセスの成果物を基に、次のプロセスの作業を行います。そのため、前のプロセスが完了しなければ次のプロセスに進めません。
ウォーターフォールモデルには、“各開発プロセスの区切りが明確であり、全体の流れを把握しやすい”という長所があります。そのため、大規模プロジェクトによく用いられます。
一方で、“要件定義や基本設計などの上流プロセスにミスがあると、テストなどの下流プロセスに大きく影響する”という短所もあります。例えば、リリース直前にデータベース検索機能でパフォーマンス上の問題が見つかったとしましょう。この問題を解決するためには、コードの書き方を改善する(プログラミング)、データベース検索のアルゴリズムを変える(詳細設計)、データベースのレコード設計を変える(基本設計)など、開発プロセスを大きく手戻りしなければなりません。テスト段階でユーザーによる仕様変更が発生した場合も同様です。
スパイラルモデル
下流プロセスでの問題の発生や仕様変更による手戻りが大きいというウォーターフォールモデルの短所をカバーするために考えられたのが、スパイラルモデルです。基本はウォーターフォールモデルと同じですが、ソフトウェアを「サブシステム」に分割し、螺旋(らせん)を描くようにサブシステムごとに開発プロセスを繰り返して開発を進めます。
早い段階でテストを行い、ユーザーの要件を満たしているかどうかを確認できるため、“要件定義や設計でのミスやユーザーとの認識の違いを早期に検出して修正することが可能”です。一方で、“プロジェクト全体が完了する時期の見極めやプロジェクト全体の管理が難しい”という短所もあります。
そのほかの開発モデル
ウォーターフォールモデルやスパイラルモデル以外にも表2に示すような開発モデルがあります。
開発モデル | 説明 |
---|---|
プロトタイピングモデル | 早い段階でプロトタイプ(試作品)を作り、ユーザーによる評価と改善を繰り返すことで、要件に見合った製品を作り上げていく開発モデル |
インクリメンタルモデル | 最初に要件定義を行ってソフトウェアを独立性の高い機能に分割し、機能ごとに並行して開発を進め、段階的に各機能をリリースしていく開発モデル |
エボリューショナルモデル | 要件定義、設計、プログラミング、テストを行ってソフトウェアを完成させた後、ユーザーの仕様変更に応じてソフトウェアに改良を重ねていく開発モデル |
アジャイルモデル | 仕様の変更が頻繁に発生することを前提として、仕様を厳密に定義せずに、細かく分割した機能単位ごとに短期間での実装とテストを繰り返すことで、各機能の仕様を検証しながら機能を追加していく開発モデル |
表2 そのほかの開発モデル |
以上のように、開発モデルにはさまざまなものがあり、それぞれ長所・短所があります。そのため、ソフトウェアの性質や規模、スケジュール、コスト、さらにエンジニアや開発会社の経験やノウハウなども検討したうえで、最適な開発モデルを選択する必要があります。
補足:「組込みソフトウェア向け開発プロセスガイド」のV字モデル
IPA(独立行政法人 情報処理推進機構)は、組み込みソフトウェア開発を対象として開発プロセスを整理し、それを「組込みソフトウェア向け開発プロセスガイド」としてまとめています。
このガイドでは、組み込みソフトウェア開発におけるプロセスを図3のように「V字モデル」で規定しています。
このV字モデルは、左側のプロセスで作り込んだ内容を、右側のプロセスで確認することを表しています。つまり、システム要求定義で定義した要件はシステムテストで、ソフトウェア詳細設計で設計した内容は単体テストで確認するという意味です。なお、このモデルは開発プロセスを整理したものであり、ウォーターフォールモデルやスパイラルモデルのようにプロセスを実施する順序については規定していません。
課題演習―【問題6】
いかがでしたでしょうか? 開発プロセスについて理解できましたか。次回は「要件の定義や分析などに用いる“図”」について説明します。お楽しみに! (次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.