mirror of
https://github.com/jorenchik/mdemory.git
synced 2026-03-22 00:26:21 +00:00
883 lines
28 KiB
Plaintext
883 lines
28 KiB
Plaintext
#import "layout.typst": project, indent-par
|
|
#import "@preview/i-figured:0.1.0"
|
|
#import "@preview/tablex:0.0.6": tablex, rowspanx, colspanx, cellx
|
|
#import "utils.typst": *
|
|
|
|
#show: project.with(
|
|
university: "Latvijas Universitāte",
|
|
faculty: "Eksakto zinātņu un tehnoloģiju fakultāte",
|
|
title: [Atmiņas kartīšu lietotne ar domēna specifiskas valodas izmantošanu\ Kvalifikācijas darbs],
|
|
authors: ( "Jorens Štekeļs, js21283", ),
|
|
advisor: "prof. Dr. sc. comp. Laila Niedrīte",
|
|
date: "Rīga 2025",
|
|
)
|
|
|
|
#set heading(numbering: none)
|
|
|
|
#pagebreak(weak: true)
|
|
= Apzīmējumu saraksts
|
|
|
|
#par(
|
|
first-line-indent: 0cm,
|
|
[
|
|
/ API: lietojumprogrammu saskarne (angl. Application Program Interface);
|
|
/ Markdown: TODO;
|
|
/ Atzīmēšanas valoda: TODO;
|
|
// TODO: add all the terms
|
|
],
|
|
)
|
|
|
|
|
|
#pagebreak(weak: true)
|
|
|
|
= Ievads
|
|
|
|
== Nolūks
|
|
|
|
#indent-par([
|
|
Šī darba nolūks ir specificēt lietotnes programmatūras prasības un
|
|
aprakstīt tās projektējumu, kas tiek aprakstīta un izstrādāta
|
|
kvalifikācijas darba ietvaros.
|
|
])
|
|
|
|
== Darbības sfēra
|
|
|
|
// 1) identificēt programmatūras produkta nosaukumu, piemēram, "Pārskatu ģenerators", utt.,
|
|
// 2) paskaidrot kas programmatūras produktam jādara un, ja nepieciešams, kas
|
|
// nav jādara;
|
|
// 3) aprakstīt programmatūras produkta pielietojumu.
|
|
// a) Aprakstīt, cik iespējams precīzi, iespējas, centienus un mērķi. Piemēram,
|
|
// teikums: iespēja efektīvi izstrādāt pārskatus nav tik labs, kā parametrizēti,
|
|
// lietotāja vadīti un definēti pārskati divu stundu laikā, ar iespēju ievadīt
|
|
// lietotāja parametrus dialoga režīmā.
|
|
// b) Nepieļaut pretrunas, lietojot terminus, kas līdzīgi terminiem augstāka
|
|
// līmeņa LVS 68:1996 lpp. 15. (22) specifikācijā (piemēram, Sistēmprasību
|
|
|
|
|
|
// Kas ir atmiņas kartes
|
|
#indent-par([
|
|
Atmiņas kartītes (angl. flashcards) ir izplatīts veids, kā skolēni, studenti un
|
|
citi macošies cilvēki iegaumē materiālu. Šādu kartīšu pamatā parasti ir priekša
|
|
un aizmugura. Priekšā atrodas jautājums vai uzdevums vai cita informācija, kas
|
|
uzstāda mentālu vai praktisku uzdevumu, iespējams iekļaujot arī mājieni.
|
|
Aizmugurā atrodas atbildes teksts, kas ar sevi atbild vai parāda pareizu
|
|
atbildi uz priekšā uzstādītu jautājumu vai uzdevumu.
|
|
])
|
|
|
|
// Mācīšanās process un spaced-repetition
|
|
Mācīšanās nolūkiem tiek veidotas vairākas atmiņas kartītes uz līdzīgu tēmu,
|
|
veidojas kartīšu kaudzes. Mācīšanas seansā, tiek vērtēts, cik grūti vai viegli
|
|
jautājumi vai uzdevumi ir attiecīgi atbildāmi vai atrisināmi. Balstoties uz
|
|
grūtību vai iespēju atbildēt, kartītes tiek grupētas noteiktās grupās, kas,
|
|
savukārt, nosaka intervālu, pēc kura kartīte figurēs nākamā mācīšanās seansā.
|
|
Piemēram, grupas - ļoti viegli, vidēji, grūti, neizdevās -, kam atbilst 5
|
|
dienas, 3 dienas, 1 diena, 0 dienas attiecīgi. Jo lielāka ir subjektīva
|
|
piepūle, atbildot uz jautājumu vai risinot uzdevumu, jo tiek uzturēts garāks
|
|
pārtraukums pirms nākamās reizes, kad šī kartīte būs izmantota. Šī mācīšanās
|
|
metode ir atkārtošana ar intervāliem.
|
|
// TODO: add reference.
|
|
|
|
// Stuff mdemory does
|
|
Veidojot atmiņas kartītes manuāli tās var pazaudēt, var kļūdīties, sagatavojot
|
|
to tekstu. Tāpēc ir iespējams kartītes veidot un uzturēt, izmantojot tīmekļa
|
|
vai lokālo lietotni. Aprakstāmās programmatūras mērķis ir vienkāršot atmiņas
|
|
kartīšu veidošanu ar iespēju veidot, mainīt un glabāt atmiņas kartītes
|
|
vienkāršā tekstā un mācīies izmantojot atkārtošanu ar intervāliem. Atmiņas
|
|
kartītītes ir glabātas teksta failos un glabājas direktorijā, kas pilnībā
|
|
paliek lietotāja pārvaldē. Vienkārša teksta kartīšu glabāšana paredz, ka
|
|
lietotājs var brīvi pārvietot un mainīt kartīšu saturu, turpinot izmantot
|
|
programmatūras mācīšanās funkcionalitāti.
|
|
|
|
Uzsvars ir uz pilnīgu atmiņas kartīšanu glabāšanas pilnīgu caurspīdīgumu -
|
|
kartītes glabājas bez slēptas informācijas. Vienkārša teksta izmantošana bez
|
|
slēptas informācijas atbrīvo lietotāju no atkarības no šīs programmatūras ar
|
|
iespēju pārslēgties uz citu risinājumu ar dažām teksta izmaiņām.
|
|
|
|
// TODO: add someth??
|
|
|
|
// The name
|
|
Programmatūras produkta nosaukums ir "Mdemory", kas ir darināts nosaukums no
|
|
"MD" (atzīmēšanas valodas Markdown abreviatūra) un "memory" (angl. atmiņa), kas
|
|
parāda produkta saistību ar atmiņu.
|
|
|
|
== Saistība ar citiem dokumentiem
|
|
|
|
|
|
== Pārskats
|
|
|
|
// apraksts: Ievads
|
|
|
|
Ievadā tiek definēts nolūks darbības sfēra, aprakstīta galvenā programmatūras
|
|
produkta būtība un mērķi, saistītie dokumenti.
|
|
|
|
// apraksts: Vispārējs apraksts
|
|
// TODO
|
|
|
|
// apraksts: Programmatūras prasību specifikācija
|
|
// TODO
|
|
|
|
// apraksts: Programmatūras projektējuma apraksts
|
|
// TODO
|
|
|
|
#pagebreak(weak: true)
|
|
#set heading(numbering: "1.1.")
|
|
= Vispārējais apraksts
|
|
|
|
== Esošā stāvokļa apraksts
|
|
|
|
Esošie atmiņas kartīšu risinājumi galvenokārt atbalsta atmiņas
|
|
kartīšu importu ar vienkāršu tekstu. Taču lielākā daļa nedod iespēju
|
|
uzturēt kartītes bez vienkāršā tekstā, jo risinājumi glabā kartītes
|
|
savā, pielāgotā formātā.
|
|
|
|
Daži risinājumi iekļauj arī vairākus specializētus jautājumu veidus, kā grupēšanas
|
|
jautājumi, vairāku atbilžu jautājumus un secības jautājumus. Tādu risinājumu piemērs ir
|
|
"Quizlet" lietotne. Minētā importa funkcija parasti nav pieejama esošos risinājumos.
|
|
To importa funkcionalitāte realizē vienkāršu importu visbiežāk ar mērķi migrēt atmiņas kartītes
|
|
vienas lietotnes ietvaros.
|
|
|
|
// org-drill
|
|
Diezgan tuvs pēc funckionalitātes mērķiem ir "Emacs" teksta editora
|
|
papildinājums "org-drill". Tas piedāvā vienkārša teksta atmiņas kartīšu veidošanu
|
|
un glabāšanu ar vienkāršu tekstu ar augstu pielāgojamību. Toties tas pieprasa
|
|
"Emacs" teksta editora izmantošanu un ir domāta tehniskākiem lietotājiem mazāk
|
|
lietotājiem draudzīgas funkcionalitātes dēļ.
|
|
|
|
Pašlaik neviens no esošiem risinājumiem neatbalsta minēto specializēto atmiņas
|
|
kartīšu veidu importu.
|
|
|
|
== Pasūtītājs
|
|
|
|
Programmatūras produkts tiek izstrādāts pēc darba autora iniciatīvas
|
|
kvalifikācijas darba ietvaros.
|
|
|
|
== Produkta perspektīva
|
|
|
|
Risinājums ir patstāvīga darbvirmas lietotne. Lietotnes izstrādē ir izmantotas
|
|
lietotnes saskarnes bibliotēkas un programmēšanas valodas standarta bibliotēka.
|
|
Risinājums lasīs un izmainīs teksta failus no lietotāja norādītās direktorijas.
|
|
|
|
== Risinājuma lietotāji
|
|
|
|
Risinājumam ir viena lietotāju grupa, kam ir pieejamas visas risinājuma
|
|
iespējas un funkcijas.
|
|
|
|
Risinājuma augsta līmeņa datu plūsmas ir attēlota 0. līmeņa datu plūsmas
|
|
diagrammā (DPD; skat. @fig:dpd0 attēls). Lietotāju galvenā datu apmaiņa ir
|
|
atmiņas kartīšu dati un dati par saskarni ar kartītēm.
|
|
|
|
#figure(
|
|
caption: "0.līmeņa datu plūsmas diagramma",
|
|
placement: auto,
|
|
image("img/DPD0.svg"),
|
|
) <dpd0>
|
|
|
|
== Darījumprasības
|
|
|
|
+ Kartīšu failu apstrāde, izmantojot definēto domēna specifikas valodu;
|
|
+ Kartīšu saraksta veidošana;
|
|
+ Definēto jautājumu veidu tekstuāla atspoguļošana;
|
|
+ Definēto jautājumu veidu interaktīva mācīšanas funkcija;
|
|
+ Mācīšanās ar atkārtošanu ar intervāliem;
|
|
+ Kartīšu pievienošana, modifikācija un dzēšana sarakstā;
|
|
+ Vairāku kartīšu failu apstrāde direktorijā;
|
|
+ Kartīšu saglabāšana no saraksta.
|
|
|
|
== Pieņēmumi un atkarības
|
|
|
|
+ Lietotnes var tikt uzbūvēta darbam uz Windows vai Linux sistēmām, uz kurām ir
|
|
pieejamas risinājumā izmantotas saskarnes bibliotēkas;
|
|
+ Lietotājs atbild par atmiņas kartīšu failu glabāšanu;
|
|
|
|
#pagebreak(weak: true)
|
|
= Programmatūras prasību specifikācija
|
|
|
|
== Funkcionālās prasības
|
|
|
|
=== Augsta līmeņa valodas specifikācija
|
|
|
|
Kartīšu veidošanai vienkāršā tekstā tiek izmantota vienkārša
|
|
domēna specifiska valoda. Ir 4 jautājumu veidi, kuru struktūra
|
|
ir līdzīga ar dažām atšķirībām. Katrs jautājums sākas ar priekšu, kam
|
|
var būt skaitlis, kas apzīmē intervālu stundās, pēc kura tas būs atkārtoti izmantots.
|
|
|
|
```
|
|
- Ka sauc Latvijas galvaspilsētu? >
|
|
[...]
|
|
- [12.5] Ka sauc Igaunijas galvaspilsētu? >
|
|
[...]
|
|
```
|
|
|
|
Vienkāršs atbilžu jautājums ir jautājums, kam ir viena vai
|
|
vairākas pareizas atbildes, katra atbilde sākas ar "-".
|
|
|
|
```markdown
|
|
- Ka sauc Lietuvas galvas pilsētu? >
|
|
- Viļņus
|
|
- Nosauciet Baltijas valstis >
|
|
- Latvija
|
|
- Igaunija
|
|
- Lietuva
|
|
```
|
|
|
|
Izvēles jautājums ir jautājums, kam ir viens vai vairākas pareizas
|
|
atbildes, pareizās atbildes sākas ar "+", nepareizās -- ar "-".
|
|
|
|
```markdown
|
|
- Kuras no valstīm ir Baltijas valstis >
|
|
+ Latvija
|
|
- Rumānija
|
|
+ Lietuva
|
|
- Spānija
|
|
```
|
|
Secības jautājums.
|
|
|
|
```
|
|
- Sakārtojiet zinātniskās metodes soļus pareizā secībā >
|
|
-^ Uzdod jautājumu
|
|
-^ Izvirza hipotēzi
|
|
-^ Veic eksperimentu
|
|
-^ Analizē datus
|
|
```
|
|
|
|
==== Grupēšanas jautājums
|
|
|
|
// TODO
|
|
|
|
```
|
|
- Savienojiet planētas ar to īpašībām >
|
|
- Zeme:
|
|
- Satur dzīvi
|
|
- Jupiters:
|
|
- Lielākā planēta
|
|
- Ir gredzeni
|
|
- Venēra:
|
|
- Merkurs:
|
|
- Mazākā
|
|
- Saturns:
|
|
- Ir gredzeni
|
|
- Neptūns:
|
|
- Tālākā no saules
|
|
- Ir gredzeni
|
|
```
|
|
|
|
=== Jautājumu datu struktūra
|
|
|
|
// TODO jautājumu veidi
|
|
|
|
// TODO lappuse
|
|
|
|
=== Funkciju sadalījums moduļos
|
|
|
|
Risinājuma moduļi ar to saistītām datu plūsmām un datu glabātuvēm ir attēlots
|
|
1\. līmeņa DPD (skat. @fig:dpd1 attēls). Funkciju sadalījums moduļos ir
|
|
apraksīts sadalījuma tabulā (skat. @tbl:function_table tabula).
|
|
|
|
#figure(
|
|
caption: "1. līmeņa datu plūsmas diagramma",
|
|
placement: auto,
|
|
image("img/DPD1.svg"),
|
|
) <dpd1>
|
|
|
|
#pagebreak(weak: true)
|
|
#figure(
|
|
caption: "Funkciju sadalījums pa moduļiem",
|
|
kind: table,
|
|
tablex(
|
|
columns: 3,
|
|
/* --- header --- */
|
|
[*Modulis*], [*Funkcija*], [*Identifikators*],
|
|
/* -------------- */
|
|
|
|
rowspanx(8)[Atmiņas bāzes modulis],
|
|
[Kartīšu faila ielāde], [#link(<AB01>)[AB01]],
|
|
[Kartīšu saraksta lappušu izveidošana], [#link(<AB02>)[AB02]],
|
|
[Atmiņas bāzes lappuses iegūšana], [#link(<AB03>)[AB03]],
|
|
[Kartīšu pievienošana], [#link(<AB04>)[AB04]],
|
|
[Kartītes pirmteksta iegūšana], [#link(<AB05>)[AB05]],
|
|
[Kartītes redigēšana], [#link(<AB06>)[AB06]],
|
|
[Kartītes dzēšana], [#link(<AB07>)[AB07]],
|
|
[Kartītes faila saglabāšana], [#link(<AB08>)[AB08]],
|
|
|
|
rowspanx(5)[Mācīšanās modulis],
|
|
[Nākamās kartītes noteikšana], [#link(<MA01>)[MA01]],
|
|
[Izvēles kartītes pārbaude], [#link(<MA02>)[MA02]],
|
|
[Kārtošanas kartītes pārbaude], [#link(<MA03>)[MA03]],
|
|
[Grupēšanas kartītes pārbaude], [#link(<MA04>)[MA04]],
|
|
[Intervāla grupas atbildes sniegšana], [#link(<MA05>)[MA05]],
|
|
// un meta datu saglabāšana
|
|
|
|
rowspanx(3)[Konfigurācijas modulis],
|
|
[Konfigurācijas vērtības iegūšana], [#link(<KF01>)[KF01]],
|
|
[Konfigurācijas vērtību iegūšana], [#link(<KF02>)[KF02]],
|
|
[Konfigurācijas vērtības izmaiņa], [#link(<KF03>)[KF03]],
|
|
|
|
),
|
|
) <function_table>
|
|
|
|
=== Kopīgas procedūras
|
|
|
|
Vairākas prasībās definētās funkcijas izmanto kopīgas procedūras, kas tiek
|
|
definētas tabulās: #link(<PR01>)[PR01], #link(<PR02>)[PR02].
|
|
|
|
#procedure-table(
|
|
"Teksta jautājumu transpilēšana",
|
|
"PR01",
|
|
[
|
|
Procedūra apstrādā simbolu virkni, iegūstot jautājumu datu struktūru
|
|
objektus. Ir sagaidāms, ka simbolu virkne atbilst specificētai valodai. Ja
|
|
simbolu virkne valodai neatbilst, tiek izvadīta kļūda. Simbolu virkne tiek
|
|
apstrādāta vairākos posmos.
|
|
],
|
|
[
|
|
+ Simbolu virkne;
|
|
],
|
|
[
|
|
+ Tiek nolasīti simboli, sagrupējot to tekstvienībās;
|
|
+ Tiek veikta virspusēja gramatikas pārbaude;
|
|
+ Ja tiek sastapta tekstvienība, kas nav sagaidāma kādā kontekstā, beidz
|
|
apstrādi, izvadē pievienojot kļūdu ar tās pozīciju;
|
|
+ Tiek nolasīti jautājumi, nosakot to veidu pēc to struktūras:
|
|
+ Jautājuma sākums (jeb kartītes priekša);
|
|
+ Veidojot jautājumus tiek pielasīts arī intervāla laiks, ja tāds ir;
|
|
+ Pēc jautājuma sākuma ir viens vai vairākas atbildes jeb apakšpunkti;
|
|
+ Vairāki apakšpunkti ar "-" -- atbilžu jautājums;
|
|
+ Vairāki apakšpunkti ar "+" -- izvēles jautājums;
|
|
+ Vairāki apakšpunkti ar "-^" -- izvēles jautājums;
|
|
+ Vairāki apakšpunkti, kas beidzas ar ":",
|
|
kam seko apakšpunkti ar "-" (iespējams tos nenorādīt);
|
|
+ Jautājumu veidi ir nosakāmi bez tiešas vieda norādīšanas;
|
|
+ Ja nolasīšanas laikā parādās nesagaidīta tekstvienība, beidz apstrādi,
|
|
izvadē pievienojot kļūdu ar tās pozīciju;
|
|
],
|
|
[
|
|
+ Saraksts ar jautājumiem;
|
|
+ Kļūda ar tekstu un tās pozīciju saturā;
|
|
],
|
|
) <PR01>
|
|
|
|
#procedure-table(
|
|
"Teksta jautājumu detranspilēšana",
|
|
"PR02",
|
|
[
|
|
Procedūra apstrādā jautājumu sarakstu un izveido tam atbilstošu
|
|
simbolu virkni, kas atbilst specificētai valodai.
|
|
Papildus sākumā tiek pievienots datums un laiks, ja tas tiek padots,
|
|
kas ir daļa no metadatiem.
|
|
],
|
|
[
|
|
+ Jautājumu saraksts;
|
|
+ Datums un laiks;
|
|
],
|
|
[
|
|
+ Iegūst konfigurācijas vērtības, kas nosaka cik plats ir tabulācijas simbols
|
|
un kāds ir maksimāls rindiņas platums pirms tiek veidots jaunās rindas simbols;
|
|
// TODO: define datetime format
|
|
+ Ja datums un laiks ir padots, pievieno datumu un laiku atbilsoši formātam;
|
|
+ Katram jautājumam veic sekojošo:
|
|
+ Pievieno jautājuma sākumu (jeb priekšu) ar intervāla skaitli, ja tāds ir;
|
|
+ Pievieno apakšpunktus atbilstoši tā veidam;
|
|
+ Vairāki apakšpunkti ar "-" -- atbilžu jautājums;
|
|
+ Vairāki apakšpunkti ar "+" -- izvēles jautājums;
|
|
+ Vairāki apakšpunkti ar "-^" -- izvēles jautājums;
|
|
+ Vairāki apakšpunkti, kas beidzas ar ":", kam seko apakšpunkti ar "-";
|
|
+ Veidojot jautājumus ievēro iegūtās konfigurācijas vērtības;
|
|
],
|
|
[
|
|
+ Simbolu virkne;
|
|
],
|
|
) <PR02>
|
|
|
|
|
|
=== Atmiņas bāzes modulis
|
|
|
|
Atmiņas bāze ir direktorijs ar atmiņas kartīšu failiem. Modulis atbild par
|
|
mijiedarbību ar atmiņas šiem failiem un atmiņas kartīšu prezentēšanu. Šī moduļa
|
|
funkcijas ir izmantotas atmiņu kartīšu saraksta funkcionalitātei. Funkcijas
|
|
mijiedarbojas ar pagaidu glabātuvē esošām atmiņas kartītēm un failu glabātuves
|
|
failiem, kas satur atmiņu kartīšu informāju. Ar funkcijām saistītas datuplūsmas
|
|
ir attēlotas moduļa 2. līmeņa DPD (skat. @fig:abdpd2 attēlu).
|
|
Moduļa funkcijas tiek definētas tabulās:
|
|
#link(<AB01>)[AB01],
|
|
#link(<AB02>)[AB02],
|
|
#link(<AB03>)[AB03],
|
|
#link(<AB04>)[AB04],
|
|
#link(<AB05>)[AB05],
|
|
#link(<AB06>)[AB06],
|
|
#link(<AB07>)[AB07],
|
|
#link(<AB08>)[AB08].
|
|
|
|
#figure(
|
|
caption: "Atmiņas bāzes moduļa 2.līmeņa datu plūsmas diagramma",
|
|
placement: auto,
|
|
image("img/ABDPD2.svg"),
|
|
) <abdpd2>
|
|
|
|
#pagebreak(weak:true)
|
|
#function-table(
|
|
"Kartīšu faila ielāde",
|
|
"AB01",
|
|
[
|
|
Funkcija apstrādā faila saturu. Iegūstot objektus ar jautājumu dati
|
|
un ar to saistītiem metadatiem. Ieejas failam jāatbilst valodas
|
|
specifikācijai.
|
|
],
|
|
[
|
|
+ Ievades faila ceļš ar noteiktu paplašinājumu;
|
|
],
|
|
[
|
|
+ Faila saturs tiek ielādēts atmiņā:
|
|
+ Ja faila ielāde ir neveiksmīga, parāda 1. paziņojumu.
|
|
+ Tiek nolasīts datums un laiks no faila sākuma, ja tāds eksistē:
|
|
+ Ja datuma un laika formāts nav korekts, parāda 2. paziņojumu
|
|
ar atbilsošu iemeslu un kļūdas pazīmi, beidz apstrādi.
|
|
+ Tiek iegūti jautājuma objekti, izmantojot procedūru #link(<PR01>)[PR01]\;
|
|
+ Ja radās kļūda, parāda 2. paziņojumu ar kļūdas informāciju, beidz
|
|
apstrādi.
|
|
+ Ja kādā no apstrādes posmiem radās kļūda, parāda 2. paziņojumu
|
|
ar atbilstošu iemeslu un kļūdas pozīciju, beidz apstrādi.
|
|
],
|
|
[
|
|
+ Saraksts ar jautājumiem;
|
|
+ Faila reģistrēts datums un laiks;
|
|
],
|
|
[
|
|
+ Ielādes kļūda: neizdevās atvert failu;
|
|
+ Ielādes kļūda: [kļūdas iemesls] [kļūdas rinda]:[kļūdas kolonna];
|
|
],
|
|
) <AB01>
|
|
|
|
#pagebreak(weak:true)
|
|
#function-table(
|
|
"Kartīšu saraksta lappušu izveidošana",
|
|
"AB02",
|
|
[
|
|
Funkcija izveido vairākas lappuses, sadalot atmiņā esošus jautājumu
|
|
objektus intervālos. Lappušu izmērs ir noteikts ar konfigurācijas
|
|
parametrus.
|
|
],
|
|
[
|
|
+ Jautājumu objektu saraksts;
|
|
],
|
|
[
|
|
+ No konfigurācijas tiek iegūts jautājumu skaits lappusē, un rādāmo lappušu
|
|
pogu skaits;
|
|
+ Jautājumi tiek sadalīti lappusēs, veidojot lappušu objektus, katrā tiek
|
|
ievietotas references uz jautājumiem. Lappušu pogu skaits atbilst
|
|
konfigurācijas vērtībai;
|
|
],
|
|
[
|
|
+ Lappušu objektu saraksts;
|
|
],
|
|
[
|
|
Funkcijai nav paziņojumu.
|
|
],
|
|
) <AB02>
|
|
|
|
#function-table(
|
|
"Atmiņas bāzes lappuses iegūšana",
|
|
"AB03",
|
|
[
|
|
Funkcija iegūst jautājumu objektu intervālu
|
|
no pagaidu glabātuves.
|
|
],
|
|
[
|
|
+ Lappuses numurs;
|
|
],
|
|
[
|
|
+ No pagaides atmiņas kartīšu glabātuves tiek iegūtas atmiņas kartīšu lappuses;
|
|
+ Tiek meklēts lappušu objekts ar norādīto numuru;
|
|
+ Ja lappuse tiek atrasta, saistītie atmiņas kartīšu objekti tiek atgriezti;
|
|
+ Ja tāda lappuse netiek atrasta, parāda 1. paziņojumu;
|
|
+
|
|
],
|
|
[
|
|
+ Saraksts ar lappuses atmiņas kartīšu objektiem;
|
|
],
|
|
[
|
|
+ Pieprasītā lappuse neeksistē;
|
|
],
|
|
) <AB03>
|
|
|
|
#function-table(
|
|
"Kartīšu pievienošana",
|
|
"AB04",
|
|
[
|
|
Funkcija pieņem lietotāja ievadīto tekstu un pārveido to jautājumu
|
|
objektos, kas pievieno tos jau esošiem jautājumiem.
|
|
],
|
|
[
|
|
+ Simbolu virkne;
|
|
],
|
|
[
|
|
+ Ja ievadīts teksts, parāda 1. paziņojumu, beidz apstrādi;
|
|
+ Apstrādā simbolu virkni, izmantojot #link(<PR01>)[PR01]\;
|
|
+ Ja tiek izvadīta kļūda, parāda 2. paziņojumu ar kļūdas informāciju,
|
|
beidz apstrādi;
|
|
],
|
|
[
|
|
Izvades jautājuma objekti tiek pievienoti jautājumu pagaidu
|
|
glabātuvē.
|
|
Saskarnē parādās indikators, ka atmiņas kartīšu fails tika izmainīts.
|
|
|
|
+ Lappušu objektu saraksts;
|
|
],
|
|
[
|
|
+ Nav ievadīts neviens jautājums;
|
|
+ Ielādes kļūda: [kļūdas iemesls] [kļūdas rinda]:[kļūdas kolonna];
|
|
],
|
|
) <AB04>
|
|
|
|
#function-table(
|
|
"Kartītes pirmteksta iegūšana",
|
|
"AB05",
|
|
[
|
|
Funkcija iegūst kartītes pirmtekstu, kas atbilst valodas specifikācijai.
|
|
Funkcija ir specializēts procedūras izmantošanas gadījums, kurā tiek
|
|
detranspilēts tikai viens jautājums.
|
|
|
|
Funkcija ir izmantota redigēšanas iespējai.
|
|
],
|
|
[
|
|
+ Jautājuma objekts;
|
|
],
|
|
[
|
|
+ Izmantojot procedūru #link(<PR01>)[PR01], jautājums tiek detranspilēts
|
|
pirmtekstā\;
|
|
],
|
|
[
|
|
+ Simbolu virkne -- jautājuma pirmteskts;
|
|
],
|
|
[
|
|
Funkcijai nav paziņojumu.
|
|
Saskarnē parādās indikators, ka atmiņas kartīšu fails tika izmainīts.
|
|
],
|
|
) <AB05>
|
|
|
|
#function-table(
|
|
"Kartītes redigēšana",
|
|
"AB06",
|
|
[
|
|
Funkcija izmaina esošo jautājumu, pēc to pirmteksta, kas atbilst
|
|
valodas specifikācijai.
|
|
],
|
|
[
|
|
+ Jautājuma objekts;
|
|
+ Jautājuma pirmteksts;
|
|
],
|
|
[
|
|
+ Ja ievades teksts ir tukšs, parāda 1. paziņojumu, beidz apstrādi;
|
|
+ Izmantojot #link(<PR01>)[PR01], tiek iegūts jautājuma objekts no sniegtā
|
|
pirmteksta;
|
|
+ Ja tiek izvadīta kļūda, parāda 1. paziņojumu ar atbilstošu kļūdas informāciju,
|
|
beidz apstrādi;
|
|
+ Padotais jautājuma objekts tiek atjaunots ar iegūta objekta datiem;
|
|
],
|
|
[
|
|
+ Jautājuma objekts;
|
|
],
|
|
[
|
|
Izvades jautājuma objekts tiek atjaunots atbilsošam ierakstu jautājumu pagaidu
|
|
glabātuvē.
|
|
Saskarnē parādās indikators, ka atmiņas kartīšu fails tika izmainīts.
|
|
|
|
+ Nav ievadīts neviens jautājums;
|
|
+ Redigēšanas kļūda: [kļūdas iemesls] [kļūdas rinda]:[kļūdas kolonna];
|
|
],
|
|
) <AB06>
|
|
|
|
#function-table(
|
|
"Kartītes dzēšana",
|
|
"AB07",
|
|
[
|
|
Funkcija izdēš kartīti no pagaidu glabātuves.
|
|
],
|
|
[
|
|
+ Jautājuma reference;
|
|
],
|
|
[
|
|
+ Jautājums tiek sameklēts un izdzēsts;
|
|
],
|
|
[
|
|
Funkcijai nav izvades.
|
|
],
|
|
[
|
|
Funkcijai nav paziņojumu.
|
|
],
|
|
) <AB07>
|
|
|
|
#function-table(
|
|
"Kartītes faila saglabāšana",
|
|
"AB08",
|
|
[
|
|
Funkcija saglabā kartīšu jautājumus un metadatus tam atbilstošā
|
|
failā, pārveidojot tos valodai atbilstošā formātā.
|
|
],
|
|
[
|
|
+ Faila atrašanās ceļš;
|
|
+ Jautājumu saraksts;
|
|
+ Datums un laiks;
|
|
],
|
|
[
|
|
+ Iegūst pirmtekstu padotajiem objektiem, izmantojot procedūru #link(<PR02>)[PR02]\;
|
|
+ Ja tiek izvadīta kļūda, parāda 2. paziņojumu ar kļūdas informāciju, beidz apstrādi;
|
|
+ Izveido vai atver failu padotā ceļā;
|
|
+ Ja atveršana vai izveidošana neizdevās, parāda 1. paziņojumu;
|
|
+ Pievienot iegūto saturu failam un saglabā to;
|
|
],
|
|
[
|
|
Fails tiks atjaunots failu sistēmā.
|
|
Saskarnē pazūd indikators, ka atmiņas kartīšu fails tika izmainīts.
|
|
],
|
|
[
|
|
+ Neizdevās atvērt vai izveidot atmiņas kartīšu failu;
|
|
+ Redigēšanas kļūda: [kļūdas iemesls] [kļūdas rinda]:[kļūdas kolonna];
|
|
],
|
|
) <AB08>
|
|
|
|
|
|
=== Mācīšanās modulis
|
|
|
|
Mācīšanās risinājuma kontekstā ir kartīšu prezentēšana ar interaktīvu atbildes
|
|
funkcionalitāti, atbilsoši atmiņas kartītes tipam. Šī moduļa funkcijas ir
|
|
izmantotas mācīšanās loga funkcionalitātei. Funkcijas ietver darbības ar pagaidu
|
|
glabātuvē esošām atmiņas kartītēm. Ar funkcijām saistītas datuplūsmas ir
|
|
attēlotas moduļa 2. līmeņa DPD (skat. @fig:madpd2 attēlu).
|
|
Moduļa funkcijas tiek definētas tabulās:
|
|
#link(<MA01>)[MA01],
|
|
#link(<MA02>)[MA02],
|
|
#link(<MA03>)[MA03],
|
|
#link(<MA04>)[MA04],
|
|
#link(<MA05>)[MA05].
|
|
|
|
#figure(
|
|
caption: "Mācīšanās moduļa 2.līmeņa datu plūsmas diagramma",
|
|
placement: auto,
|
|
image("img/MADPD2.svg"),
|
|
) <madpd2>
|
|
|
|
#pagebreak(weak: true)
|
|
#function-table(
|
|
"Nākamās kartītes noteikšana",
|
|
"MA01",
|
|
[
|
|
Funkcija nosaka nākamo kartīti, kas tiks parādīta lietotājam
|
|
mācīšanas procesā. Kartīšu secību nosaka mācīšanās algoritms.
|
|
],
|
|
[
|
|
+ Pašreizējais kartīte -- kartītes objekts;
|
|
+ Algoritms -- viens no vertībām: "fizisks", "nejaušs", "intervālu"\;
|
|
],
|
|
[
|
|
+ Ja pagaidu kartīšu glabāvē nav nevienas kartītes, beidz apstrādi, neatgriežot
|
|
kartīti;
|
|
+ Ja padotais algoritms ir "fizisks";
|
|
+ Ja pašreizējā kartīte ir padota, izvēlās nākamo kartīti starp pagaidu
|
|
kartīšu glabātuves;
|
|
+ Citādi izvēlas pirmo kartīti no pagaidu kartīšu glabātuves;
|
|
+ Ja padotais algoritms ir "nejaušs";
|
|
+ Izvēlas nākamo kartīti nejaušā kārtībā starp pagaidu kartīšu glabātuves;
|
|
+ Ja padotais algoritms ir "intervālu";
|
|
+ No pagaidu kartīšu glabātuves izvēlas tikai to, kur nav norādīts intervāls
|
|
vai intervāls ir 0;
|
|
+ No šī saraksta izvēlas nākamo kartīti nejaušā kārtībā;
|
|
],
|
|
[
|
|
// Add null explanation
|
|
+ Nākamās kartītes objekts (iespējams nulles objekts);
|
|
],
|
|
[
|
|
Funkcijai nav paziņojumu.
|
|
],
|
|
) <MA01>
|
|
|
|
#function-table(
|
|
"Izvēles kartītes pārbaude",
|
|
"MA02",
|
|
[
|
|
Veic jautājuma atbildes pārbaudi izvēles kartītes jautājuma veidam.
|
|
],
|
|
[
|
|
+ Izvēlēto atbilžu simbolu virkņu saraksts ar pazīmi, vai atbilde ir izvēlēta;
|
|
+ Izvēles jautājuma objekts;
|
|
],
|
|
[
|
|
+ Izskata abus sarakstus paralēli;
|
|
+ Ja atbildes un jautājuma objektu izvēles elementa pazīmes sakrīt
|
|
(piemēram, "pareizs" un "pareizs");
|
|
+ Atbilžu elementam uzstāda pareizuma pazīmi kā "pareizs";
|
|
+ Citādi uzstāda atbildes pareizuma atbildi kā "nepareizs";
|
|
],
|
|
[
|
|
+ Izvēlēto atbilžu simbolu virkņu saraksts ar pareizuma karodziņu vērtībām;
|
|
],
|
|
[
|
|
Funkcijai nav paziņojumu.
|
|
],
|
|
) <MA02>
|
|
|
|
#function-table(
|
|
"Kārtošanas kartītes pārbaude",
|
|
"MA03",
|
|
[
|
|
Veic jautājuma atbildes pārbaudi kārtošanas kartītes jautājuma veidam.
|
|
],
|
|
[
|
|
+ Atbilžu simbolu virkņu saraksts;
|
|
+ Jautājuma objekts;
|
|
],
|
|
[
|
|
+ Izskata abus sarakstus paralēli;
|
|
+ Ja atbildes un jautājuma objektu izvēles elementa sakrīt, atbilžu
|
|
elementam uzstāda pareizuma pazīmi kā "pareizs";
|
|
+ Citādi uzstāda atbildes pareizuma atbildi kā "nepareizs";
|
|
],
|
|
[
|
|
+ Atbilžu simbolu virkņu saraksts ar pareizuma karodziņu vērtībām;
|
|
],
|
|
[
|
|
Funkcijai nav paziņojumu.
|
|
],
|
|
) <MA03>
|
|
|
|
#function-table(
|
|
"Grupēšanas kartītes pārbaude",
|
|
"MA04",
|
|
[
|
|
Veic jautājuma atbildes pārbaudi grupēšanas kartītes jautājuma veidam.
|
|
],
|
|
[
|
|
+ Negrupēto elementu simbolu virkņu saraksts;
|
|
+ Grupētu simbolu virkņu sarakstu saraksts;
|
|
+ Jautājuma objekts;
|
|
],
|
|
[
|
|
+ Katram nesagrupētam elementam uzstāda pareizuma pazīmi uz "nepareizs";
|
|
+ Katru grupai atbilžu un jautājuma objekta saraksta grupu izskata paralēli;
|
|
+ Elementiem, kas sakrīt abos sarakstos, atbilžu sarakstā uzstāda pareizuma
|
|
pazīmi uz "pareizs";
|
|
+ Elementiem, kas nav jautājuma atbildes grupā pareizuma pazīmi uz "nepareizs";
|
|
],
|
|
[
|
|
+ Negrupēto elementu simbolu virkņu saraksts ar pareizuma karodziņu vērtībām;
|
|
+ Grupētu simbolu virkņu sarakstu saraksts ar pareizuma karodziņu vērtībām;
|
|
],
|
|
[
|
|
Funkcijai nav paziņojumu.
|
|
],
|
|
) <MA04>
|
|
|
|
#function-table(
|
|
"Intervāla grupas atbildes sniegšana",
|
|
"MA05",
|
|
[
|
|
Izmaina jautājuma objektu atbilstoši izvēlētam grūtības vai izpuldījuma
|
|
vērējumam veicot kartītes atbildi. Atbilstošie intervāli tiek iegūti no
|
|
konfigurācijas.
|
|
],
|
|
[
|
|
+ Intervāla atbilde -- viens no: "nav atbildēts", "grūti", "vidēji",
|
|
"viegli", "ļoti viegli";
|
|
+ Jautājuma objekts;
|
|
],
|
|
[
|
|
+ No konfigurācijas glabātuves tiek iegūts intervāls, kas atbilst sniegtai
|
|
atbildei;
|
|
+ Jautājumam tiek uzstādīts intervāls;
|
|
],
|
|
[
|
|
+ Izmainīts jautājuma objekts;
|
|
],
|
|
[
|
|
Funkcijai nav paziņojumu.
|
|
],
|
|
) <MA05>
|
|
|
|
=== Konfigurācijas modulis
|
|
|
|
Konfigurācijas modulis iekļauj parametrus, ko var personalizēt saistībā ar
|
|
mācīšanās procesu, prezentāciju uc. Šī moduļa funkcijas ir izmantotas
|
|
konfigurējot vērtības, kas tiek glabātas konfigurācijas failā un tiek
|
|
izmantotas risinājuma funkcionalitātē, kur tās aspektiem piemīt konfigurējamas
|
|
vērtības. Ar funkcijām saistītas datuplūsmas ir attēlotas moduļa 2. līmeņa DPD
|
|
(skat. @fig:kfdpd2 attēlu).
|
|
Moduļa funkcijas tiek definētas tabulās:
|
|
#link(<KF01>)[KF01],
|
|
#link(<KF02>)[KF02],
|
|
#link(<KF03>)[KF03].
|
|
|
|
#figure(
|
|
caption: "Konfigurācijas moduļa 2.līmeņa datu plūsmas diagramma",
|
|
placement: auto,
|
|
image("img/KFDPD2.svg"),
|
|
) <kfdpd2>
|
|
|
|
|
|
#function-table(
|
|
"Konfigurācijas vērtības iegūšana",
|
|
"KF01",
|
|
[
|
|
Funkcijas iegūst vienu definēo konfigurācijas vērtību.
|
|
],
|
|
[
|
|
+ Vērtības atslēga -- simbolu virkne;
|
|
],
|
|
[
|
|
+ Ja konfigurācija vēl nebija ielādēta, tiek ielādēts konfigurācijas fails;
|
|
+ Ielādētā konfigurācijā tiek sameklēts konfigurācijas vērības ieraksts;
|
|
],
|
|
[
|
|
+ Konfigurācijas vērtība -- viens no: skaitlis, simbolu virkne, karodziņs;
|
|
],
|
|
[
|
|
+ Konfigurācijas fails nav korekts, nevar nolasīt konfigurāciju;
|
|
],
|
|
) <KF01>
|
|
|
|
#function-table(
|
|
"Konfigurācijas vērtību iegūšana",
|
|
"KF02",
|
|
[
|
|
Funkcija iegūst visas definētās konfigurācijas vērtības.
|
|
],
|
|
[
|
|
+ Vērtības atslēga -- simbolu virkne;
|
|
],
|
|
[
|
|
+ Ja konfigurācija vēl nebija ielādēta, tiek ielādēts konfigurācijas fails;
|
|
+ Ielādētā konfigurācijā tiek iegūtas vērtības;
|
|
],
|
|
[
|
|
+ Konfigurācijas vērtību saraksts -- viens no: skaitlis, simbolu virkne, karodziņs;
|
|
],
|
|
[
|
|
+ Konfigurācijas fails nav korekts, nevar nolasīt konfigurāciju;
|
|
],
|
|
) <KF02>
|
|
|
|
#function-table(
|
|
"Konfigurācijas vērtības izmaiņa",
|
|
"KF03",
|
|
[
|
|
Funkcija izmaina vērtību no definētām konfigurācijas vērtībām.
|
|
],
|
|
[
|
|
+ Vērtības atslēga -- simbolu virkne;
|
|
+ Konfigurācijas vērtība -- viens no: skaitlis, simbolu virkne, karodziņs;
|
|
],
|
|
[
|
|
+ Ja konfigurācija vēl nebija ielādēta, tiek ielādēts konfigurācijas fails;
|
|
+ Konfigurācijas vērtība ar ievadīto atslēgu tiek izmainītu uz ievadīto konfigurācijas vērtību;
|
|
],
|
|
[
|
|
+ Izmainīta konfigurācijas faila saturs;
|
|
],
|
|
[
|
|
+ Konfigurācijas fails nav korekts, nevar rediģēt konfigurāciju;
|
|
],
|
|
) <KF03>
|
|
|
|
#pagebreak(weak: true)
|
|
= Programmatūras projektējuma apraksts
|
|
|