科目名 |
先導的ソフトウェア構成論 |
担当教員 |
松崎 公紀 |
対象学年 |
1年,2年 |
クラス |
院:専門001 |
講義室 |
A108 |
開講学期 |
1学期 |
曜日・時限 |
月1,木1 |
単位区分 |
選択 |
授業形態 |
一般講義 |
単位数 |
2 |
準備事項 |
|
備考 |
|
授業の詳細1 |
◆授業の目的 「文部科学省 先導的ITスペシャリスト育成推進プログラム」の一環として9大学連携で行われる「IT Spiral」の教材を用い, 先端的なソフトウェア工学技法を幅広く学習することを目的とする. 特に, 「単なるツールや記法の知識ではなく, その背景にある原理や理念を深く理解し, 環境が変化しても対応できる力である『適応力』の向上 (IT Spiral Annual Report 2006より)」を目的とする. |
授業の詳細2 |
◆授業の進め方 この科目では3大学から提供された3テーマ分のビデオ教材を使って授業を行う. 1テーマは授業5回分で構成される. 各テーマおよび各回の内容は下記の授業計画で述べる. ビデオ教材は1回当たり約45分であるため, 適宜ビデオを止めて教室内で解説・演習 (クイズ) を交えながら授業を進める.
◆キーワード 組込システム, ソフトウェア開発 |
授業の詳細3 |
◆達成目標 以下に示す事柄を説明できるようになる.
テーマ1: 「組込みシステム構成論」 組込みシステムの特徴は何か? 組込みシステムのハードウェアとして何があるか? C言語やアセンブラのプログラミングやそのクロス開発の方法の特徴は何か? 組込みシステムのコーディング規約にはどのようなものがあるか?
テーマ2: 「組込みソフトウェア設計論」 組込みシステムの資源管理手法には何があるか? 状態遷移・時間駆動型設計プロダクトライン・設計モデリング技術とは? 実時間スケジューリングとは? 組込みシステム向けJavaの特徴は何か? 組込みシステム向けミドルウェアにはどのようなものがあるか?
テーマ3: 「コンポーネント/パターン指向ソフトウェア開発」 コンポーネント指向ソフトウェア開発の利点は何か? UMLコンポーネント設計の特徴は? コンポーネントアーキテクチャとその実装技術にはどのようなものがあるか? ソフトウェアパターンとは何か? 分析パターン・アーキテクチャパターン・デザインパターンの関係は? リファクタリングとは何か? |
授業の詳細4 |
◆授業計画 テーマ1: 組み込みシステム構成論
第1回 組み込みソフトウェアの現状と今後 組み込みソフトウェアには, ハードウェア依存性が高いこと, 非決定性部分を含むために検証にかかるコストが大きいことといった特徴がある. 高い信頼性が求められる一方で, 多くの場面で熟練者のノウハウに依存するといった問題もある. さまざまな組み込みシステムとその開発の現状について, 実例を示しながら説明する. また, 生産性向上 に向けた取り組みについて紹介する.
第2回 ハードウェアの基礎 組み込みソフトウェアの開発対象は極めて多岐にわたり, しかも技術革新による変化のスピートが速い. 汎用マイコン, DSP, リコンフィグラブルLSI, FPGAなどのハードウェアの基礎について説明し, 組み込みシステムへの応用について述べる. 低消費電力, 高速化, 低コストを実現するための取り組みについても触れる.
第3回 アセンブラプログラミング 実行速度やメモリ使用量が重要視される場合や, ハードウェア固有の性能を引き出したい場合などには, 高水準言語ではなくアセンブラによるプログラミングが必要とされる. また, 高水準言語でプログラムする場合でも, 生成される機械語と対象機器のアーキテクチャの関係を意識することは重要である. ここではアセンブラとして GNU as を取り上げて説明し, 次にサブルーチンとして利用するための書き方についても学ぶ.
第4回 MCUのアーキテクチャとクロス開発 シンプルなマイクロコントロールユニットである Renesus H8/3292 を例として, アーキテクチャを説明する. C言語とアセンブラを用いてプログラムをクロス開発する方法について述べ, 外部インタフェースへのアクセスと割り込み処理についても説明する. また, ROMモニタを用いたデバッグの方法などについても触れる.
第5回 組み込みシステムのコーディング規約 多人数でのソフトウェア開発でソースコードの品質を保つためには, 一 定のコーディング規約を守ることが重要となる. 組み込みソフトウェアの品質向上に向け, 産学官が連携して策定したコーディング規約について説明する. 同時に, ソフトウェアの品質特性について述べ, テストをしやすくし, バグを作り込まないようにする信頼性の高いコーディング方法について学ぶ. |
授業の詳細5 |
テーマ2: 組込みソフトウェア設計論
第6回 組込みソフトウェア概論 組込みシステムは, リアルタイム性能の重視, 並行プロセス, 省メモリ容量, 省電力, クロスソフトウェア開発環境など, 企業向けソフトウェアとは異なる要求事項を有する. 本講義ではこれらの要求事項とその解, 特に資源管理手法を述べる.
第7回 組込みソフトウェア設計概論 組込みシステムは外界でのイベントを入力し適切な応答を適切な時間以内で出力するという形態をとる. このためのソフトウェア設計手法として, 状態遷移, 時間駆動型設計プロダクトライン, 設計モデリング技術などがある. 本講義ではこれらの手法の背景と概要を述べる.
第8回 リアルタイムスケジューリング概論 組込みシステムは外界を制御する用途が多い. 外界を制御するためにある一定時間以内に処理を行う必要がある. これをリアルタイムスケージューリングといい, 各種の技法が研究されてきている. 本講義では Rate Monotonic, Earlier Deadling Firstの各スケジューリング技法, 優先度逆転問題とそれを解決する優先度継承プロトコルなどを述べる.
第9回 組込みシステム向けJava概要 携帯電話をはじめとして組込みシステムのエンドユーザー向けアプリケーションとしてJava実行環境が利用されることが多い. 本講義では情報家電で利用される Connected Device Configuration, 携帯電話で使用される Connected Limited Device Configuration, ICカードで利用されるJavaCard, 関連応用ライブラリを概説する.
第10回 組込みシステム向けミドルウェア 組込みソフトウェアも要求される機能の増加, 開発規模の増大により, ミドルウェア導入による, 生産性, 信頼性の効用が進められている. 応用領域に対して共通なミドルウェアとして組込みシステム向けCORBA, 応用領域専用のミドルウェアとして情報家電向けミドルウェアのUPnP, OSGi, 携帯電話のミドルウェアのMOAPなどを紹介する. |
授業の詳細6 |
テーマ3: コンポーネント/パターン指向ソフトウェア開発
第11回 ソフトウェア開発におけるコンポーネントとパターン コンポーネント指向ソフトウェア開発を紹介し, 従来のソフトウェア開発手法との違い, 利点をまとめる. また, パターンを取り入れたソフトウェア開発に関して, その概要を紹介する.
第12回 コンポーネント指向開発方法論 開発方法論として, UMLコンポーネント設計, KobrAを取り上げ, それぞれのプロセスや特徴をまとめる. また,プロダクトライン開発についても解説する.
第13回 コンポーネントアーキテクチャと実装技術 代表的なコンポーネントアーキテクチャとその実装技術に関して歴史的背景を紹介する. また, コンポーネント実装技術の具体例として, EJB,Webサービス技術 (SOAP, WSDL, REST) などを解説する.
第14回 ソフトウェアパターン ソフトウェア開発工程におけるソフトウェアパターンを紹介する. さらに, 分析パターン, アーキテクチャパターン,デザインパターンを解説する.
第15回 リファクタリング オブジェクト指向の設計原則と設計を改善するためのリファクタリングについて解説する. |
授業の詳細7 |
◆成績評価 授業で出す演習課題をもとに評価する. AA: 全授業回数の演習に参加・課題達成した場合. A: 授業回数の90%以上について演習に参加・課題達成した場合. B: 授業回数の80%以上について演習に参加・課題達成した場合. C: 授業回数の2/3以上について演習に参加・課題達成した場合. |
授業の詳細8 |
|
授業の詳細9 |
|
授業の詳細10 |
|
|