年度 |
2025年度 |
開講部局 |
情報科学部 |
講義コード |
KA238101 |
科目区分 |
専門教育科目 |
授業科目名 |
ソフトウェア工学I |
授業科目名 (フリガナ) |
ソフトウェアコウガク1 |
英文授業科目名 |
Software Engineering I |
担当教員名 |
岡村 寛之 |
担当教員名 (フリガナ) |
オカムラ ヒロユキ |
開講キャンパス |
東広島 |
開設期 |
3年次生 前期 2ターム |
曜日・時限・講義室 |
(2T) 月5-8:工107 |
授業の方法 |
講義 |
授業の方法 【詳細情報】 |
対面 |
講義および演習 |
単位 |
2.0 |
週時間 |
4 |
使用言語 |
B
:
日本語・英語 |
学習の段階 |
3
:
中級レベル
|
学問分野(分野) |
25
:
理工学 |
学問分野(分科) |
02
:
情報科学 |
対象学生 |
3年次生 |
授業のキーワード |
ソフトウェア工学、開発プロセス、設計、品質保証、テスト、バージョン管理、ソフトウェア保守、チーム開発 |
教職専門科目 |
|
教科専門科目 |
|
プログラムの中での この授業科目の位置づけ (学部生対象科目のみ) | この科目では,以下の知識,技能の習得を行う.
1.ソフトウェア開発プロセスにおける知識 2.ソフトウェア設計手法に関する知識 3.ソフトウェア設計に必要なスキルの習得 |
---|
到達度評価 の評価項目 (学部生対象科目のみ) | 電気システム情報プログラム (能力・技能) ・電気,システム,情報分野の基礎概念,知識および手法を具体的・専門的な問題に応用する能力
計算機科学プログラム (総合的な力) ・D2. 多様化,複雑化した情報社会における分野横断的な課題に対して,豊富な最先端情報技術に基づいて,最適なシステムソリューションを導く能力.
データ科学プログラム (能力・技能) ・A. 情報基盤の開発技術,情報処理技術,データを分析して新しい付加価値を生む技術.
知能科学プログラム (総合的な力) ・D3. 複合的に絡み合う社会的ニーズや課題を俯瞰的に捉え,知能科学の幅広い知識に基づいた多角的視野と分析能力で課題を解決する能力. |
授業の目標・概要等 |
本講義では、ソフトウェアの開発から運用・保守に至るまでのプロセスを体系的に学びます。ソフトウェア開発の基礎となる開発プロセス、設計手法、品質保証の考え方を理解し、実践的なスキルとしてバージョン管理やCI/CD、セキュアコーディング、さらにチーム開発の手法について学びます。最終的に、ソフトウェアの品質を考慮した開発ができる能力を養うことを目的とします。 |
授業計画 |
第1回 ソフトウェア工学とは?(基礎概念と重要性) 第2回 ソフトウェア開発プロセス(ライフサイクルとモデル) 第3回 要件定義と仕様設計(機能・非機能要件、ユースケース、など) 第4回 UMLと設計の基礎(クラス図、シーケンス図、など) 第5回 オブジェクト指向設計(SOLID原則、責務分割、など) 第6回 デザインパターン1(Singleton、Factory、Strategy、など) 第7回 デザインパターン2(Adapter、Decorator、Composite、など) 第8回 ソフトウェアアーキテクチャ(モノリシック、マイクロサービス、など) 第9回 バージョン管理(Git、ブランチ戦略、GitHub活用、など) 第10回 テストと品質保証(V&V、単体テスト、TDD、など) 第11回 ソフトウェア保守(技術的負債、リファクタリング、など) 第12回 コーディング規則とセキュアコーディング(静的解析、脆弱性対策、など) 第13回 総合演習1(チーム開発を予定) 第14回 総合演習2(チーム開発を予定) 第15回 まとめ(振り返りと今後の学習指針)
レポート・期末試験 |
教科書・参考書等 |
教科書は指定しません.必要最小限の資料を学習支援システムを通じた電子媒体で配布します. |
授業で使用する メディア・機器等 |
配付資料, Microsoft Teams, その他(【詳細情報】を参照) |
【詳細情報】 |
Visual Studio Code |
授業で取り入れる 学習手法 |
PBL(Problem-based Learning)/ TBL(Team-based Learning), 授業後レポート |
予習・復習への アドバイス |
第1・2回 ソフトウェア開発の全体像を理解し、開発プロセスの種類を比較できるようにする 第3・4回 仕様設計の重要性を理解し、ユースケース図・クラス図の基本を復習 第5・6回 オブジェクト指向設計とデザインパターンの利点を考え、適用場面を考える 第7・8回 ソフトウェアアーキテクチャの種類を整理し、適切な設計選択の基準を学ぶ 第9・10回 Gitの操作を実践し、テストの種類と目的を整理する 第11・12回 保守性・セキュリティ品質を意識したコーディングができるようにする 第13・14回 チーム開発を通じて、品質を考慮した設計・実装・レビューを行う 第15回 全体の振り返りと、今後の学習方針を考える |
履修上の注意 受講条件等 |
本講義は、以下の「基本的なプログラミングの理解」を最低限の前提知識として扱います。 • C 言語 または Java, Python の基本文法 • 変数・データ型(int, float, string, list など) • 制御構造(if, for, while) • 関数の定義と呼び出し(引数・戻り値) • 配列・リストなどの基本的なデータ構造の利用 |
成績評価の基準等 |
成績は 課題レポート(50点満点)と 期末試験(50点満点)で評価し、以下の条件をすべて満たした場合に単位を認定します。 1. 課題レポートの得点が25点以上(50点満点) 2. 期末試験の得点が25点以上(50点満点) 3. 総合得点(課題レポート + 期末試験)が60点以上(100点満点) いずれかの条件を満たさない場合は不合格となります。課題の未提出がある場合、上記を満たしていた場合でも不合格になることがあります。 |
実務経験 |
有り
|
実務経験の概要と それに基づく授業内容 |
ソフトウェア開発の実務経験からソフトウェア開発プロセスについての講義を行う. |
メッセージ |
積極的に教員やTAに質問してください. 必携PCを利用します |
その他 |
以下の内容は講義内で解説しますが、スムーズに理解するために事前に少し学んでおくと良いスキルです。
1. オブジェクト指向の基礎(知らなくてもOKだが、少し学習しておくと理解が深まる) • クラスとインスタンスの概念 • class の使い方(Python / Java) • メソッドの定義と呼び出し(Python / Java) 2. Gitの基礎(知らなくてもOKだが、触れたことがあると良い) • git clone, git add, git commit, git push の操作 • GitHubを使ったことがあるとなお良い
受講に向けて、事前に学習しておくとスムーズですが、オブジェクト指向やGitについては講義内でも扱うため、事前に理解していなくても問題ありません。ただし、基本的なプログラミングの文法は知っている前提です。 |
すべての授業科目において,授業改善アンケートを実施していますので,回答に協力してください。 回答に対しては教員からコメントを入力しており,今後の改善につなげていきます。 |