2025年度後期ソフトウエアとシステムの検証

曜日・時限 火曜日6時限 期別 後期 週時間数 2
ナンバリング HT330509
開講学科等 総合情報学部-情報学科
教員名 津川 知朗
津川 知朗
職務履歴

目的

ソフトウェアや組込みシステムの製作において、検証は設計と同等かそれ以上にコストを要する過程である。十分に検証が行われず、欠陥が残存したまま出荷された製品は、ユーザーに不利益をもたらしたり、製造元に大きな損失を引き起こす可能性がある。そのため、適切な検証を行って誤りを除き、正しく動作するソフトウェアを作成する技術は非常に重要となる。本授業では、プログラムのテスト、システムの自動検証技術、および、バグを防ぐ為のプログラミング技法を学び、質の高いソフトウェアを製作する技術の習得を目指す。

授業計画

授業回 形式 学修内容 学修課題
1 遠隔A イントロダクション
(この授業で扱う内容の全体像と各項目の簡単な説明を行う)
事前学修 シラバスの内容を熟読する(2時間)。
事後学修 ソフトウェアやシステムの検証についてどのような事をすれば良いか、まず自分なりに考えてみる(2.7時間)。
2 遠隔A コード記述作法1
(読みやすいプログラムを書くための概要、および具体的な方法について、主に変数名や関数名の観点から説明する)
事前学修 有名な命名規則には何があるか事前調査してみる(2時間)。
事後学修 これまでに自分が記述したプログラムを見直してみる(2.7時間)。
3 遠隔A コード記述作法2
(読みやすいプログラムを書くための方法について、主に条件文やループ文、再帰等の観点から説明する)
事前学修 条件文やループ文を記述する際に自分が注意している事を検討してみる(2時間)。
事後学修 これまでに自分が記述したプログラムを見直してみる(2.7時間)。
4 遠隔A 防御的プログラミングとアサーション
(誤りである事をできるだけ早い段階で発見するためのプログラミング方法について説明する)
事前学修 防御的プログラミングと言うキーワードで事前調査を行ってみる(2時間)。
事後学修 自分がこれまでに作成してきたプログラムについて、アサーションを挿入すべき個所はどこか検討してみる(2.7時間)。
5 遠隔A バージョン管理システムの概要
(バージョン管理システムと呼ばれるものの概要、および歴史について説明する)
事前学修 バージョン管理システムと言うキーワードで事前調査を行ってみる(2時間)。
事後学修 今までのプログラミングの中で、バージョン管理を行っていたら良かったと思える事例はないか検討してみる(2.7時間)。
6 遠隔A 分散型バージョン管理システム
(近年、主流になりつつある分散型バージョン管理システムであるgitを取り上げ、その詳細について説明する)
事前学修 分散型バージョン管理システムの利点/欠点について事前に自分で検討してみる(2時間)。
事後学修 gitを実際に使用してみる(2.7時間)。
7 遠隔A ソフトウェア・テストの概要
(ソフトウェアのテストを行う事の必要性について説明し、どのようなテスト手法が存在しているのか紹介する)
事前学修 ソフトウェア・テストと言うキーワードで事前調査を行ってみる(2.7時間)。
事後学修 動的検証と静的解析の使い分けについて自分で検討してみる(2時間)。
8 遠隔A ソフトウェアの動的検証
(テスト手法の一つである動的検証について概要、およびその中の一つである単体テストについて詳細を説明する)
事前学修 動的検証とはどのようなものを指すのか、事前調査を行ってみる(2時間)。
事後学修 自分がこれまでに作成してきたプログラムについて、単体テストを行うためのプログラムを作成してみる(2.7時間)。
9 遠隔A 動的検証におけるテストケースの設計
(テストの網羅性、および実行時間の双方を考慮したテストケースの設計方法について説明する)
事前学修 自分がこれまでに作成してきた何らかのプログラムに対して、テストケースを作成しておく(2.7時間)。
事後学修 事前学習で作成したテストケースに対して、網羅性、実行時間を考慮する修正を行ってみる(2時間)。
10 遠隔C ソフトウェア・テスト演習1
(単体テストを行うためのプログラミング環境の構築を行い、最初に例示する最も単純なテストケースをパスできるプログラムを作成する)
事前学修 前回の授業中に指示したプログラミング環境の構築を素早く行えるための準備をしておく(2時間)。
事後学修 例示したテストケースをパスするプログラムの作成が完了しなかった場合は、次の演習までに完了させておく(2.7時間)。
11 遠隔C ソフトウェア・テスト演習2
(作成したプログラムの信頼性を高めるためにはどのようなテストケースを作成すれば良いのかについて検討し、実際に作成する)
事前学修 「動的検証におけるテストケースの設計」の授業を復習し、演習中に自分で実践できるようにしておく(2時間)。
事後学修 必要十分なテストケースを設計するにはどうすれば良いか検討する(2.7時間)。
12 遠隔A ソフトウェアの静的解析
(ソフトウェアのテスト手法の一つである静的解析について説明する)
事前学修 静的解析とはどのようなものを指すのか、事前調査を行ってみる(2時間)。
事後学修 授業中で紹介した静的解析のためのツールを実際に使用してみる(2.7時間)。
13 遠隔A まとめ
(これまでの講義で学んだ事項の内、特に重要とされる事項について再度確認をするためにまとめる)
事前学修 これまでの講義で学んだ事の総復習をしておく(2時間)。
事後学修 演習等を通じて身に着けた技術を再度確認する(2.7時間)。

