第84回 スパイラルカリキュラムによるソフトウェア工学 e-learning 教材の開発(北九州市立大学 山崎 進)	

• 背景– ソフトウェア工学関連科目(既出)– OOP演習への要求• 解決アプローチ– スパイラルカリキュラム(既出)– テスト駆動開発(TDD)• 学習目標• 構成方法©2011 山崎 進	

• 学習単元• 開発した教材例• OOP演習への要求と解決アプローチの対応
• 評価
• 考察
– スパイラルカリキュラム– TDD	

eラーニング推進機構eラーニング授業設計支援室	
ランチョンセミナー	

1

関連授業の依存関係	

©2011 山崎 進	

eラーニング推進機構eラーニング授業設計支援室	
ランチョンセミナー	

2

OOP演習への要求	
• 大学院科目に対する出口– ソフトウェア工学の重要な原理・原則を体験できる– モデリングとプログラミングを両方学習する• 社会に対する出口– ソフトウェア開発の工程を一通り体験できる– 最近のソフトウェア開発で用いられる開発環境のリテラシーが身に付く– プログラミング言語・環境に依存する知識と依存しない普遍的な知識を明確に区分する©2011 山崎 進	• それまでに履修する科目の制約– C言語の文法を一通り理解した程度のプログラミング能力の復習から出発する– 基本的なアルゴリズムとデータ構造の復習から出発する– UMLを使うときには解説を交える	

eラーニング推進機構eラーニング授業設計支援室	
ランチョンセミナー	

3

スパイラルカリキュラム	• ケーススタディ層の設計指針として採用• 語学教育で用いた事例あり(GDM)• 文法・語彙で会話・文章を表現• 習得順番に配慮• 表現できる世界が徐々に広がる• プログラミングも語学と似た特性を持つ©2011 山崎 進	

eラーニング推進機構eラーニング授業設計支援室	
ランチョンセミナー	

4

テスト駆動開発(TDD)	
• ソフトウェア開発手順
1. 要求開発
2. 設計
3. 実装
4. (ソフトウェア)テスト• ソフトウェアテストが後回し→手戻りが大©2011 山崎 進	

• テスト駆動開発(TDD)
1. 各機能について最初にSWテストを記述する(テストファースト)2. そのSWテストが成功するよう実装する．
3. 記述したプログラ
ムコードを洗練させる(リファクタリング)	eラーニング推進機構eラーニング授業設計支援室	
ランチョンセミナー	

5

スパイラルカリキュラム + TDD	• 【スパイラルカリキュラムの課題】– 各段階で全工程を一通り経験・習得するのが困難→TDDの考え方を採用	

©2011 山崎 進	

• 反復1サイクル(+SWテスト)＝スパイラル
カリキュラム1サイクル– 学習目標習得を確認する課題として位置づけ• ARCS 的にも望ましい– Attention(注意): TDDのリズムでメリハリ– Confidence(自信):
着実に前進する

eラーニング推進機構eラーニング授業設計支援室	
ランチョンセミナー	

6

OOP演習の学習目標	

©2011 山崎 進	

eラーニング推進機構eラーニング授業設計支援室	
ランチョンセミナー	

7

スパイラルカリキュラムの構成方法	
1. 学習目標を列挙
2. 例題に即して説明する
3. 依存関係を分析
4. 無理なく学習が進むよう順序関係を定義	

©2011 山崎 進	

eラーニング推進機構eラーニング授業設計支援室	
ランチョンセミナー	

8学習単元	
1.
2.
3.
4.
5.
6.
7.
8.
9.

OOP 演習の意義と目標
計算結果を表示するさまざまな場合を想定しよう
GUI を作ろう
開発方針を立てよう
モデリングをしてみよう
レビューをしよう
テストファーストで開発しよう
GUI に合わせてリファクタ
リングしよう10. コントローラーを作ろう
11. 完成！	
©2011 山崎 進	

• 単元は授業の時限とは連動しない– 自分のペースで学習を進行– 作業量も単元ごとにバラバラ• 各単元に小テスト/レポー
ト課題を配置– 小テスト• 言語情報 (Gagné の5分類)• moodle の Quiz 機能を利用– レポート課題• 知的技能 (Gagné の5分類)• Quiz でできない応用問題

eラーニング推進機構eラーニング授業設計支援室	
ランチョンセミナー	

9

各単元の設計	• 例: 単元3のトピック
3. さまざまな場合を想定
しよう
1. さまざまな場合を想定しよう
2. 版管理システムを使おう(1)3. リファクタリング(1)〜メソッドの抽出を行おう
4. xUnit を使おう(1)5. テストを設計しよう(1)6. 課題: 2次方程式(解の判別式の同値クラス)
7. 課題: 2次方程式(その他の同値クラス)	
©2011 山崎 進	

• 例:2次方程式の解の公式• 場合分けが必要– 実数解，重根，虚数解– a=0の場合，a=b=0 の場合• 学習目標– 必要な技術要素• xUnit• 版管理• リファクタリング– ソフトウェアテストに必要な「気づき」を追求する態度	

