2004年09月02日

LMS (learning management system): 是用于教育、培训管理自动化的一种软件。LMS负责用户登记、跟踪目录列表中的课件、记录学习者的数据,并向管理者提交报告。典型的L MS可以处理多个发布者的课件,它通常不包括课件的编著功能(那是属于LCMS的范围),而主要提供课件管理功能。
LCMS (learning content management system):的核心则是学习内容。它为参与课件制作的用户提供方便的课件制作方法和工具。LCMS面临的主要问题是如何根据学习者的需要尽快制作足够的学习资源。学习内容应该具有可重用性。
LCMS主要包括的部分有:
1,学习对象数据仓库。以XML表示。
2,自动课件编著系统。给编著者提供模板。编著者使用这些模板,利用已有的学习对象、生成新的学习对象、或者使用新旧学习对象的联合来开发课件。还可以通过定制接口、指导性的方法把现有内容进行快速转换。
3,动态递送接口。
4,管理系统。管理学习者的记录,从课件目录装入elearning 课件,跟踪、报告学习者的进程,提供其他基本的管理功能。
LO(learning object)学习对象:被定义为教学内容的独立组块。一般包括三个部分:学习性能目标(学习者在学习过程结束后将理解什么),达到这个目标所必需的学习内容(例如文本、v ideo,幻灯片、仿真等等)以及对是否达到这个目标的评价。学习对象还包括元数据,包括描述LCMS内容和目的的标签。元数据可以包括如作者、语言、版本层次等的信息。
IEEE对LO的定义如下:
The Learning Technology Standards Committee of IEEE defines learning objects as “any entity, digital or non-digital, which can be used, re-used, or referenced during technology-supported learning. Examples of technology-supported learning include computer-based training systems, interactive learning environments, intelligent computer-aided instruction systems, distance learning systems, and collaborative learning environments. Examples of learning objects include multimedia content, instructional content, learning objectives, instructional software and software tools, and persons, organizations, or events referenced during technology-supported learning(LOM, 2000).”

LMS 和LCMS二者相同之处:都涉及对课件内容的管理、对学习者表现的跟踪,二者都涉及在学习对象层面上管理和跟踪学习内容。不同的是LM S管理跟踪来自在线学习内容、教室、虚拟学习环境等混合学习环境的课件。而LCMS并不管理混合学习,它从比学习对象更底层的粒度管理学习内容,使在线学习内容的组织更方便。高级的L CMS应该能够基于用于特征信息和学习风格动态创建学习对象。当LCMS和LMS系统都支持XML标准后,信息可以方便地从对象级别迁移到LMS 级别。根据IDC的定义,LCMS是以学习对象的形式创建、保存、组装、递送个性化的学习内容的系统。其重点是在线学习内容的管理。LCM S把学习对象保存在中心数据仓库中,设计者通过学习对象的获取、组装来制作个性化的课件。
来自IDC的二者逻辑关系图:
(图片没有帖成功,抱歉!)

