この授業で行なっている教え方は,インストラクショナル・デザイン(Instructional Design) に基づいています。教え方に興味を持った人はぜひ調べてみてください。このブログでもたびたび紹介しています。
もし,ご意見・ご感想などあれば,ぜひ右下の MessageLeaf にお寄せください。授業改善に役立てたいと思っています。
授業名について
ソフトウェア設計論 (Software Design) は,私としては本当は「UMLソフトウェアモデリング (UML Software Modeling)」と名付けたいところです。なぜならば,この授業で扱っている内容は,ソフトウェアの設計にとどまらないからです。そもそもUMLやその基盤となっているオブジェクト指向という考え方は設計に特化した考え方ではなく,ソフトウェアライフサイクル全体に渡って使われるものなのです。そう考えると,「ソフトウェア設計論」という名前とのギャップはわかってもらえますかね?
授業範囲について
一口にソフトウェアモデリングといっても学習対象はとても広く,何を学ぶべきかの取捨選択はとても難しい判断となります。この授業ではソフトウェアモデリングの中でも基礎中の基礎である「UMLの読み書き」に徹しています。これがが自由自在にできることが,ソフトウェアモデリングを習得する上で最も大切なことだと私は考えています。
授業設計について
前項に掲げた大目標である UML の読み書きを習得させるために,この授業ではさまざまな工夫をしています。興味のある人は,次項目のランチョンセミナーでの発表を参照してください。
2013年度では今まで2年分の授業を行った経験を振り返ってシラバスを見直し,とくに到達目標,授業計画・内容,成績評価の方法の3点について,緻密に計画を練り直しました。
関連する教育実践研究の発表・論文
ランチョンセミナー
ソフトウェアモデリング教育の開発 ~初心者のC(自信)を重視した授業づくり〜
e-CASE 2013
Instructional Design of a Highly Effective Blended Learning Course with Group Discussion on UML Software Modeling
授業の概要(ねらい,テーマなど)
この授業では,最近のソフトウェア設計で用いられる UML (Unified Modeling Language) によるソフトウェアモデリングの手法の基礎を学びます。UML は設計段階だけでなくソフトウェアライフサイクル全体にわたって使われます。最近のソフトウェア開発では,いきなりプログラミングするのではなく,UMLなどを使って分析したり設計したりすることから始めます。現在ではUMLはソフトウェア開発における「読み書き」の基礎能力だといってもいいでしょう。
この授業で扱う UML を用いたソフトウェア・モデリングの考え方は,「ソフトウェア」と銘打ってはいますが,他の分野でも応用できます。たとえば力学シミュレーションや制御,ビジネス・プロセスなどの応用事例があります。
単なる座学ではなく,身の回りの製品やサービスをUMLで記述するような演習課題をたくさん行います。学生が行う作業量は多いですが,その分,実践的なソフトウェア・モデリングの能力を身につけることができます。教え方をいろいろ工夫していますので,確実に,しかも楽しく学べるでしょう。
到達目標
- モデリングに関連する概念を説明できる。
- 代表的なモデリング手法であるUML(Unified Modeling Language)の図の種類や表記法を説明できる。
- 与えられた1〜5機能程度の簡単な製品やサービスについて書かれたUMLモデルを読み取って,自然言語で説明できる。
- 与えられた1〜5機能程度の簡単な製品やサービスについて自然言語で書かれた記述を元に UMLモデルを記述できる。
- 与えられた1〜5機能程度の簡単な製品やサービスについて書かれたUMLモデルの誤りや曖昧な点,不明な点を指摘できる。
- 与えられたクラス図,アクティビティ図,状態機械図を元にJavaなどのオブジェクト指向言語でプログラミングできる。
- 世の中のあらゆる物をモデリングしようとする態度を身につける。
教科書
講義資料を Moodle で配布します。
参考書
牛尾 剛「オブジェクト脳のつくり方」翔泳社 ISBN: 978-4798104188
第13回 でこの本の一部を用います。
平沢 章「オブジェクト指向でなぜつくるのか」(第2版) 日経BP社 ISBN: 978-4822284657
オブジェクト指向についての背景知識や意義を知りたい場合に参照してください。
授業計画・内容
授業改善のため変更する可能性があります。第1回のガイダンスでのアナウンスに注意してください。
- ガイダンス,モデリングの概念と特徴,モデリングの態度,機能・構造・振る舞い,目的論的モデリング
- UML 概論,初心者が最低限覚えるべき UML の図と記法 10 パターン
- 初心者が最低限覚えるべき UML の図と記法 10 パターン 強化演習
- 組み合わせパターン(クラス図)
- 組み合わせパターン(クラス図) レビュー演習
- 組み合わせパターン(クラス図) 強化演習・グループワーク
- 組み合わせパターン(ユースケース図,ユースケース記述)
- 組み合わせパターン(状態機械図)
- 組み合わせパターン(状態機械図) 強化演習
- 複数種類の UML 図を用いたモデリング
- 複数種類の UML 図を用いたモデリング レビュー演習 ・グループワーク
- 複数種類の UML 図を用いたモデリング 強化演習・グループワーク
- オブジェクト指向プログラミング
- UMLモデルからのプログラミング
- 振り返り グループワーク (モデリングの概念と特徴,機能・構造・振る舞い)
成績評価の方法
到達目標ごとの成績評価
到達目標1: レポート: 10%
到達目標2: 小テスト: 10%
到達目標3: 期末試験:10%
到達目標4: 期末試験:20%
到達目標5: 期末試験:10%
到達目標6: 演習課題: 10%
到達目標7: レポート: 20%
その他の評価項目
積極的な授業への参加: 10%
授業に対する準備事項
- 身の回りにある製品やサービスを題材にモデリングを行うことが,この授業の中心的活動です。そのため,家電製品やウェブサービスなどに親しんでいると,この授業の役に立ちます。
- 第1回「モデリングの概念と特徴」「機能・構造・振る舞い」で,何らかの設計図を見た経験があると理解の助けになるでしょう。
- 第13回「オブジェクト指向」第14回「UMLモデルからのプログラミング」で,オブジェクト指向プログラミングを行います。そのため,C言語の文法を一通り理解していること,C言語で演習レベルの簡単な問題をプログラミングした経験があることが前提です。 具体的には次の項目を復習するといいでしょう。
- 計算機演習I : 表示,キー入力,変数,条件分岐,配列,繰り返し,関数
- 計算機演習II: ポインタ,構造体
- アルゴリズムとデータ構造: 配列,リンクリスト,2分木,スタック,キュー
履修上の注意
3年次第2学期のオブジェクト指向プログラミング演習の履修を希望する学生は,必ずソフトウェア設計論を履修してください。オブジェクト指向プログラミング演習では,ソフトウェア設計論の内容を理解していることを前提とします。教務システムの都合上,ソフトウェア設計論を履修していなくてもオブジェクト指向プログラミング演習を履修できますが,その場合はソフトウェア設計論の内容を補習してもらいます。
担当者からのメッセージ
授業方法にこだわりさまざまな工夫をした結果,学生から「楽しかった!」「ためになった!」という声が多数寄せられました。私の授業を受講した先輩たちに感想を聞いてみてください。
キーワード
ソフトウェア・モデリング,UML,ソフトウェア工学,ソフトウェア開発,オブジェクト指向
software modeling, UML, software engineering, software development, object-orientation