| 回 | 主題 | コマシラバス項目 | 内容 | 教材・教具 |
|
1
|
ソフトウェア品質とは何か
|
科目の中での位置付け
|
本回は、本科目全体の出発点として、「ソフトウェア品質」という概念を再定義する導入回である。本科目は「開発技術を学ぶ授業」ではなく、「品質を保証するための体系を学ぶ授業」であるという立場を明確にする。そのため第1回では、プログラムを書く技術そのものではなく、なぜ品質が問題になるのか、品質とは何を意味するのか、誰が品質に責任を持つのか、といった基本的な問いを扱う。 現代社会では、行政システム、金融システム、医療機器、交通制御など、ソフトウェアの不具合が社会的損失や人命に関わる重大事故に直結する例が少なくない。したがって、ソフトウェア工学は単なる技術分野ではなく、社会的責任を伴う専門領域である。本回ではまず、ソフトウェア品質を「動けばよい」という水準から切り離し、国際標準(ISO/IEC 25010など)に基づく品質特性の枠組みを平易に整理する。その上で、品質を誰がどの工程で担保するのかという視点を持つことが、本科目の全体理解につながることを示す。 また、本科目は秋学期の開発実習科目への接続科目であるため、ここで品質という視点を持たせることが重要である。開発者になる前に、まず「品質を判断できる視点」を獲得することが本授業の根幹である。本回は、その思想的土台を形成する位置づけにある。
|
◆コマ主題細目① ・ISO/IEC 25010:2011 Systems and software engineering — Systems and software Quality Requirements and Evaluation (SQuaRE) ・IPA『ソフトウェア品質説明のためのガイドブック』https://www.ipa.go.jp/files/000024845.pdf
◆コマ主題細目② ・Boehm, B. (1981) Software Engineering Economics ・Pressman, R. S. & Maxim, B. R. (2019) Software Engineering: A Practitioner's Approach
◆コマ主題細目③ ・ISO/IEC 25010:2011 Systems and software engineering — Systems and software Quality Requirements and Evaluation (SQuaRE)(概要解説:ISO公式サイトおよびJISC解説ページ)
|
|
コマ主題細目
|
① ソフトウェア品質の再定義 ② 品質特性の基本構造 ③ 品質責任と工程の関係
|
|
細目レベル
|
① ソフトウェア品質が単に「エラーが出ないこと」や「仕様どおりに動作すること」だけを意味するのではなく、「利用者の期待に応え、長期間にわたり安定して運用でき、将来的な変更にも耐えられる状態」を含む広い概念であることを説明できる水準まで。例えば、電卓アプリが正しい計算結果を出していても、ボタンが極端に小さく押しづらい場合は使用性に問題があること、ネット通販サイトが注文処理を正しく行えても、アクセス集中時に頻繁に停止する場合は信頼性に問題があることを具体的に説明できる水準まで。また、自治体のオンライン申請システムが期限日に停止した場合、機能的には正しく設計されていても社会的影響が極めて大きいことを例に挙げ、品質は社会的責任と結びつく概念であることを説明できる水準まで。
|
② ISO/IEC 25010で整理されている品質特性(機能適合性、信頼性、使用性、性能効率性、保守性、移植性など)のそれぞれの意味を、抽象的説明ではなく具体例を通して説明できる水準まで。例えば、機能適合性とは「予約ボタンを押せば本当に予約できる」こと、信頼性とは「一定時間以上連続して安定動作する」こと、性能効率性とは「3秒以内に画面が表示される」こと、使用性とは「初めて使う人でも操作方法が分かる」こと、保守性とは「将来、機能追加や修正が比較的容易に行える構造である」ことを具体的に説明できる水準まで。また、スマートフォンアプリの更新で不具合が頻発した事例を挙げ、それがどの品質特性に関係しているかを分類できる水準まで。
|
③ 品質は最終工程のテストだけで保証されるものではなく、サステナブルソフトウェアⅠで学修した「ウォーターフォール・モデル」の要求仕様、設計、実装といった各工程で段階的に作り込まれるものであることを因果関係として説明できる水準まで。例えば、要求仕様に「できるだけ速く表示する」と書かれていると、設計者は具体的な数値基準を持てず、結果として性能評価基準が曖昧になることを説明できる水準まで。また、設計段階でデータ構造を十分に検討しなかった場合、実装後に性能問題が発覚する可能性があること、実装段階でエラー処理を十分に設計しなかった場合、運用中に予期しない停止が起こり得ることを具体例で説明できる水準まで。さらに、品質責任は特定の一人が負うものではなく、各工程での判断の積み重ねが最終品質を決定することを説明できる水準まで。
|
|
キーワード
|
① ソフトウェア品質 ② ISO/IEC 25010 ③ 品質特性 ④ 品質責任 ⑤ 信頼性 使用性 保守性
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 本コマでは、ソフトウェア品質の基本概念と品質特性の枠組みを学習した。復習として、まずISO/IEC 25010の品質特性を自分の言葉で簡潔に説明する文章を作成すること。次に、自分が日常的に利用しているアプリケーション(例:大学のポータル、SNS、動画配信サービスなど)を一つ選び、その品質を「機能適合性」「使用性」「性能効率性」「信頼性」の観点から評価してみること。それぞれの観点で良い点と改善点を具体的に書き出すこと。また、「品質が低いと感じた経験」を一つ思い出し、それがどの品質特性に関係しているかを整理すること。さらに、品質が低い状態で運用が続いた場合に、どのような社会的・経済的影響が考えられるかを200~300字程度で記述すること。
◆次コマの予習 次回は「品質事故と工程責任」を扱う。予習として、過去に報道された情報システム障害やアプリ停止事故の事例を1つ調べること。ニュース記事や企業の公式発表を参照し、「どの工程で問題が発生した可能性があるか」を推測すること。また、その事故が利用者や企業にどのような影響を与えたかを整理すること。できれば2つ以上の事例を比較し、共通点を探してみること。
|
|
2
|
品質事故と工程責任
|
科目の中での位置付け
|
第1回では、ソフトウェア品質の基本概念と品質特性の枠組みを学習し、「品質とは何か」という抽象的理解を整理した。本回では、その理解を具体的事例に結び付ける。実際に発生したソフトウェア障害や品質事故を題材とし、「どの工程で品質が十分に作り込まれなかったのか」「どの工程で確認されるべきだったのか」を分析する。 ソフトウェア品質は理論だけで語られるものではなく、現実の事故や障害の中で可視化される。金融システムの停止、オンライン試験システムのダウン、行政システムのデータ消失など、近年も多数の事例が報告されている。これらの事故は単なる「バグ」の問題ではなく、要求の曖昧さ、設計の不備、レビュー不足、テストの不十分さなど、工程全体に関わる問題である場合が多い。 本回では、事故を単なる失敗談として消費するのではなく、工程責任の観点から整理する。どの工程で何が見逃されたのか、どの工程で検証されるべきだったのかを構造的に考察することで、「品質責任は工程ごとに存在する」という理解を深める。本回は、本科目の中でも特に実践的な分析視点を養う回である。
|
◆コマ主題細目① ・IPA「ソフトウェア開発データ白書」 https://www.ipa.go.jp ・総務省「情報通信白書」(システム障害事例) https://www.soumu.go.jp/johotsusintokei/whitepaper/ ◆コマ主題細目② ・Pressman & Maxim, Software Engineering, Chapter 3 “Process Models” ・Sommerville, Software Engineering, Chapter 2 “Socio-technical systems” ◆コマ主題細目③ ・ISO/IEC 12207 Software life cycle processes(工程定義) ・IPA「共通フレーム2013」 ◆コマ主題細目④ ・IEEE Standard 1028-2008 (Software Reviews and Audits) ・IPA「ソフトウェア開発プロセス改善事例集」
|
|
コマ主題細目
|
① 品質事故の具体例の理解 ② 事故原因の工程別分析 ③ 工程責任の概念整理 ④ 再発防止のための工程改善視点
|
|
細目レベル
|
① この細目レベルの理解すべき部分はここまでである。実際に発生したソフトウェア品質事故を、単なるニュースとしてではなく、構造的に説明できる水準まで。例えば、オンライン入試出願システムが受付初日に停止した事例を考える場合、「アクセス集中によりサーバが応答不能になった」という表面的現象だけでなく、「想定同時接続数をどの程度見積もっていたのか」「負荷試験は実施されていたのか」「本番環境とテスト環境に差異はなかったか」といった具体的観点で整理できる水準まで。また、金融機関のシステム更新後に大量の振込遅延が発生した事例を取り上げ、「更新手順の確認不足」「バックアップ体制の不備」「運用手順書の曖昧さ」など複数要因が絡み合う可能性を説明できる水準まで。さらに、品質事故は単一原因ではなく工程横断的な要因の積み重ねであることを、具体例を用いて説明できる水準まで。
|
② この細目レベルの理解すべき部分はここまでである。取り上げた事故を工程別に分析し、「どの工程で品質が十分に作り込まれなかったのか」を分類できる水準まで。例えば、利用者数の想定が過小であった場合は要求仕様段階での性能要件定義の不足が原因である可能性があること、負荷分散構成を採用しなかった場合は設計段階での判断不足が原因である可能性があること、テスト段階で本番同等の負荷試験を行わなかった場合はテスト工程での確認不足が原因である可能性があることを説明できる水準まで。また、実装段階で例外処理が十分でなかったために一部の異常入力でシステムが停止した場合は実装工程の責任が関係することを具体的に説明できる水準まで。さらに、事故を工程単位で分解することで「どこで防げた可能性があったか」を論理的に示せる水準まで。
|
③ この細目レベルの理解すべき部分はここまでである。工程責任とは「各工程が担うべき品質保証の役割範囲」を意味する概念であることを具体例で説明できる水準まで。例えば、要求工程では「性能は3秒以内」など数値基準を明確にする責任があること、設計工程では「同時アクセスを想定した構造」を採用する責任があること、実装工程では「例外処理や入力チェックを確実に実装する」責任があること、テスト工程では「本番に近い条件で負荷試験を行う」責任があることを整理して説明できる水準まで。また、いずれか一工程が不十分であれば最終品質に影響が出ることを因果関係として説明できる水準まで。
|
④ この細目レベルの理解すべき部分はここまでである。事故分析の目的が責任追及ではなく再発防止にあることを説明できる水準まで。具体的には、「なぜ見逃されたのか」「どうすれば次回防げるのか」という視点で改善策を考える必要があることを理解する水準まで。例えば、「性能要件を定量化する」「設計レビューで負荷観点を追加する」「本番同等の負荷試験を義務化する」「障害発生時の運用手順を明文化する」などの具体的改善策を挙げられる水準まで。さらに、改善策は単一の対策ではなく、工程横断的な仕組み改善であることを説明できる水準まで。
|
|
キーワード
|
① 品質事故 ② 工程責任 ③ 要求不備 ④ 設計不備 ⑤ 負荷試験 再発防止 工程改善
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 本コマで扱った品質事故の事例について、まず事故の概要を300字程度でまとめること。そのうえで、どの工程に主な問題があったと考えられるかを自分なりに分類し、その理由を具体的に記述すること。また、「もし自分が設計担当者であったら、どの段階でどのような確認を追加したか」を考え、工程改善案を文章で整理すること。さらに、他のニュース記事を1件調べ、同様の観点で工程別に分析すること。 ◆次コマの予習 第3回ではウォーターフォールモデルの全体像を扱う。予習として、要求・設計・実装・テスト・保守の工程を紙に書き出し、それぞれの工程で「何を作るか」と「何を確認するか」を自分なりに整理してみること。また、前回・今回の内容を踏まえ、「品質はどの工程で最も重要か」という問いに対する自分の考えをまとめておくこと。
|
|
3
|
ウォーターフォールモデルの全体像
|
科目の中での位置付け
|
第1回ではソフトウェア品質の基本概念を整理し、第2回では品質事故を通して工程責任の重要性を学んだ。本回では、それらの理解を体系的に結び付ける枠組みとして、ウォーターフォールモデルの全体構造を扱う。ウォーターフォールモデルは古典的な開発モデルとして知られているが、本科目では単なる歴史的手法として扱うのではなく、「品質がどの工程で作り込まれ、どの工程で確認されるのか」を整理するための分析枠組みとして位置付ける。 ウォーターフォールモデルは、要求仕様定義、設計、実装、デバッグ、テスト、保守といった工程を段階的に進める構造を持つ。この順序構造は、工程間の責任範囲を明確化する利点を持つ一方で、前工程の不備が後工程に波及しやすいという特徴も持つ。本回では、各工程の役割を単に名称で覚えるのではなく、「その工程では何を決めるのか」「どの品質特性に主に関係するのか」「どのような成果物が生まれるのか」という観点で整理する。 さらに、本回は後続の設計・実装・デバッグ・テストの各回の基盤となる回であるため、全体像を正確に理解しておくことが不可欠である。工程構造を理解することで、品質問題がどの段階で発生しやすいかを見抜く視点を養う。
|
◆コマ主題細目① ・Pressman & Maxim, Software Engineering: A Practitioner's Approach, Chapter 2 “Process Models” ・Sommerville, Software Engineering, Chapter 2 “Process models” ◆コマ主題細目② ・IPA「共通フレーム2013」 https://www.ipa.go.jp/files/000025239.pdf ◆コマ主題細目③ ・Boehm, B. W. “Software Engineering Economics” ・IPA「ソフトウェア開発データ白書」 ◆コマ主題細目④ ・ISO/IEC 12207 Software life cycle processes ・IEEE Std 730-2014 (Software Quality Assurance Processes)
|
|
コマ主題細目
|
① ウォーターフォールモデルの基本構造 ② 各工程の役割と成果物 ③ 工程間の依存関係と影響伝播 ④ 工程構造と品質責任の整理
|
|
細目レベル
|
① ウォーターフォールモデルが、要求仕様定義から保守に至るまでの工程を段階的かつ順序的に配置した開発構造であることを説明できる水準まで。具体的には、要求仕様定義工程で「何を作るか」を決定し、その内容を文章として整理すること、設計工程でその要求を実現するための構造や仕組みを図や表で具体化すること、実装工程で設計内容をプログラムとして形にすること、デバッグ工程で発見された欠陥を修正すること、テスト工程で定められた基準に従って品質を測定すること、保守工程で運用後の修正や機能追加を行うことを順序立てて説明できる水準まで。また、各工程が前工程の成果物を前提として進む構造であることを、簡単な例(例:図書貸出システムの要求→設計→実装)を用いて具体的に説明できる水準まで。さらに、この構造が「上から下へ水が流れる」ようなイメージで表現される理由を、工程の進行方向と後戻りの難しさの観点から説明できる水準まで。
|
② 各工程の役割と成果物について、名称だけでなく実際にどのような内容が含まれるかを具体的に説明できる水準まで。例えば、要求仕様定義工程では機能要求や非機能要求、制約条件、前提条件などを記載した要求仕様書が成果物となること、設計工程では画面遷移図、処理フロー図、データ定義書、モジュール構成図などが成果物となること、実装工程ではソースコードやビルドされた実行ファイルが生成されること、テスト工程ではテストケース、テスト結果報告書、バグ管理表などが成果物として残ることを具体的に説明できる水準まで。さらに、それぞれの成果物が次工程の入力となること、例えば設計書がなければ実装者は何を作るべきか判断できないこと、テストケースは要求仕様書に基づいて作成されることを説明できる水準まで。
|
③ 工程間の依存関係と影響伝播について、前工程の不備が後工程にどのような影響を及ぼすかを具体例で説明できる水準まで。例えば、要求仕様に「高速に処理する」としか書かれていない場合、設計段階で具体的な応答時間を決められず、実装後に性能問題が顕在化する可能性があることを説明できる水準まで。また、設計段階でデータの一貫性を十分に検討しなかった場合、実装後にデータ不整合が発生し、大規模修正が必要になる可能性があることを具体的に説明できる水準まで。さらに、テスト工程で十分なケースを用意しなかった場合、リリース後に重大な不具合が発覚する可能性があることを説明できる水準まで。加えて、後工程で問題が発覚すると、前工程に戻って修正する必要があり、その際には修正範囲が広がりコストが増大することを説明できる水準まで。
|
④ 工程構造と品質責任の関係について、各工程が担うべき品質保証の範囲を整理し、工程ごとに異なる責任が存在することを説明できる水準まで。例えば、要求工程では曖昧さや矛盾を排除する責任があり、設計工程では構造的欠陥や将来の変更に弱い構造を避ける責任があり、実装工程ではコーディングミスや例外処理漏れを防ぐ責任があり、テスト工程では定められた基準に基づいて合否を判断する責任があることを具体的に整理して説明できる水準まで。さらに、品質は最終工程だけで保証されるものではなく、各工程で段階的に作り込まれるものであることを具体例(例:設計不備はテストでは完全に補えない)を用いて説明できる水準まで。
|
|
キーワード
|
① ウォーターフォールモデル ② 要求仕様定義 ③ 設計 ④ 実装 ⑤ デバッグ テスト 保守 工程依存性 成果物 品質責任
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 本コマではウォーターフォールモデルの全体像と各工程の役割を学習した。復習として、まず6つの工程を順番に紙に書き出し、それぞれの工程で作成される成果物を具体的に列挙すること。次に、簡単なシステム(例:学内図書検索システム)を想定し、各工程でどのような作業が行われるかを文章で説明すること。また、「要求不備」「設計不備」「テスト不足」がそれぞれどの工程で発生する問題かを分類し、その理由を具体的に書き出すこと。さらに、工程間で後戻りが発生した場合に、どの程度の作業増加が起こるかを想像し、短い文章でまとめること。 ◆次コマの予習 次回は工程と品質制御の対応関係を扱う。予習として、各工程で「何を作るか」と「何を確認するか」を2列で整理すること。また、前回の品質事故の事例を思い出し、それがウォーターフォールのどの工程で防げた可能性があるかを再整理しておくこと。
|
|
4
|
工程と品質活動の基本構造
|
科目の中での位置付け
|
第1回から第3回にかけて、ソフトウェア品質の基本概念、品質事故の構造、ウォーターフォールモデルの全体像を整理してきた。本回は、それらを接続する基礎整理回である。ここでは、各工程における活動を「作る活動」と「確認する活動」という二つの観点から整理する。 多くの初学者は、要求定義、設計、実装、テストといった工程を単なる作業の順序として理解しがちである。しかし実際には、どの工程にも成果物を生み出す活動と、その成果物を確認する活動が存在する。本回では、この二つを明確に区別し、品質責任の所在を整理する。 例えば、要求仕様を書くことは成果物を作る活動であり、その内容に曖昧さや矛盾がないかを確認するレビューは確認活動である。同様に、設計書を作成することと、その設計が要求を満たしているかを検証することは異なる活動である。本回では、工程ごとに「作る」と「確認する」を対応づける基礎構造を理解する。 ここではまだ、デバッグとテストの詳細な区別には踏み込まない。まずは、各工程に品質を支える二種類の活動が存在するという基本構造を押さえることを目的とする。本回は、後続回で扱うレビュー、デバッグ、テストの理解の土台を築く回である。
|
【教材・教具】 ◆コマ主題細目①(開発活動と品質制御活動の定義) • Sommerville, Ian Software Engineering, 10th Edition Chapter 24 “Quality Management” • ISO/IEC 12207 Systems and software engineering — Software life cycle processes ◆コマ主題細目②(要求・設計工程における対応関係) • IEEE Std 1028-2008 Software Reviews and Audits • Pressman & Maxim Software Engineering: A Practitioner's Approach Chapter “Requirements Engineering” ◆コマ主題細目③(実装・デバッグ工程における対応関係) • Sommerville Chapter “Software Testing and Debugging” • ISO/IEC/IEEE 29119 Software Testing Standard ◆コマ主題細目④(テスト工程の位置付け) • ISO/IEC 25010:2011 Quality Model • IEEE Std 829 (Test Documentation)
|
|
コマ主題細目
|
① 開発活動と品質制御活動の定義 ② 要求・設計工程における対応関係 ③ 実装工程における対応関係 ④ 認活動の役割と工程内位置付け
|
|
細目レベル
|
① 開発活動と品質制御活動の定義を、目的・主体・成果物の観点から説明できる水準まで。例えば、要求仕様書を作成することは開発活動であり、その要求仕様書に曖昧さや矛盾がないかを確認することは品質制御活動であることを説明できる水準まで。また、設計図を書くことは開発活動であり、設計レビューを行うことは品質制御活動であることを説明できる水準まで。さらに、開発活動は成果物を生み出す活動であり、品質制御活動はその成果物の妥当性を評価する活動であることを説明できる水準まで。加えて、両者を混同すると品質責任が不明確になることを説明できる水準まで。
|
② 要求・設計工程における対応関係を具体例で説明できる水準まで。例えば、「利用者は予約できる」という要求を文書化することは開発活動であり、その記述が曖昧でないか確認することは品質制御活動であることを説明できる水準まで。また、設計段階でデータ構造を定義することは開発活動であり、その設計が要求と整合しているかを確認する設計レビューは品質制御活動であることを説明できる水準まで。さらに、前工程で品質制御が不十分であると後工程に欠陥が波及することを説明できる水準まで。加えて、前工程での品質制御は後工程の負担を軽減することを説明できる水準まで。
|
③ 実装工程においては、設計書に基づいてプログラムコードを記述する活動と、その記述内容を確認する活動が存在することを説明できる水準まで。例えば、設計書に従って処理を実装することは成果物を作る活動であり、そのコードが設計どおりに記述されているかを確認する活動は別に存在することを説明できる水準まで。また、実装段階での確認活動には、記述ミスや構造的な不整合を早期に発見する目的があることを説明できる水準まで。さらに、実装工程内にも「作る活動」と「確認する活動」が対応して存在することを説明できる水準まで。
|
④ 各工程における確認活動は、その工程で作成された成果物が次工程へ適切に引き渡せる状態であるかを確かめる役割を持つことを説明できる水準まで。例えば、要求工程で作成された仕様が曖昧でないかを確認する活動や、設計工程で作成された設計書が要求と整合しているかを確認する活動が存在することを説明できる水準まで。また、確認活動は成果物の妥当性を評価する活動であり、成果物そのものを作る活動とは目的が異なることを説明できる水準まで。さらに、確認活動が不十分である場合、後工程で問題が顕在化する可能性があることを説明できる水準まで。
|
|
キーワード
|
① 開発活動 ② 品質制御活動 ③ 工程責任 ④ レビュー ⑤ 設計レビュー コードレビュー 静的検査 デバッグ テスト 品質測定 品質向上 工程分離 品質保証
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
【復習課題】 ① 本日の内容を踏まえ、「要求・設計・実装・デバッグ・テスト」の各工程について、 - 開発活動 - 品質制御活動 をそれぞれ2つずつ具体例で書き出すこと。 ② 「ログイン機能」を例に取り、 - 要求段階の開発活動 - 要求段階の品質制御活動 - 設計段階の開発活動 - 設計段階の品質制御活動 を文章で整理すること。 ③ デバッグとテストの違いを300字以上で再定義すること。 特に、「誰が実施するか」「何を目的とするか」「成果物は何か」という観点で整理すること。 ④ 「開発活動だけを行い、品質制御活動を行わなかった場合に起こる問題」を、具体例を挙げて説明すること。
【予習課題】 ① 次回は「要求仕様定義の開発方法」に入る。 日常生活の中で「曖昧な指示」の例を3つ挙げ、それがなぜ曖昧なのかを書き出すこと。 ② 「仕様を書くこと」と「仕様を確認すること」の違いを自分の言葉で整理すること。 ③ 任意のWebサービスを1つ選び、その要求仕様が曖昧だった場合にどの工程で問題が発生するかを想像して文章でまとめること。
|
|
5
|
要求仕様定義の開発方法
|
科目の中での位置付け
|
第4回では、各工程における開発活動と品質制御活動の違いを整理し、工程ごとに「作る活動」と「確認する活動」が存在することを理解した。本回では、その中でも開発プロセスの出発点となる「要求仕様定義工程」に焦点を当てる。要求仕様定義は、ウォーターフォールモデルにおいて最初に位置付けられる工程であり、この段階での曖昧さや抜け漏れは後工程全体に影響を与える。 要求仕様定義工程では、利用者や関係者の要望を抽出し、それを整理し、文書として明確に記述する作業を行う。しかし、単に要望をそのまま書き並べればよいわけではない。曖昧な言葉の排除、矛盾の解消、測定可能な表現への変換など、一定の技法が必要となる。本回では、高度な要求工学理論には踏み込まず、学部2年生が理解できる範囲で、要求抽出・整理・文書化の基本的手法を学ぶ。 また、本回で学ぶ内容は、次回以降の「要求仕様の品質制御」や「設計工程」に直結する。要求を正しく書けなければ、設計も正しく行えない。本回は、開発プロセス全体の基盤を形成する重要な回である。
|
【教材・教具】 ◆コマ主題細目① ・Sommerville, Software Engineering, Chapter 4 “Requirements Engineering” ・IEEE Std 830-1998 “Recommended Practice for Software Requirements Specifications” ◆コマ主題細目② ・ISO/IEC/IEEE 29148:2018 Requirements Engineering ・IPA「要求仕様作成ガイドライン」 ◆コマ主題細目③ ・Pressman & Maxim, Software Engineering, Chapter 7 “Requirements Modeling” ◆コマ主題細目④ ・IPA「共通フレーム2013」 https://www.ipa.go.jp/files/000025239.pdf
|
|
コマ主題細目
|
① 要求抽出の基本的考え方 ② 要求の整理と分類 ③ 要求の具体化(曖昧さの除去) ④ 要求仕様書の文書化手法
|
|
細目レベル
|
① 利用者や関係者から要求を抽出するとは何を意味するのかを具体例を用いて説明できる水準まで。例えば、学内図書検索システムを開発する場合、「検索できるようにしてほしい」という要望をそのまま受け取るのではなく、「検索対象は書籍名か、著者名か、キーワードか」「検索結果は何件まで表示するのか」「並び替え機能は必要か」といった具体的項目に分解する必要があることを説明できる水準まで。また、利用者の発言の中には「便利にしたい」「使いやすくしたい」といった抽象的表現が含まれることが多く、それを具体的な機能や条件に変換する作業が要求抽出であることを説明できる水準まで。さらに、要求抽出にはヒアリング、アンケート、既存システム分析など複数の方法があることを理解し、それぞれの特徴を簡単に説明できる水準まで。
|
② 抽出された要求を整理・分類する意義を説明できる水準まで。例えば、オンライン予約システムの要求として「予約登録」「予約取消」「管理者確認」「アクセスログ保存」など複数の要求が出た場合、それらを機能要求と非機能要求に分類する必要があることを説明できる水準まで。また、「同時に100人がアクセスしても動作すること」は性能に関する非機能要求であること、「通信は暗号化すること」はセキュリティに関する非機能要求であることを具体的に示せる水準まで。さらに、要求を分類せずに列挙すると見落としや重複が発生しやすいことを説明できる水準まで。
|
③ 曖昧な要求を具体化する重要性を具体例で説明できる水準まで。例えば、「迅速に表示する」という表現を「3秒以内に結果を表示する」に書き換える必要があること、「簡単に操作できる」という表現を「3クリック以内で完了できる」に置き換える必要があることを説明できる水準まで。また、「必要に応じて通知する」という要求は基準が不明確であるため、「エラー発生時にメール通知する」と明示する必要があることを具体的に示せる水準まで。さらに、主語が不明確な要求(例:「削除できる」)を「管理者のみ削除できる」と明確化する必要があることを説明できる水準まで。
|
④ 要求仕様書を文書として整える際の基本的手法を説明できる水準まで。例えば、目的・対象範囲・用語定義・機能一覧・非機能要求・制約条件といった章立てで整理することが望ましいことを説明できる水準まで。また、箇条書きや番号付けを用いることで読みやすさが向上すること、測定可能な表現を用いることで後工程での検証が容易になることを具体例で示せる水準まで。さらに、第三者が読んでも同じ解釈になる文章を書く必要があることを説明できる水準まで。
|
|
キーワード
|
① 要求抽出 ② ヒアリング ③ 機能要求 ④ 非機能要求 ⑤ 曖昧表現 具体化 文書化
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 本コマでは要求抽出・整理・文書化の基本を学習した。復習として、簡単なシステム(例:学内掲示板システム)を想定し、まず利用者の要望を自由記述で10個書き出すこと。その後、それらを機能要求と非機能要求に分類すること。次に、曖昧な表現を3つ選び、具体的な数値や条件を用いて書き直すこと。さらに、簡易的な要求仕様書(A4一枚程度)を自分で作成し、章立てを意識して整理すること。 ◆次コマの予習 次回は「要求仕様の品質制御」を扱う。予習として、自分が作成した要求仕様書を読み直し、曖昧さ・矛盾・抜け漏れがないかをチェックしておくこと。また、友人に読んでもらい、分かりにくい箇所を指摘してもらうこと。
|
|
6
|
要求仕様の品質制御
|
科目の中での位置付け
|
第5回では、要求抽出・整理・文書化の基本的手法を学び、要求仕様書をどのように作成するかを理解した。本回では、その続きとして「作成された要求仕様をどのように確認し、品質上の問題を発見するか」という品質制御の視点を扱う。要求仕様は開発プロセスの最上流に位置する成果物であり、ここでの不備は後工程に連鎖的に波及する。設計工程での構造的不備や実装段階での大量修正、テスト段階での重大欠陥発覚の多くは、要求段階の曖昧さや漏れに起因することが少なくない。 実務においても、大規模障害の原因を分析すると「要求が明確でなかった」「関係者間で解釈が一致していなかった」「前提条件が文書化されていなかった」といった問題が見つかることが多い。したがって、要求仕様の品質制御は単なる形式的作業ではなく、プロジェクト全体のリスク低減活動である。本回では、レビューという実践的手法を通じて、曖昧さ・矛盾・抜け漏れをどのように発見するかを具体例とともに学ぶ。 ここでは、形式手法や数理的検証のような高度な技法は扱わない。代わりに、実際の文章を読み、どこに問題が潜んでいるかを意識的に探す「読みの技術」を身につけることを重視する。要求仕様は文章で書かれることが多いため、日本語の曖昧さや省略が品質に直結する。本回は、文章を技術的観点で読む訓練の第一歩でもある。
|
◆コマ主題細目① ・IEEE Std 1028-2008 (Software Reviews and Audits) ・Pressman & Maxim, Software Engineering, Chapter 6 “Requirements Analysis” ◆コマ主題細目② ・ISO/IEC/IEEE 29148:2018 Requirements Engineering ・IPA「要求仕様書作成ガイドライン」 ◆コマ主題細目③ ・Sommerville, Software Engineering, Chapter 4 “Requirements Engineering” ◆コマ主題細目④ ・IPA「共通フレーム2013」 https://www.ipa.go.jp/files/000025239.pdf
|
|
コマ主題細目
|
① ①要求仕様レビューの目的と位置付け ② ②曖昧さの検出手法 ③ ③矛盾・抜け漏れの発見方法 ④ ④レビュー結果の整理とフィードバック
|
|
細目レベル
|
① ①要求仕様レビューの目的と位置付けを、具体的事例とともに説明できる水準まで。例えば、学内履修登録システムにおいて「学生は履修科目を登録できる」と書かれているだけでは、登録可能期間、上限単位数、重複登録の可否、必修科目の扱いなどが不明確であることを説明できる水準まで。また、レビューは文書の誤字脱字を探す活動ではなく、後工程での手戻りを防ぐ予防的品質保証活動であることを説明できる水準まで。さらに、レビューを実施しない場合に設計段階で解釈の違いが発生し、実装後に「そんな仕様ではない」と問題になる可能性を具体例で説明できる水準まで。
|
② ②曖昧さの検出手法を、複数の具体例を用いて説明できる水準まで。例えば、「迅速に処理する」「十分な性能を確保する」「適切に通知する」といった表現が測定不能であることを説明できる水準まで。また、「迅速に」を「3秒以内に応答する」、「十分な性能」を「同時接続100人まで遅延なく処理する」と書き換える必要があることを示せる水準まで。さらに、「削除できる」とだけ書かれている場合、誰が削除できるのか、どの条件で削除できるのかを明確化する必要があることを説明できる水準まで。加えて、「可能な限り」「基本的に」「原則として」といった曖昧語が品質リスクとなることを説明できる水準まで。
|
③ ③矛盾や抜け漏れの発見方法を、具体的な文章例を用いて説明できる水準まで。例えば、「管理者のみ閲覧可能」と「全利用者が閲覧可能」が同一文書内に存在する場合は矛盾であることを指摘できる水準まで。また、「ログイン機能がある」と記載されているが、「ログイン失敗時の処理」や「パスワード再発行機能」が未記載であれば抜け漏れであると説明できる水準まで。さらに、「通知する」と書かれているが通知手段(メールか画面表示か)が未定義である場合も抜け漏れの一種であることを説明できる水準まで。加えて、要求同士が前提条件を共有しているかどうかを確認する必要があることを説明できる水準まで。
|
④ ④レビュー結果の整理と改善活動の関係を具体例で説明できる水準まで。例えば、レビュー指摘事項を一覧表にまとめ、「曖昧表現」「矛盾」「未定義条件」と分類することを説明できる水準まで。また、各指摘に対して修正案を提示し、修正後の文章を再確認することが品質向上につながることを説明できる水準まで。さらに、レビュー記録を保存することで後工程で再確認でき、同様の問題の再発防止につながることを説明できる水準まで。
|
|
キーワード
|
① 要求仕様レビュー 曖昧表現 矛盾 抜け漏れ レビュー記録 品質制御
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 本コマでは、要求仕様の品質制御手法を学習した。復習として、短い要求仕様(例:学内アンケートシステム)を自分で作成し、その中に意図的に曖昧な表現を含めてみること。その後、それを具体的な数値や条件に書き直すこと。さらに、矛盾する条件を2つ設定し、自分で検出できるか確認すること。また、レビュー指摘事項を表形式で整理し、「指摘内容」「修正案」「確認状況」を記録する練習を行うこと。 ◆次コマの予習 次回は設計工程の開発方法を扱う。予習として、要求仕様に曖昧さが残っている場合、設計段階でどのような混乱が起こるかを想像し、具体例を書き出すこと。また、自分の要求仕様書を設計に落とし込むとしたら何が不足しているかを整理しておくこと。
|
|
7
|
要求から設計への分解
|
科目の中での位置付け
|
第5回および第6回では、要求仕様の作成方法と、その品質制御(レビュー)の重要性を扱った。本回では、要求仕様として定義された内容を、どのように「設計」という形へ具体化していくのかを学ぶ。ここでの目的は、設計理論を網羅することではなく、「要求をそのまま実装へ持ち込まない」という原則を理解することである。 要求は通常、「利用者は予約できる」「管理者は登録情報を変更できる」といった抽象的な記述で表現される。しかし、抽象的な要求のままではプログラムを書くことはできない。要求を、画面構成、処理の流れ、データ構造といった具体的要素へ分解し、構造化する必要がある。この分解作業こそが設計工程の本質である。 また、設計工程は単なる中間作業ではない。設計の質は、その後の実装・デバッグ・テスト工程の負担に直接影響する。例えば、画面遷移が整理されていない設計は、実装段階で処理の重複や矛盾を生みやすい。データ構造が曖昧であれば、実装段階で整合性エラーが頻発する可能性がある。本回では、設計工程の役割を「構造を明確にする工程」として位置付け、後工程との関係も含めて理解する。 なお、詳細な設計手法や設計品質の評価は次回以降に扱う。本回では、要求を「画面」「処理」「データ」という三つの視点に分解する基礎構造を理解することに集中する。
|
◆コマ主題細目① ・Sommerville, Software Engineering, Chapter 5 “Software Design” ◆コマ主題細目② ・Pressman & Maxim, Software Engineering, Chapter 8 “Design Engineering” ◆コマ主題細目③ ・IPA「ソフトウェア設計ガイドライン」 ◆コマ主題細目④ ・IEEE Std 1016-2009 (Software Design Description)
|
|
コマ主題細目
|
① ①要求を設計要素に分解する ② ②画面構造の整理 ③ ③処理の流れの整理 ④ ④データの整理
|
|
細目レベル
|
① 要求に記載された内容を、そのまま実装対象とするのではなく、設計要素へ段階的に分解する必要があることを説明できる水準まで。例えば、「利用者は予約できる」という一文の要求は、その内部に複数の要素を含んでいることを説明できる水準まで。具体的には、入力画面の表示、入力値の妥当性確認、在庫確認処理、予約登録処理、登録完了通知処理といった複数の処理に分解できることを説明できる水準まで。また、「予約できる」とはどの条件下で可能なのか、予約できない場合はどのようなメッセージを表示するのかといった条件整理も必要であることを説明できる水準まで。さらに、要求を分解せずに実装へ進んだ場合、実装者ごとに処理順序や条件解釈が異なり、動作のばらつきや不整合が生じる可能性があることを説明できる水準まで。加えて、要求の分解作業は曖昧さや未定義条件を発見する機会でもあり、設計工程の最初の品質作り込みであることを説明できる水準まで。
|
② 設計段階において画面構造を整理することの目的と意義を説明できる水準まで。例えば、予約機能であれば「入力画面」「確認画面」「完了画面」という基本的な流れが存在し、それぞれの画面で何を表示し、どのような操作を受け付けるのかを明確にする必要があることを説明できる水準まで。また、画面間で受け渡されるデータ(入力値、確認内容、登録結果など)を整理しなければ、実装段階でデータの受け渡し漏れや誤表示が発生する可能性があることを説明できる水準まで。さらに、画面遷移図を用いて構造を可視化することで、利用者の操作の流れが整理され、抜けや重複を発見しやすくなることを説明できる水準まで。加えて、画面構造が未整理のまま実装を進めると、後工程で大規模な修正が必要になる可能性があることを説明できる水準まで。③内部設計の方法について、処理分割・データ構造設計・例外処理設計を具体例で説明できる水準まで。例えば、貸出処理を「利用者確認」「在庫確認」「貸出登録」「履歴更新」「ログ記録」に分割することが内部設計であることを説明できる水準まで。また、貸出テーブルに必要な項目(利用者ID、書籍ID、貸出日、返却予定日、延長回数など)を定義し、それぞれのデータ型や制約条件を決定することが内部設計に含まれることを説明できる水準まで。さらに、内部設計が適切でない場合、実装段階で処理が複雑化し、バグが発生しやすくなることを具体例で説明できる水準まで。
|
③ 設計段階で処理の流れを順序立てて整理する必要性を説明できる水準まで。例えば、予約機能においては、入力値の妥当性確認を行った後に在庫確認を行い、その後に登録処理を実施するという順序が存在することを説明できる水準まで。また、入力値確認を省略した場合、不正データが登録処理へ渡る危険があることを説明できる水準まで。さらに、在庫確認と登録処理の順序が逆であれば、整合性エラーが発生する可能性があることを説明できる水準まで。加えて、処理の流れを明確に定義することで、例外処理の位置や条件分岐の構造も整理されることを説明できる水準まで。さらに、処理の流れを明示することは、後工程でのテスト設計にも影響し、どの分岐や例外経路を確認すべきかを判断しやすくなることを説明できる水準まで。
|
④ 設計段階で扱うデータ項目を整理することの重要性を説明できる水準まで。例えば、予約データには利用者ID、予約日時、席番号、予約状態などの項目が必要であり、それぞれの意味と役割を明確に定義する必要があることを説明できる水準まで。また、データ型や入力範囲を定義していない場合、異常値や不正値が登録される可能性があることを説明できる水準まで。さらに、同一時間帯に同一席を二重予約できないようにするための整合性制約を設計段階で整理する必要があることを説明できる水準まで。加えて、データ整理が不十分であると、実装段階で整合性チェックが困難になり、テスト段階で重大欠陥が発見される可能性があることを説明できる水準まで。さらに、データの整理は単なる項目列挙ではなく、システム全体の整合性と将来変更への耐性を支える基盤であることを説明できる水準まで。
|
|
キーワード
|
① 設計工程 要求分解 外部設計 内部設計 画面遷移図 データ定義書 処理分割
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 本コマでは、要求を設計へ落とし込む方法を学んだ。復習として、簡単な機能(例:会員登録機能)を選び、その要求を分解して画面・処理・データ構造に整理すること。また、簡単な画面遷移図を手書きで作成し、他者に説明してみること。さらに、内部設計としてどのような処理分割が適切かを文章でまとめること。 ◆次コマの予習 次回は設計の品質制御を扱う。予習として、自分が作成した設計成果物に不備がないかを見直し、曖昧な箇所や不足している要素を洗い出しておくこと。
|
|
8
|
設計の品質制御
|
科目の中での位置付け
|
第7回では、要求を設計へ落とし込む方法を学び、外部設計・内部設計・設計成果物の基本を理解した。本回では、その設計成果物をどのように評価し、品質を担保するかという「設計の品質制御」に焦点を当てる。設計工程は単なる中間作業ではなく、実装やテストの前提条件を形成する重要な工程であり、この段階での判断がプロジェクト全体の品質に大きな影響を与える。 設計が不十分であれば、実装段階で想定外の複雑さが生じたり、処理の重複やデータ不整合が発生したりする。例えば、貸出処理と返却処理で同じデータ更新ロジックを別々に記述する設計を採用した場合、仕様変更時に両方を修正しなければならず、修正漏れが発生する可能性が高くなる。また、例外処理を設計段階で明確にしていなければ、実装者ごとに処理方針が異なり、挙動の不統一が生じる可能性もある。 本回では、設計レビューという具体的な品質制御活動を中心に扱い、設計成果物をどの観点で確認するべきかを整理する。さらに、「品質ゲート」という考え方を導入し、設計工程が完了したかどうかをどのように判断するのかを学ぶ。また、変更耐性という視点から、設計が将来の仕様変更にどれだけ耐えられるかを評価する重要性を理解する。 設計の品質制御は、後工程のバグを減らすための事前活動である。本回は、「設計は作って終わりではない」「設計は確認して初めて意味を持つ」という考え方を定着させる基礎回である。
|
◆コマ主題細目① ・IEEE Std 1028-2008 Software Reviews and Audits ・Pressman & Maxim, Software Engineering, Chapter 8 “Design Engineering” ◆コマ主題細目② ・IPA「共通フレーム2013」 https://www.ipa.go.jp/files/000025239.pdf ◆コマ主題細目③ ・Sommerville, Software Engineering, Chapter 5 “Software Design” ◆コマ主題細目④ ・ISO/IEC 25010:2011 Quality Model
|
|
コマ主題細目
|
① 設計レビューの目的と手法 ② 設計における品質ゲートの考え方 ③ 変更耐性(保守性)の観点 ④ 設計品質の具体的評価視点
|
|
細目レベル
|
① 設計レビューの目的と手法について、具体例を交えて体系的に説明できる水準まで。例えば、画面遷移図に「エラー時の戻り遷移」が定義されていない場合、利用者が操作不能になる可能性があることを説明できる水準まで。また、データ定義書に「主キー」や「一意制約」が明記されていない場合、重複データが登録される危険性があることを説明できる水準まで。さらに、設計レビューでは「要求との整合性」「構造の一貫性」「異常系の明確性」「依存関係の過度な集中」など複数の観点から確認する必要があることを説明できる水準まで。加えて、レビューを実施しない場合に実装後に構造的欠陥が発覚し、大幅な修正が必要になる可能性を具体例で説明できる水準まで。
|
② 品質ゲートの概念について、具体的な工程管理の例を挙げて説明できる水準まで。例えば、設計工程の完了条件として「主要画面の遷移定義済み」「全機能に対応する処理フロー定義済み」「データ項目定義と制約条件明示済み」「レビュー指摘事項の修正完了」などを満たす必要があることを説明できる水準まで。また、品質ゲートを設けない場合、未成熟な設計が実装工程に渡され、後戻りが発生するリスクが高まることを説明できる水準まで。さらに、品質ゲートは作業を妨げる障壁ではなく、工程責任を明確にするための確認ポイントであることを説明できる水準まで。
|
③ 変更耐性(保守性)の観点について、具体的な設計例を用いて説明できる水準まで。例えば、貸出ロジックを複数箇所に分散して書く設計では、仕様変更時に修正箇所が増え、修正漏れが発生する可能性が高まることを説明できる水準まで。また、データ構造が過度に密結合である場合、新しい項目追加時に既存処理全体へ影響が波及する可能性があることを説明できる水準まで。さらに、処理を適切に分割し共通化することで変更耐性を高められることを説明できる水準まで。加えて、変更耐性が低い設計は長期運用において保守コストを増大させることを説明できる水準まで。
|
④ 設計品質を評価する具体的視点を複数挙げ、それぞれを具体例で説明できる水準まで。例えば、「処理の重複がないか」「依存関係が一方向で整理されているか」「例外処理が明確に設計されているか」「データ整合性を保つ仕組みが定義されているか」「拡張を想定した構造になっているか」といった観点を説明できる水準まで。また、設計不備が実装段階でのバグ増加やテスト工数増大につながる因果関係を説明できる水準まで。さらに、設計品質が高いほどテスト工程での手戻りが減少することを具体例で説明できる水準まで。
|
|
キーワード
|
① 設計レビュー 品質ゲート 変更耐性 保守性 構造的一貫性 依存関係
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 本コマでは設計の品質制御を学んだ。復習として、簡単な設計成果物(例:画面遷移図)を自分で作成し、レビュー観点に基づいて自己チェックを行うこと。また、「品質ゲート」を想定し、設計完了の判断基準を5項目挙げること。さらに、変更耐性を高めるための工夫を具体例で書き出すこと。 ◆次コマの予習 次回はコーディング工程の開発方法を扱う。予習として、設計と実装の違いを整理し、「設計で決めること」と「実装で決めること」を分類しておくこと。
|
|
9
|
コーディングの開発方法
|
科目の中での位置付け
|
第7回および第8回では、要求を設計へ分解する方法と、設計成果物の品質制御を扱った。本回では、その設計成果物を実際のプログラムとして具体化する「コーディング工程」に焦点を当てる。ただし、本科目はプログラミング技術習得を目的とする授業ではないため、Javaの文法やアルゴリズムそのものを深掘りするのではなく、「設計内容をどのように正確かつ品質を意識して実装するか」という観点から整理する。 設計書が正しく作られていても、実装段階で設計意図が反映されなければ品質は保証されない。例えば、設計段階で例外処理が想定されていても、実装でそれが省略されていれば、異常入力時にシステム停止が発生する可能性がある。また、処理分割が設計段階で整理されていても、実装で一つの巨大なメソッドにまとめてしまえば、可読性が低下し、後工程でのデバッグやテストが困難になる。 本回では、実装段階における三つの基本視点を扱う。第一に「可読性」である。第三者が読んで理解できるコードであるかどうかは、品質維持に直結する。第二に「規約」である。命名や記述ルールが統一されていることは、レビューや保守の効率を高める。第三に「分割」である。処理を適切に分割することで、変更耐性や確認容易性が向上する。 ここでは、再利用や高度な設計パターンには触れない。それらは第25回以降のテーマである。本回はあくまで「設計を正確に実装へ落とす」という基礎的観点に集中する回である。
|
◆コマ主題細目① • Pressman & Maxim, Software Engineering: A Practitioner's Approach, Chapter 10 “Coding Practices” ◆コマ主題細目② • Google Java Style Guide https://google.github.io/styleguide/javaguide.html ◆コマ主題細目③ • Sommerville, Software Engineering, Chapter 7 “Software Design and Implementation” ◆コマ主題細目④ • ISO/IEC 25010:2011 Quality Model
|
|
コマ主題細目
|
① 設計と実装の対応関係 ② 可読性の確保 ③ コーディング規約の意義 ④ ③ 処理分割と構造化
|
|
細目レベル
|
① 設計書に記載された内容を正確に実装へ反映する必要性を、具体例を挙げて説明できる水準まで。例えば、設計書に「入力値が不正な場合はエラーメッセージを表示する」と記載されている場合、その条件分岐とエラー表示処理が実装に明確に記述されていなければならないことを説明できる水準まで。また、設計で定義された処理順序(入力確認→在庫確認→登録処理)が実装でも同様に反映されなければ、論理的不整合が発生する可能性があることを説明できる水準まで。さらに、設計書に存在しない処理を独自判断で追加することが品質リスクを高める場合があることを説明できる水準まで。加えて、設計と実装の対応関係が崩れると、後工程のテストで設計逸脱が発見され、手戻りコストが増大する可能性があることを説明できる水準まで。さらに、実装者は設計意図を理解し、その意図をコードに反映させる責任を持つことを説明できる水準まで。
|
② コードの可読性が品質維持に与える影響を、より具体的に説明できる水準まで。例えば、変数名を「a」「b」「c」とした場合と、「userId」「reservationDate」「seatNumber」とした場合では、第三者が処理の意味を理解するまでの時間が大きく異なることを説明できる水準まで。また、インデントや改行が統一されていないコードは、条件分岐や繰り返し構造が把握しづらく、レビュー時に欠陥を見逃す可能性があることを説明できる水準まで。さらに、適切なコメントは設計意図を補足し、後工程での理解を助ける役割があることを説明できる水準まで。加えて、可読性の低いコードは保守段階で誤修正を誘発する危険があることを説明できる水準まで。さらに、可読性は単なる見た目の問題ではなく、品質維持の基盤であることを説明できる水準まで。
|
③ コーディング規約が品質管理に果たす役割を、より詳細に説明できる水準まで。例えば、命名規則やインデント幅、括弧の配置を統一することで、チーム全体のコードが一貫した構造となり、レビュー効率が向上することを説明できる水準まで。また、規約が存在しない場合、同じ機能でも実装方法がばらつき、保守時の理解に時間がかかる可能性があることを説明できる水準まで。さらに、規約遵守は品質制御活動の一部であり、個人の好みよりも組織的品質を優先する仕組みであることを説明できる水準まで。加えて、規約に基づくコードは自動解析ツールとの親和性が高く、品質確認が容易になることを説明できる水準まで。さらに、規約が整備されていない組織では、品質ばらつきが大きくなる可能性があることを説明できる水準まで。
|
④ 処理を適切に分割し構造化することの重要性を、具体例を増やして説明できる水準まで。例えば、予約処理を一つの巨大なメソッドで記述する場合と、「入力確認」「在庫確認」「登録処理」といった小さな単位に分割する場合では、理解しやすさと変更容易性が大きく異なることを説明できる水準まで。また、分割された処理は単体確認が容易であり、後工程でのテスト設計にも有利であることを説明できる水準まで。さらに、一つのメソッドに複数の責任を持たせると、変更時に副作用が生じやすいことを説明できる水準まで。加えて、処理分割は将来の変更や保守を見越した構造化であり、品質向上の基盤となることを説明できる水準まで。さらに、構造化されたコードはデバッグ時の原因特定を容易にすることを説明できる水準まで。
|
|
キーワード
|
① 実装方針 コーディング規約 可読性 再利用性 例外処理 品質形成
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 本コマではコーディングの開発方法を品質観点から学習した。復習として、簡単な処理(例:会員登録処理)を想定し、処理を分割した実装案と分割しない実装案を比較する文章を作成すること。また、命名規則が不統一なコード例を自分で書き、それを可読性の高い形へ書き直す練習を行うこと。さらに、再利用可能な共通処理を一つ設計し、その利点を説明すること。 ◆次コマの予習 次回はコーディングの品質制御を扱う。予習として、コードレビューとは何かを調べ、なぜ必要かを自分の言葉でまとめておくこと。また、可読性が低いコード例を自分で作り、その問題点を整理しておくこと。
|
|
10
|
コーディングの品質制御
|
科目の中での位置付け
|
第9回では、コーディングの開発方法を扱い、実装方針・可読性・再利用の観点から品質を意識した実装の基本を整理した。本回では、その続きとして「コーディングの品質制御」に焦点を当てる。すなわち、実際に書かれたコードをどのように確認し、どのように欠陥を未然に防ぐかという視点を扱う。 実装工程は、ウォーターフォールモデルの中でも欠陥が最も発生しやすい工程の一つであると言われている。しかし、その多くは実行時テストで初めて発見されるべきものではなく、コーディング段階で予防可能なものも少なくない。例えば、変数の初期化忘れ、条件分岐の抜け、例外処理の未実装、境界値の未考慮といった不具合は、実装中に十分な確認を行えば防げる場合が多い。 本回では、コードレビューという人的確認活動と、静的検査というツールを用いた自動確認活動の双方を扱う。これらはプログラムを実行せずに品質を評価する点で、テスト工程とは異なる。また、欠陥予防という観点から、実装段階での品質責任を整理する。ここで強調したいのは、「品質はテスト工程だけで作られるものではない」という点である。実装段階での配慮が、後工程の負担やプロジェクト全体の安定性に大きく影響する。 本回は、実装者が担う品質責任を明確にし、「動けばよい」という姿勢から「品質を意識して書く」という姿勢への転換を促す回である。また、後続のデバッグ工程との違いを理解するための基盤回でもある。
|
◆コマ主題細目① ・IEEE Std 1028-2008 Software Reviews and Audits ・Pressman & Maxim, Software Engineering, Chapter 10 “Coding and Testing” ◆コマ主題細目② ・FindBugs / SpotBugs 公式サイト https://spotbugs.github.io/ ・PMD 公式サイト https://pmd.github.io/ ◆コマ主題細目③ ・Sommerville, Software Engineering, Chapter 8 “Software Testing” ◆コマ主題細目④ ・ISO/IEC 25010:2011 Quality Model
|
|
コマ主題細目
|
① コードレビューの目的と方法 ② 静的検査の役割 ③ 欠陥の典型例と予防 ④ コーディング段階での品質責任
|
|
細目レベル
|
① コードレビューの目的と方法について、単なる手順ではなく、その意義と効果を具体例を交えて説明できる水準まで。例えば、貸出処理コードにおいて在庫確認後の在庫減算処理が抜けている場合、実行前のレビューでロジックの流れを追うことで発見できることを説明できる水準まで。また、条件式において「if (count > 0)」と書くべき箇所を「>= 0」と誤記してしまった場合、境界条件の確認という観点からレビューで検出できることを説明できる水準まで。さらに、レビューは単にコードを読む行為ではなく、チェックリスト(例:変数名の妥当性、nullチェックの有無、例外処理の有無、ループの終了条件の妥当性など)に基づいて体系的に行う必要があることを説明できる水準まで。加えて、レビューを実施しない場合、バグがテスト工程や運用段階まで持ち越され、修正コストが増大する可能性を具体的に説明できる水準まで。
|
② 静的検査の役割について、ツールの具体的機能と限界を含めて説明できる水準まで。例えば、未使用変数や未到達コード、型不一致、null参照の可能性などを自動検出するツールの存在と役割を説明できる水準まで。また、静的検査はコードを実行せずに構造を解析する活動であり、実行時の論理誤りまでは完全に検出できない場合があることを説明できる水準まで。さらに、静的検査を定期的に実施することで初歩的な欠陥を早期に除去できること、しかしそれだけでは十分ではなく人的レビューとの併用が重要であることを説明できる水準まで。加えて、静的検査は実装者の補助ツールであり、品質責任を完全に代替するものではないことを説明できる水準まで。
|
③ 実装段階で発生しやすい欠陥の典型例を、より多くの具体例で説明できる水準まで。例えば、配列の範囲外アクセス、初期化忘れ、条件分岐の網羅不足、例外処理の未実装、ループの終了条件誤りなどを具体例で示せる水準まで。また、境界値(例:0件、最大値、空文字列、null値)を考慮しない実装が不具合につながることを説明できる水準まで。さらに、エラーメッセージを適切に表示しない実装は利用者の混乱を招く可能性があることを説明できる水準まで。加えて、これらの欠陥はテストで発見できる場合もあるが、実装時の注意とレビューで予防できることを説明できる水準まで。
|
④ コーディング段階での品質責任について、因果関係を明確にして説明できる水準まで。例えば、可読性の低いコードはレビューやデバッグを困難にし、修正時に新たなバグを誘発する可能性があることを説明できる水準まで。また、例外処理を省略した実装は異常入力時にシステム停止を引き起こし、信頼性低下につながることを説明できる水準まで。さらに、実装段階での品質配慮が十分であれば、テスト工程での重大欠陥発生を減らせることを説明できる水準まで。加えて、実装者は「動くかどうか」だけでなく「将来変更に耐えられるか」「第三者が理解できるか」という観点を持つ責任があることを説明できる水準まで。
|
|
キーワード
|
① コードレビュー 静的検査 欠陥予防 境界値 例外処理 品質責任
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 本コマではコーディングの品質制御について学習した。復習として、簡単なコード例を自分で作成し、レビュー観点に基づいて自己チェックを行うこと。また、意図的に境界値エラーを含むコードを書き、その問題点を説明すること。さらに、静的検査で検出可能な問題を3つ挙げること。 ◆次コマの予習 次回はデバッグ工程を扱う。予習として、テストとデバッグの違いを整理し、「バグを見つけること」と「バグを修正すること」の違いを文章でまとめておくこと。
|
|
11
|
デバッグとは何か
|
科目の中での位置付け
|
第10回では、コーディング段階における品質制御活動として、コードレビューや静的検査、欠陥予防の観点を整理した。本回からは、ウォーターフォールモデル上で「デバッグ工程」に明確に入る。ただし、本科目ではデバッグとテストを厳密に分離して扱う。ここで扱うデバッグは「バグを見つける行為」ではなく、「見つかった欠陥を分析し、原因を除去し、再発を防ぐ品質向上活動」として定義する。 一般的には、デバッグとテストは混同されがちである。しかし、本科目では両者を役割の異なる工程として扱う。テストは「合否を判定する品質測定活動」であり、本番試験に例えられる。一方、デバッグは「弱点を洗い出し、克服する活動」であり、模擬試験に例えられる。模擬試験では弱点を発見すること自体が目的ではなく、弱点を改善し、本番で合格できる状態に近づけることが目的である。同様に、デバッグは品質を高めるための改善活動である。 本回では、デバッグを品質向上活動として再定義し、単なる修正作業ではなく、原因分析と再発防止を含む体系的活動であることを理解する。また、デバッグの質が後続のテスト工程や保守工程に大きな影響を与えることを整理する。
|
◆コマ主題細目① ・Pressman & Maxim, Software Engineering, Chapter 9 “Testing and Debugging” ◆コマ主題細目② ・Sommerville, Software Engineering, Chapter 8 “Software Testing” ◆コマ主題細目③ ・IEEE Std 1028-2008 Software Reviews and Audits ◆コマ主題細目④ ・ISO/IEC 25010:2011 Quality Model
|
|
コマ主題細目
|
① デバッグの定義とテストとの違い ② デバッグの基本プロセス(再現・分析・修正) ③ 原因分析と再発防止の視点 ④ デバッグと品質向上の関係
|
|
細目レベル
|
① デバッグとテストの違いを、目的・主体・評価基準の観点から明確に区別して説明できる水準まで。具体的には、テストが「仕様に合致しているかどうかを判定する活動」であるのに対し、デバッグは「発見された欠陥の原因を特定し、修正し、品質を高める活動」であることを説明できる水準まで。例えば、単体テストで「期待値と実際の値が一致しない」と判定されることはテストであり、その原因が変数初期化漏れであることを特定し、初期化処理を追加することがデバッグであると説明できる水準まで。さらに、テストは結果を測る活動であり、デバッグは結果を改善する活動であるという構造的違いを、模擬試験と本試験の比喩を用いて説明できる水準まで。加えて、デバッグは合否を決める工程ではないこと、あくまで品質を向上させる工程であることを説明できる水準まで。
|
② デバッグの基本プロセス(再現・分析・修正・再確認)を具体例を交えて説明できる水準まで。例えば、「特定の入力値でシステムが停止する」という報告があった場合、まず同じ条件で停止現象を再現することが重要であることを説明できる水準まで。次に、ログ出力や変数値を確認し、どの処理で異常が発生しているかを段階的に分析する必要があることを説明できる水準まで。さらに、原因を特定した後、修正を行い、同じ条件および関連する条件で再確認する必要があることを説明できる水準まで。加えて、再現できないバグは原因特定が困難であり、記録の重要性が高いことを説明できる水準まで。
|
③ 原因分析と再発防止の視点を、複数の具体例を用いて説明できる水準まで。例えば、条件分岐の網羅不足が原因で欠陥が発生した場合、単に条件を修正するだけでなく、同様の網羅不足が他の箇所に存在しないか確認する必要があることを説明できる水準まで。また、入力値チェックの不足が原因であれば、コーディング規約やレビュー観点を見直すことが再発防止につながることを説明できる水準まで。さらに、再発防止のためにテストケースを追加することが重要であることを説明できる水準まで。加えて、原因分析を行わず表面的修正だけを行うと、同様の欠陥が再発する可能性が高いことを説明できる水準まで。
|
④ デバッグと品質向上の関係を、工程全体との関連で説明できる水準まで。例えば、十分なデバッグを行わずにテスト工程へ進んだ場合、重大欠陥が多数残存する可能性があることを説明できる水準まで。また、原因分析を徹底することで、同種の欠陥を減らし、後続工程の負担を軽減できることを説明できる水準まで。さらに、デバッグは単なる「バグ修正」ではなく、品質成熟度を高める活動であることを説明できる水準まで。加えて、デバッグの質がプロジェクト全体の安定性や信頼性に直結することを説明できる水準まで。
|
|
キーワード
|
① デバッグ 模擬試験 品質向上 原因分析 再発防止 テストとの分離
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 本コマではデバッグの定義と役割を学習した。復習として、テストとデバッグの違いを表形式で整理すること。また、簡単なバグ事例(例:条件分岐の誤り)を想定し、再現→分析→修正の流れを文章で説明すること。さらに、原因分析を行わなかった場合に起こり得る問題を具体的に記述すること。 ◆次コマの予習 次回はデバッグの方法論をさらに詳しく扱う。予習として、代表的なバグの原因(初期化忘れ、境界値未考慮、型変換誤りなど)を挙げ、それぞれどのように特定できるかを考えておくこと。
|
|
12
|
デバッグの方法論
|
科目の中での位置付け
|
第11回では、デバッグを「模擬試験」に例え、品質向上活動として再定義した。本回では、そのデバッグを実際にどのような手順で進めるのかという方法論を扱う。ここで重要なのは、デバッグを感覚的・場当たり的な作業として行うのではなく、明確な段階を踏む体系的活動として理解することである。 現実の開発現場では、「とりあえず直す」という対応が行われることも少なくない。しかし、そのような修正は一時的に症状を消しても、根本原因を解決していない場合がある。その結果、同様の欠陥が別の場所で再発することや、修正により新たな欠陥が発生することがある。したがって、デバッグは単なる修正作業ではなく、「再現」「分析」「修正」「再確認」「再発防止」という段階を踏む必要がある。 本回では、それぞれの段階を具体例とともに理解する。例えば、「特定条件で停止する」「特定入力で誤った計算結果が出る」といった事例をもとに、どのように原因を追究するのかを整理する。また、デバッグはテストとは異なり、合否判定ではなく品質改善を目的とする活動であることを再確認する。 さらに、デバッグの質はプロジェクト全体の品質成熟度に影響する。原因分析を徹底する文化がある組織では、同種の欠陥が減少し、品質が安定する。本回は、デバッグを「品質を上げる技術」として体系的に理解する回である。
|
◆コマ主題細目① ・Pressman & Maxim, Software Engineering, Chapter 9 “Testing and Debugging” ◆コマ主題細目② ・Sommerville, Software Engineering, Chapter 8 “Software Testing” ◆コマ主題細目③ ・IEEE Std 1028-2008 Software Reviews and Audits ◆コマ主題細目④ ・ISO/IEC 25010:2011 Quality Model
|
|
コマ主題細目
|
① 再現確認の重要性 ② 原因分析の方法 ③ 修正と再確認の手順 ④ 再発防止の仕組み
|
|
細目レベル
|
① 再現確認の重要性を、複数の具体例を用いて説明できる水準まで。例えば、「特定の入力値でシステムが停止する」という報告があった場合、まず同じ入力値と操作手順を正確に再現する必要があることを説明できる水準まで。また、「利用者IDが空欄のときに停止する」という報告があった場合、空欄以外の値でも停止するのかを確認し、発生条件を限定する必要があることを説明できる水準まで。さらに、「まれに発生する」と報告された不具合について、発生頻度や条件を記録しなければ原因特定が困難になることを説明できる水準まで。加えて、再現手順を文書化することで、他の開発者も同じ現象を確認できるようになることを説明できる水準まで。
|
② 原因分析の方法を、より具体的な技法と例を用いて説明できる水準まで。例えば、ログ出力を追加して処理の流れを追跡する方法、変数値を出力して想定値との違いを確認する方法、処理を段階的に停止させて原因箇所を絞り込む方法を説明できる水準まで。また、配列の範囲外アクセスが発生している場合、配列サイズとインデックス値の関係を確認する必要があることを説明できる水準まで。さらに、条件分岐の網羅不足が原因である場合、どの条件が実行されていないかを確認することが重要であることを説明できる水準まで。加えて、原因分析は推測ではなく、事実(ログ・再現条件・入力値)に基づいて行う必要があることを説明できる水準まで。
|
③ 修正と再確認の手順を、より詳細に説明できる水準まで。例えば、変数初期化漏れが原因であった場合、初期化処理を追加するだけでなく、その変数が使用される他の箇所にも影響がないかを確認する必要があることを説明できる水準まで。また、修正後に元の再現条件で正常動作を確認するだけでなく、関連する周辺機能(例:貸出延長処理)にも影響が出ていないかを確認することが重要であることを説明できる水準まで。さらに、修正内容を記録し、どのような変更を行ったかを明確にする必要があることを説明できる水準まで。
|
④ 再発防止の仕組みを、具体的な改善策とともに説明できる水準まで。例えば、条件分岐漏れが原因であった場合、レビュー時のチェック項目に「境界値確認」を追加することが再発防止につながることを説明できる水準まで。また、入力チェック不足が原因であれば、共通入力検証モジュールを導入することで同様の欠陥を減らせることを説明できる水準まで。さらに、再発防止策を文書化し、チーム内で共有することが品質向上につながることを説明できる水準まで。加えて、再発防止は単一箇所の修正ではなく、工程全体の改善であることを説明できる水準まで。
|
|
キーワード
|
① 再現確認 原因分析 修正 再確認 再発防止 ログ解析
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 本コマではデバッグの方法論を学習した。復習として、簡単なバグ事例(例:条件分岐誤り)を自分で設定し、「再現」「原因分析」「修正」「再確認」「再発防止」の流れを文章で整理すること。また、再現手順を明確に記述する練習を行うこと。 ◆次コマの予習 次回はデバッグと品質改善の関係を扱う。予習として、「原因分析を行わなかった場合に何が起こるか」を具体例で考えておくこと。
|
|
13
|
デバッグと品質改善
|
科目の中での位置付け
|
第12回では、デバッグの方法論として「再現確認」「原因分析」「修正」「再発防止」という段階を学び、デバッグを体系的活動として整理した。本回では、その流れをさらに一歩進め、欠陥修正が単なるコード変更にとどまらず、設計や要求にまで影響を及ぼす可能性があることを考察する。 実務の現場では、バグは「コードのミス」として処理されることが多い。しかし、原因を深く掘り下げると、設計段階での判断不足や要求仕様の曖昧さが根本原因である場合も少なくない。例えば、特定条件で処理が失敗するバグが発見された場合、その原因が条件分岐の書き間違いなのか、設計段階で異常系を考慮していなかったのかを区別する必要がある。単なる修正で終わらせると、同様の問題が別の箇所で再発する可能性がある。 本回では、欠陥を「修正対象」としてではなく、「改善の契機」として捉える視点を養う。欠陥が発見されたとき、その影響範囲はどこまで及ぶのか、設計や要求に修正が必要か、再発防止策は何かを体系的に整理する。これは、品質を継続的に向上させるための重要な視点である。 さらに、デバッグは品質成熟度を高める機会でもある。欠陥を通して弱点を認識し、工程全体の改善へつなげることで、同種の問題を減らすことができる。本回は、デバッグを品質改善サイクルの中核活動として理解する回である。
|
◆コマ主題細目① ・Pressman & Maxim, Software Engineering, Chapter 9 “Testing and Debugging” ◆コマ主題細目② ・Sommerville, Software Engineering, Chapter 5 “Software Design” ◆コマ主題細目③ ・ISO/IEC 12207 Software life cycle processes ◆コマ主題細目④ ・ISO/IEC 25010:2011 Quality Model
|
|
コマ主題細目
|
① 欠陥の影響範囲の分析 ② 実装ミスと設計不備の区別 ③ 要求へのフィードバック ④ 品質改善サイクルの形成
|
|
細目レベル
|
① 欠陥の影響範囲を、より広い視点で具体例を交えて説明できる水準まで。例えば、「貸出上限を超えても登録できる」というバグが発見された場合、それが単なる条件式の誤りである可能性に加え、設計段階で上限値をどのように管理するかが明確でなかった可能性を説明できる水準まで。また、修正後に「延長処理」「履歴表示」「統計集計」など関連機能へ影響が波及する可能性があることを説明できる水準まで。さらに、一箇所の修正がデータ構造や他モジュールへ影響を与える場合、関連箇所を再確認しなければならないことを説明できる水準まで。加えて、影響範囲を把握せずに修正すると、新たな欠陥を生む可能性があることを説明できる水準まで。
|
② 実装ミスと設計不備をより明確に区別し、複数の具体例で説明できる水準まで。例えば、変数初期化忘れやタイプミスは実装ミスであるが、例外処理が設計段階で定義されていなかった場合は設計不備であることを説明できる水準まで。また、入力チェック漏れが発生した場合、それが単なる実装忘れなのか、設計書に入力検証が記載されていなかったのかを分析できる水準まで。さらに、設計不備が原因であればコード修正だけでは不十分であり、設計書の修正および再レビューが必要であることを説明できる水準まで。加えて、設計不備を放置すると同様の欠陥が繰り返される可能性があることを説明できる水準まで。
|
③ 欠陥が要求仕様に影響する可能性を、具体例を増やして説明できる水準まで。例えば、「高速に処理する」という要求が曖昧であったために性能問題が発生した場合、要求を数値化する必要があることを説明できる水準まで。また、「利用者は削除できる」とだけ記載されていたために権限制御の不具合が発生した場合、要求自体を修正し「管理者のみ削除可能」と明確化する必要があることを説明できる水準まで。さらに、要求に記載されていなかった例外条件(例:同時アクセス時の処理)が問題の原因となった場合、要求仕様の見直しが必要であることを説明できる水準まで。加えて、デバッグを通じて要求の曖昧さが明確になることを説明できる水準まで。
|
④ デバッグを品質改善サイクルの一部として、より広い視点で説明できる水準まで。例えば、欠陥を修正するだけでなく、レビュー観点を追加する、テストケースを拡充する、コーディング規約を改訂するなどの改善策が考えられることを説明できる水準まで。また、同様の欠陥が複数回発生している場合、それは個人の問題ではなく工程上の弱点である可能性があることを説明できる水準まで。さらに、再発防止策をチームで共有し、標準手順を更新することで品質成熟度が向上することを説明できる水準まで。加えて、欠陥を「失敗」として隠すのではなく、「改善の機会」として活用する姿勢が品質向上につながることを説明できる水準まで。
|
|
キーワード
|
① 影響範囲分析 設計不備 要求修正 品質改善 フィードバック 再発防止
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 本コマでは、欠陥修正が設計や要求に与える影響を学習した。復習として、簡単なバグ事例を想定し、その影響範囲を図で整理すること。また、そのバグが設計不備か実装ミスかを分類すること。さらに、要求修正が必要な場合の例を文章でまとめること。 ◆次コマの予習 次回は「再発防止と品質成熟」を扱う。予習として、品質改善サイクルとは何かを調べ、自分の言葉で整理しておくこと。
|
|
14
|
再発防止と品質成熟
|
科目の中での位置付け
|
第13回では、欠陥修正が設計や要求にまで影響を及ぼす可能性があることを学び、デバッグを品質改善の契機として捉える視点を整理した。本回では、その延長として「再発防止」と「品質成熟」という概念を扱う。ここでは、個々の欠陥修正にとどまらず、欠陥の傾向を分析し、工程全体を改善する視点を養う。 実際の開発現場では、同じ種類の欠陥が繰り返し発生することがある。例えば、境界値の未考慮、nullチェック漏れ、例外処理不足、入力検証不足などは、プロジェクトを通して何度も現れることがある。これらを単発のミスとして扱うのではなく、「傾向」として捉えることが重要である。本回では、欠陥を分類し、その発生頻度や発生工程を分析する方法を学ぶ。 さらに、品質改善は一度きりの活動ではなく、継続的なサイクルであることを理解する。レビュー観点の追加、テストケースの拡充、コーディング規約の改訂などを通じて、工程そのものを改善する取り組みが品質成熟につながる。本回は、個人の修正能力から組織的品質改善への視点を広げる回である。
|
◆コマ主題細目①(欠陥傾向の分析方法) • IPA(情報処理推進機構)「ソフトウェア開発データ白書」 https://www.ipa.go.jp/jinzai/softwarereport.html ※欠陥分類・発生工程別分析の事例を参照 • Sommerville, Ian Software Engineering, 10th Edition, Pearson Chapter 24 “Quality Management” (欠陥分析・品質改善の基本概念を参照) ◆コマ主題細目②(欠陥分類と発生工程の特定) • ISO/IEC 12207 Systems and software engineering — Software life cycle processes (工程定義の参照) • IEEE Std 1044-2009 Standard Classification for Software Anomalies (欠陥分類の考え方を参照) ◆コマ主題細目③(品質改善サイクルの構築) • Deming, W. Edwards PDCAサイクルに関する資料(日本科学技術連盟 公開解説ページ) https://www.juse.or.jp/knowledge/management/pdca/ • ISO 9001:2015 Quality management systems — Requirements (継続的改善の概念を参照) ◆コマ主題細目④(品質成熟度の概念) • CMMI Institute CMMI for Development, Version 2.0 https://cmmiinstitute.com/ • IPA「プロセス改善事例集」 https://www.ipa.go.jp/jinzai/process/
|
|
コマ主題細目
|
① 欠陥傾向の分析方法 ② 欠陥分類と発生工程の特定 ③ 品質改善サイクルの構築 ④ 品質成熟度の概念
|
|
細目レベル
|
① 欠陥傾向の分析方法を具体例を用いて説明できる水準まで。例えば、あるプロジェクトで発生した欠陥を一覧化し、「条件分岐漏れ」「入力チェック不足」「例外処理未実装」「データ型不一致」などに分類する方法を説明できる水準まで。また、欠陥の発生件数を工程別(実装段階・設計段階・要求段階)に整理し、どの工程で多く発生しているかを把握する重要性を説明できる水準まで。さらに、境界値に関する欠陥が多数発生している場合、それはテストケース不足やレビュー観点不足が原因である可能性があることを説明できる水準まで。加えて、欠陥の発生時期や修正コストを記録することで、改善優先順位を決定できることを説明できる水準まで。
|
② 欠陥分類と発生工程の特定を具体例で説明できる水準まで。例えば、入力検証漏れが頻発している場合、それが実装ミスなのか、設計書に入力仕様が明記されていなかったのかを分析する必要があることを説明できる水準まで。また、性能問題が多発している場合、要求段階で性能基準が曖昧だった可能性があることを説明できる水準まで。さらに、設計不備が原因である欠陥が多い場合、設計レビューの観点を強化する必要があることを説明できる水準まで。加えて、発生工程を誤認すると誤った改善策を導入する危険があることを説明できる水準まで。
|
③ 品質改善サイクルを具体例を用いて説明できる水準まで。例えば、欠陥分析の結果、例外処理漏れが多いと判明した場合、コーディング規約に「例外処理必須」を追加し、レビュー項目に「例外処理確認」を加えることで改善を図ることを説明できる水準まで。また、テスト段階で境界値欠陥が多発した場合、境界値テストケースを標準化することが改善策となることを説明できる水準まで。さらに、改善策を実施した後、次のプロジェクトで同種欠陥が減少したかを確認することが重要であることを説明できる水準まで。加えて、改善は一度で終わらず、継続的に回す必要があることを説明できる水準まで。
|
④ 品質成熟度の概念を具体例を交えて説明できる水準まで。例えば、欠陥が発生するたびに場当たり的に修正する段階と、欠陥傾向を分析し工程を改善する段階の違いを説明できる水準まで。また、レビュー観点やテスト手法が年々改善され、欠陥発生率が低下していく状態を品質成熟と呼ぶことを説明できる水準まで。さらに、品質成熟度が高い組織では同種欠陥が減少し、開発効率と安定性が向上することを説明できる水準まで。加えて、品質成熟は個人の努力だけでなく、組織的取り組みによって達成されることを説明できる水準まで。
|
|
キーワード
|
① 欠陥傾向分析 品質改善サイクル 再発防止 工程改善 品質成熟度 PDCA
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 本コマでは欠陥傾向分析と品質改善サイクルを学習した。復習として、仮想的な欠陥一覧を自分で作成し、分類・工程特定・改善策の提案まで行うこと。また、改善サイクルを図に描き、その流れを文章で説明すること。さらに、品質成熟度の低い状態と高い状態の違いを具体例で整理すること。 ◆次コマの予習 次回はテスト工程に入る。予習として、テストとデバッグの違いを再確認し、テストが品質測定活動である理由を整理しておくこと。
|
|
15
|
テストとは何か
|
科目の中での位置付け
|
第14回まではデバッグ工程を扱い、デバッグを「弱点を洗い出し克服する品質向上活動」として整理してきた。本回からは、ウォーターフォールモデル上で明確に区分される「テスト工程」に入る。本科目では、テストとデバッグを厳密に分離して扱う。ここで扱うテストは、品質を改善する活動ではなく、「定められた基準に基づき合否を判定する品質測定活動」である。 デバッグが模擬試験に相当するならば、テストは本試験に相当する。本試験では、受験者の弱点を克服することは目的ではなく、基準を満たしているかどうかを判定することが目的である。同様に、テスト工程では、設計・実装・デバッグを経て作られた成果物が、要求仕様を満たしているかどうかを評価する。 テストは「バグを見つけるための作業」と単純に理解されがちであるが、本科目では「品質測定」という位置付けで整理する。テストは合格か不合格かを決定する工程であり、その結果はリリース可否や次工程への進行可否に直結する。本回では、テストの定義、役割、責任を明確にする。
|
◆コマ主題細目① • Sommerville, Software Engineering, Chapter 8 “Software Testing” ◆コマ主題細目② • ISO/IEC/IEEE 29119 Software Testing Standard • IEEE Std 829 (Test Documentation) ◆コマ主題細目③ • Pressman & Maxim, Software Engineering, Chapter 9 “Testing Strategies” ◆コマ主題細目④ • ISO/IEC 25010:2011 Quality Model
|
|
コマ主題細目
|
① テストの定義とデバッグとの違い ② テストの目的と評価基準 ③ テスト工程の責任と位置付け ④ テスト結果の意味と判断
|
|
細目レベル
|
① テストとデバッグの違いを、目的・主体・成果物・工程上の位置付けの観点から明確に区別して説明できる水準まで。具体的には、デバッグが発見された欠陥を修正し品質を向上させる活動であるのに対し、テストは成果物が要求仕様や設計書に適合しているかどうかを測定し、合否を判定する活動であることを説明できる水準まで。例えば、単体テストで「期待値と実際値が一致しない」と判定されること自体はテストであり、その原因が条件分岐の誤りであることを特定し修正することがデバッグであると具体的に説明できる水準まで。さらに、テストは「改善する活動」ではなく「判定する活動」であり、修正そのものはテスト工程の役割ではないことを説明できる水準まで。加えて、テストは本試験、デバッグは模擬試験という比喩を用いて、両者の目的の違いを明確に説明できる水準まで。
|
② テストの目的と評価基準を、複数の具体例を用いて説明できる水準まで。例えば、要求仕様に「3秒以内に検索結果を表示する」と記載されている場合、その条件を満たしているかを測定するのがテストであることを説明できる水準まで。また、「同時に100人がアクセスしても処理が停止しない」という要件がある場合、負荷テストを実施して基準を満たしているかを判定することがテストであることを説明できる水準まで。さらに、「エラー時には赤字でメッセージを表示する」という要件がある場合、その表示が正しく行われているかを確認することもテストであることを説明できる水準まで。加えて、テストは事前に定義された基準に基づいて行う必要があり、基準が曖昧であれば合否判定ができないことを説明できる水準まで。
|
③ テスト工程の責任と位置付けを、工程全体との関連で説明できる水準まで。具体的には、テスト工程は開発工程の最終確認段階であり、成果物が外部に提供可能な状態にあるかを判断する責任を持つことを説明できる水準まで。また、テスト工程では欠陥を発見することはあるが、その修正はデバッグ工程で行われることを明確に区別できる水準まで。さらに、重大欠陥が発見された場合には工程を停止し、前工程に戻る判断を下す役割を担うことを説明できる水準まで。加えて、テストを実施せずにリリースした場合、品質保証が不十分なまま社会に提供される危険性があることを説明できる水準まで。
|
④ テスト結果の意味と判断を、より具体的なケースを用いて説明できる水準まで。例えば、テストケース100件中95件が合格し5件が不合格であった場合、その5件の内容によってリリース可否の判断が変わることを説明できる水準まで。また、軽微な表示不具合であればリリース可能と判断される場合がある一方、データ消失につながる重大欠陥が1件でも存在すればリリース不可と判断される可能性があることを説明できる水準まで。さらに、テスト結果は単なる数値ではなく、欠陥の内容と影響範囲を含めて判断する必要があることを説明できる水準まで。加えて、テスト工程は品質の最終判定を行う工程であり、その判断がプロジェクトの信頼性に直結することを説明できる水準まで。
|
|
キーワード
|
① テスト工程 品質測定 合否判定 本試験 評価基準 リリース判断
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 本コマではテストを品質測定活動として定義した。復習として、テストとデバッグの違いを表形式で整理すること。また、「3秒以内に応答する」という要求に対するテスト方法を具体的に書き出すこと。さらに、重大欠陥と軽微欠陥の違いを説明すること。 ◆次コマの予習 次回はテストレベルと役割分担を扱う。予習として、単体テスト・結合テスト・システムテストの違いを簡単に調べておくこと。
|
|
16
|
テストレベルと役割分担
|
科目の中での位置付け
|
第15回では、テストを「本試験」に例え、合否を判定する品質測定活動として定義した。本回では、そのテスト工程をさらに細分化し、「単体テスト」「結合テスト」「システムテスト」というレベルごとの役割と責任の違いを明確にする。テストは一括りにされがちであるが、実際には対象範囲と確認内容が異なる複数の段階に分かれている。本回では、それぞれの段階が何を保証するのかを具体的に整理する。 単体テストは最も小さな単位、すなわち関数やメソッド単位の正しさを確認する工程である。一方、結合テストは複数のモジュールが連携した際に正しく動作するかを確認する工程であり、さらにシステムテストはシステム全体が要求仕様を満たしているかを確認する工程である。これらを区別せずにテストを行うと、「どの段階でどの品質責任を果たすべきか」が曖昧になる。 例えば、単体テストで検出できるはずの計算ミスがシステムテストまで持ち越されると、修正範囲が広がりコストが増大する。また、結合テストで発見されるべきインタフェース不整合が本番環境で発覚した場合、重大事故につながる可能性がある。したがって、テストレベルごとの役割分担を理解することは、品質責任を段階的に分離する上で極めて重要である。 本回では、各テストレベルを具体例で比較し、「どの段階で何を保証するのか」「誰が責任を持つのか」「どの品質特性に主に関係するのか」を整理する。テスト工程を一体のものとしてではなく、層構造として理解することが、本科目の品質制御思想において重要な位置を占める。
|
◆コマ主題細目① • Sommerville, Software Engineering, Chapter 8 “Software Testing” ◆コマ主題細目② • IEEE Std 829 (Test Documentation) ◆コマ主題細目③ • ISO/IEC/IEEE 29119 Software Testing ◆コマ主題細目④ • Pressman & Maxim, Software Engineering, Chapter 9 “Testing Strategies”
|
|
コマ主題細目
|
① 単体テストの目的と責任 ② 結合テストの目的と責任 ③ システムテストの目的と責任 ④ テストレベルと品質責任の分離
|
|
細目レベル
|
① 単体テストの目的と責任を具体例を用いて説明できる水準まで。例えば、貸出処理の中の「在庫確認メソッド」単体が、在庫数0の場合に正しく貸出不可を返すかを確認することが単体テストであることを説明できる水準まで。また、「利用者ID検証メソッド」が空文字列やnull値に対して適切にエラーを返すかを確認することが単体テストであることを説明できる水準まで。さらに、単体テストは個々のモジュールの正しさを保証するが、システム全体の動作までは保証しないことを説明できる水準まで。加えて、単体テストは主に開発者が責任を持つことを説明できる水準まで。
|
② 結合テストの目的と責任を具体例を用いて説明できる水準まで。例えば、「在庫確認メソッド」と「貸出登録メソッド」が連携したときに正しく動作するかを確認することが結合テストであることを説明できる水準まで。また、データベースとアプリケーションの接続が正常に行われるか、複数モジュール間でデータが正しく受け渡されるかを確認することが結合テストであることを説明できる水準まで。さらに、単体では正しくても結合時に不具合が発生する可能性があることを具体例で説明できる水準まで。加えて、結合テストではモジュール間インタフェースの整合性確認が重要であることを説明できる水準まで。
|
③ システムテストの目的と責任を具体例を用いて説明できる水準まで。例えば、利用者がログインし、本を検索し、貸出し、履歴を確認するという一連の流れが要求どおりに動作するかを確認することがシステムテストであることを説明できる水準まで。また、「同時に100人がアクセスしても停止しない」「3秒以内に応答する」といった性能要件を確認することもシステムテストの一部であることを説明できる水準まで。さらに、システムテストは利用者視点で実施されることが多く、要求仕様との整合性を確認する責任を持つことを説明できる水準まで。
|
④ テストレベルごとの品質責任の分離を説明できる水準まで。例えば、単体テストで検出すべき欠陥がシステムテストまで持ち越されると修正コストが増大することを説明できる水準まで。また、結合テストで発見されるべきインタフェース不整合が本番環境で発覚すると重大事故につながる可能性があることを説明できる水準まで。さらに、各テストレベルが適切に機能することで品質責任が段階的に分担されることを説明できる水準まで。加えて、テストレベルの理解が不十分であると品質管理が曖昧になることを説明できる水準まで。
|
|
キーワード
|
① 単体テスト 結合テスト システムテスト インタフェース 品質責任 テストレベル
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 本コマではテストレベルと役割分担を学習した。復習として、単体・結合・システムテストの違いを表に整理すること。また、簡単なシステム(例:ログイン機能)について、それぞれのテストレベルで何を確認するかを書き出すこと。さらに、単体テストで発見できる欠陥とシステムテストで発見できる欠陥の違いを整理すること。 ◆次コマの予習 次回はテスト設計技法を扱う。予習として、同値分割や境界値分析という言葉を調べ、簡単な例を考えておくこと。
|
|
17
|
テスト設計技法
|
科目の中での位置付け
|
第16回では、単体テスト・結合テスト・システムテストというテストレベルの違いと役割分担を整理し、それぞれの工程がどの範囲の品質責任を担うのかを明確にした。本回では、その各テストレベルで実際に用いられる具体的な「テスト設計技法」に焦点を当てる。テストは単に思いついた入力値を試す作業ではなく、体系的に設計されたケースに基づいて実施されるべき品質測定活動である。 実務の現場では、「とりあえず動かしてみる」という経験則的なテストが行われることもあるが、それでは重要な欠陥を見逃す可能性が高い。例えば、「1~100まで入力可能」という条件に対して50だけを試しても、境界付近の誤動作は確認できない。また、「8文字以上のパスワード」という条件に対して10文字だけを確認しても、7文字や8文字ちょうどの場合の挙動は分からない。本回では、このような見落としを防ぐための基本技法として「同値分割法」と「境界値分析」を扱う。 これらの技法は単体テストだけでなく、結合テストやシステムテストにも応用できる汎用的な考え方である。さらに、テストケースを体系的に設計することは、品質測定の効率を高めるだけでなく、品質保証の説明責任を果たすうえでも重要である。本回は、テスト工程を感覚的作業から理論的活動へと引き上げる基礎回である。
|
◆コマ主題細目① • Sommerville, Software Engineering, Chapter 8 “Software Testing” ◆コマ主題細目②③ • ISO/IEC/IEEE 29119 Software Testing • IEEE Std 829 (Test Documentation) ◆コマ主題細目④ • Pressman & Maxim, Software Engineering, Chapter 9 “Testing Strategies”
|
|
コマ主題細目
|
① テスト設計の必要性 ② 同値分割法 ③ 境界値分析 ④ 同値分割と境界値分析の組み合わせ
|
|
細目レベル
|
① テスト設計の必要性を、複数の具体例を通して体系的に説明できる水準まで。例えば、「年齢が18歳以上であれば登録可能」という条件を持つシステムに対して、単に20歳という値だけを入力して動作確認するだけでは十分ではないことを説明できる水準まで。また、ランダムにいくつかの値を試す方法では、条件の抜けや境界付近の誤動作を見逃す可能性が高いことを説明できる水準まで。さらに、「価格は0円以上である」という条件に対して、100円や500円だけを試しても、0円や-1円といった特定の値で誤動作する可能性を確認できないことを説明できる水準まで。加えて、体系的にテストケースを設計することで、少ないテスト数でも効率的に欠陥を発見できることを説明できる水準まで。
|
② 同値分割法を、より多くの具体例を用いて説明できる水準まで。例えば、「1~100までの整数を入力可能」という条件に対して、1~100を一つの有効同値クラス、0以下を無効同値クラス、101以上を無効同値クラスとして分けることを説明できる水準まで。また、「パスワードは8文字以上16文字以下」という条件に対して、8~16文字を有効クラス、7文字以下と17文字以上を無効クラスとして分類することを説明できる水準まで。さらに、「会員ランクはA・B・Cのいずれか」という条件に対して、A・B・Cを有効クラス、それ以外(Dや空欄)を無効クラスとする考え方を説明できる水準まで。加えて、各同値クラスから代表値を一つ選べば、同一クラス内の他の値も同様の結果になると仮定できることを説明できる水準まで。
|
③ 境界値分析を、より詳細な具体例を通して説明できる水準まで。例えば、「1~100まで入力可能」という条件に対して、1と100だけでなく、0と101もテストする必要があることを説明できる水準まで。また、「在庫が0以上であれば出庫可能」という条件に対して、0、1、-1の値を確認することの重要性を説明できる水準まで。さらに、「割引率は0%以上50%以下」という条件に対して、0%、1%、49%、50%、51%をテストする必要があることを説明できる水準まで。加えて、境界付近は実装ミスが発生しやすい(例:>= と > の誤り)ことを説明できる水準まで。
|
④ 同値分割と境界値分析を組み合わせたテスト設計を、複数条件の例を用いて説明できる水準まで。例えば、「年齢18歳以上かつ会員番号が有効である場合のみ登録可能」という条件に対して、年齢条件と会員番号条件それぞれに同値クラスを設定し、さらに18歳、17歳、19歳などの境界値を組み合わせてテスト設計を行う方法を説明できる水準まで。また、「1~100の整数で、かつ偶数のみ有効」という条件に対して、1、2、99、100、101などを選ぶ理由を説明できる水準まで。さらに、複数条件がある場合には組合せ爆発が起こる可能性があるため、代表的な組合せを選択する必要があることを説明できる水準まで。加えて、同値分割と境界値分析を適切に組み合わせることで、効率と網羅性のバランスを取れることを説明できる水準まで。
|
|
キーワード
|
① テスト設計 同値分割 境界値分析 代表値 網羅性 品質測定
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 本コマではテスト設計技法を学習した。復習として、「1~50まで入力可能」という条件に対して同値分割と境界値分析を適用し、テストケースを作成すること。また、「パスワード8文字以上」という条件に対するテストケースを設計すること。さらに、複数条件を持つケースを自分で考え、テスト設計を行うこと。 ◆次コマの予習 次回はテストの品質制御を扱う。予習として、テストケースの妥当性や網羅性とは何かを考えておくこと。
|
|
18
|
テストの品質制御
|
科目の中での位置付け
|
第17回では、同値分割法や境界値分析といったテスト設計技法を学び、体系的にテストケースを作成する方法を理解した。本回では、その一歩先として、「作成されたテストケース自体の品質」をどのように評価するかを扱う。テストを実施するだけでは十分ではなく、テストケースが妥当であるか、網羅的であるか、リスクを適切に考慮しているかを検討する必要がある。 テストは品質測定活動であるが、その測定結果はテストケースの設計に依存する。もしテストケースが不十分であれば、重大な欠陥が見逃される可能性がある。例えば、入力条件の一部しか確認していない場合や、異常系のケースが含まれていない場合、テスト結果が「合格」であっても品質は保証されない。本回では、テストケースの妥当性・網羅性・リスク評価という三つの観点から、テストの品質制御を整理する。 また、本回は「テストのためのテスト」という視点を導入する回でもある。テスト工程もまた品質制御の対象であり、テスト自体の品質を向上させることが、プロジェクト全体の信頼性につながる。本回では、具体例を多数用いて、テスト品質をどのように判断するかを理解する。
|
◆コマ主題細目①② • ISO/IEC/IEEE 29119 Software Testing • Sommerville, Software Engineering, Chapter 8 “Software Testing” ◆コマ主題細目③ • Pressman & Maxim, Software Engineering, Chapter 9 “Testing Strategies” ◆コマ主題細目④ • IEEE Std 829 (Test Documentation)
|
|
コマ主題細目
|
① テストケースの妥当性 ② テストの網羅性 ③ リスク評価に基づくテスト優先順位 ④ テスト工程の品質責任
|
|
細目レベル
|
① テストケースの妥当性を、より多くの具体例を通して体系的に説明できる水準まで。例えば、「年齢が18歳以上であれば登録可能」という要件に対して、20歳だけをテストするのでは妥当とは言えないことを説明できる水準まで。また、18歳ちょうどの値を確認せずに19歳のみを確認する場合、境界条件が検証されていないことを説明できる水準まで。さらに、「1~100まで入力可能」という要件に対して50のみをテストしても不十分であり、0や101のような無効値も含める必要があることを説明できる水準まで。加えて、異常系(例:空文字、null値、文字列入力、極端に長い入力値)を含まないテストケースは妥当性が低いことを説明できる水準まで。さらに、テストケースが要求仕様の各項目に明確に対応していなければならないことを具体例(例:性能要件に対応するテストが存在しない)で説明できる水準まで。
|
② テストの網羅性を、より詳細な具体例で説明できる水準まで。例えば、「ログイン機能」に対して、正しいID・誤ったID・誤ったパスワード・両方誤り・空入力・SQLインジェクションのような不正入力など複数のパターンを考慮する必要があることを説明できる水準まで。また、条件分岐が複数ある処理(例:会員種別A・B・Cで処理が異なる)では、それぞれの分岐が少なくとも一度は実行されるようにテストを設計する必要があることを説明できる水準まで。さらに、例外処理部分(例:データベース接続失敗時の処理)も網羅対象に含める必要があることを説明できる水準まで。加えて、網羅性が不足している場合、「テストが合格でも品質は保証されない」ことを具体例で説明できる水準まで。
|
③ リスク評価に基づくテスト優先順位を、より多くの事例を用いて説明できる水準まで。例えば、金融取引処理や個人情報管理機能は高リスクであり、優先的にテストすべきであることを説明できる水準まで。また、ログ表示の軽微な不具合よりも、データ消失につながる不具合の方が重大であることを説明できる水準まで。さらに、限られた時間内でテストを実施する場合、リスクの高い機能(例:決済処理、登録処理、削除処理)から優先的に実施する必要があることを説明できる水準まで。加えて、リスクは「発生確率」と「影響度」の両面から評価されることを説明できる水準まで。
|
④ テスト工程自体の品質責任を、具体例を増やして説明できる水準まで。例えば、テストケースが要求仕様の一部しかカバーしていない場合、重大欠陥を見逃す可能性があることを説明できる水準まで。また、テスト実施記録を残さない場合、後から「本当に確認したのか」を証明できないことを説明できる水準まで。さらに、テスト環境が本番環境と大きく異なる場合、実運用で不具合が発生する可能性があることを説明できる水準まで。加えて、テスト工程も改善対象であり、欠陥傾向分析を通じてテストケースを見直す必要があることを説明できる水準まで。
|
|
キーワード
|
① テスト妥当性 網羅性 リスク評価 優先順位 品質測定 テスト責任
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 本コマではテストの品質制御を学習した。復習として、簡単な要件(例:「パスワード8文字以上」)に対するテストケースを作成し、その妥当性と網羅性を自己評価すること。また、複数のテストケースの中から優先順位をつける練習を行うこと。さらに、リスクの高い機能と低い機能を分類し、その理由を文章で整理すること。 ◆次コマの予習 次回はテスト進捗と品質判断を扱う。予習として、テスト件数やバグ件数のグラフから何が読み取れるかを考えておくこと。
|
|
19
|
テスト消化曲線による進捗管理
|
科目の中での位置付け
|
第18回では、テストケースの妥当性・網羅性・リスク評価という観点から、テスト自体の品質制御を扱った。本回では、そのテスト活動をさらに一段上の視点から捉え、「テストの進捗をどのように管理するか」という管理的観点を扱う。ここでは、テスト消化曲線という定量的手法を用いて、プロジェクトの状態を客観的に評価する方法を学ぶ。 テスト工程は単に実施すればよいものではなく、計画に対してどの程度進んでいるのかを常に把握する必要がある。例えば、テストケースが100件計画されているにもかかわらず、期日直前まで30件しか実施されていない場合、重大なリスクが存在することは明らかである。一方で、予定より早く消化している場合でも、テストの質が低下していないかを確認する必要がある。したがって、進捗管理は単なる件数管理ではなく、品質と結び付いた判断材料である。 テスト消化曲線は、横軸に時間、縦軸に実施済みテスト件数をとることで、進捗を視覚的に把握する方法である。計画線と実績線を比較することで、遅延や停滞の兆候を早期に察知できる。例えば、曲線が途中で横ばいになっている場合、重大欠陥の修正待ちやテスト環境の不具合など、何らかの問題が発生している可能性がある。 本回では、テスト消化曲線を単なるグラフとしてではなく、「プロジェクトの健康状態を示す診断ツール」として理解する。テストの実施状況を定量的に把握し、リリース可否や工程見直しの判断に活用する視点を養う。本回は、品質測定活動を管理レベルへ拡張する重要な回である。
|
◆コマ主題細目①(テスト消化曲線の基本概念) • Sommerville, Software Engineering, Chapter 8 “Software Testing” • IEEE Std 829-2008 (Test Documentation) • IPA「ソフトウェア開発データ白書」(進捗管理事例) ◆コマ主題細目②(計画値と実績値の比較) • Pressman & Maxim, Software Engineering, Chapter 9 “Testing Strategies” • ISO/IEC/IEEE 29119 Software Testing(進捗管理に関する記述) ◆コマ主題細目③(消化停滞の原因分析) • IEEE Std 730-2014 (Software Quality Assurance Processes) • IPA「共通フレーム2013」 ◆コマ主題細目④(消化曲線とリリース判断) • ISO/IEC 25010:2011 Quality Model • CMMI for Development, Version 2.0(品質評価観点)
|
|
コマ主題細目
|
① テスト消化曲線の基本概念 ② 計画値と実績値の比較 ③ 消化停滞の原因分析 ④ 消化曲線とリリース判断
|
|
細目レベル
|
① テスト消化曲線の基本概念を、より具体的な数値例を用いて説明できる水準まで。例えば、テストケースが合計100件計画されているプロジェクトにおいて、1日目10件、2日目20件、3日目40件と消化している場合、計画上は5日で100件終了予定であることを説明できる水準まで。また、グラフ上で計画線と実績線を重ねることで進捗の遅れや加速が視覚的に把握できることを説明できる水準まで。さらに、消化曲線が初期に急激に伸び、その後横ばいになる場合は、重大欠陥の発生やテスト環境トラブルが影響している可能性があることを説明できる水準まで。加えて、単なる件数ではなく「残件数」の推移も重要であることを説明できる水準まで。
|
② 計画値と実績値の比較を、より多角的な具体例で説明できる水準まで。例えば、計画では1日あたり20件実施予定であったが、実績が5件、10件、15件と増加している場合、テスト実施体制が整っていない可能性があることを説明できる水準まで。また、逆に後半に1日50件と急増している場合、テストの質が低下している可能性があることを説明できる水準まで。さらに、実績が計画を上回っている場合でも、不合格件数が増えていれば品質問題が潜在している可能性があることを説明できる水準まで。加えて、消化曲線は単独で評価するのではなく、不合格件数と併せて分析する必要があることを説明できる水準まで。
|
③ 消化停滞の原因分析を、複数のケースを挙げて説明できる水準まで。例えば、重大欠陥の修正待ちでテストが停止するケース、テストデータ不足により進行できないケース、テスト担当者の不足により遅延するケースを説明できる水準まで。また、特定機能に欠陥が集中している場合、設計不備の可能性があることを説明できる水準まで。さらに、停滞が発生した場合には、テスト計画の見直しやリソース再配分が必要であることを説明できる水準まで。加えて、停滞を放置すると後工程に影響が及ぶことを説明できる水準まで。
|
④ 消化曲線とリリース判断の関係を、具体的状況を想定して説明できる水準まで。例えば、消化率90%で重大欠陥が0件の場合と、消化率100%でも重大欠陥が残存している場合では判断が異なることを説明できる水準まで。また、軽微な欠陥が多数残っている場合の扱いについても考慮が必要であることを説明できる水準まで。さらに、消化率が高くてもテスト網羅性が不足していれば品質保証は不十分であることを説明できる水準まで。加えて、消化曲線はあくまで判断材料の一つであり、総合的評価が必要であることを説明できる水準まで。
|
|
キーワード
|
① テスト消化曲線 進捗管理 計画値 実績値 停滞分析 リリース判断
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 テストケース100件の仮想データを設定し、日別消化数を表とグラフにまとめること。また、計画との差を分析し、改善策を文章で記述すること。 ◆次コマの予習 次回は「バグ累積曲線による品質評価」を扱う。予習として、バグ件数の推移グラフから何が読み取れるかを考えておくこと。
|
|
20
|
バグ累積曲線による品質評価
|
科目の中での位置付け
|
第19回では、テスト消化曲線を用いて「テストが計画どおり進んでいるか」を数量で把握し、遅延・停滞・前倒しといった進捗状態を評価する方法を学んだ。ただし、テストが進んでいること(=消化が進むこと)と、品質が良いこと(=欠陥が収束していること)は同じではない。例えば、毎日20件ずつ順調に消化していても、毎日10件以上の重大欠陥が出続けるなら、品質は不安定であり、リリース判断は危険側に傾く。逆に、消化が遅れていても、欠陥がほとんど出ず、残りのテストが低リスク領域なら、計画の見直しでリカバリーできる可能性もある。つまり、進捗曲線だけでは「品質の状態」が見えないという限界がある。 そこで本回では、テスト工程で日々報告される欠陥(バグ)のデータを累積して可視化する「バグ累積曲線」を用い、品質の収束(落ち着き具合)を読み取る。バグ累積曲線は、横軸が日付、縦軸が累積欠陥件数で表され、曲線の傾き(増え方)から「まだ欠陥が出続けているのか」「収束に向かっているのか」を判断しやすい。例えば、テスト開始直後は欠陥が多く出て傾きが急になり、修正・再確認が進むにつれて傾きが緩やかになる、という形が典型的とされる。一方、終盤なのに傾きが急なまま、あるいは急に再び立ち上がる場合は、仕様理解の不足、設計の不備、変更の影響、テスト範囲の拡大など、何らかの問題が疑われる。 また、本科目の重要方針として、テストは「本試験」であり合否判定の品質測定活動である。したがって、バグ累積曲線は「頑張った記録」ではなく、リリース可否を説明可能にするための根拠の一部である。ただし、欠陥件数だけで判断してはいけない。重大欠陥が1件残っている状況と、軽微欠陥が数件残っている状況では意味が全く違う。また、同じ20件でも、重要機能に集中しているのか、周辺機能に分散しているのかで危険度は変わる。本回では、件数の推移(曲線の形)+重大度(重み)+テスト消化状況を組み合わせ、より現実的な「品質判断」を行う考え方を身につける。第21回以降の保守工程の話題(障害の再発、修正版の影響、運用後の品質維持)につなぐうえでも、ここで「収束を見て判断する」考え方を確立しておくことが重要である。
|
◆コマ主題細目①② • Sommerville, Software Engineering, Chapter 8 “Software Testing” ◆コマ主題細目③ • ISO/IEC 25010:2011 Quality Model ◆コマ主題細目④ • IEEE Std 829 (Test Documentation) • ISO/IEC/IEEE 29119 Software Testing
|
|
コマ主題細目
|
① バグ累積曲線の基本構造 ② 欠陥収束の読み取り方 ③ 重大欠陥と軽微欠陥の区別 ④ リリース可否判断への活用
|
|
細目レベル
|
① バグ累積曲線の基本構造を、日別件数と累積件数を混同せずに、数値例を複数使って説明できる水準まで。例えば、日別の欠陥発見件数が「1日目5件、2日目12件、3日目8件、4日目3件、5日目1件」なら累積は「5→17→25→28→29」と増えることを説明できる水準まで。また、日別件数が減ってきても、累積曲線は原則として下がらず、増え方(傾き)が緩くなることで収束の兆候を読む点を説明できる水準まで。さらに、別例として「1日目2件、2日目2件、3日目2件、4日目2件」のように日別が一定でも、累積は「2→4→6→8」と直線的に増えることを説明できる水準まで。加えて、「日別件数グラフは上下するが、累積曲線は滑らかな上り坂として現れる」こと、そして「傾きが急=欠陥が多く見つかっている、傾きが緩=欠陥が見つかりにくくなっている」という読み方を説明できる水準まで。加えて、累積曲線を描く前提として「欠陥の定義(何を1件と数えるか)」「重複登録をどう扱うか」「再オープン(再発)をどう数えるか」が曖昧だと曲線が意味を持ちにくいことを、簡単な例(同じ現象を別の人が登録した場合など)で説明できる水準まで。
|
② 欠陥収束の読み取り方を、複数のシナリオ(良い例・悪い例・紛らわしい例)で説明できる水準まで。例えば、良い例として、テスト開始直後は「15件、10件、6件、3件、1件、0件」と日別が減少し、累積曲線の傾きが明確に緩む場合は、欠陥発見が減って収束に向かっている可能性があることを説明できる水準まで。一方、悪い例として、終盤になっても「8件、9件、7件、10件」と日別が高止まりし、累積曲線の傾きが最後まで急なままなら、品質が安定していない可能性が高いことを説明できる水準まで。さらに、紛らわしい例として、ある期間だけ欠陥が減って「0件」が続いたが、実はその期間テスト消化が止まっていた(環境不具合や修正待ちでテスト未実施)ために欠陥が増えていないだけ、という可能性を説明できる水準まで。加えて、終盤に傾きが急に立ち上がるケース(仕様変更が入った、重要機能のテストを後回しにしていた、結合条件が整って初めて問題が出た等)を例示し、「曲線の形の変化」から疑うべき状況を説明できる水準まで。加えて、収束判断は「件数が減った」だけでなく、重大欠陥が減ったかどうか、重要機能のテストが終わっているかどうかも同時に見る必要があることを説明できる水準まで。
|
③ 重大欠陥と軽微欠陥の区別を、学生が具体例を挙げて分類できる水準まで。例えば、重大欠陥の例として「ログインできない」「保存したデータが消える」「決済金額が誤る」「削除操作が誤って他人のデータに作用する」「権限のない利用者が管理者機能を使える」などを挙げ、リリース可否に直結しやすいことを説明できる水準まで。一方、軽微欠陥の例として「表示が1行ずれる」「ボタンの文言が誤字」「並び順が要件と少し違うが代替手段がある」などを挙げ、影響が限定的である場合が多いことを説明できる水準まで。ただし、軽微に見えても「頻繁に発生して業務が進まない」「誤解を招いて誤操作につながる」なら重大になり得ること(例:削除ボタンのラベルが紛らわしい)を説明できる水準まで。さらに、重大度分類をしたうえで「重大欠陥のみの累積曲線」「全欠陥の累積曲線」を分けて見ると判断がしやすいこと、たとえば全体は収束していても重大欠陥が増えているなら危険、という読み方を説明できる水準まで。加えて、欠陥の“数”だけでなく“中身”が重要であり、重大欠陥の未解決が残る限り「合否判定としては不合格」と扱うべき状況があることを説明できる水準まで。
|
④ バグ累積曲線をリリース可否判断に活用する方法を、消化曲線と組み合わせた具体例で説明できる水準まで。例えば、テスト消化が「計画100件中95件完了」、バグ累積曲線は後半で傾きが緩く、直近3日の日別欠陥が「1件、0件、0件」、かつ重大欠陥が0件なら、リリース判断が前向きになり得ることを説明できる水準まで。一方、消化が「90件完了」で見かけ上は順調でも、直近の日別欠陥が「7件、8件、6件」で累積曲線の傾きが急なまま、さらに重大欠陥が残っているならリリース不可(または延期判断が妥当)になり得ることを説明できる水準まで。さらに、「累積件数が少ない=品質が高い」と短絡できない例として、重要機能のテストが未着手で欠陥がまだ“見つかっていないだけ”の状況(消化曲線が低い、あるいは重要領域が未消化)を挙げ、判断保留や計画修正が必要になることを説明できる水準まで。加えて、同じ累積30件でも、重大欠陥が2件含まれる場合と、軽微欠陥のみ30件の場合で判断が変わること、また修正投入(デバッグ)後に再テストが必要で、そこで欠陥が再増加する可能性も含めて見積もる必要があることを説明できる水準まで。最後に、曲線は「説明可能性」を高める材料であり、リリース可否を“気合い”ではなく“根拠”で語るための道具であることを説明できる水準まで。
|
|
キーワード
|
① バグ累積曲線 欠陥収束 重大欠陥 軽微欠陥 リリース判断 品質評価
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 仮想的な日別欠陥発見件数データ(例:5,10,8,3,1,0)を用いて累積曲線を作成すること。また、その曲線から品質収束の有無を判断すること。さらに、重大欠陥と軽微欠陥を区別し、リリース可否を文章で説明すること。 ◆次コマの予習 次回は保守工程を扱う。予習として、保守の種類(是正・適応・予防)について調べておくこと。
|
|
21
|
保守の開発方法
|
科目の中での位置付け
|
第20回では、バグ累積曲線を用いた品質評価を扱い、リリース可否を定量的に判断する視点を学んだ。本回では、そのリリース後に継続して行われる「保守工程」に焦点を当てる。ウォーターフォールモデルでは保守は最後の工程に位置付けられるが、実際のシステム開発においては、保守こそが最も長期間にわたる活動であり、総コストの半分以上を占める場合もある。 多くの学生は、保守を「不具合修正」と同義に捉えがちである。しかし実際には、保守はより広い概念であり、是正保守(不具合修正)、適応保守(環境変化への対応)、予防保守(将来の不具合予防)の三つに分類される。本回では、これらを単なる用語として覚えるのではなく、それぞれがどのような状況で発生し、どのような活動を含むのかを具体例を通して理解する。 さらに、保守は品質成熟度を測る重要な指標でもある。是正保守ばかりが発生するシステムは品質が安定していない可能性がある。一方、予防保守が計画的に実施されている場合、品質改善の文化が根付いていると考えられる。本回では、保守を単なる「後始末」ではなく、「品質向上を継続する開発活動」として捉える視点を養う。 また、保守活動は新たな開発と同様に、要求分析・設計・実装・テストの流れを含むことが多い。例えば、法改正に伴う仕様変更は、要求修正から設計見直し、実装変更、再テストまで一連の工程を伴う。つまり、保守は小規模な再開発とも言える。本回では、保守を体系的に理解し、開発プロセスの一部として位置付ける。
|
◆コマ主題細目① • Sommerville, Software Engineering, Chapter 9 “Software Evolution” ◆コマ主題細目② • ISO/IEC 12207 Software life cycle processes ◆コマ主題細目③ • Pressman & Maxim, Software Engineering, Chapter 11 “Evolution and Maintenance” ◆コマ主題細目④ • ISO/IEC 25010:2011 Quality Model
|
|
コマ主題細目
|
① 是正保守の基本 ② 適応保守の基本 ③ 予防保守の基本 ④ 保守と品質成熟の関係
|
|
細目レベル
|
① 是正保守の基本を、より多くの具体例を通して説明できる水準まで。例えば、リリース後に「特定条件で計算結果が誤る」という不具合が報告された場合、それを修正する活動が是正保守であることを説明できる水準まで。また、「あるブラウザでのみ画面が崩れる」「特定の入力値でエラーが発生する」「データが保存されないことがある」といった具体例も是正保守に該当することを説明できる水準まで。さらに、単なる修正だけでなく、原因分析を行い再発防止策を検討することが重要であることを説明できる水準まで。加えて、是正保守が頻発している場合は設計や実装の根本的な問題が潜在している可能性があることを説明できる水準まで。
|
② 適応保守の基本を、具体例を増やして説明できる水準まで。例えば、OSのアップデートにより既存機能が動作しなくなった場合に修正することが適応保守であることを説明できる水準まで。また、税率変更に伴う計算ロジックの更新、セキュリティ基準変更に伴う暗号方式の変更、利用者数増加に伴う性能改善などが適応保守に含まれることを説明できる水準まで。さらに、外部API仕様変更に対応するための修正も適応保守であることを説明できる水準まで。加えて、環境変化への対応が遅れるとサービス停止や法令違反につながる可能性があることを説明できる水準まで。
|
③ 予防保守の基本を、より多くの事例を用いて説明できる水準まで。例えば、現時点で不具合は発生していないが、将来の負荷増大に備えてデータベースの構造を見直すことが予防保守であることを説明できる水準まで。また、可読性の低いコードを整理し、共通処理を抽出して将来の修正を容易にする活動も予防保守であることを説明できる水準まで。さらに、テストケースを追加し、過去に発生した欠陥と同様の問題を未然に防ぐ活動も予防保守であることを説明できる水準まで。加えて、予防保守を怠ると長期的に品質が低下し、是正保守が増加する可能性があることを説明できる水準まで。
|
④ 保守と品質成熟の関係を、より詳細な因果関係で説明できる水準まで。例えば、是正保守の件数が年々減少し、予防保守が計画的に実施されている場合、品質成熟が進んでいると判断できることを説明できる水準まで。また、同種の不具合が繰り返し発生している場合、改善サイクルが機能していない可能性があることを説明できる水準まで。さらに、保守活動を通じて設計手法やレビュー観点を改善することで、次の開発に活かせることを説明できる水準まで。加えて、保守は開発の終わりではなく、品質を継続的に高めるプロセスであることを説明できる水準まで。
|
|
キーワード
|
① 是正保守 適応保守 予防保守 環境変化 品質成熟 継続的改善
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 本コマでは保守の三分類を学習した。復習として、身近なアプリの更新履歴を調べ、それが是正・適応・予防のどれに該当するかを分類すること。また、是正保守が多発する原因を考察すること。 ◆次コマの予習 次回は保守の品質制御を扱う。予習として、変更影響分析とは何かを調べておくこと。
|
|
22
|
保守の品質制御
|
科目の中での位置付け
|
第21回では、是正保守・適応保守・予防保守という三つの保守活動を整理し、保守を「開発の後始末」ではなく「継続的な開発活動」として位置付けた。本回では、その保守活動をさらに一歩進め、「保守をどのように品質制御の対象として扱うか」という視点を学ぶ。 実際のプロジェクトでは、保守工程での変更が新たな欠陥を生むことが少なくない。例えば、税率変更に伴う計算ロジックの修正が、帳票出力機能や集計処理に予期せぬ影響を及ぼす場合がある。また、セキュリティ対策のために認証処理を強化した結果、既存のAPI連携機能が動作しなくなることもある。このように、一箇所の変更が他箇所へ波及するリスクを事前に把握することが重要である。 本回では、変更影響分析という考え方を中心に扱う。変更がどこに影響するかを予測し、影響範囲を洗い出すことで、修正漏れや新たな欠陥の発生を防ぐ。また、保守性(変更しやすさ)という品質特性を評価することで、システムの将来耐性を判断する視点を養う。 さらに、保守工程は単なる技術的修正ではなく、品質成熟度を示す重要な指標でもある。変更のたびに問題が発生するシステムは成熟度が低く、変更が安定して行えるシステムは成熟度が高いと考えられる。本回では、保守を品質管理の観点から体系的に理解する。 加えて、保守工程で得られた知見は次の開発や改修計画にフィードバックされるべきものであり、保守は開発プロセスの終点ではなく循環の一部であるという視点も重要である。
|
◆コマ主題細目①② • Sommerville, Software Engineering, Chapter 9 “Software Evolution” • ISO/IEC 12207 Software life cycle processes ◆コマ主題細目③ • ISO/IEC 25010:2011 Quality Model ◆コマ主題細目④ • Pressman & Maxim, Software Engineering, Chapter 11 “Maintenance and Reengineering”
|
|
コマ主題細目
|
① 変更影響分析の基本 ② 影響範囲の特定方法 ③ 保守性の評価観点 ④ 保守品質と再発防止の関係
|
|
細目レベル
|
① 変更影響分析の基本を、複数の具体例を通して体系的に説明できる水準まで。例えば、「消費税率を10%から12%へ変更する」という要求変更が発生した場合、単に計算式を変更するだけでなく、請求書表示、履歴データ保存、月次集計、レポート出力、外部会計システム連携など多岐にわたる機能に影響する可能性があることを説明できる水準まで。また、「パスワード文字数制限を変更する」という小規模変更でも、登録画面、変更画面、バリデーションロジック、データベース定義、エラーメッセージ表示など複数箇所へ波及することを説明できる水準まで。さらに、変更箇所だけでなく「その値を参照している他機能」まで洗い出す必要があることを説明できる水準まで。加えて、影響範囲を特定せずに修正すると新たな欠陥を誘発する可能性があることを説明できる水準まで。
|
② 影響範囲の特定方法を、より具体的な作業手順と例で説明できる水準まで。例えば、設計書や処理フロー図を確認し、当該ロジックがどのモジュールから呼び出されているかを洗い出す方法を説明できる水準まで。また、データベースのテーブル定義を確認し、変更対象のカラムがどの帳票や画面で利用されているかを確認する必要があることを説明できる水準まで。さらに、ソースコード検索によって影響箇所を特定する方法を説明できる水準まで。加えて、テストケースを再確認し、変更対象に関連するテストを再実施する必要があることを説明できる水準まで。
|
③ 保守性の評価観点を、より多くの具体例を用いて説明できる水準まで。例えば、処理が密結合である場合、一箇所の変更が多数の修正を伴うことを説明できる水準まで。また、共通処理が抽象化されていれば変更が一箇所で済むことを説明できる水準まで。さらに、変数名やメソッド名が不明確であると影響分析が困難になることを説明できる水準まで。加えて、ドキュメントやテストケースが整備されていると変更確認が容易になることを説明できる水準まで。さらに、モジュール分割が適切であるほど保守性が高まることを説明できる水準まで。
|
④ 保守品質と再発防止の関係を、より詳細な因果関係で説明できる水準まで。例えば、同種の不具合が繰り返し発生する場合、影響分析や設計見直しが不十分である可能性があることを説明できる水準まで。また、変更のたびにテストを十分に実施していない場合、新たな欠陥が潜在化する可能性があることを説明できる水準まで。さらに、変更影響分析を標準手順に組み込むことで品質が安定することを説明できる水準まで。加えて、保守工程も品質成熟の一部であり、改善サイクルの継続が重要であることを説明できる水準まで。
|
|
キーワード
|
① 変更影響分析 保守性 影響範囲 密結合 再発防止 品質制御
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 変更影響分析の例を一つ想定し、影響範囲を図で整理すること。また、保守性を高める設計上の工夫を3つ挙げること。さらに、密結合と疎結合の違いを説明すること。 ◆次コマの予習 次回は開発方式と品質戦略を扱う。ウォーターフォール以外の開発方式について簡単に調べておくこと。
|
|
23
|
ウォーターフォール型の品質保証戦略
|
科目の中での位置付け
|
第22回では、保守工程における変更影響分析と保守性の評価を扱い、リリース後の品質制御の重要性を整理した。本回では、これまで学んできた要求・設計・実装・デバッグ・テスト・保守という一連の工程を改めて俯瞰し、ウォーターフォール型開発における品質保証戦略を体系的に整理する。 ウォーターフォールモデルは、工程を明確に区切り、それぞれの工程で成果物を確定させてから次工程へ進むという構造を持つ。この構造は、品質責任を段階的に分離し、各工程で何を保証すべきかを明確にする点に特徴がある。例えば、要求工程では「何を作るか」を曖昧さなく定義する責任があり、設計工程では「どのように作るか」を構造的に整える責任がある。実装工程では設計どおりにコードを記述する責任があり、テスト工程では要求に適合しているかを判定する責任がある。 前工程重視型品質管理とは、問題を後工程で見つけて修正するのではなく、可能な限り上流工程で予防するという戦略である。例えば、要求段階で非機能要求を数値化していれば、設計段階で性能設計が可能となり、実装後の性能不具合を減らせる。また、設計段階で例外処理や境界条件を整理していれば、実装段階でのバグ発生を抑制できる。これらはすべて「後工程で発見するコスト」を削減するための戦略である。 しかし、ウォーターフォール型には限界もある。要求が頻繁に変化する場合、前工程で確定させた内容が後に変更され、手戻りが発生する可能性がある。本回では、前工程重視型の思想を理解した上で、その適用範囲や注意点も整理する。品質保証戦略としてのウォーターフォールを、長所と限界の両面から理解することが目的である。
|
◆コマ主題細目①② • Sommerville, Software Engineering, Chapter 2 “Process Models” ◆コマ主題細目③ • ISO/IEC 12207 Software life cycle processes ◆コマ主題細目④ • Pressman & Maxim, Software Engineering, Chapter 3 “Process Framework”
|
|
コマ主題細目
|
① 前工程重視型品質管理の考え方 ② 要求・設計段階での品質作り込み ③ 後工程での確認とフィードバック ④ ウォーターフォール型戦略の長所と限界
|
|
細目レベル
|
① 前工程重視型品質管理の考え方を、より多くの具体例を用いて体系的に説明できる水準まで。例えば、要求仕様段階で「応答時間は3秒以内」と定義していない場合、設計段階で性能設計が不十分となり、実装後に性能問題が顕在化する可能性があることを説明できる水準まで。また、「利用者は削除できる」という曖昧な要求をそのまま設計に渡すと、権限制御不備が発生する可能性があることを説明できる水準まで。さらに、設計段階でデータ構造を十分検討していない場合、実装段階でデータ不整合が発生しやすくなることを説明できる水準まで。加えて、後工程で修正するよりも前工程で予防する方がコストが低い傾向があることを説明できる水準まで。
|
② 要求・設計段階での品質作り込みを、さらに具体的な事例を交えて説明できる水準まで。例えば、入力値の範囲を要求段階で明確にしなければ、設計で入力検証ロジックを正確に定義できないことを説明できる水準まで。また、設計段階でエラーメッセージや例外処理の流れを定義しないと、実装者ごとに処理方針が異なり、動作の不整合が発生する可能性があることを説明できる水準まで。さらに、設計段階でモジュール分割を適切に行えば、実装後の修正範囲が限定されることを説明できる水準まで。加えて、レビューを通じて設計不備を早期に発見することが品質向上につながることを説明できる水準まで。
|
③ 後工程での確認とフィードバックの役割を、より多角的な視点で説明できる水準まで。例えば、テスト工程で発見された欠陥が要求の曖昧さに起因している場合、要求仕様を修正する必要があることを説明できる水準まで。また、保守工程での障害分析結果を次回開発の要求定義に反映することが品質成熟につながることを説明できる水準まで。さらに、フィードバックを怠ると同種の欠陥が繰り返されることを説明できる水準まで。加えて、ウォーターフォール型でも工程間フィードバックが重要であることを説明できる水準まで。
|
④ ウォーターフォール型戦略の長所と限界を、より具体的なケーススタディを想定して説明できる水準まで。例えば、法令に基づく大規模行政システムのように要求が比較的安定している場合には有効であることを説明できる水準まで。一方、利用者要望が頻繁に変化するWebサービスでは、前工程で固定化しすぎると手戻りが増える可能性があることを説明できる水準まで。さらに、工程が明確で責任分担が整理しやすい点は長所であるが、変更への柔軟性が低い点は限界であることを説明できる水準まで。加えて、品質保証戦略として採用する場合はプロジェクト特性を考慮すべきであることを説明できる水準まで。
|
|
キーワード
|
① ウォーターフォールモデル 前工程重視 品質作り込み レビュー フィードバック
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
【復習課題】 ・ウォーターフォール型の品質保証戦略を図にまとめること。 ・前工程で防げる欠陥例を3つ挙げること。 ・前工程を軽視した場合に発生する問題を具体例で説明すること。
【予習課題】 ・アジャイル開発との違いを簡単に調べること。 ・反復型開発で品質をどのように確保するかを考えておくこと。
|
|
24
|
反復型開発の品質制御
|
科目の中での位置付け
|
第23回では、ウォーターフォール型の品質保証戦略を整理し、「前工程で品質を作り込む」という思想を体系的に確認した。本回では、それとは対照的な開発方式である「反復型開発」における品質制御の考え方を扱う。具体的には、アジャイル開発、スパイラルモデル、プロトタイピングといった方式を取り上げ、それぞれがどのように品質を担保しているかを比較する。 ウォーターフォール型は工程を明確に分離し、段階的に品質を積み上げる戦略を取る。一方、反復型開発では、小さな単位で開発・テスト・改善を繰り返すことで品質を高めていく。例えば、アジャイル開発では短いスプリント(2週間程度)ごとに機能を実装し、レビューと改善を行う。スパイラルモデルでは、リスク分析を中心に据え、リスクの高い部分から試作と評価を繰り返す。プロトタイピングでは、まず試作品を作り、利用者のフィードバックを受けて改善する。 本回では、これらの方式を単に「ウォーターフォールと違うもの」として紹介するのではなく、「品質保証の考え方がどう違うのか」という視点で整理する。前工程重視型とは異なり、反復型では「早期フィードバック」「小刻みな確認」「継続的改善」が品質担保の中心となる。本回は、開発方式と品質戦略の関係を理解する重要な回である。
|
◆コマ主題細目① • Beck, Kent. Extreme Programming Explained • Scrum Guide(公式サイト) ◆コマ主題細目② • Boehm, Barry. “A Spiral Model of Software Development and Enhancement” ◆コマ主題細目③ • Sommerville, Software Engineering, Chapter “Prototyping” ◆コマ主題細目④ • Pressman & Maxim, Software Engineering, Chapter “Process Models”
|
|
コマ主題細目
|
① アジャイル開発における品質制御 ② スパイラルモデルとリスク主導型品質管理 ③ プロトタイピングとフィードバック重視型品質管理 ④ 反復型とウォーターフォール型の品質戦略比較
|
|
細目レベル
|
① アジャイル開発における品質制御を、より具体的な事例を通して説明できる水準まで。例えば、2週間のスプリントでログイン機能のみを実装し、その都度単体テスト・結合テスト・レビューを行うことで、小さな単位で品質を確認する仕組みを説明できる水準まで。また、毎日のデイリースクラムで問題点を共有し、欠陥を早期に修正することが品質安定につながることを説明できる水準まで。さらに、自動テストを継続的に実行することで、変更による副作用を即座に検出できることを説明できる水準まで。加えて、利用者レビューを頻繁に行うことで要求の誤解を早期に修正できることを説明できる水準まで。さらに、スプリントレビューで未達項目を振り返ることが品質改善につながることを説明できる水準まで。
|
② スパイラルモデルにおける品質制御を、より多くの具体例で説明できる水準まで。例えば、新しいオンライン決済機能を導入する場合、まずセキュリティリスクを分析し、最もリスクの高い部分(例:暗号化処理)から試作と評価を行うことを説明できる水準まで。また、リスク分析→試作→評価→改善という循環を繰り返すことで品質を段階的に高めることを説明できる水準まで。さらに、リスクを早期に発見することで後工程の大規模修正を防げることを説明できる水準まで。加えて、リスクを過小評価すると重大欠陥が残存する可能性があることを説明できる水準まで。さらに、スパイラルは計画的なリスク低減戦略であることを説明できる水準まで。
|
③ プロトタイピングにおける品質制御を、より具体的な事例で説明できる水準まで。例えば、ECサイトの購入画面を試作し、実際の利用者に操作してもらうことで、入力ミスが多発する箇所や分かりにくい遷移を早期に発見できることを説明できる水準まで。また、「ボタンが見つけにくい」「入力項目が多すぎる」といった指摘を反映することで品質が向上することを説明できる水準まで。さらに、プロトタイプ段階で業務フローの問題を発見できれば、後の設計変更コストを削減できることを説明できる水準まで。加えて、プロトタイプを正式仕様と混同すると品質保証が不十分になる危険性があることを説明できる水準まで。
|
④ 反復型とウォーターフォール型の品質戦略を比較し、より多角的に説明できる水準まで。例えば、ウォーターフォール型が前工程での確定を重視するのに対し、アジャイルは継続的な確認と改善を重視することを説明できる水準まで。また、スパイラルはリスク低減を中心に品質を担保する戦略であることを説明できる水準まで。さらに、プロジェクトの特性(要求の安定性、規模、変更頻度)によって適した品質戦略が異なることを説明できる水準まで。加えて、どの方式でもレビューやテストなどの品質制御活動が不可欠であることを説明できる水準まで。さらに、品質保証の考え方が開発方式に応じて変化することを説明できる水準まで。
|
|
キーワード
|
① アジャイル スパイラルモデル プロトタイピング 反復型開発 リスク管理 継続的改善
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
【復習課題】 ・ウォーターフォール型とアジャイル型の品質保証の違いを表に整理すること。 ・アジャイルで重大欠陥が発生した場合の対処方法を説明すること。 ・スパイラルモデルにおけるリスク分析の役割を具体例でまとめること。
【予習課題】 ・次回扱う「再利用と品質戦略」について、再利用の利点とリスクを調べること。 ・オープンソースソフトウェアの更新履歴を確認し、反復型開発の特徴を探すこと。
|
|
25
|
再利用型開発の戦略
|
科目の中での位置付け
|
第24回では、反復型開発(アジャイル・スパイラル・プロトタイピング)における品質担保の方法を比較し、開発方式と品質戦略の関係を整理した。本回では、その流れを受けて「再利用型開発」という別の視点から品質保証戦略を考察する。再利用型開発とは、既存のソフトウェア部品、フレームワーク、ライブラリ、設計資産、テスト資産などを活用して新たなシステムを構築する方法である。 再利用は、単に開発期間を短縮するための効率化手段ではない。品質管理の観点から見ると、「すでに検証済みの成果物を利用することで、新規欠陥発生のリスクを低減する」戦略である。例えば、暗号化アルゴリズムを自作するのではなく、広く利用され実績のあるライブラリを利用すれば、実装ミスによる重大なセキュリティ欠陥を回避できる可能性が高い。また、共通部品として長期間運用されてきたモジュールは、多数の利用環境で検証されているため、信頼性が高いと期待できる。 しかし、再利用には必ずしも利点だけがあるわけではない。再利用部品の仕様を十分理解していない場合、意図しない挙動が発生することもある。さらに、外部ライブラリのバージョンアップによって互換性問題が発生する可能性もある。本回では、再利用を無条件に肯定するのではなく、「品質リスク低減の手段」として適切に評価する視点を養う。 また、再利用は実装段階だけでなく、設計段階やテスト段階、さらには保守段階にも関係する。例えば、共通部品の修正は複数システムへ波及する可能性がある。本回では、再利用を品質戦略の一部として位置付け、利点とリスクの両面から体系的に理解する。
|
◆コマ主題細目①② • Sommerville, Software Engineering, Chapter “Reuse-based Software Engineering” ◆コマ主題細目③ • ISO/IEC 12207 Software life cycle processes ◆コマ主題細目④ • Pressman & Maxim, Software Engineering, Chapter “Software Reuse”
|
|
コマ主題細目
|
① 再利用型開発の基本概念 ② 再利用による品質リスク低減 ③ 再利用のリスクと注意点 ④ 再利用戦略と品質保証の関係
|
|
細目レベル
|
① 再利用型開発の基本概念を、具体例を豊富に用いて説明できる水準まで。例えば、ログイン機能を一から実装するのではなく、既存の認証フレームワーク(例:OAuthライブラリ)を利用することが再利用であることを説明できる水準まで。また、画面テンプレートや入力検証モジュール、共通エラーハンドリング処理を複数システムで共有することも再利用に含まれることを説明できる水準まで。さらに、コードだけでなく、設計パターン(例:MVC構造)やテストケース、レビュー観点なども再利用対象であることを説明できる水準まで。加えて、再利用は「作らない勇気」を含む戦略であることを説明できる水準まで。
|
② 再利用による品質リスク低減を、複数の具体例で説明できる水準まで。例えば、広く利用されている暗号化ライブラリを利用することで、自作実装よりも安全性が高まる可能性があることを説明できる水準まで。また、長期間運用され多数のバグ修正が行われた共通部品を利用することで、新規欠陥の発生確率を低減できることを説明できる水準まで。さらに、共通部品に対して一度修正を行えば、利用しているすべてのシステムに品質改善が波及することを説明できる水準まで。加えて、再利用によってテスト範囲を限定できる場合があること(既に検証済み部分は再テストを簡略化できる場合がある)を説明できる水準まで。
|
③ 再利用のリスクと注意点を、より多角的な具体例で説明できる水準まで。例えば、外部ライブラリのバージョンアップによってAPI仕様が変更され、既存コードが動作しなくなる可能性があることを説明できる水準まで。また、内部仕様を理解せずに再利用した場合、不具合発生時に原因特定が困難になることを説明できる水準まで。さらに、再利用部品自体に欠陥が含まれている場合、その影響が複数システムに波及する可能性があることを説明できる水準まで。加えて、再利用部品の品質評価を怠ると、逆にリスクが増大することを説明できる水準まで。
|
④ 再利用戦略と品質保証の関係を、より体系的に説明できる水準まで。例えば、再利用部品であっても、利用環境に合わせたテストが必要であることを説明できる水準まで。また、再利用部品の変更が他機能へ影響する場合、変更影響分析が必要であることを説明できる水準まで。さらに、再利用は品質保証の代替ではなく補完手段であることを説明できる水準まで。加えて、再利用を適切に行うことで品質成熟度が向上する可能性があることを説明できる水準まで。
|
|
キーワード
|
① 再利用型開発 共通部品 ライブラリ活用 品質リスク低減 バージョン管理
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
◆本コマの復習 再利用の具体例を3つ挙げ、それぞれの利点とリスクを整理すること。また、自作実装と再利用の違いを品質観点で比較すること。 ◆次コマの予習 次回は「品質のカプセル化」を扱う。再利用と品質保証の関係について考えておくこと。
|
|
26
|
品質のカプセル化
|
科目の中での位置付け
|
第25回では、再利用型開発を品質リスク低減の手段として整理し、既存部品の活用が品質安定に寄与する可能性を確認した。本回では、その再利用をさらに一歩進め、「品質のカプセル化」という概念として体系的に理解する。 一般に、オブジェクト指向におけるカプセル化は、内部構造を隠蔽し、外部からはインタフェースのみを利用するという概念である。本回で扱う「品質のカプセル化」は、これを品質保証の観点で拡張した考え方である。すなわち、十分に検証され、長期間運用され、品質が安定している部品やモジュールを再利用することで、その「検証済み品質」を一つの単位として封じ込め、新規開発部分に持ち込まないという戦略である。 例えば、暗号化処理、入力検証処理、ログ出力処理、例外処理フレームワークなどを共通部品として整備しておけば、それらを毎回ゼロから作る必要がなくなる。結果として、同種の欠陥が繰り返し発生するリスクが低減する。本回では、この「品質を部品として扱う」発想を理解する。 ただし、品質のカプセル化には前提条件がある。再利用する部品が十分に検証されていること、利用範囲が明確であること、仕様が安定していることなどが必要である。本回では、品質のカプセル化が成立する条件と、成立しない場合のリスクを整理する。
|
◆コマ主題細目①(品質のカプセル化とは何か) • Sommerville, Ian Software Engineering, 10th Edition, Pearson Chapter 16 “Software Reuse” (再利用の基本概念と部品化の思想を参照) • ISO/IEC 25010:2011 Systems and software engineering — Systems and software Quality Requirements and Evaluation (SQuaRE) (品質特性モデルの参照) • Gamma, E. et al. Design Patterns: Elements of Reusable Object-Oriented Software (再利用可能設計の考え方を参照)
◆コマ主題細目②(検証済み部品の再利用構造) • ISO/IEC 12207 Systems and software engineering — Software life cycle processes (再利用を含む開発プロセス定義) • Pressman & Maxim Software Engineering: A Practitioner's Approach, 9th Edition Chapter “Component-Based Software Engineering” • IEEE Std 828-2012 Configuration Management (部品管理・構成管理の観点)
◆コマ主題細目③(品質カプセルの成立条件) • ISO/IEC/IEEE 29119 Software Testing Standard (検証済み部品の前提条件) • CMMI Institute CMMI for Development, Version 2.0 (成熟度とプロセス管理の観点) • IPA 「ソフトウェア開発プロセス改善事例集」 https://www.ipa.go.jp/jinzai/process/
◆コマ主題細目④(品質カプセル化の限界とリスク) • Sommerville Software Engineering, Chapter “Software Evolution” (変更と影響範囲) • NIST “National Vulnerability Database” https://nvd.nist.gov/ (外部ライブラリ脆弱性の実例) • ISO/IEC 25010:2011 (保守性・信頼性の評価観点)
|
|
コマ主題細目
|
① 品質のカプセル化とは何か ② 検証済み部品の再利用構造 ③ 品質カプセルの成立条件 ④ 品質カプセル化の限界とリスク
|
|
細目レベル
|
① 品質のカプセル化の概念を、より多くの具体例を通して説明できる水準まで。例えば、入力検証モジュールを共通部品として整備し、「nullチェック」「桁数チェック」「形式チェック」「範囲チェック」などを一括管理することで、その部分の品質を安定化できることを説明できる水準まで。また、認証処理を一つのフレームワークにまとめることで、各機能で個別にログインロジックを実装する必要がなくなり、認証不備の発生確率を下げられることを説明できる水準まで。さらに、品質のカプセル化とは「機能の再利用」だけでなく、「検証済みであるという品質結果の再利用」であることを説明できる水準まで。加えて、過去に重大な欠陥が修正された部品を再利用することは、その修正知見も同時に再利用していることを説明できる水準まで。
|
② 検証済み部品の再利用構造を、さらに具体例を増やして説明できる水準まで。例えば、長期間運用されてきたログ出力モジュールを利用することで、ログ形式の不整合や出力漏れのリスクを低減できることを説明できる水準まで。また、過去プロジェクトで十分にテストされた決済モジュールを流用することで、新規実装よりも信頼性が高まる可能性があることを説明できる水準まで。さらに、共通部品に対して一度バグ修正を行えば、それを利用するすべてのシステムに改善が波及することを説明できる水準まで。加えて、部品単位でテスト資産を共有できる利点を説明できる水準まで。
|
③ 品質カプセルの成立条件を、より具体的な状況を挙げて説明できる水準まで。例えば、再利用部品が十分に単体テスト・結合テストを経ていなければ品質のカプセル化は成立しないことを説明できる水準まで。また、部品の仕様が明確に文書化されていなければ誤用が発生し、品質が保証されないことを説明できる水準まで。さらに、部品のインタフェースが安定していなければ、頻繁な修正が必要となり品質カプセルの効果が低減することを説明できる水準まで。加えて、部品の利用条件が明示されている必要があることを説明できる水準まで。
|
④ 品質カプセル化の限界とリスクを、具体例をさらに増やして説明できる水準まで。例えば、外部ライブラリに重大脆弱性が発見された場合、利用している全システムが影響を受ける可能性があることを説明できる水準まで。また、内部構造を理解せずに再利用すると、不具合発生時に原因特定が困難になることを説明できる水準まで。さらに、再利用が過度になると設計の柔軟性が失われ、新しい要求に対応しづらくなることを説明できる水準まで。加えて、品質カプセル化は適切な選定・検証・管理が伴って初めて有効であることを説明できる水準まで。
|
|
キーワード
|
① 品質のカプセル化 再利用戦略 検証済み部品 共通モジュール 品質安定化
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
【復習課題】 ・品質のカプセル化の具体例を3つ挙げること。 ・品質カプセルが成立しない例を説明すること。 ・再利用と品質保証の関係を図に整理すること。
【予習課題】 ・次回扱う「開発方式の総合比較」に向けて、ウォーターフォール・反復型・再利用型の違いをまとめること。
|
|
27
|
工程横断的品質管理
|
科目の中での位置付け
|
本回は、本科目全体を統合する位置付けにある重要回である。これまでの授業では、要求仕様定義、設計、実装、デバッグ、テスト、保守という各工程を個別に扱い、それぞれの工程での品質制御方法を学んできた。しかし実際の開発では、品質は工程ごとに独立して存在するものではない。品質は連鎖し、前工程の判断が後工程へ波及し、さらに保守工程の知見が次の要求定義へと循環する構造を持つ。 例えば、要求仕様の曖昧さが設計段階での解釈のばらつきを生み、それが実装の不整合につながり、テスト工程で大量の欠陥として表面化する場合がある。また、設計段階で例外処理や境界条件を十分に考慮していなければ、実装段階でバグが増加し、デバッグ工程の負担が増大する。さらに、保守工程で繰り返し発生する障害は、過去の設計判断やレビュー体制の弱点を示している可能性がある。このように、品質は時間軸と工程軸の両方に沿って影響し合う。 逆に言えば、前工程での改善は後工程全体に好影響を与える。要求レビューを強化すれば設計不備が減少し、設計標準を整備すれば実装のばらつきが減少し、実装規約を徹底すればテスト段階での欠陥数が減少する可能性が高い。このような「品質の連鎖効果」を理解することが、工程横断的品質管理の出発点である。 また、本回は単なる総復習ではない。個々の工程を理解することと、工程間の関係性を理解することは異なる。例えば、バグ累積曲線とテスト消化曲線を個別に理解していても、それらを組み合わせて総合判断できなければ、実際の品質管理は行えない。本回では、これまで学習した各種手法を統合し、「プロジェクト全体として品質をどう見るか」という視点を確立する。 最終的には、部分最適ではなく全体最適を目指すことが品質管理の本質である。本回は、各工程を縦割りで捉えるのではなく、横断的に結び付けて理解するための統合回である。
|
◆コマ主題細目①② • ISO/IEC 12207 Software life cycle processes • Sommerville, Software Engineering, Chapter “Quality Management” ◆コマ主題細目③ • ISO/IEC 25010:2011 Quality Model ◆コマ主題細目④ • CMMI for Development, Version 2.0
|
|
コマ主題細目
|
① 品質連鎖の構造 ② 前工程と後工程の相互作用 ③ 品質情報の循環(フィードバックループ) ④ 統合的品質管理の実践例
|
|
細目レベル
|
① 品質連鎖の構造を、より多くの具体例を通して体系的に説明できる水準まで。例えば、要求仕様で「利用者は削除できる」と曖昧に記述した結果、設計で権限条件が不明確になり、実装段階で管理者以外も削除可能となる欠陥が発生する可能性を説明できる水準まで。また、設計段階でデータ整合性制約を明確にしなかった場合、実装で不整合データが登録され、テスト工程で重大欠陥として発見される可能性を説明できる水準まで。さらに、実装段階で例外処理を省略した結果、保守段階で頻繁な障害対応が発生する例を説明できる水準まで。加えて、各工程の品質判断が後工程へ連鎖的に影響することを説明できる水準まで。
|
② 前工程と後工程の相互作用を、複数の具体的なシナリオを用いて説明できる水準まで。例えば、要求定義で非機能要件が明確でなかったため、設計で性能考慮が不足し、テスト段階で性能不具合が集中発生する事例を説明できる水準まで。また、設計段階でモジュール分割が不適切であったため、実装段階で変更が困難になり、保守段階で修正コストが増大する例を説明できる水準まで。さらに、テスト工程で発見された重大欠陥が設計方針そのものの見直しにつながる事例を説明できる水準まで。加えて、工程間の相互作用を無視すると部分最適に陥ることを説明できる水準まで。
|
③ 品質情報の循環(フィードバックループ)を、具体例を増やして説明できる水準まで。例えば、保守工程で発見された障害傾向を分析し、次回開発の要求定義で数値基準を明確化する例を説明できる水準まで。また、デバッグ工程で頻発する境界値欠陥を受けて、テスト設計技法を強化する例を説明できる水準まで。さらに、バグ累積曲線の分析結果を設計レビュー強化に反映する例を説明できる水準まで。加えて、品質情報を共有せずに個別に処理すると、同種欠陥が繰り返される可能性があることを説明できる水準まで。
|
④ 統合的品質管理の実践例を、より多角的な視点で説明できる水準まで。例えば、要求レビュー強化→設計標準化→実装規約整備→テスト設計強化という一連の改善施策が、保守段階での障害件数減少につながる例を説明できる水準まで。また、バグ累積曲線とテスト消化曲線を組み合わせてリリース判断を行う事例を説明できる水準まで。さらに、品質成熟度が高い組織では工程横断的な品質会議が行われる例を説明できる水準まで。加えて、工程横断的視点がなければ品質改善は局所的に留まることを説明できる水準まで。
|
|
キーワード
|
① 品質連鎖 工程横断管理 フィードバックループ 全体最適 品質成熟
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
【復習課題】 ・要求→設計→実装→テスト→保守の品質連鎖を図示すること。 ・ある欠陥事例を想定し、どの工程に原因があるか分析すること。 ・フィードバックループの例を3つ挙げること。
【予習課題】 ・最終回に向けて、全工程の品質保証戦略をまとめること。
|
|
28
|
プロジェクト品質の総合判断
|
科目の中での位置付け
|
第27回では、工程横断的品質管理という視点から、要求から保守までの品質連鎖を統合的に理解した。本回では、その統合的理解を「最終判断」という実践レベルへ引き上げる。すなわち、実際のプロジェクトにおいて「リリースしてよいかどうか」をどのように判断するのか、その思考プロセスを体系的に整理する。 これまでの授業では、テスト消化曲線、バグ累積曲線、重大欠陥と軽微欠陥の区別、網羅率、変更影響分析、保守性評価など、多数の品質指標を学んできた。しかし、それらは個別に存在するものではなく、最終的には一つの意思決定に収束する。たとえば、「テストは完了しているが重大欠陥が残っている」「重大欠陥は解消したが網羅率が低い」「欠陥は少ないが重要機能が未テストである」といった複雑な状況を、総合的に判断する必要がある。 現実の開発現場では、品質判断は技術的側面だけでなく、納期・契約・経営判断とも関係する。例えば、軽微欠陥が5件残っているが、重大欠陥はゼロであり、顧客合意が得られている場合はリリース可能と判断されることもある。一方、重大欠陥が1件でも残存している場合は延期が妥当とされる場合もある。このように、品質判断は単なる件数比較ではなく、影響度・リスク・網羅性・収束傾向を含む総合評価である。 本回では、「データをどう読むか」だけでなく、「どう統合するか」「どう説明するか」に重点を置く。品質保証とは、客観的根拠をもって判断し、その判断を説明可能にすることである。本回は、品質データを意思決定へ変換する力を養う総合回である。
|
◆コマ主題細目①② • ISO/IEC 25010:2011 Quality Model • IEEE Std 829 (Test Documentation) ◆コマ主題細目③ • ISO 31000 Risk Management Guidelines ◆コマ主題細目④ • CMMI for Development, Version 2.0
|
|
コマ主題細目
|
① 品質データの種類と意味 ② 定量データの読み取り方 ③ 重大度とリスクの統合評価 ④ リリース可否判断のプロセス
|
|
細目レベル
|
① 品質データの種類と意味を、複数の複合事例を用いて詳細に説明できる水準まで。例えば、あるプロジェクトで「テストケース200件中190件実施済み(消化率95%)」「累積欠陥60件」「重大欠陥3件未解決」「直近3日間の新規欠陥は7→5→2件」と推移している場合、それぞれの指標が示す意味を説明できる水準まで。また、「消化率」は進捗を示し、「累積欠陥」は品質状態を示し、「重大欠陥件数」はリスクを示すことを区別して説明できる水準まで。さらに、網羅率(例:条件分岐網羅率85%)が低い場合、件数が少なくても潜在リスクが高い可能性があることを説明できる水準まで。加えて、品質データは単独では意味を持ちにくく、相互関係を理解する必要があることを説明できる水準まで。
|
② 定量データの読み取り方を、より具体的な対照ケースで説明できる水準まで。例えば、ケースA「消化率100%・重大欠陥0件・累積曲線収束」とケースB「消化率100%・重大欠陥1件残存・累積曲線上昇傾向」を比較し、後者が危険である理由を説明できる水準まで。また、ケースC「消化率85%・重大欠陥0件・残りは低リスク機能のみ」である場合の判断を説明できる水準まで。さらに、累積曲線が収束しているように見えても、テスト対象が限定的であれば誤判断につながることを説明できる水準まで。加えて、「数値の絶対値」と「傾向」の違いを区別できる水準まで。
|
③ 重大度とリスクの統合評価を、さらに多角的な具体例で説明できる水準まで。例えば、「データ消失バグ1件」と「UI表示ずれ10件」のどちらがリリース判断に与える影響が大きいかを説明できる水準まで。また、「発生確率が低いが影響度が極めて高い欠陥(例:権限誤設定)」は優先度が高いことを説明できる水準まで。さらに、「軽微欠陥が多数存在する場合でも利用者満足度に影響する可能性」を説明できる水準まで。加えて、リスク評価は確率と影響度の両面から行う必要があることを説明できる水準まで。
|
④ リリース可否判断のプロセスを、具体的な意思決定場面を想定して詳細に説明できる水準まで。例えば、品質会議で各指標を提示し、重大欠陥の残存状況を確認し、設計責任者が影響範囲を説明し、経営側がリスク許容度を判断する流れを説明できる水準まで。また、品質データに基づく説明責任が信頼性向上につながることを説明できる水準まで。さらに、延期判断が長期的品質向上につながる場合があることを説明できる水準まで。加えて、感覚的判断ではなくデータ駆動型判断が重要であることを説明できる水準まで。
|
|
キーワード
|
① 品質データ 総合評価 重大度 リスク評価 リリース判断 説明責任
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
復習課題】 ・仮想的な品質データセットを作成し、リリース可否を判断すること。 ・重大欠陥と軽微欠陥の優先順位を整理すること。 ・複数指標を統合した判断方法を文章でまとめること。
【予習課題】 ・最終回に向けて、本科目全体の品質戦略を整理すること。
|
|
29
|
総合事例分析(開発+品質)
|
科目の中での位置付け
|
本回は、本科目全体の総合演習的回である。これまでの授業では、要求仕様定義、設計、実装、デバッグ、テスト、保守、再利用、品質カプセル化、品質データによる判断などを個別に扱ってきた。本回では、それらを統合し、一つの仮想プロジェクト事例を通して、工程別に品質評価を行う。 ここで重要なのは、「どの工程が悪いかを探す」ことではない。むしろ、「品質はどの工程から影響を受けているか」「どの段階で予防できたか」「どの段階で測定すべきだったか」を総合的に判断する力を養うことである。 例えば、あるオンライン予約システムの開発プロジェクトを想定する。要求仕様には「利用者は予約できる」「予約はキャンセル可能」「同時に100人が利用可能」と記載されている。しかし、非機能要件は数値化されていない。設計では画面遷移は定義されたが、負荷分散設計は行われていない。実装では例外処理が一部省略されている。テストでは正常系中心の確認が行われ、異常系テストは限定的である。リリース後、アクセス集中により停止が発生した。 本回では、このような仮想事例を工程別に評価し、どの段階で品質リスクが生じたのかを分析する。単なる振り返りではなく、「品質連鎖」の観点から評価する。 本科目の目標は、「開発できる人材」ではなく「品質を判断できる人材」の育成である。本回は、その到達点を確認する総括回である。
|
◆コマ主題細目①② • ISO/IEC 12207 Software life cycle processes ◆コマ主題細目③ • ISO/IEC/IEEE 29119 Software Testing ◆コマ主題細目④ • ISO/IEC 25010:2011 Quality Model • CMMI for Development
|
|
コマ主題細目
|
① 要求工程の評価 ② 設計・実装工程の評価 ③ デバッグ・テスト工程の評価 ④ 保守・リリース判断の評価
|
|
細目レベル
|
① 要求工程の評価を、仮想事例に基づいてより多角的に説明できる水準まで。例えば、「同時に100人が利用可能」という記述があるが、応答時間や処理時間の数値が明記されていない場合、性能要件が曖昧であり、設計段階で適切な構成を選択できない可能性があることを説明できる水準まで。また、「予約できる」と記載されているが、重複予約の扱いやキャンセル期限、予約変更条件が定義されていない場合、設計で解釈の差が生じる可能性があることを説明できる水準まで。さらに、非機能要件(可用性99%以上、バックアップ間隔、障害時復旧時間など)が明示されていない場合、テスト段階で確認基準を設定できないことを説明できる水準まで。加えて、要求レビューで曖昧表現を除去していれば、後工程での不整合を防げた可能性があることを説明できる水準まで。
|
② 設計・実装工程の評価を、より詳細な事例を交えて説明できる水準まで。例えば、負荷分散構成を設計していなかった場合、同時アクセス増加時にサーバが停止するリスクがあることを説明できる水準まで。また、データ整合性制約(例:同一時間帯に同一席を二重予約できない)が設計段階で定義されていなかった場合、実装で整合性チェックが漏れる可能性があることを説明できる水準まで。さらに、実装段階で例外処理を共通化していなかったため、異常入力時に統一されていない挙動が発生する可能性を説明できる水準まで。加えて、コードレビューが不十分であった場合、設計意図と異なる実装が混在するリスクがあることを説明できる水準まで。
|
③ デバッグ・テスト工程の評価を、より具体的な状況を想定して説明できる水準まで。例えば、正常系テストのみ実施し、異常系(入力エラー、通信断、同時更新競合)を十分にテストしていなかった場合、リリース後に停止が発生する可能性があることを説明できる水準まで。また、負荷テストを限定的にしか実施していなかったため、ピーク時アクセスを想定できていなかったことを説明できる水準まで。さらに、バグ累積曲線が終盤でも増加傾向にあったにもかかわらずリリース判断を行った場合の危険性を説明できる水準まで。加えて、重大欠陥の重大度評価を誤った場合のリスクを説明できる水準まで。
|
④ 保守・リリース判断の評価を、より広い視点から説明できる水準まで。例えば、リリース後に発生した停止問題が設計段階の負荷想定不足に起因している可能性を説明できる水準まで。また、是正保守だけでなく、要求仕様の非機能要件を見直す必要があることを説明できる水準まで。さらに、保守段階で得られた知見を次回開発の要求定義や設計標準へフィードバックすることで品質成熟が進むことを説明できる水準まで。加えて、総合的品質判断は工程横断的視点なしには成立しないことを説明できる水準まで。
|
|
キーワード
|
① 総合評価 品質連鎖 工程分析 統合判断 品質責任
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
【復習課題】 ・仮想プロジェクト事例を自作し、工程別に評価すること。 ・どの工程で予防できたかを明示すること。 ・リリース可否を根拠付きで判断すること。
【予習課題】 ・最終回に向けて、本科目全体の品質保証戦略をまとめること。
|
|
30
|
品質判断者としての意思決定
|
科目の中での位置付け
|
本回は、本科目全体の到達点である。第1回で「品質とは何か」を定義し、第2回で品質事故を通して工程責任を学び、要求・設計・実装・デバッグ・テスト・保守という各工程を個別に整理してきた。そして第27回・第28回・第29回では、工程横断的視点と総合判断の考え方を扱った。本回では、それらすべてを統合し、「品質判断者」として最終的な意思決定を行う視点を確立する。 本科目の最大の特徴は、「開発体験型授業」ではなく「品質判断者を育てる授業」である点にあった。品質判断者とは、単にバグを修正できる人ではない。品質データを読み取り、デバッグとテストを区別し、重大度とリスクを整理し、リリース可否を論理的に説明できる人である。 ここで改めて強調する。デバッグは「弱点を克服する活動」であり、品質向上のための内部改善活動である。一方、テストは「合否を判定する品質測定活動」である。この二つを混同してはいけない。デバッグは模擬試験であり、テストは本試験である。模擬試験で改善し、本試験で判定する。この構造を理解して初めて、品質判断者としての立場が確立する。 本回では、仮想プロジェクトを想定し、品質データを基に最終判断を下す演習を行う。単に「良さそう」「危なそう」と感じるのではなく、消化曲線、バグ累積曲線、重大欠陥数、網羅率、変更影響分析結果などを統合して判断する。 品質保証とは、説明責任である。本回は、「なぜリリース可能なのか」「なぜ延期すべきなのか」を論理的に説明できる能力を確認する最終回である。
|
◆コマ主題細目①② • ISO/IEC 25010:2011 Quality Model ◆コマ主題細目③④ • ISO/IEC/IEEE 29119 Software Testing • CMMI for Development
|
|
コマ主題細目
|
① 品質判断者の役割 ② デバッグとテストの最終整理 ③ 品質データ統合判断演習 ④ 最終意思決定と説明責任
|
|
細目レベル
|
① 品質判断者の役割を、全工程の連鎖を踏まえて体系的に説明できる水準まで。例えば、要求段階で「同時に100人が利用可能」と曖昧に定義した結果、設計で具体的な性能基準が設定されず、実装で単一サーバ構成となり、テスト段階で負荷試験が不十分であったため、本番環境で停止が発生したという一連の因果関係を説明できる水準まで。また、品質判断者は単に「今の欠陥件数」を見るのではなく、「その欠陥がどの工程に起因しているか」を分析できる存在であることを説明できる水準まで。さらに、重大欠陥がゼロであっても、網羅率が低い場合は潜在リスクが高いと判断できることを説明できる水準まで。加えて、品質判断者は技術的観点とリスク観点の両方を統合して考える必要があることを説明できる水準まで。
|
② デバッグとテストの違いを、最終的な判断責任の観点から明確に区別して説明できる水準まで。例えば、単体テストで失敗したケースを修正する行為はデバッグであり、その後再テストして合否を確認する行為がテストであることを説明できる水準まで。また、デバッグは品質を高める内部活動であり、テストは品質を測定する外部的評価活動であることを説明できる水準まで。さらに、デバッグが不十分であればテストで重大欠陥が残存し、リリース判断に影響することを説明できる水準まで。加えて、デバッグとテストを混同すると「修正すれば合格」という誤解を生む可能性があることを説明できる水準まで。
|
③ 品質データ統合判断を、複数の仮想シナリオで説明できる水準まで。例えば、ケースA「消化率100%、重大欠陥0件、軽微欠陥5件、累積曲線収束、網羅率95%」ではリリース可能と判断できる理由を説明できる水準まで。ケースB「消化率98%、重大欠陥1件未解決、累積曲線上昇傾向、網羅率85%」では延期判断が妥当である理由を説明できる水準まで。ケースC「消化率85%だが重要機能は完了、重大欠陥0件、累積曲線安定」という状況では条件付きリリースの可能性を説明できる水準まで。さらに、欠陥件数が少なくても影響範囲が広い場合は危険であることを説明できる水準まで。加えて、定量データと定性評価(影響度、顧客合意)を統合する必要があることを説明できる水準まで。
|
④ 最終意思決定と説明責任を、具体的な品質会議の場面を想定して詳細に説明できる水準まで。例えば、品質責任者が消化曲線・累積曲線・重大欠陥一覧・網羅率を提示し、設計責任者が影響分析結果を説明し、最終的に経営判断としてリリース延期を決定する流れを説明できる水準まで。また、データに基づく説明がなければ、後に障害が発生した際に責任が曖昧になることを説明できる水準まで。さらに、品質判断は「安全側に倒す勇気」も含むことを説明できる水準まで。加えて、品質判断者は数値だけでなく背景要因を理解した上で決断する存在であることを説明できる水準まで。
|
|
キーワード
|
① 品質判断者 デバッグとテストの分離 総合判断 リリース可否 説明責任
|
|
コマの展開方法
|
社会人講師
AL
ICT
PowerPoint・Keynote
教科書
コマ用オリジナル配布資料
コマ用プリント配布資料
その他
該当なし
|
|
小テスト
|
「小テスト」については、毎回の授業時間内に、LMS上において当該コマの小テスト(難易度表示付き)を実施する
|
|
復習・予習課題
|
【復習課題】 ・仮想品質データを提示し、自分で最終判断を下すこと。 ・その判断理由を論理的に説明すること。 ・デバッグとテストの違いを再定義すること。
|