此关系图可以用于指导LCMS和LMS基本的功能设计。从图中看出的是,LCMS把学习内容通过动态递送接口给LMS,而LMS所生成的学习过程报告等个性化信息将反馈给L CMS以供制作课件参考。
现在的LMS系统的不足。
(1)集成性差。电子白板、协同设计工具、文字聊天室、视频音频在线教室、共享协作空间应用系统,e-mail、mailing-list、线索化讨论区、辩论工具、协作课件评注工具等工具之间以及工具与学习资源之间缺乏联系,只是简单的堆叠,用户使用起来很不方便,并且达不到良好的学习效果。
(2)可重用性差。解决方法:标准的支持。
(3)分布式计算环境下的LMS存在着资源负载不均、灵活性差、安全性差等很多不成熟的地方。
(4)系统的紧密耦合。

  首先你已经有个 LMS,还没有的人,那就是立刻先『生』一个 LMS 出来。

  你可以看完这个主题后再思考如何『生』,或者先依你所获得、搜集的需求,先设计一个。但基本上会有几个子系统:

 1. 帐号管理
 2. 开课、选课管理
 3. 讨论板系统
 4. 作业、问卷、测验系统(其中最重要的是测验系统。如果你功力不够,短时间无法作一个好用的测验系统的话,可以先 focus 在作业与问卷系统上,而测验可以另找合作厂商)
 5. 如果你还想多同步的功能,可以再加个线上讨论室。没时间发展可以使用 Netmeeting 的方案或去找一个聊天室的 source 来改。
 6. 最后一个『必须』要做的,就是有一个『教材步进』机制。看你是要很简单地用一个 frame,里头放个 treeview 来展现教材目录,或是厉害一点,让你的 LMS 可以自动 launch 教材,都行。

  把这一切兜起来后,你就完成一个简单的 LMS。当然,功能你自己还可以自由添加、删减、修改。别忘了美工也很重要喔!

  最后要提醒你的,最好把你的 LMS 架构,用 XML 把它描述出来,除了当作你的 sitemap,后续还可以作 sequencing maping、菜单 layout ..喔!好处你慢慢会发现。:)

  接下来就是做 SCORM 的部份。

  因为 ADL 有提供一份 Java 写的 adapter 的 sample source,所以如果你会 Java,那就太幸运了,直接拿来用,你就少写一万三千多行程序,而且还有国际组织帮你维护程序代码哩!

  不过这也轻松不到哪去,因为你要自行设计 Database 的 schema 来存 SCORM 的资料,如果你的 LMS 自己没设计 log,而完全要仰赖 SCORM 所产生的记录,那么这个 database 的设计可要花点时间跟脑筋啰!更何况,你必须先看懂这套程序代码,才能写它与你的 DB 之间的 bridge code。

  我的系统在符合 SCORM 之前,已有自己的 log 记录方式、资料,所以除了 SCORM 它自己记一套,我的 LMS 自己也会记一套,而且记得比 SCORM 还详细。因此这个部份,我的作法就只需设计如何记录 SCO 产生的 cmi 资料即可,不必担心与原有 LMS 的资料是否冲突。

  这样一来就简单多了。因为一个 SCO 只有一个 cmi data,我只要逐个记入我的 DB table 里就行了。所以,在 SCORM 兼容上,我只需要多一个 Table 即可。哇!真是轻松愉快!

  在 table 的设计上,因为 cmi 是一个 XML 格式的资料,如果拆成数个部份存,在『拆开存入』与『取出重组』这个部份会影响效能,但我所用的数据库并不是『原生 XML 数据库』(native XML database),我采用我自创的『仿真 XML 数据库』方式,把 cmi 整个 XML 直接存入 field 中,既有原生 XML 数据库的不必拆组优点,又保有关系数据库的关联性。

  归纳起来,你在这个部份就是要去下载 ADL 的 Sample Run-Time Environment http://www.adlnet.org/ADLDOCS/Other/SCORM(TM)Version1_2SampleRTEVersion1_2_1.zip ,并看懂它来设计你的数据库 schema。

  如果你已经下载了 ADL 所释出的 Sample Run-Time nvironment,而且决定使用 Java 或 .Net 来实做你平台的 SCORM 部份,你可能要花不少时间来读懂它里面的三十多支 Java 程序,或者至少该知道这些程序该怎么用。

  几乎所有的 .java 程序,都为了存取 XML 而写。如果你已经熟读SCORM RTE 的 Metadata,从档名你就知道,几乎是一个 Metadata 就用一支 java 来 take care。从事 java 程序开发的朋友都知道,java 需要自带 XML 的函式库,它无法直接使用 OS 所提供的 XML API (如果有的话,例如 windows)。而这个函式库又超大,因此 java 在 XML 这方面有点先天失利,不过这并非指 java 不适合开发 SCORM,而是我 心目中有比用 java 更适合的对象-就是我在『技术』篇所提到的 SCORM 开发必备技能之二 – Jscript。

  请注意我写的是 Jscript,而非 Javascript。这是 Microsoft 版本的 Javascript,它是一个遵循 ECMA-Script 标准的 script language ,除了在 Microsoft IE 底下有完整的 XMLDOM 可用,即使客户端使用 Mozilla/Netscape 等浏览器,Jscript 也可以用标准的 XMLDOM 来实作 SCORM Adapter。

  在讲到实作 Adapter 之前,我们先来看看 ADL 的 Sample 里的两支重要的 Jscript : APIWrapper.js 与 SCOFunctions.js。

  ”APIWrapper.js” 是提供教材制作者,一个呼叫 Adapter API 的接口。教材制作者把这支程序与 Asset 合起来就构成一个简单的 SCO,只要在教材被 launch 时,使用它的 findAPI() 去寻找 Adapter API,找到后就会有一个 API 的对象可用,而这个对象会 mapping 到 LMS 所实作的 Adapter 上,因此它就会有 RTE 所规范的八个方法 (method),开始供你的教材使用了。

  ”SCOFunctions.js” 则是提供一些函式,供 Adapter 或者 Content 来使用。这些函式大部份是有关 SCO 在激活与结束时,一些状态属性的 Metadata 侦测与设定。比如 “cmi.core.exit” 侦测这个 SCO 是正常结束或异常结束;”cmi.core.lesson_mode” 是一般阅读或是参观者浏览;还有 “cmi.core.session_time” 是记录这个 SCO 从开始到结束的时间。哦!对了,SCORM 有个资料格式是 CMITimespan,这个是『时间长度』。它精确到小数点后两位,但 Jscript 并没有这样的处理函式 (不知 Java 有没有),所以必须自己写个函式来处理这样的时间加减。这支程序有三个函式:startTimer()、computeTime()、convertTotalSeconds() 可以帮你计算 session_time。它已经被写在 loadPage() 函式中了,所以你只要在 SCO 激活时,在 findAPI() 找到 API 后,用 loadPage() 来呼叫 Adapter 的 LMSInitialize(),再使用 unloadPage() 呼叫 LMSCommit() 与 LMSFinish(),你就完成一个 SCO 的最基本要求啰。