Files
mdemory/docs/main.typst
2024-10-12 17:00:28 +03:00

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