授業形式記号

  • A:一斉授業(通常の講義)
  • B:問題発見・解決学習、プロジェクト学習
  • C:体験、実験、実習、演習など
  • D:調査 分析、解析など
  • E:ものづくり、作品制作
  • F:グループワーク(ディスカッション・ディベートを含む)
  • G:プレゼンテーション
  • H:地域・企業 連携型学習
  • I:その他

到達目標

<修得する資質・能力(ディプロマポリシー)>
- 知識・理解力,応用力【DP-T-1-1】

1.プログラムを記述する際に、誤りを未然に防ぐような書き方を理解する。
2.プログラムのバージョンを管理する事の重要性を理解する。
3.プログラムの記述と並行してテストケースを作成する事の重要性を理解し、実践できるようになる。
4.システムを実際に実行させずに検証する方法を理解する。

評価方法と評価観点

評価方法 配点合計知識・理解力応用力コミュニケーション力態度・志向性創造力 合計
定期試験またはレポート試験 0%
小テスト、小論文 0%
グループワーク 0%
プレゼンテーション 0%
レポート、宿題 50% 50% 50% 100%
授業での姿勢(ノート、質疑など) 50% 20% 10% 30% 20% 20% 100%
作品、パフォーマンス(実技、実演) 0%
その他1(具体的に: 0%
その他2(具体的に: 0%
100% 35% 30% 15% 10% 10% 100%

教科書・参考書

教科書:毎回、授業内容についての資料を配布する。

参考書:
・CODECOMPLETE(上巻),スティーブ・マコネル著,日経BPソフトプレス
・レガシーコード改善ガイド,マイケル・C・フェザーズ著,翔泳社

オフィスアワー

非常勤講師のため、質問等は電子メールにて受け付ける(連絡先メールアドレスについては授業内で通知する)。
ソフトウェア・テスト演習ではノートパソコンを使用する。必要となるプログラミング環境については授業内で通知する。

その他

実務経験のある教員による授業科目

担当教員は、ソフトウェアの新規開発および保守に10年程度従事しており、現在もこれを継続している。この科目では、これまでのソフトウェア開発・保守で実際に取り入れてきた手法を紹介し、また、演習を通じて実際にそれらの手法を体験してもらう事によって、効率的な開発方法を習得する事を目指す。