2013年2月11日月曜日

シラバスに込められた思い〜ソフトウェア設計論(2013)

ソフトウェア設計論は,私が担当する授業の中で最も教え方が洗練されている,いわば自信作です。これは根拠のない自信ではなく,学生から「とても楽しい授業でした!」というような声が多数寄せられるような実績も伴っています。

この授業で行なっている教え方は,インストラクショナル・デザイン(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で記述するような演習課題をたくさん行います。学生が行う作業量は多いですが,その分,実践的なソフトウェア・モデリングの能力を身につけることができます。教え方をいろいろ工夫していますので,確実に,しかも楽しく学べるでしょう。

到達目標
  1. モデリングに関連する概念を説明できる。
  2. 代表的なモデリング手法であるUML(Unified Modeling Language)の図の種類や表記法を説明できる。
  3. 与えられた1〜5機能程度の簡単な製品やサービスについて書かれたUMLモデルを読み取って,自然言語で説明できる。

  4. 与えられた1〜5機能程度の簡単な製品やサービスについて自然言語で書かれた記述を元に UMLモデルを記述できる。

  5. 与えられた1〜5機能程度の簡単な製品やサービスについて書かれたUMLモデルの誤りや曖昧な点,不明な点を指摘できる。

  6. 与えられたクラス図,アクティビティ図,状態機械図を元にJavaなどのオブジェクト指向言語でプログラミングできる。
  7. 世の中のあらゆる物をモデリングしようとする態度を身につける。
教科書
講義資料を Moodle で配布します。

参考書
牛尾 剛「オブジェクト脳のつくり方」翔泳社 ISBN: 978-4798104188 
第13回 でこの本の一部を用います。

平沢 章「オブジェクト指向でなぜつくるのか」(第2版) 日経BP社 ISBN: 978-4822284657
オブジェクト指向についての背景知識や意義を知りたい場合に参照してください。

授業計画・内容
授業改善のため変更する可能性があります。第1回のガイダンスでのアナウンスに注意してください。
  1. ガイダンス,モデリングの概念と特徴,モデリングの態度,機能・構造・振る舞い,目的論的モデリング
  2. UML 概論,初心者が最低限覚えるべき UML の図と記法 10 パターン
  3. 初心者が最低限覚えるべき UML の図と記法 10 パターン 強化演習
  4. 組み合わせパターン(クラス図)
  5. 組み合わせパターン(クラス図) レビュー演習
  6. 組み合わせパターン(クラス図) 強化演習・グループワーク 
  7. 組み合わせパターン(ユースケース図,ユースケース記述)
  8. 組み合わせパターン(状態機械図)
  9. 組み合わせパターン(状態機械図) 強化演習
  10. 複数種類の UML 図を用いたモデリング
  11. 複数種類の UML 図を用いたモデリング レビュー演習 ・グループワーク
  12. 複数種類の UML 図を用いたモデリング 強化演習・グループワーク
  13. オブジェクト指向プログラミング
  14. UMLモデルからのプログラミング
  15. 振り返り グループワーク (モデリングの概念と特徴,機能・構造・振る舞い)
成績評価の方法
到達目標ごとの成績評価
到達目標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

シラバスに込められた思い〜プログラミング言語処理系(2013)

シリーズ「シラバスに込められた思い」として,私の担当授業のシラバスを紹介しながら,書ききれなかった思いをつづります。

もし,ご意見・ご感想などあれば,ぜひ右下の MessageLeaf にお寄せください。授業改善に役立てたいと思っています。

第1弾は学部2年生向け科目「プログラミング言語処理系」です。この授業では主にコンパイラの原理について学習します。大きく2部構成になっています。前半ではプログラムを読み取る「解析部」について,後半では解析部の情報を元にアセンブリ言語を生成する「合成部」について扱います。解析部と合成部では用いる原理が大きく異なっているので,授業や応用分野にも大きな違いがあります。

そのため,2013年度から始まる新カリキュラムでは,「解析部」と「合成部」で分割し,それぞれ別の科目と吸収・統合しています。この科目は学部2年次科目なので,2014年から新カリキュラムの科目としてリニューアルします。

2014年に大幅リニューアルすることから,2013年度は基本的に今までのシラバスのままです。しかしながら小規模な授業改善は随時行なってきています。たとえば2012年度には大福帳を取り入れることで,学生に対するきめ細やかなフォローアップを行いました。2013年度には新カリキュラムを見据えて,主に合成部の部分について新教材を投入する予定です。

ちなみに学生時代は今の専門のソフトウェア工学と違ってプログラミング言語処理系の合成部に関連する研究を行なっていました。ソフトウェア工学とプログラミング言語処理系の両方を修めた経歴が,今の大学教員ポストの獲得にあたって,とても役だちました。

この授業「プログラミング言語処理系」での授業方法の特徴は,まず講義を聞く従来型のスタイルではなく,自習が中心であることです。もう1つの特徴は,学ぶ内容の特性を考慮して学び方が設計されていることです。このような学び方の設計のことをインストラクショナル・デザインと言います。私の授業はすべてインストラクショナル・デザインに基いて開発されています。この科目は私が大学教員になってから初めて15週分の講義資料を開発した科目なのですが,教材設計マニュアルを参考にインストラクショナル・デザインに基づいて開発した私にとって初めての科目でもあります。

シラバスは次のとおりです。先にも書きましたが,2014年度に大幅リニューアルが予定されているので,シラバスとしては2012年度までのものをそのまま踏襲しています。今となっては改修すべき部分が多くあります。

授業の概要(ねらい・テーマなど)
プログラミング言語は人間の指示をコンピュータに伝える重要な1手段である。また,それを確立するためにプログラミング言語処理系は数多くの計算機科学の理論的成果を用いている。本授業では字句解析,構文解析,意味解析,コード生成,コード最適化の各原理と,スクリプト言語や言語処理系の開発ツールを用いた実践の両面から学習する。

教科書
配付資料,コンパイラ 中井 央著 コロナ社

参考書
プログラミング言語処理系 佐々政孝著 岩波書店
コンパイラ〜原理・技法・ツール(I,II)A.V.エイホ他著

授業計画・内容
授業改善のため変更する可能性がある。
第1回のガイダンスでのアナウンスに注意すること。
1. ガイダンス,概論
2. 字句解析(理論編1: 正規表現からNFAへ)
3. 字句解析(理論編2: NFAからDFAへ)
4. 字句解析(実践編: flex を使った字句解析器の実装) 
5. 構文解析(導入編)
6. 構文解析(実践編: yacc を使った構文解析器の実装) 
7. 構文解析(理論編1: 下向き構文解析器)
8. 構文解析(理論編2: 上向き構文解析器)
9. 意味解析
10. 前半の講義のふりかえり,確認テスト
11. 実行時環境
12. 仮想計算機とコード生成
13. 最適化
14. 応用編
15. まとめ

成績評価の方法
小テスト,中間試験,期末試験 80%  基本的な内容を理解しているかを確認する。
レポート 20% 深く内容を理解しているかを確認する。

授業に対する準備事項
各自が自習できるように教材を構成している。多くの回で小テストを課す。

履修上の注意
計算機演習I,計算機演習II,アルゴリズムとデータ構造を十分に理解しておくこと。
形式言語とオートマトンの履修を推奨する。

担当者からのメッセージ
プログラミング言語処理系の知識は,一見マイナーな印象を受けるかもしれませんが,実は色々と応用がききます。第1回授業で応用分野も含めて概説します。演習を取り入れた学習量の多い講義ですが,頑張って実のある講義にしていきましょう!

2013年2月8日金曜日

2012年度卒業研究タイトル


私の研究室での2011年度の卒業研究の発表者とタイトルは次のとおりです。

上篭 翔太 ETロボコンプロジェクトへのPMBOKの時間管理となぜなぜ分析の適用
岡村 典明 初学者による開発に伴うデザインパターンとリファクタリングの学習プロセスと教訓
小山 哲之 要求変化に対するアジャイル型開発手法の有効性の事例研究
森 龍志  アジャイルソフトウェア開発のイテレーションでの失敗と対策の事例研究
中野 麻美 ソフトウェア開発初心者によるチケット駆動開発の問題点と教訓の考察
安永 岳史 自然言語の文法に基づいたObjective-Cの命名ガイドラインの作成

発表会は2月15日(金) N410-4 で行われます。私の研究室は13:45〜15:15です。

2013年1月30日水曜日

2012年度修士論文


私の研究室での2012年度の修士論文の発表者とタイトルは次のとおりです。

上之園 倫哉 自作アプリケーションに対するユーザーテストにおいて思考発話が与える影響の分析

岡部 竜   CBMCを用いたC言語関数の事後条件導出によるゼロ除算例外処理の検出

私の研究室の修士論文発表会は2月6日(水) 9:25より北九州市立大学ひびきのキャンパスN410-4で行います。
今年も残念ながらネット中継や録画等はしません。直接参加いただくか,「このテーマの詳細希望」というようなコメント・メッセージを右下の MessageLeaf にいただけたら対応します。

2013年1月20日日曜日

学習環境づくりの細かいこだわり (1) 空調

私は集中できる学習環境作りとして,細かいところ,たとえば空調にも気を配っています。

室温が暑かったりすると頭がボーっとしてしまって集中できなくなります。逆に寒いと手がかじかむなどして議論や作業どころではなくなります。

私は意識的にこまめに体感温度を気にしてエアコンディショナーのスイッチを操作したり窓や戸を開け閉めしたりしています。体感温度というのが大事です。快適か不快かを身をもって判断します。とくに大きい教室だとどうしても温度にムラができてしまうので,教室を歩きまわって体感温度を確認します。

こうやって室温調整することで授業や演習に集中してもらえるのであれば,よろこんで労力を割きますよ。他にもイベントを開催するときにも室温はよくチェックします。入試業務に関わることもありますが,その場合もこだわりますね。

この記事では「授業で◯◯に気を配っています」「先生が◯◯をしてくれたのがよかった」などのコメントを募集します。ぜひ右下の MessageLeaf までお寄せください。


2013年1月17日木曜日

非ネイティブの英語力を向上させる取り組み


猪瀬さんの英語を恥ずかしがる人が恥ずかしい件

"そこの英語が堪能な人たち、おめでとう。(中略) そんなあなたには、他の人の英語を公の場所でバカにするのではなく(ぼく自身これを何度もやってきており、相当後悔している)、個人的にそっと間違いを指摘してあげたり、どうやったら正しい英語が使えるようになるのか啓蒙する人であってほしい。そっちの方がはるかに生産的だし、日本人の総体的な英語力の向上にもつながるだろう。"

いや,間違いの事例とそれをどう直すべきかを,ぜひ公開して紹介してください。そのような事例が Google 検索できるようになっていると,非ネイティブが英作文するときに,とても参考になります。

個人的こき下ろしは要らないのは同意です。でも,個人の主観を排した客観的な意見ならば,広く世に広めたほうが役に立ちます。そういう知的資産なのです。

巨人の肩とも共通の部分がありますね。

ソフトウェア工学実践研究において「巨人の肩に乗る」ということ

2013年1月16日水曜日

惰丸(ダマル)日記 第1章〜「スタンフォードの自分を変える教室」を実践してみた

クリックして新ブログへ

この1週間,「スタンフォードの自分を変える教室」を読みながら実践しました。


この本は,目標を確実に達成するための,科学(心理学・生理学)的に有効性が示されている方法を紹介しています。

本に書かれていたことの中で,この1週間で特に有効だったメソッドを挙げていきます。

  1. 達成すべき目標を1つに絞り込んで明確にしたこと。私の場合は,他にもいろいろ達成したい目標はありますが,目下の小目標である論文執筆にフォーカスしました。目標を絞り込んだおかげで余裕が生まれ,客観的かつ冷静に取り組めたのがよかったのだと思います。
  2. 目標達成を妨げる自己に「惰丸(ダマル)」と名付け,「仮想敵」としたこと。これが一番効果あったかもしれません。自己を責める心情ではなく,外敵をやっつけるのだという心情になることによって,そうとう気持ちが楽になりました。
  3. 「惰丸(ダマル)」が現れる状況はどんな時か,日々振り返ったこと。これによって,目標達成を妨げる原因を特定し,具体的な対応策を考えることが可能になりました。
  4. 「惰丸(ダマル)」に負けそうになった時に,深呼吸したあと小さなタスクから取り組みなおしたこと。目標達成をおろそかにする衝動的な気分になってしまうことは日々の活動の中で頻繁に起こりえますが,深呼吸すると意欲が生まれます。また小さなタスクから取り組むとペースを取り戻しやすくなります。
  5. 極度に疲労しないように調整したこと。体力・気力が削がれると意欲も極端に落ちます。

惰丸(ダマル)日記の第1章は終わりましたが,論文はまだまだ書かなければならないですし,ほかにもやるべきこと,やめるべきこと,意志を貫きたいことはたくさんあります。この本に書かれているメソッドが無意識の習慣になるまで,惰丸(ダマル)日記を続けていきたいと思います。

惰丸(ダマル)日記 第1回

「スタンフォードの自分を変える教室」を読んで実践していく過程を記録しようと思います。

直近の最大の目標は「論文誌に乗るレベルの論文を投稿しまくる」です。お恥ずかしい話ですが,このまま論文の業績を出さないと大学教員でいつづけることができなくなってしまうのです。

第1章によると,対立する2つの自己(賢い自分,衝動的な自分)を意識し,衝動的な自分の方にあだ名をつけるのが有効なのだそうです。

さっそく妻が命名しました。「惰丸(ダマル)」です。怠惰,無駄の象徴です。そう,ことごとく惰丸(ダマル)のせいで,論文が投稿できないのです。私が,レールの上を猛スピードで疾走している時に,惰丸(ダマル)がコッソリポイントを切り替えるので,私が走るべきレールを見失うのですw

惰丸(ダマル)日記 第2回

論文を書くか書かないかを「選択した瞬間」を振り返ると,自己コントロールを強化できるのだとか。

昨日は午前中に論文を書く予定だったのだけど,急遽,子を病院に連れて行く必要が出てしまったので予定が狂ってしまいました(幸い,子の病気は大したことありませんでした)。子がいるとどうしてもイレギュラーなことが起こってしまいますね。

そこで,夜に論文を書こうと思ったのですが,子の寝付かせをしたら自分も寝てしまいました。惰丸(ダマル)発動ですね。今思えば,寝付かせを妻にお願いするべきでした。

今,目が醒めたのですがかなりボンヤリしているので,起きて論文を書き始めるか,もう一度寝てスッキリした頭で論文に取り組むべきか,悩ましいところです。

とりあえず,まとまった時間,PCに向かって作業することが大事なので,たとえば Facebook はスキマ時間だけチェックすることにしようかな。(そういうわけで,スミマセン,レスポンス悪くなります)

惰丸(ダマル),なかなか手ごわい。。。

すぐに寝付けないようなので,単純作業だけでも論文を進めておこう。

だんだん快調になってきて,良い感じで書き進みました。

惰丸(ダマル)日記 第3回

昨日の後半はすっかり惰丸(ダマル)にやられてしまいました。未明に起きたので論文を書き進めたのですが,頑張りすぎた反動で昼からはあまり進められませんでした。できなかった原因は,雑用が多かったこと,そして何と言っても体力的にきつかったことでした。そのため夜はこんこんと寝てしまいました。 稲見さんの心配があたってしまいました。

「スタンフォードの自分を変える教室」の目次の第3章に「疲れ」の話が載っているので,そのうち実践しようと思います。

さて,第1章の最後に瞑想の話が書いてありました。瞑想の効果については学生時代に剣道をしていたので経験していましたが,「瞑想が下手な方が効果が上がる」のは知りませんでした。さっそくやってみます。久しぶりにやってみて,集中力を研ぎ澄ますのに役立つことは実感しました。が,5分がとても長く,とても耐えられませんでした。また,子が居る中ではなかなか厳しいですね。でも続けていこうと思います。

惰丸(ダマル)日記 第4回
昨日は博多でとても楽しみにしていたイベントがありましたが,論文を書き進めなければならないので,午前中に諸準備をしていました。
博多に行ってから合間の時間に論文を書こうとも思っていましたが,イベント前は移動と食事で時間がつぶれ,イベント後は興奮と酒の余韻に浸っていて,できませんでした。

その分を取り戻そうと,今朝は惰眠をむさぼりたいとも欲求に駆られたのですが,惰丸(ダマル)に負けてはならんと発奮し,集中して論文を書きました。そのおかげで論文前半のハイライトの最も主要な部分が書けました。昨日午前中の準備が生きて,今朝ははかどりました。よしよし。

「スタンフォードの自分を変える教室」のメソッドは,本当に理にかなっているなぁ。

惰丸(ダマル)日記 第5回
今日は妻の実家で夕食だったのですが,あまりに長居したので,論文執筆に焦るあまり帰りに,つい妻に激昂して八つ当たりしてしまいました。本当にゴメンナサイ。そもそも締め切り直前になって書き始める私が悪いよね。。。

さて,私は論文を書くことそのものも億劫ですし,英語は苦手意識があってついつい後回しにしてしまいます。今回の論文は苦手な英語なのですが,しばらく書いて慣れ始めると,実は英語で論文を書くことそのものはそれほど嫌いではないことを発見しました。自分の教育研究の成果を英語で書くと,なんかこう,思考が整理されるのです。「あぁ,自分はこういうことをやってきたのね」と気づかされることが多々あります。今書いている論文を書き終えても,この感触を忘れないうちに,次の論文を書こうっと。

たぶん,私が論文嫌いなのは,査読とか発表後の質疑応答とかなんだろうなぁ。

※同僚の先生が熱いコメントを寄せてくれました。

惰丸(ダマル)日記 第6回

3連休最終日。妻が1日じゅう子を連れて実家や外に遊びに行ってくれる計らいのおかげで,論文執筆にまる1日専念できました。ずっと集中して取り組んだので,手を焼いた執筆中の英語論文も残すところ3項目を書けばひと通り書き終わりです。ようやく終りが見えました。妻に感謝です。

今朝,思い立って Facebook の設定を大きく変えました。「親しい友達」に気になる人を入れておくと,その人がなにか書くと「お知らせ」に表示されるという機能があり,私はそれをフル活用してチェックしていたのですが,思い切って全削除してみました。今まで「お知らせ」が気になってついついチェックしてしまっていましたが,この習慣を断つ効果が期待できます。その代わり,みなさまへのフォローが行き届かなくなるわけですが,ご容赦いただければと思います。今年は論文を含む実質的なアウトプットを行うことで成果を還元していきたいと思います。

惰丸(ダマル)日記 第7回

ついに目下の懸念であり目標だった英論文1編をひと通り書き終えました。「スタンフォードの自分を変える教室」にしたがい「惰丸(ダマル)」を仮想敵として論文執筆に取り組んで1週間になりますが,まずは当初の目標を達成したといっていいのではないかと思います。

総括をする前にここ数日での取り組みを書き残しておきます。
昨日1月15日ですが,午前中は少しの時間ではありましたが,論文執筆に取り組むことができました。しかしその後モチベーションが下がるような出来事がありました。そのせいで午後はゼミを回すだけで一杯一杯で論文執筆どころではありませんでした。

「スタンフォードの自分を変える教室」にも,意欲・気力が削がれたり疲労したりすると,目標達成に向けた日々の活動に取り組まなくなってしまうことが多いと書かれています。たしかにそのとおりです。

そこで,昨晩は体力回復に全力を注ぎました。おかげで,今日は朝から意欲的に論文執筆に取り組みことができ,ついに達成できた次第です。