...

Java フレームワークで再構築した 授業支援型 e

by user

on
Category: Documents
9

views

Report

Comments

Transcript

Java フレームワークで再構築した 授業支援型 e
Java フレームワークで再構築した
授業支援型 e-Learning システム CEAS の機能テスト
濵渦 奨†
村下 幸利†
関西大学大学院工学研究科†
山中 純†
植木 泰博‡
荒川 雅裕§
関西大学先端科学技術推進機構‡
冬木 正彦§
関西大学工学部§
日本の教育環境への適合を目指す授業支援型 e-Learning システム CEAS は,関西大学で
の大規模利用を含め多くの教育現場で利用されている.実利用の中で利用者から求められ
た機能強化/拡張や教材の再利用・共有の利便性向上の要望に応え,同時にシステムの保守
性・拡張性・オープン性を高めるため,フレームワークを用いてシステムの再開発を行っ
ている.本論文では,まず新たに開発するシステムのアーキテクチャを記述し,つぎに開
発の第 1 段階にあたる CEAS Core(CEAS バージョン 3.0)の設計,実装について述べる.実
装結果を報告し,機能検証テストとその結果を述べ,最後に今後の課題を示す.
Functional Test of Web-Based Coordinated Education Activation System CEAS
Reconstructed on Java Framework
Susumu Hamauzu†, Yukitoshi Murashita†, Jun Yamanaka†, Yasuhiro Ueki‡, Masahiro Arakawa§,
Masahiko Fuyuki§
†
Graduate School of Engineering, Kansai University, ‡ ORDIST, Kansai University
§
Faculty of Engineering, Kansai University
The Web-Based Coordinated Education Activation System CEAS, which aims to fit Japanese
educational environment, has been used at Kansai University on a large scale as well as at other
educational sites. The system is reconstructed by using open source frameworks in order to
respond to user requests for functional reinforcement/expansion and improvement of contents
reuse/share function and at the same time to improve system maintainability, expandability and
openness. This paper first describes the system architecture for the new system, and the design
and implementation process of the CEAS Core, which is the output of the first stage
development, are given, together with the results of the implementation. The functional test of
the implemented system is described and its result is given. Finally, the succeeding
development stages are indicated.
1.
と学習(予習・復習)のサイクル形成」に必要
な支援機能を備えたWebアプリケーションシステ
ムであり,担任者と学生の授業や予習・復習に関
する諸活動を,毎回の授業実施を単位として扱
える特徴を有している.
CEASが使い出されてから3年間の間に,利用者
の要望に応えマイナーな機能変更や追加を行っ
てきた.しかしながら,利用者の多様な利用形
態を反映して,フィードバック機能やコミュニ
ケーション機能の強化,授業コンテンツの再利
用・共有の利便性向上,GUIの国際化対応,さら
に個別学習支援機能の強化など,当初の設計の
枠を超えた大幅な変更を要する要望が出されて
いる.
はじめに
1980年代からの初等中等教育の変遷と少子化
による18歳人口の激減の中で大学は学生の「学
力低下」や「学習意欲の低さ」,「基礎学力の
多様化」の問題に直面し,教育の質の向上が大
学での教育の大きな課題となっている.さらに
教育の外部評価への対応も求められている.日
本の教育環境で求められているこれらの支援に
焦点をあわせ,筆者らは多人数の対面型集合教
育を対象として授業と学習を統合的に支援する
授業支援型e-LearningシステムCEAS(Web-Based
Coordinated Education Activation System) を
開発し 1) 運用を支援している.CEASは,「授業
1
現在稼動中のCEAS2.1は順次機能追加を加えて
きた経過からそのソフトウェアの構造は複雑で
あり,利用者からの要望に対応した大幅な機能
追加・拡張を行い,さらに今後予想されるCMSの
オープン化や教育内容公開の動きへ対応するこ
とは,開発や保守の工数の大きさから容易では
ない.
このことから上記の要望に応え,同時に保守
性・拡張性・オープン性を高めることを目的と
して,フレームワークを利用した新しいアーキ
テクチャを採用し,新規にシステムを開発する
新規に開発する支援システムの機能はCEAS2.1
に対し上位互換性を保たせるので、システム名
称はCEASを継承し,3.0から始まるバージョン番
号を用いる 2).システムの開発は段階的に行い,
第1段階では,現行のCEAS2.1が有している機能
を,新たに採用するアーキテクチャに基づいて
システムを再構築する.この部分は段階的に構
築 す る シ ス テ ム の 中 核 と な る の で , ‘ CEAS
Core’と呼ぶことにする.
本論文では,まず新たに採用するシステムア
ーキテクチャを記述し,つぎにCEAS Core開発に
おける分析・設計・実装プロセスを述べ,実装
結果を報告する.さらに,機能検証テストとそ
の実施結果を報告し,今後の課題をまとめる.
2.
システムアーキテクチャ
2.1 3 層アーキテクチャ
CEAS3 系バージョンのシステム(以後 CEAS3 と
呼ぶ)には機能強化/拡張の要件に迅速かつ柔軟
に対応できる保守性・拡張性・オープン性に優
れ た シ ス テ ム ア ー キテクチャが求められる.
CEAS3 では基本アーキテクチャに Layers パター
ン 3) を採用しこの要件に応えることを目指す。
Layers パターンを用いることによりアプリケー
ション全体を複数の機能層に分けて構成し、そ
れぞれの依存性を最小限に抑えることで,設計
や開発・デバッグ・メンテナンスが容易になる
ことが期待できる.さらに開発の分業が容易に
なり,多人数でのシステム開発の効率化が期待
できる.
CEAS3 では 3 層アーキテクチャを採用し,プレ
ゼンテーション層,ビジネスロジック層,デー
タアクセス層の3つに機能層を分ける(図1).
プレゼンテーション層はビジネスロジック層の
サービスをユーザに対して提供するための層で
あり、ビジネスロジック層はプレゼンテーショ
ン層からクライアントのリクエストを受け取り,
それに合わせて業務ロジックを実行し,必要で
2
Webコンテナ(Jakarta Tomcat)
プレゼンテーション層
ビジネス層
データアクセス層
JSF(MyFaces)
IoC/DIコンテナ(Spring)
O/Rマッピング(Hibernate)
JSP
Webブラウザ
サービスコンポーネント
DAO
(Data Access Object)
RDBMS
(PostgreSQL)
Managed Bean
DTO(Data Transfer Object)
図1
3層アーキテクチャ
あればデータベースなどのリソースにアクセス
する.データアクセス層はビジネスロジック層
とリソースの間を取り持つ層である.RDBMS など
の外部リソースとの通信を行う.
2.2 フレームワーク
システムの保守性・拡張性・オープン性向上
を図るため CEAS3 の開発にはフレームワークを
利用する.開発は,Java 言語を実装言語に用い,
プレゼンテーション層では Java の標準フレーム
ワーク JSF(Java Server Faces)を採用する.JSF
では Web ユーザインタフェースのコンポーネン
ト化(UI コンポーネント)が可能であり,国際化
対応機能を使用することで,GUI の国際化対応が
容易に行える.
ロジック層には DI コンテナをサポートするフ
レームワークを用いる.DI コンテナを用いるこ
と に よ り , ク ラ ス を POJO(Plain Old Java
Object)として記述でき,オブジェクトの生成や
依存性に関する制御を設定ファイルに記述する
ことができる.データアクセス層では,O/R マッ
ピングフレームワークを用いる.これによりイ
ンピーダンスミスマッチにより発生するマッピ
ングの記述をマッピング定義ファイルに集約で
き,データベースアクセスのための手続きコー
ドが簡素化できる.
3.
CEAS Core の開発
開発のプロセスは,分析,設計,実装,テス
トの段階に大きく分けることができる.この章
では分析,設計,実装プロセスを記述し,実装
を行った結果をまとめる.なお,CEAS3 の設計・
実装の前提として,OS は FedoraCore,Web サー
バは Tomcat,データベースは PostgreSQL の仕様
を想定する.
3.1 要求仕様
CEAS Core には CEAS2.1 と同じ機能を実装する.
実装する機能は,履修環境管理者が利用するユ
ーザ管理や科目管理などの 12 機能,担任者が利
用する教材作成・登録や管理機能など 20 機能,
学生が利用するテスト実施機能や FAQ,出席確認
など 14 機能,共通の機能としてログイン機能な
ど 7 機能,合計 53 機能である.
これらの機能の外部要求仕様書として,履修
環境管理者,担任者,学生のそれぞれを対象と
した利用説明書 5)~7)を用いる.利用説明書は,
ユーザが入力するデータの仕様が詳細に記述さ
れていない点が不備であるが,システムの挙動
がわかり易いという利点がある.また開発時に
は,CEAS2.1 を動作させ明示されていない機能を
確認することも行うこととする.
ceascore
view
bean
admin
kanri
teacher
waritsuke
model
service
ユーザ
imple
dao
hibernate
dto
モジュール
レイヤー
図2
パッケージ構成
には,データベースのテーブルごとに DAO ク
ラスを作成した.これによりデータアクセス
のコードをビジネスロジック層から分離し,
ビジネロジックの再利用性を高めることがで
3.2 設計
きる.
(a)フレームワークの実装
(c)パッケージ構成
プレゼンテーション層に用いる JSF の実装
6)
システム全体のパッケージ構成は,まず全体
は,オープンソースである MyFaces を用いる.
を View 部 分 ( プ レ ゼ ン テ ー シ ョ ン 層 ) と
MyFaces には拡張コンポーネントとしてツリー
Model 部分(ビジネスロジック層,データアク
やファイルのアップロードが用意されている
セス層)とに分割して配置する.さらに,View
ので有用である.ビジネスロジック層ではフ
部分は機能モジュールをユーザ権限に応じて
レ ー ム ワ ー ク と し て Spring7) を 用 い る .
配置し,Model
部分はビジネスロジック層とデ
Spring は DI コンテナである軽量コンテナをベ
ータアクセス層に分割して配置する(図2).
ースにした Java/J2EE フレームワークである.
(d)データモデル
データアクセス層では O/R マッピングフレー
CEAS Core では各エンティティにおける責務
ムワークである Hibernate8)を用いる.
の明確化という点から CEAS2.1 のデータモデ
(b)デザインパターン
ルを見直した.これは CEAS2.1 にはエンティ
CEAS Core 設計では各レイヤーに応じて,
9)
ティ間で利用頻度にばらつきが見られる箇所
J2EE におけるデザインパターン を採用する.
があり,特定のエンティティに対する負荷の
まず,プレゼンテーション層では Service
集中や使用頻度が極めて低いエンティティが
Locator パターンを採用した.具体的には,バ
見られたためである.見直しの結果,
ッキングビーンからビジネスロジックを実装
CEAS2.1
では 69 個あったエンティティが CEAS
したサービスクラスをインスタンス化する箇
Core では 50 個となった.これによりエンティ
所に適用した.これによりクライアントによ
ティに対する負荷の均等化と同時に,システ
るオブジェクトの生成手順が簡易化され,生
ムのパフォーマンス向上も期待できる.
成ロジックの再利用性向上や修正の局所化が
望める.
3.3 実装プロセス
次 に , ビ ジ ネ ス ロ ジ ッ ク 層 で は Session
(a)開発の進め方
Facade パターンを採用した.具体的には,機
開発は 6 人からなるチームを構成し、機能
能モジュールもしくは共通モジュールに対し
グループごとに開発作業の分担を行う.この
て適用した.これによりビジネスコンポーネ
方式は,開発初期段階における要素技術の学
ントの管理容易性や柔軟性が向上し,コンポ
習はレイヤーごとの開発に比べ,多くの時間
ーネント間の相互作用の集中化と,結合の抑
を費やしてしまうが,システムの長期的な保
制が期待できる.
守・運用を考えた場合には,システムのアー
最後に,データアクセス層では DAO(Data
キテクチャ全体を把握できる利点があり、ま
Access Object)パターンを採用した.具体的
3
欄はそれぞれ Java のインタフェースとクラスの
数を表し,JSP,XML,CSS/JS と表記された欄は
それぞれ JSP ファイル,XML で記述される設定フ
ァイルおよびスタイルシートと JavaScript ファ
イル数を表す.さらに「実行数」の欄は,コメ
ント行や空行を除いた Java コードの行数である.
開発対象の画面の総数が 240 画面であり,実
装した機能数が 50,データベースのエンティテ
ィ数が 50 であることから,この表が示すそれぞ
れの層でのクラスやファイルの数は妥当な規模
であることが分かる.
た開発者の育成の点でも有利であるのでこの
方式をとる.
(b)並行開発の準備
6 人のメンバーによるモジュールごとの並行
開発を可能にするため,開発リーダーが,デ
ータベースのテーブルの実装とデータアクセ
ス層の DAO クラスの雛形作成を最初に行う.
さらに,各層でのクラスの命名規則の標準化
を図るため一つのサービス機能についての実
装例を先行開発する.
(c)機能モジュールの開発
各開発者は担当する機能モジュールについ
て,
①ロバストネス図の作成
②クラス図の作成
③単体テスト検証ドキュメントの作成
④コーディング
⑤単体テストの実施
⑥クラス構成ドキュメントの作成
の一連の作業を行う.
(d)機能モジュールの結合
開発中のソースコードは各開発者が担当モ
ジュールの開発を完了次第,開発リーダーが
CVS によりバージョン管理し,リーダーが管理
するシステムに結合する.結合するのに必要
な修正を行った後,担当開発者は再度,実装
時に作成した単体テスト検証ドキュメントに
て該当モジュールの単体テストを実施する.
4.1 テスト仕様書
結合したソフトウェアの機能検証を行うため
テストの手順書を作成した.手順書には,機能
ごとに必要なテスト系列を設定し,テスト目的,
テスト内容,期待結果,確認結果,備考からな
るテスト項目をそれぞれの系列ごとに記述した.
テスト手順書は,要求仕様書として用いた利
用説明書に基づいて作成した.作成した手順書
に記載されているテスト項目数は合計 1506 項目
であり,472 頁にわたっている.表 2 は,機能群
ごとに分類した項目数を示している.担任者に
は 3 種類の小テストなどの教材作成や授業デー
タなどの管理機能があるのでテスト項目数が多
くなっている.
3.4 実装の結果
CEAS Core の全 53 機能のうち,仕様変更を予
定している 3 機能を除き 50 機能を前述のプロセ
スにしたがって実装した.成果物の種類とサイ
ズを表1に示す.この表で interface,class の
4.2 テスト実施と結果
機能検証のテストは開発者でない 10 名の第3
者に依頼してテストを実施した.
テストのために準備した外部データを用いて,
テスト担当者はテスト手順書に従って複数の機
表1
inter
face
プレゼンテーション層
履修環境管理者
担任者
学生
共通
ロジック層
utility
service
データアクセス層
utility
DAO
DTO
合計
43
43
50
50
93
class
JSP
146
40
65
30
11
56
13
43
51
1
50
50
303
210
51
92
56
11
210
XML
13
50 機能の実装結果
CSS/
JS
Java
実行数
Java
総行数
JSP 等
実行数
JSP 等
総行数
13
17617
5747
7530
2582
1758
12749
1803
10946
5521
60
5461
8736
44623
31057
9463
13953
4576
3065
19469
2819
16650
15824
82
15742
12245
78585
30874
7130
14274
5954
3516
42842
9246
20271
7871
5454
13
50
63
4. 機能テスト
13
13
4
実行数
合計
総行数
合計
48491
73899
12749
19469
5521
15824
8736
95497
12245
121437
表2
テスト項目と結果
Core のリファクタリングを進め,性能検証とチ
ューニングを行う.さらに,学内ユーザの一部
を対象に現行の CEAS2.1 と CEAS Core の並行運
用による運用テストを実施する.この運用期間
中に対象ユーザから挙げられる機能拡張や仕様
変更についても検討を行う.
頁数 項目数 誤り数 誤り割合(%)
共通
履修環境管理者
担任者
29
115
215
70
344
689
12
63
326
17
18
47
学生
113
403
98
24
472
1506
499
33
合計
謝辞
CEAS Core開発のリーダを努めた児山享弘氏と
CEAS Core開発に参加した上原遥,冨永徹氏の協
力に感謝します.さらにCEAS2.1運用の経験から
のアドバイスをいただいた小山和倫氏およびデ
ータベース設計を行った辻昌之氏の協力に感謝
します.さらに,システム検証,負荷テストに
協力いただいている新日鉄ソリューションズ
(株)の関係者に感謝します.なお、本研究の
一部は,文部科学省「平成16年度現代的教育ニ
ーズ取組支援プログラム」の平成17年度補助金
および平成17年度関西大学重点領域研究助成金
によって行ったものである.
能のテストを機能ごとに実施した.
テスト結果を項目数と合わせて表2に示す.
ここで「誤り数」には,テスト系列の途中で誤
りとなり,それ以降のテストできなかった項目
も誤りの項目に含めている.
この表から,全体としての誤り割合は 33%で
あるが,担任者に関する機能に誤りが多いこと
が分かる.これは,前述のように問題作成など
で入力値の妥当性チェックが十分でないことを
反映している.
4.3 リファクタリングへの課題
結合したソフトウェアを正常にかつ信頼性を
保持して利用できるためには,機能検証テスト
で見つかった誤りが発生しないようにプログラ
ムを修正する必要がある.
プログラム修正は,修正に要する工数,修正
後のプログラムの品質,さらに実施予定の性能
テストにより要求される修正(チューニング)の
工数,のお互いに競合する要因を考慮して計画/
実施する必要がある.
現在,各層および層間の結合での問題点を洗
い出し,リファクタリングの方針を検討してい
る.明らかになってきた問題点は,今回採用し
た機能別並行開発から予想されていた範囲にと
どまっているものの大きな修正が必要な項目も
ある.
5.
参考文献
1)冬木正彦,辻昌之,植木泰博,荒川雅裕,北村裕:
Web型自発学習促進クラス授業支援システムCEAS
の開発,教育システム情報学会論文誌, Vol.21,
No.4,pp. 343-354(2004)
2)児山享弘,小山和倫,植木泰博,荒川雅裕,冬木正
彦:日本の教育環境への適合を目指す授業支援型e
ラーニングシステムCEAS~Javaフレームワークに基
づく再開発~、情報処理学会研究報告、教育学習
支援情報システム研究グループ第1回CMS研究会、
pp. 51-58(2005)
3)岡本隆司,吉田英嗣,金子崇之,権藤夏男:Light
Weight Java-JSF/Hibernate/Springによるフレームワ
ークでWebアプリケーションの開発効率向上-,毎日
コミュニケーションズ,pp. 306-308(2005)
4)JavaServer Faces Technology,
http://java.sun.com/javaee/javaserverfaces/
5)CEAS2.0導入と運用の手引き,利用の手引き(担任者
向け),利用の手引き(学生向け),
http://ceasdemo.iecs.kansai-u.ac.jp/
6)The Apache MyFaces Project,
http://myfaces.apache.org/
7)Spring Framework,
http://www.springframework.org/
8)HIBERNATE, http://www.hibernate.org/
9)Deepak Alur , John Crupi , Dan Malks : Core J2EE
Patterns-BestPractices and Design Strategies-,Sun
Microsystems Press(2001)
まとめ
現 在 大 規 模 利 用 さ れ て い る 授 業 支 援 型 eLearningシステムCEAS2.1に対し,保守性・拡張
性・オープン性を高めることを目的として,フ
レームワークを利用した新しいアーキテクチャ
を採用し,新規にシステム開発を始めた.
本論文では,まず新たに採用するシステムア
ーキテクチャを記述し,つぎに開発の第1段階と
位置づけるCEAS Core開発における分析・設計・
実装プロセスを述べ,実装結果を報告した.さ
らに,機能検証テストとその実施結果を報告し
た.
機能検証テストの結果を踏まえ,今後 CEAS
5
Fly UP