This post originated from an RSS feed registered with .NET Buzz
by Jonathan Crossland.
Original Post: Feelings over The SCORM
Feed Title: Jonathan Crossland Weblog
Feed URL: http://www.jonathancrossland.com/syndication.axd
Feed Description: Design, Frameworks, Patterns and Idioms
Beginning of last year I designed and implemented, together with Matt Ball (one of my coders), a Scorm Course Player.
We developed it using the First Version of the SCORM 2004 specifications, and have now moved through the revisions, addendums, and now finally
on the 3rd Edition Draft, which we are closing up now.
There are quite a few conformance tests, (on the top of my head, I think there are around 70).
and we have probably around 50 of them nailed completely.
Before I get into things, here are some useful links for the SCORM.
SCORM main page (html url)
RSS Issues Feed (xml url)
What is SCORM?
The SCORM tries to specify the platform on which e-learning material can be delivered and tracked.
The SCORM attempts to layout rules for course material to follow, the way in which it communicates to an LMS
and a set of standard 'commands', data, it can send about itself and the learner.
The SCORM (Sharable Content Object Reference Model), is a composite of specifications, mainly
Content Aggregation Model (CAM),
Think of it as e-learning packaged in a zip file, with an XML Manifest, that describes the content.
Run-time Environment (RTE),
This is in short a specified programming Interface, with a Data Model behind it.
Sequencing and Navigation,
The flow of and rules governing a course. SCORM like to use stranger words like a SCO, or Assets, Activities etc
Our Implementation We utilized a Javascript Class as a 'Proxy' (GOF) for the API, communicating to a WebService.
We used .NET Reflection to map the API calls to the relevant Data Model (RTE Data Model). This treats all API values and commands as language elements.
The pattern used for this, is one of a customized hybrid + more between an 'Interpreter/Mediator (GOF)' and it made what would have been a large amount of code mapping into a one efficient class.
We created a CAM Object Model, with as much inheritance, reuse, abstract classes as possible to reduce the complexity of the classes.
We designed The Tracking Model as an Object Model which the Learning Management System (LMS) hooks into for events, SCORM tracking and other information regarding the course and player environment.
Then implemented the Sequencing and Navigation based on the SCORM SN psuedo code, which leaves a lot to be desired, but there you have it.
As my intent, was purely to introduce a little of SCORM, and point out the learning curves and such, let me get into that, before I start writing a book.
Suggestions for your implementation
My advice on how to create such a thing would start with
Develop the API first and then move to the CAM.
After which, read the specs thoroughly again and again. I found myself needing glasses (almost) after this.
The documentation is vast and as it tries to aleviate ambiguity, it tends to be roundabout and wordy. Often a simple sentence "like make sure you set this flag when that occurs".
turns into "the flag, known either as the green flag or the orange flag according to , depending on what eye glass you are wearing, must conform to the value of n otherwise x, when y occurs within the ..."
We could have done without the "extra explanation" in every area, as sometimes they contradicted eachother (more so in the earlier specs).
On the plus side, at least when you went looking for something, it has something to say about it.
Importantly, remember that the architecture will reveal itself within what the specs are saying. Don't go and simply design your code and go for it while reading.
Read first.
My list of concerns/opinions and suggestions for the SCORM
It is really too complex in many areas, which will make adoption longer and harder
At this stage, it suffers from a classic 'software framework' problem when in the early days of release. What value does it provide? I can do this easily if I do it myself. It is too complicated to 'get started'. etc
Perhaps the SCORM conformancy should be reduced to grades A and B, with one being a lot less work than at present.
The Sequencing and Navigation is really not worth the weight of the paper. A much easier implementation could be created, with Layers of abstraction. I can't see many courses utilizing the full extent of it anyway.
A simple set of class Interfaces (written in java, c#, vb.net etc) would be helpful for the current SN psuedo code. Better yet, use the Template Method (GOF) for defining it and we can fill in the implementation.
I think, that the CAM is going to promote larger sets of learning material rather than smaller e-learning objects, unless a different way is found to package and disperse learning.
The API with the CMI, is not just old-school, but bad old-school. It needs to move with the technology that matters, Web Services, UDDI, AJAX, a proper defined behaviour with interfaces
The Tracking model needs to be better defined for real world use. An extension once again is needed to really make tracking a vital aspect.
Tracking after all, could be made seamless from content to LMS via set API. 'What' is sent defined by the content, expecting the content to document it for the LMS. Now anything could be set without effecting CMI, Existing Tracking or SN.
A lot of profesional courseware monitor their own stats or are custom tweaked for an LMS. This will still continue for a long time yet.
The worth of SCORM is a long way still from being realized
The specs, sample code and testing environments, everything is written in Java, I don not see any software design patterns, anything familiar. An increase in adoption can be made by defining a real 'software framework'.
The objectives for SCORM needs to be reviewed and enhanced.
Your excellent post is most appreciated. As of now, do you have any updates to add?
I am looking for .NET SCORM-compliant solution. So far, the best .NET SCORM software that I have been able to find is BGI's commercial product at http://www.brisingergroup.com/ and there are SharePoint extensions at http://www.codeplex.com/SLK/ but I am still looking.
Do you know of any other .NET-based SCORM-compliant software?