Comments
Description
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