eラーニング推進機構eラーニング授業設計支援室	
ランチョンセミナー	

10開発した教材例	

©2011 山崎 進	

eラーニング推進機構eラーニング授業設計支援室	
ランチョンセミナー	

11

OOP演習への要求と解決アプローチの対応	

©2011 山崎 進	

eラーニング推進機構eラーニング授業設計支援室	
ランチョンセミナー	

12

評価	
1. アンケート
2. 授業の進捗度
3. 成績(学習目標の達成度)
4. 事後インタビュー©2011 山崎 進	

• OOP演習の履修申告者は12名– うちアクティブメンバーは8名→残念ながら統計的に有意な結果が得られたとは言い難い	

eラーニング推進機構eラーニング授業設計支援室	
ランチョンセミナー	

13アンケート: 集計方法，項目	
• 各単元のアンケート項目• 集計方法– moodle のフィードバッ
クプラグインを使用– 単元ごとに実施• 有効回答数: 6〜8名	

– 授業の理解度(5段階択一選択)– 講義の印象(6項目の複数選択)– 授業の感想(自由記述)• 初回のみ実施のアンケート項目– 科目の履修状況と理解度(5段階＋未履修の択一選択)– OOP演習を受講する理由(複数選択＋自由記述)	

©2011 山崎 進	

eラーニング推進機構eラーニング授業設計支援室	
ランチョンセミナー	

14アンケート: 結果	

©2011 山崎 進	

eラーニング推進機構eラーニング授業設計支援室	
ランチョンセミナー	

15アンケート: 考察	
• 履修状況
– 前提条件に達していな
い学習者の存在の可能性→前提科目の見直し，補習教材の開発の必要性• 受講理由– 「ソフトウェアを深く知りたい」が多数– その他はオブジェクト指向の学習を期待→R(関連性)を刺激するとより高い学習効果が期待できる	©2011 山崎 進	

• 授業の理解度は概ね良好•

少数だが理解度の低い学習者も存在• 「難しい」という声• 教材の不備を指摘する自由記述意見→ さらなる教材の改良が必要	

eラーニング推進機構eラーニング授業設計支援室	
ランチョンセミナー	

16

授業の進捗	• 当初予定の半分程度しか進まなかった– 補講を実施中• 原因– 単元5のレポート作成に多大な時間を要する• 課題の調査に対してではなく，ツールを用いたイラスト作成や UML の作成に手間取っていた→本学で実施しているリテ
ラシー教育が不十分©2011 山崎 進	

– 学習者が授業時間内だけで演習，課外演習を行わなかった• 予習・復習義務の形骸化• 自主的に課外演習するだけの魅力がなかった→学習者に時間的なプレッシャーを与えるような運営が必要	

eラーニング推進機構eラーニング授業設計支援室	
ランチョンセミナー	

17学習目標の達成度	
• 小テスト，レポート課
題の結果– 明示した学習目標についてはほぼ達成• 学習目標の妥当性の問題
明示した学習目標さえ達成すれば，要求水準を満たせるの？
– OOP 演習で挙げた詳細な学習目標の体系は広く認知・確立されていない• 広く認知された SWEBOKは粗粒度の学習目標しか定義していない• OOP 演習は SWEBOK を網羅していることを立証していない→ 詳細な学習目標の体系の整備が必要©2011 山崎 進	

eラーニング推進機構eラーニング授業設計支援室	
ランチョンセミナー	

18

事後インタビュー	
• 挙った意見は次の通り– 単元3「GUIを作ろう」と単元4「開発方針を立てよう」の順番は逆でもよかった– とくに統合開発環境の操作方法について，知識が定着するほど繰り返し練習したかった– 統合開発環境の操作マニュアルがほしかった– 教材の講義資料を全て統合してハイパーリンクなどで検索容易にしてほしかった	©2011 山崎 進	

eラーニング推進機構eラーニング授業設計支援室	
ランチョンセミナー	

19

考察1: スパイラルカリキュラム	• 事後インタビューより– 単元3「GUIを作ろう」と単元
4「開発方針を立てよう」の順番は逆でもよかった→ 全体の流れを検証する必要がある．
– とくに統合開発環境の操作方法について，知識が定着するほど繰り返し練習したかった→ スパイラルカリキュラムの特長を生かしきれなかった．
演習課題を充実させる必要がある．

©2011 山崎 進	

• 教材のわかりやすさをもたらす「モジュール化」
vsモジュールがバラバラにならないための「スパイラルカリキュラム」	

eラーニング推進機構eラーニング授業設計支援室	
ランチョンセミナー	

20

考察2: テスト駆動開発(TDD)	
• TDDのリズミカルなソフ
トウェア開発感覚は新鮮で面白かった• TDD導入のため開発ツールを多用した– 学習者がツールを使いこなしている実感が乏しかった– ツールの使用方法に関する補助資料を充実させる必要あり	
©2011 山崎 進	

• TDDなしにはスパイラルカリキュラムを実現できなかった• TDD と moodle を有機的に連携させたかった– 新たな e-learning 機能の開発	

eラーニング推進機構eラーニング授業設計支援室	
ランチョンセミナー	

21