mirror of
https://github.com/jorenchik/mdemory.git
synced 2026-03-22 00:26:21 +00:00
311 lines
11 KiB
Plaintext
311 lines
11 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 specifiskās 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;
|
|
],
|
|
)
|
|
|
|
|
|
#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: 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: import / manage all questions
|
|
|
|
// 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 aprakstīta galvenā programmatūras produkta būtība.
|
|
// TODO
|
|
|
|
// 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
|
|
|
|
=== 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).
|
|
|
|
#figure(
|
|
caption: "1. līmeņa datu plūsmas diagramma",
|
|
placement: auto,
|
|
image("img/DPD1.svg"),
|
|
) <dpd1>
|
|
|
|
Funkciju sadalījums moduļos ir apraksīts sadalījuma tabulā (skat. @tbl:function_table).
|
|
|
|
#pagebreak(weak: true)
|
|
#figure(
|
|
caption: "Funkciju sadalījums pa moduļiem",
|
|
kind: table,
|
|
tablex(
|
|
columns: 3,
|
|
/* --- header --- */
|
|
[*Modulis*], [*Funkcija*], [*Identifikators*],
|
|
/* -------------- */
|
|
|
|
// TODO links: #link<AMF01>[AMF01]
|
|
// TODO: adjust the rowspanxes
|
|
|
|
rowspanx(7)[Atmiņas bāzes modulis],
|
|
[Kartīšu faila ielāde], [AB01],
|
|
[Kartīšu saraksta lappuses izveidošana], [AB02],
|
|
[Kartītes pievienošana], [AB03],
|
|
[Kartītes redigēšana], [AB04],
|
|
[Kartītes dzēšana], [AB05],
|
|
[Kartītes faila saglabāšana], [AB06],
|
|
[Atmiņas bāzes saraksta parādīšana], [AB07],
|
|
// TODO ielāde??
|
|
|
|
rowspanx(6)[Mācīšanās modulis],
|
|
[Nākamās kartītes noteikšana], [MA01],
|
|
[Atbildes kartītes pārbaude], [MA02],
|
|
[Vairāku atbilžu kartītes pārbaude], [MA03],
|
|
[Kārtošanas kartītes pārbaude], [MA04],
|
|
[Grupēšanas kartītes pārbaude], [MA05],
|
|
[Intervāla grupas atbildes sniegšana], [MA06],
|
|
// un meta datu saglabāšana
|
|
|
|
rowspanx(3)[Konfigurācijas modulis],
|
|
[Konfigurācijas vērtības iegūšana], [KF01],
|
|
[Konfigurācijas vērtību iegūšana], [KF02],
|
|
[Konfigurācijas vērtības izmaiņa], [KF03],
|
|
|
|
),
|
|
) <function_table>
|
|
|
|
=== 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.
|
|
|
|
#figure(
|
|
caption: "Atmiņas bāzes moduļa 2.līmeņa datu plūsmas diagramma",
|
|
placement: auto,
|
|
image("img/ABDPD2.svg"),
|
|
) <abdpd2>
|
|
|
|
#function-table(
|
|
"Kartīšu faila ielāde",
|
|
"AB01",
|
|
[
|
|
Funkcija apstrādā faila saturu. Iegūstot objektus ar jautājum dati
|
|
un ar to saistītiem metadatiem. Ieejas failam jāatbilst valodas
|
|
specifikācijai.
|
|
],
|
|
[
|
|
+ Ievades fails ar noteiktu paplašinājumu;
|
|
],
|
|
[
|
|
+ Faila saturs tiek ielādēts atmiņā;
|
|
+ Saturs tiek pārveidots reprezentācijā;
|
|
+ Faila saturs tiek validēts pēc satura, iekļaujot pārbaudes uz
|
|
],
|
|
[
|
|
],
|
|
[
|
|
+ Transpilācijas kļūda: [kļūdas rinda]:[kļūdas kolonna];
|
|
],
|
|
) <AB01>
|
|
|
|
=== 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.
|
|
|
|
#figure(
|
|
caption: "Mācīšanās moduļa 2.līmeņa datu plūsmas diagramma",
|
|
placement: auto,
|
|
image("img/MADPD2.svg"),
|
|
) <madpd2>
|
|
|
|
=== Konfigurācijas modulis
|
|
|
|
Konfigurācijas modulis iekļauj parametrus, ko var personalizēt
|
|
saistībā ar mācīšanās procesu, prezentāciju uc.
|
|
|
|
#figure(
|
|
caption: "Konfigurācijas moduļa 2.līmeņa datu plūsmas diagramma",
|
|
placement: auto,
|
|
image("img/KFDPD2.svg"),
|
|
) <kfdpd2>
|
|
|
|
|
|
#pagebreak(weak: true)
|
|
= Programmatūras projektējuma apraksts
|
|
|