21124211

コンピュータ工学COM601b  COM602a  COM602e  COM603c  COM603d 

3年後学期火2

ソフトウェア工学

Software Engineering

佐藤 重幸

単位区分

単位数: 2単位
必修
課程・類・プログラム
種別
先端工学基礎課程

関連Webサイト

主題および達成目標

テストと形式手法を軸に, ソフトウェアに関する基礎概念と法論を学ぶ.
これにより,

* ソフトウェアを理解・作成・改善する際の適切な態度
* テストや形式手法をソフトウェア開発に取り入れる技術

獲得を目指す.

前もって履修しておくべき科目

特定の科目の履修を前提にすることはないが,

* プログラミング言語の基本概念(例えば「プログラム言語論」相当)
* 集合論と記号論理の数学記法(例えば「離散数学」相当)

ついての知識は前提とする.
特に, 「プログラム言語論」で扱うプログラミングパラダイムは, 本科目との関連性が高い.
両方履修すると, プログラミングの法論がより深く理解できるように設計されている.

前もって履修しておくことが望ましい科目

本科目の理解の助けになるであろう科目や経験は次の通り:

* 「言語処理系論」
* 「オペレーティングシステム論」
* 他者のプログラムを読み書きした経験
* 他者のためにプログラミングした経験

教科書等

授業教材はオンライン資料として配布する.
その中に, 参考資料を適宜記載する.

授業内容とその進め方

授業内容:

1. ガイダンス, イントロダクション
2. ソフトウェアとは何か
3. 可読性と保守性
4. モジュール性と抽象性
5. 表明と契約
6. テストとテストケース
7. テスト自動化
8. GitとGitHub
9. モデル検査:Alloy
10. 安全性と活性
11. 記号実行とホーア論理
12. ソフトウェアモデル検査:SLAM
13. ホワイトボックスファジング:SAGE
14. 例によるプログラミング:Flash Fill
15. まとめ

進め方:

* 12回以降は発展的内容なので, 授業進度に合わせて内容を取捨選択する.
* 各回にコメントフィードバックを求め, 次回で適宜取り上げる.

授業時間外の学習

* 各回のコメントフィードバック, 及びそれに係る復習・自習
* 期末試験, 及びそれに係る復習
* レポート課題, 及びそれに係る自習(プログラミングを含む)

成績評価方法および評価基準

成績評価方法:

各回のコメントフィードバック・期末試験・レポート課題から総合的に判断する.
ただし, コメントフィードバックは, 補助的な位置付けであり, レポート課題は, 発展的なオプション課題である.

評価基準:

授業で扱ったソフトウェアに関する基礎概念と法論を理解し, 自ら扱うことができるかを評価する.
期末試験の受験は, 単位取得において必須とする.
尚, オプションのレポート課題を提出しなくても, 他が十分良くできていれば, 「優」が取れるように調整する見通しである.

オフィスアワー・授業相談

Google Classroomで受け付ける.

学生へのメッセージ

ソフトウェアを使っているだけでは, 「ソフトウェア」は分からない.
プログラミングをしているだけでも, 「ソフトウェア」は分からない.
ソフトウェアを作れるようになるには, 「ソフトウェア」を学ばなければならない.

その

火2開講

キーワード

GitHub
テスト
仕様記述
形式手法
抽象化
最終変更日時: 2025/03/25 3:03:40