blog.visualp.com
[출처] -http://www.word.pe.kr/
SCORM 세번째 시간입니다. 두번째 강의를 다시 읽어보니.. 내용이 너무 많아서인지.. 아니면 장황해서인지..
처음 접하는 분들은 좀 어렵게 느껴지지 않았을까 합니다. 어려운것을 쉽게 설명하는 것이 미니의 최고 장점인데.. (*^^*)
그래서 각성하고.. 이번부터는 쉽고 간략하게 핵심만 설명하려고 합니다.
잠깐 정리해볼까요? SCORM의 구성요소는 3가지라고 첫 강의에서 설명했습니다.
1. Contents Aggreation Model
2. Run-Time Envrionment
3. Sequencing & Navigation
오늘 알아볼 것이 바로 첫번째인 Contents Aggregation Model 입니다. 번역하면 콘텐츠 통합 모델이라구 하고요
간단히 줄여서 CAM(캠)이라고 합니다.
자 그럼 시작해 볼까요?
콘텐츠 통합 (Contents Aggregation)
먼저 생각을 해보죠.. 인터넷에는 많은 정보를 보여줄 수 있습니다. 이런 정보를 보여주는 파일들은 어떤 것이 있을까요?
이미지, 동영상, HTML, 텍스트, 사운드...
이와 같은 것들이 있겠죠.. 이것을 Asset이라고 합니다. (새로운 용어는 무조건 익숙해져야 합니다. 자주 보고 읽는 수밖에는 없겠죠.. ^^ )
이러닝도 인터넷 상에서 보여주는 것이기 때문에 이런 Asset이 기본적으로 사용될 겁니다.
SCORM에서는 이런 Asset을 모아서 특별한 이름을 붙입니다. SCO(Sharable Content Object)라는 것인데요..
SCORM의 앞글자 이기도 하죠.. 매우 중요한 것 같습니다. 그렇죠~~
이 SCO가 바로 공유할 수 있는 콘텐츠로서 SCORM의 기반이 되는 것입니다. SCORM에서 공유한다고 이야기 하는 것은 이 SCO를 의미하는 것이죠~~
즉, SCO라 하면 Asset들을 모아 놓은 것이라고 생각하시면 됩니다. 또는 하나의 Asset이 하나의 SCO도 되는 것이죠..
SCO >= Asset 이런식으로 표현이 될 수 있을 것 같네요...
이런 SCO들을 다시 모아 봅니다.. 여러개의 SCO를 엮어줄 필요가 있겠죠~~ 이렇게 해 놓은 것이 콘텐츠 통합 (Contents Aggregation)입니다.
그럼 이런 콘텐츠 통합에 대한 그림을 이쁘게 그려놓은 것이 바로... 콘텐츠 통합 모델(Contents Aggreation Model), 즉 CAM이 되는 것이죠~~
이번 강의에서 설명한 내용은 이겁니다.~~ 많이 간결 해졌죠.. ^^ 새로운 용어만 잘 이해하시면 됩니다.
Asset >= SCO >= Contents Aggreation
그림으로 보면 이해가 더 빠를려나요.. 다음 그림을 참고하세요~~
<그림 1 : CAM 구성 >
콘텐츠 통합 모델 (Contents Aggregation Model)
그럼 이제 실제로 Aggregation에서 Asset, SCO가 어떻게 상호 결합되는지 살펴보도록 하지요~
Aggregation에서는 Asset이나 SCO를 나타내기 위한 새로운 구조가 필요합니다. 서로 엮어야 하니까요~~
그래서 다음과 같은 구조를 사용합니다.
<그림 2 : Activities 구성>
그림을 상세히 설명하면 Organization이 루트인 것을 알 수 있습니다. 그리고 그 하위에 item이라는 자식 노드들이 들어가고 있지요..
만약 국어라는 과목이 있다면 국어가 Organization이고, 고대국어 / 중세국어 등이 item이 될 수도 있겠죠..
조금 작게 하면 1주차 고대국어가 Organization이라고 하면, 안내하기 / 학습하기 / 정리하기 등이 item이 될 수도 있겠죠..
아직 잘 이해가 안되신 다면 어쨌든 Organization과 item으로 Aggregation의 구조를 표시한다고 일단 이해하시면 될 것 같네요~
그러면, 앞에서 배운 Asset이나 SCO는 어디에 포함되어 있는 것일까요?
<그림 2 : Resources 구성>
바로 여기에 있네요.. Resource라는 이름으로 Asset, SCO가 포함되어 있다고 할 수 있습니다. 이 두 그림을 서로 연결하면 바로 Contents Aggregation이 되는 거예요~~ 한번 보실까요...
<그림 2 : Contents Aggregation 구성>
item이라는 요소가 각각의 Asset, SCO인 Resource와 연결이 되어 있죠~~ 이것이 바로 콘텐츠 통합 모델입니다.
위 그림에서 두 가지 정도 중요한 부분을 보셔야 합니다.
첫째는 Organization과 Resource를 가지고 콘텐츠 통합 모델이 이루어진다는 것이구요..
둘째는 item 중에 보면 마지막 노드(leaf 노드라고 보통 이야기 하죠..)에만 Resource가 연결된다는 것입니다. item 중에서 노란색은 연결이 되는데.. 갈색은 연결이 안되어 있죠.. 그렇죠..
자~ 그럼 이와 같은 표현을 어떻게 할까요? *^^*
눈치가 빠른 분은 이미 알아채셨겠지만... 바로 imsmanifest.xml 파일에 표현하는 것입니다.
다음은 photoshop 예제의 imsmanifest.xml 파일입니다. 메모장이나 텍스트 에디터에서 직접 열어서 확인해 보시기 바랍니다.
imsmanifest.xml 파일의 내용을 보면 중간에 organization이 보이고.. 그 아래에 item 들이 나오고 있습니다.
또한 아래 부분에 resource들이 여결되어 있는 것을 볼 수 있겠죠~~
resource에는 adlcp:scormType이라고 해서 Asset인지 SCO인지 구분하고 있습니다. 그쵸~~
그럼 item과 resource는 어떻게 연결할까요?
첫번째 item을 보시면 identifier로 "INTRO"라고 되어 있구요.. identifierref로 RESOURCE_INTRO라고 되어 있습니다.
그리고 resource의 첫번째를 보면 identifier가 RESOURCE_INTRO로 되어 있죠..
바로 이 identifiererf와 identifier가 위 그림에서 화살표가 되어 서로 연결해 주는 것이죠~~
그리고 나머지 item들이 resource와 연결 안된 것은 마지막 노드(leaf 노드)가 아닌 중간에 있는 노드이기 때문인거죠..
자~~ 처음부터 설명한 Asset, SCO, Aggregation 용어와 그 다음에 설명한 실제 구성도... 그리고 마지막 imsmanifest.xml 파일까지...
일목요연하게 이해가 되나요~~ 이 관게를 잘 파악하시는게 중요합니다. 그 다음에 imsmanifest.xml의 세부 내용은 스펙을 살펴보면 금방 이해할 수 있을 것이니까요~~
메타데이터 (Metadata)
실제 imsmanifest의 거의 대부분 내용을 설명했는데요.. 하나가 빠졌네요~~
바로 메타데이터입니다. 위의 소스에서도 metadata라는 항목이 들어가 있죠...
메타데이터란 데이터를 설명하는 데이터라고 보통 이야기 합니다.
우리가 캔커피를 사면 거기에 제조사, 가격, 재료 등의 라벨이 붙어있죠.. 이 라벨이 캔커피에 대한 메타데이터라고 할 수 있습니다.
마찬가지로 SCORM에서도 각각의 Asset, SCO, Aggregation에 메타데이터를 붙일 수 있습니다.
이런 메타데이터로 LOM(Learning Object Model)이란 걸 사용하는데요... 이런게 있다는 것만 이해하시고요~~
실질적으로 메타데이터를 왜 사용하는지 간단히 이야기 하겠습니다.
왜 사용할까요?
SCORM은 콘텐츠의 공유를 위해 사용한다고 했습니다. 다른사람이 재사용하기 위해서는 어떤 내용인지 알아야 하는데...
모든 콘텐츠를 열어서 확인해 본다는 것은 무리가 있죠.. 그래서 그 콘텐츠를 설명하는 메타데이터를 두고 사용하는 겁니다~~
즉, 검색을 통한 재사용의 성능을 높이기 위한 것이라고 할까요..
요즘 웹 2.0이 나오면서 이런 메타데이터의 중요성은 더욱 커지고 있습니다. 그러나 실제로 써본 바로는 SCORM의 LOM은 너무 무겁고
입력할 내용도 많습니다.. 실제 효용성이 의문시 되기도 하지요...
하지만 그 취지는 무척 좋은 것이기는 하지만.. 제 생각에는 블로그의 태그 검색 같이 하는 것이 사용자 측면에서 보다 쉽지 않을까 간단하게 생각해 보지만. 실제로 교육 콘텐츠에는 많은 정보가 필요하기 때문에 이런 무거운 메타데이터를 사용하지 않을까 합니다.
참고로 LOM에는 "일반 정보(제목, 키워드, 설명 등), 생명주기, 교육요소, 기술요소, 저작권, 분류" 등의 많은 항목들이 포함되어 있습니다.
이상으로 Contents Aggregation Model에 대한 설명을 마칩니다.. 항상 겪는 감기약 때문에 정신이 몽롱하네요~~
그럼.. 좋은 하루 되세요~~ 2006년 11월 27일.. From 미니
[출처]www.word.pe.kr 4 SCORM RTE(Run-Time Environment) 첫번째~~ 오랜만에.. SCORM 강좌를 이어서 진행하도록 하겠습니다. ^^ 오늘은 SCORM RTE 부분을 살펴볼 것인데요.. RTE는 Run-Time Environment의 약자로서.. 굳이 번역하자면 실행환경이라고 할 수 있습니다. 그렇다면 이런 실행환경이 왜 필요하고, 어떻게 구성되어 있으며~~ 실제 호출하는 함수나 데이터 모델이 어떠한지를 살펴보도록 할 것입니다. 이것이 바로 SCORM RTE에서 다룰 내용의 전부라고 생각하시면 됩니다. *^^* 자~ 그럼 시작해 보도록 하겠습니다.~~ SCORM RTE의 개념 먼저 RTE가 왜 필요한지 생각해 보도록 하죠~~ SCORM이 등장하게 된 중요한 이유중의 하나는 바로 콘텐츠와 시스템의 분리였습니다. 그래서 목차나 각각의 차시에 대한 파일이나 여러 정보는 imsmanifest.xml을 통해 콘텐츠에 포함시켰습니다. (어~ 이 부분의 내용이 생각이 안나신다구요.. ㅋㅋ 바로 앞의 강좌 5.3 콘텐츠 통합 모델을 다시 살펴보세요~~) 그렇다면, 이제는 콘텐츠가 가지고 있는 정보를 시스템에 알려줘야 합니다. 그래야 시스템에서 해당하는 목차도 띄워주고~ (물론 시쿼싱이 도입되면서 목차는 시퀀서가 처리하게 되지만.. 여기서는 편의를 위해 일단 이렇게 설명합니다.) 학습자의 학습시간, 평가점수 등도 받아서 저장하거나, 학습자가 요청할 때는 보내주어야 합니다. 이전의 이러닝에서는 콘텐츠와 시스템이 통합되어 있었기 때문에 이 모든 것을 시스템이 알아서 처리했죠~~ 그러나 SCORM에서는 다음과 같은 방식으로 콘텐츠와 시스템의 연결을 해결하고 있습니다. ![]() 간단하게 도식화 한 것인데요~ 중요한 부분은 바로 API Adapter라는 것임다~ 콘텐츠의 각 SCO(Sharable Content Object)와 시스템인 LMS Server의 API Adapter가 웹 브라우저를 통해 서로 연결되는 것이죠.. 다시 정리해 보면.. 콘텐츠에서는 API란 것을 두어서 호출을 합니다. 그럼 서버에서는 그 API를 받아서 처리하는 부분을 만들어 두는 것임다. (참고로 API란 Application Program Interface로서 프로그램들을 서로 연결시켜주는 것이라고 대략 알아두시면 될 것 같네요) 그렇다면.. 대부분의 콘텐츠는 HTML이죠~ HTML에서 API란 걸 호출하는 방식으로 주로 자바스크립트가 사용됩니다. 그래서 콘텐츠의 SCO에 추가되는 API는 자바스크립트로 되어 있습니다. 자.. 서버에서는 호출된 API를 받아서 처리해야 하죠~ 그게 바로 API Adapter입니다. 기능은 콘텐츠에서 전달해온 값들을 저장하고, 콘텐츠에서 호출하는 값을 보내주는 역할이라고 생각하면 됩니다. 일반적으로 java로 구현하기도 하구요.. ActiveX로 만들기도 하죠.. 최근에는 이것을 Flash나 다른 걸로도 구현하기도 하더라구요.. SCORM RTE 동작 원리 이전 강좌에서 SCO와 Asset에 대해 설명을 했었죠 ~~ 기억나나요? SCO가 여러개 모여야 Asset이 된다고 했었죠~~ 그쵸... (네.. 하고 대답하신 분은 이전 강좌를 다시 살펴보시기 바랍니다. ㅋㅋ) *^^* 아니죠.. Asset이 여러개 모여 SCO가 되기도 하고, Asset 하나가 SCO 하나가 되기도 한다고 했었죠~~ 이 Asset과 SCO의 가장 큰 차이점이 바로 RTE에 있습니다. Asset의 위에서 설명한 API를 가지고 있지 않구요.. SCO는 반드시 가지고 있어야 합니다. 즉, 서버와 통신하는 것은 SCO만 하는 것이구.. 그러므로 학습 결과 등의 데이터를 기록하는 것 또한 SCO만 가능한 거죠. Asset은 학습을 했는지 않했는지 전혀 알 수 없습니다. 어쨌든.. 지금까지 왜 RTE가 필요하고 어떻게 콘텐츠와 시스템에 상호 통신하는지 알아봤습니다. 그렇다면 보다 자세하게 동작 원리를 좀 살펴보도록 하죠~~ ![]() 자~ 그림을 위에서부터 시계방향으로 따라가 볼까요~~ LMS Server가 콘텐츠를 불러옵니다. Launch라는 표현을 쓰고 있네요.. Asset을 호출하기도 하고.. SCO를 호출하기도 합니다. 이중에 Asset은 API와의 연결이 없구요.. SCO만 API와의 연결고리가 있죠.. 바로 위에서 설명했었죠.. ^^ 잘 보시면 SCO가 API를 통해 LMS Server와 통신을 하는데요.. 두 가지 정도 유의해서 보시면 됩니다. 1. API는 ECMAScript (걍 자바스크립트라고 생각하면 됩니다.)로 되어 있음다.. 2. API를 호출할 때 전달되는 데이터는 Data Model이라고 하는 것에 담겨 있게 됩니다. 그렇다면,... 앞으로 살펴볼 것은 API의 내용과 Data Model이 되겠죠.. ^^ API 함수들 SCORM에 사용하는 API 함수는 다행히도 8개가 전부입니다. 와우~~ 너무 간단하죠^^ API 함수가 간단한 이유는 모든 데이터별로 함수가 존재하는 것이 아니고.. 데이터는 Data Model에 따라 정해지고.. 함수는 공통적으로 사용하기 때문입니다. 그럼.. 8개의 함수를 살펴보도록 할까요? Initialize (“”) 초기화 함수로서.. SCO가 Launch 될 때 호출합니다. (즉, 콘텐츠가 시작될 때 실행되는 것이죠)
Terminate (“”) SCO가 종료될 때, 즉 콘텐츠가 닫힐 때 실행됩니다. Commit (“”) 보통 SCO가 종료될 때 서버에 데이터를 전달하게 됩니다. 즉, Terminate가 호출될 때 서버에 데이터가 저장되는 것이죠. 그러나 중간에 이 Commit을 실행하면 현재 상태를 서버에 저장하는 역할을 합니다. GetValue (parameter1) 서버에서 parameter1에 해당하는 값을 가져옵니다. 그렇다면.. parameter1의 형식이 바로 Data Model이 되겠죠. ^^ SetValue (parameter1, parameter2) GetValue와 반대로 parameter1에 해당하는 값 parameter2를 서버에 저장합니다. GetLastError () 현재 발생한 오류 코드를 가져옵니다. GetErrorString (errorcode) GetLastError에서 가져온 오류코드 errorcode에 대한 에러 관련 문자열을 가져옵니다. GetDiagnostics (errorcode) GetLastError에서 가져온 오류코드 errorcode에 대한 에러 관련 상세한 내용을 가져옵니다. 간단하죠.. 그리 어려운 것은 없습니다. 시작할 때 Initialize, 끝날때 Terminate, 값을 가져오고 저장할 때 GetValue, SetValue 요게 핵심이죠.. ^^ 하지만.. 실제 활용할 때는 위 함수들을 조합해서 많이 사용합니다. 그래서 위 함수들을 포함하는 함수를 만들어 놓고 사용하죠.. 보통 Wrapper 함수라고 이야기 하는데요.. 다음 시간에는 이 Wrapper 함수와 실제 Photoshop 예제에서 어떻게 사용되고 있는지.. 그리고 RTE에서 사용하는 Data Model에 대해서 정리해 보도록 하겠습니다. 그럼.. 좋은 하루 되세요~~ 2007.1.25 From 미니.. |
5.7 SCORM 2004 CMI Data Model 두번째~
지난 시간에 이어서 SCORM의 CMI 데이터 모델에 대한 정리를 마무리 하도록 하겠습니다.
11. Learner ID
cmi.learner_id
SCO를 사용하는 학습자의 아이디 또는 구분자
GetValue
미니주석) 보통 LMS에 로그인 할 때 사용하는 ID가 있습니다. 그걸 의미한다고 보시면 됩니다.
12. Learner Name
cmi.learner_name
SCO를 사용하는 학습자의 이름
GetValue
미니주석) 역시 LMS에서 사용하는 학습자의 이름입니다. learner_id나 learner_name은 사용자가 설정할 수 없습니다. 즉, SetValue를 지원하지 않는 것이죠..
13. Learner Preference
cmi.learner_preference._children
cmi.learner_preference 데이터모델에서 지원하는 자식 엘리먼트의 리스트를 의미합니다.
GetValue
미니주석) learner_preference란 학습자의 성향이나 선호도라고 생각하시면 될 것 같습니다. audio나 언어 관련 정보를 지정합니다.
cmi.learner_preference.audio_level
학습자가 음성 볼륨 조절과 관련된 단계를 설정.
GetValue, SetValue
미니주석) 0 이상의 값을 가질 수 있습니다. 일반적으로 볼륨 조절이라고 생각하시면 되구요.. 1이 기본값입니다.
cmi.learner_preference.language
학습자가 선호하는 언어를 나타냄
GetValue, SetValue
cmi.learner_preference.delivery_speed
콘텐츠에 대한 속도 조절입니다. 2배 빠르게 혹은 2배 느리게.. 등으로 설정할 수 있습니다.
GetValue, SetValue
cmi.learner_preference.audio_captioning
음성에 대한 자막을 보여줄지 여부를 나타냄
GetValue, SetValue
다음과 같은 값들이 가능합니다.
"off", "no_change", "on" 각각 "-1", "0", "1"로 지정합니다.
미니주석) 실제로 learner_preference를 이용해서 볼륨조절이나 자막 보여주기, 속도조절을 적용하지는 않고 있습니다.
대부분 걍 콘텐츠 내부에서 사용자가 조절 할 수 있도록 구성하고 있지요~
어쨌든 SCORM에서는 이런 식으로 적용할 수도 있다는 것입니다. 참고하세요 ^^
14. Location
cmi.location
현재 학습하고 있는 SCO의 위치.
SCO는 여러개의 파일로 이루어 질 수 있습니다. 이런 경우, SCO내의 북마크로 활용될 수도 있습니다.
GetValue, SetValue
미니주석) location은 SCO에 대한 학습이 종료될 때. 즉, terminate()가 호출될 때 기본적으로 저장합니다.
북마크 기능이 필요했던 SCORM 1.2에서는 SCO가 초기화 할 때 이 location을 가져와서 해당 위치로 이동하기도 했었습니다.
15. Maximum Time Allowed
cmi.max_time_allowed
해당 SCO를 최대한 학습할 수 있는 시간.
GetValue
미니주석) imsmanifest.xml 파일에서 이 부분에 대한 값을 미리 설정해 둡니다. 그러면 CMI 데이터 모델에 있는 time_limit_action에 의해 학습시간이 초과되었을 경우, 처리하는 방식을 결정하게 됩니다.
제 생각에 원래 시험과 같이 주어진 시간 내에서 처리해야 하는 경우를 위해 만들어진 것이라고 보는데요..
실제 프로젝트에서는 지정된 시간 이상 학습하기를 원하는 요청이 많이 있어.. 꼼수로 이걸 이용하기도 했었습니다.
16. Mode
cmi.mode
학습자가 SCO를 어떤 형태로 학습하는지 결정하는 모드.
GetValue, Sequencing impacts
미니주석) mode는 다음 세가지 값을 가질 수 있습니다. "browse", "normal", "review"
실제 프로젝트에서는 "browse"는 관리자나 선생님이 SCO에 들어올 때 처리했었습니다. 이것은 학습진도를 체크하지 않고 관람자 모드이기 때문입니다.
"normal"이 일반적으로 학생들이 들어와서 학습하고, 학습추적 데이터를 저장할 때 사용했구요..
"review"는 학습이 완료된 상태에서 복습하기 위해 들어온 경우 처리했었습니다.
아마 스펙에 나와 있는 내용과도 일치할 거라구 생각하네요.. ^^
17. Objectives
학습목표라고 생각하면 됩니다. 보통 학습의 완료여부와 함께.. pass와 fail을 결정하기도 합니다.
시퀀싱을 활용하는데 있어 중요한 요소로 활용합니다.
cmi.objectives._children
cmi.objectives 데이터 모델에서 지원하는 자식 엘리먼트 리스트
GetValue
cmi.objectives._count
학습목표(objective)의 전체 개수.
GetValue
cmi.objectives.n.id
n번째 학습목표에 대한 구분자
GetValue
cmi.objectives.n.score._children
cmi.objectives.n.score 데이터 모델에서 지원하느 자식 엘리먼트 리스트
GetValue
cmi.objectives.n.score.scaled
n번째 학습목표에 대한 학습자의 점수를 비율로 적용한 값. -1 ~ 1 사이의 값.
GetValue, SetValue, Sequencing Impacts
미니주석) 시퀀싱에서 보면 Objective Measure Status / Objective Normalized Measure 라는 값이 있습니다.
이 값이 score.scaled와 연관이 되어 있다고 보시면 됩니다.
즉, score.scaled 가 설정되어 있지 않으면 Objective Measure Status는 false가 됩니다.
반면에 score.scaled가 설정되어 있으면 Objective Measure Status는 true가 되고, Objective Normalized Measure값은 score.scaled가 됩니다.
이 값을 이용해서 시퀀싱을 처리하게 됩니다.
cmi.objectives.n.score.raw
n번째 학습목표에 대한 학습자의 실제 점수
GetValue, SetValue
cmi.objectives.n.score.min
n번째 학습목표에 대한 가능한 최소 점수
cmi.objectives.n.score.max
n번째 학습목표에 대한 가능한 최대 점수
미니주석) 특정 학습목표가 존재할 경우, 이 값을 활용하게 됩니다. 그냥 해당 SCO에 대한 학습 결과는 cmi.score에 저장합니다.
cmi.objectives.n.success_status
n번째 학습목표에 대한 pass 여부입니다. ("passed", "failed", "unknown"의 값을 가집니다.)
GetValue, SetValue, Sequencing Impacts
cmi.objectives.n.completion_status
n번째 학습목표에 대한 완료 여부입니다. ("completed", "incomplete", "not_attempted", "unknown"의 값을 가집니다.)
GetValue, SetValue
cmi.objectives.n.progress_measure
n번째 학습목표에 대한 진행정도를 나타냅니다.
GetValue, SetValue
cmi.objectives.n.description
n번째 학습목표에 대한 설명.
GetValue, SetValue
18. Progress Measure
cmi.progress_measure
학습자의 학습진행 정도를 0 ~ 1 사이의 값으로 표시
0 : "not attempted", 1: "completed", 0 < n < 1 : "imcomplete"
GetValue, SetValue, Sequencing Impacts
19. Scaled Passing Score
cmi.scaled_passing_score
SCO를 master하기 위해 요구되는 Pass 점수. -1.0 ~ 1.0 사이의 값으로 표시
GetValue
미니주석) cmi.completion_threshold와 cmi.scaled_passing_score를 구분하셔야 합니다.
전자는 SCO를 완료(complete)하기 위한 조건이고, 후자는 SCO를 마스터(master)하기 위한 조건입니다.
일반적으로 complete는 학습완료라고 보시면 되구요.. master는 pass/fail에서 pass라고 보는 것이 맞을 듯 합니다.
20. Score
cmi.objectives에서 살펴본 내용과 크게 다르지 않습니다.
다만, 특정 학습목표가 아니라 SCO 전체에 대한 점수라고 생각하시면 됩니다.
cmi.score._children
cmi.score 데이터 모델에서 지원하느 자식 엘리먼트 리스트
GetValue
cmi.score.scaled
SCO에 대한 학습자의 점수를 비율로 적용한 값. -1 ~ 1 사이의 값.
GetValue, SetValue, Sequencing Impacts
cmi.score.raw
SCO에 대한 학습자의 실제 점수
GetValue, SetValue
cmi.score.min
SCO에 대한 가능한 최소 점수
cmi.score.max
SCO에 대한 가능한 최대 점수
21. Session Time
cmi.session_time
현재 세션에서 해당 SCO를 학습한 시간.
SetValue
미니주석) 해당 SCO에 대한 총 학습시간은 cmi.total_time에 저장됩니다.
22. Success_status
cmi.success_status
학습자가 SCO를 마스터(master) 했는지 여부. "passed", "failed", "unknown" 값 중의 하나.
GetValue, SetValue, Sequencing Impacts
미니주석) cmi.completetion_status와 구분하시기 바랍니다. 학습완료(complete)는 했으나 마스터(master)하지 못하는 경우도 있습니다.
Scaled Passing Score, Scaled Score, Success Satus를 이용해 값을 결정합니다.
Completion Threshold, Progress Measure, Completion Status를 이용해 complete 여부를 결정했었죠..
23. Suspend Data
cmi.suspend_data
cmi.exit로 빠져나깔 때, 잠시 중지(suspend)하는 경우가 있습니다. 이 경우, 다시 돌아왔을 때 전에 사용하던 데이터를 유지할 필요가 있을 수 있습니다.
그럴 때 suspend_data를 이용해 정보를 저장해 두면 된다고 하네요~~
SetValue
24. Time Limit Action
cmi.time_limit_action
cmi.max_time_allowed가 초과되었을 때 SCO가 처리해야 하는 방식을 나타냄.
"exit_message" : 메시지를 보여주고 종료
"continue_message" : 메시지를 보여주고 계속 진행
"exit_no_message" : 메시지 보여주지 않고 종료
"continue_no_message" : 메시지 보여주지 않고 계속 진행
GetValue
25. Total Time
cmi.total_time
학습자가 SCO를 학습한 총 시간.
GetValue
미니주석) 기본적으로 total time과 같이 시간간격을 표현하는 형식은 다음과 같습니다.
P[yY][mM][dD][T[hH][mM][s[.s]S]]
예를 들어, P1Y3M2DT3H 는 1년 3개월 2일 3시간을 나타냅니다.
이상으로 SCORM 2004의 CMI 데이터 모델에 대한 정의를 마무리 했습니다.
다음 주에는 마지막으로 SCORM 2004의 시퀀싱에 대해 알아보려고 합니다.
그럼.. 좋은 하루 되세요~~ 2007. 4. 11 From 미니...