Add abstract and project organization

This commit is contained in:
Kristofers Solo 2024-12-02 17:25:39 +02:00
parent 91eca5ce41
commit 684b56bd9a
7 changed files with 282 additions and 47 deletions

View File

@ -1,4 +1,5 @@
#import "@preview/dashy-todo:0.0.1": todo #import "@preview/dashy-todo:0.0.1": todo
#import "@preview/wordometer:0.1.3": word-count, total-words
#pagebreak() #pagebreak()
#heading( #heading(
level: 1, level: 1,
@ -6,11 +7,20 @@
numbering: none, numbering: none,
"Anotācija", "Anotācija",
) )
Kvalifikācijas darbā ir izstrādāta spēle "Maze Ascension", kas piedāvā
spēlētājiem izaicinājumu iziet cauri proceduāli ģenerētiem sešstūrainam
labirintiem. Spēle ir veidota, izmantojot Rust programmēšanas valodu un Bevy
spēļu dzinēju.
#lorem(100) Darba gaitā tika izstrādāta "hexlab" bibliotēka labirintu ģenerēšanai, kas tika
atdalīta no galvenās spēles loģikas. Labirintu ģenerēšanai tiek izmantots
#todo("Uzrakstīt anotāciju (līdz 850 rakstzīmēm)") rekursīvās atpakaļizsekošanas algoritms, kas nodrošina, ka katrai šūnai var
piekļūt no jebkuras citas šūnas.
Spēle ir izstrādāta kā vienspēlētāja režīmā ar progresējošu grūtības
pakāpi, kur katrs nākamais līmenis piedāvā lielāku labirintu. Spēle ir pieejama
gan kā lejupielādējama versija Windows, Linux un macOS platformām, gan kā
tīmekļa versija, izmantojot WebAssembly tehnoloģiju.
#par( #par(
first-line-indent: 0cm, first-line-indent: 0cm,
@ -36,13 +46,20 @@ papilspējas.
numbering: none, numbering: none,
"Abstract", "Abstract",
) )
_"Maze Ascension" is a minimalist maze exploration game built using the Bevy The qualification work includes the game "Maze Ascension", which offers
engine. The game features simple visuals with hexagonal tiles forming the maze players the challenge to pass through procedurally generated hexagons
structure on a white background with black borders, and a stickman-style player mazes. The game is built using the Rust programming language and Bevy
character. Players navigate through multiple levels of increasing difficulty, game engine.
progressing vertically as they climb up through levels. The game includes
power-ups and abilities hidden throughout the maze, and later introduces the The work included the development of a "hexlab" library for maze generation,
ability to move between levels freely._ which was separated from the main game logic. The maze generation is a
recursive backtracking algorithm which ensures that each cell can be
accessed from any other cell.
The game is designed as a single-player mode with progressive difficulty
with each successive level offering a larger maze. The game is available
as a downloadable version for Windows, Linux and macOS platforms, and as
as a web-based version using WebAssembly technology.
#todo("līdz 850 rakstzīmēm") #todo("līdz 850 rakstzīmēm")
#par( #par(
first-line-indent: 0cm, first-line-indent: 0cm,

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 52 KiB

View File

@ -71,3 +71,43 @@ omg-uml:
date: 2015-03 date: 2015-03
url: https://www.omg.org/spec/UML/2.5/PDF url: https://www.omg.org/spec/UML/2.5/PDF
page-total: 794 page-total: 794
clippy:
type: Web
title: Clippy
author: Rust Projekta Izstādātāji
url: https://doc.rust-lang.org/clippy/usage.html
rustfmt:
type: Web
title: Rustfmt
author: Rust Projekta Izstādātāji
url: https://github.com/rust-lang/rustfmt
cargo-doc:
type: Web
title: cargo-doc
author: Rust Projekta Izstādātāji
url: https://doc.rust-lang.org/cargo/commands/cargo-doc.html
rust-style:
type: Web
title: Rust stila ceļvedis
author: Rust Projekta Izstādātāji
url: https://doc.rust-lang.org/nightly/style-guide/
hexlab:
type: Web
title: Hexlab bibliotēka
author: Kristiāns Francis Cagulis
url: https://crates.io/crates/hexlab
hexlab-docs:
type: Web
title: Hexlab bibliotēkas dokumentācija
author: Kristiāns Francis Cagulis
url: https://docs.rs/hexlab/latest/hexlab/
justfile:
type: Web
title: Just programmētāja rokasgrāmata
author: Casey Rodarmor
url: https://just.systems/man/en/
gh-release:
type: Web
title: Par laidieniem
author: GitHub komanda
url: https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases

88
doc.typ Normal file
View File

@ -0,0 +1,88 @@
#import "@preview/tablex:0.0.9": tablex
#let vspace = 1fr
#heading(numbering: none, outlined: false, "Dokumentārā lapa")
#v(vspace)
Kvalifikācijas darbs "Spēles izstrāde, izmantojot Bevy spēļu dzinēju" ir
izstrādāts Latvijas Universitātes eksakto zinātņu un tehnoloģiju fakultātē.
Darba autors apliecina, ka darbs ir veikts patstāvīgi, un ir izmantoti tikai
tajā norādītie informācijas avoti.
#v(vspace)
#figure(
tablex(
stroke: none,
columns: (1fr, 1fr),
"Darba autors:",
[
Kristiāns Francis Cagulis, kc22015
],
),
)
#v(vspace)
#figure(
tablex(
stroke: none,
columns: (1fr, 1fr),
"Darba vadītājs:",
"prof. Mg. dat. Jānis Iljins",
),
)
#v(vspace)
#figure(
tablex(
stroke: none,
columns: (1fr, 1fr),
"Darba galīgā versija izgatavota:",
"x.01.2025.",
),
)
#v(vspace)
#figure(
tablex(
stroke: none,
columns: (1fr, 1fr),
"Darba iesniegšanas datums:",
"06.01.2025.",
),
)
#v(vspace)
#figure(
tablex(
stroke: none,
columns: (1fr, 1fr),
"Darba aizstāvēšanas datums:",
"x.01.2025.",
),
)
#v(vspace)
#figure(
tablex(
stroke: none,
columns: (1fr, 1fr),
"Komisijas vērtējums:",
line(length: 100%, start: (0pt, 10pt)),
),
)
#v(vspace)
#figure(
tablex(
stroke: none,
columns: (1fr, 1fr),
"Komisijas sastāvs:",
[
#line(length: 100%, start: (0pt, 10pt))
#line(length: 100%, start: (0pt, 30pt))
#line(length: 100%, start: (0pt, 40pt))
],
),
)

View File

@ -184,6 +184,21 @@
} }
set ref(supplement: it => { }) // disable default reference suppliments set ref(supplement: it => { }) // disable default reference suppliments
show ref: it => {
let el = it.element
if el != none and el.func() == heading {
return link(
el.location(),
numbering(
el.numbering,
..counter(heading).at(el.location()),
) + " " + el.body,
)
}
it
}
/* --- Figure/Table config end --- */ /* --- Figure/Table config end --- */
set list(marker: ( set list(marker: (

BIN
main.pdf Normal file

Binary file not shown.

145
main.typ
View File

@ -18,20 +18,20 @@
#set heading(numbering: none) #set heading(numbering: none)
= Apzīmējumu saraksts = Apzīmējumu saraksts
/ Audio: #todo("add description") / Audio: Skaņas komponentes, kas ietver gan skaņas efektus, gan fona mūziku.
/ CI/CD: nepārtraukta integrācija un nepārtraukta izvietošana; / CI/CD: nepārtraukta integrācija un nepārtraukta izvietošana;
/ DPD: datu plūsmas diagramma; / DPD: datu plūsmas diagramma;
/ ECS: entitāšu komponentu sistēma (angl. Entity-Component-System#footnote[https://en.wikipedia.org/wiki/Entity_component_system]); / ECS: entitāšu komponentu sistēma (angl. Entity-Component-System#footnote[https://en.wikipedia.org/wiki/Entity_component_system]);
/ GitHub#footnote[https://en.wikipedia.org/wiki/GitHub]: izstrādātāju platforma, kas ļauj izstrādātājiem izveidot, glabāt, pārvaldīt un kopīgot savu kodu; / GitHub#footnote[https://en.wikipedia.org/wiki/GitHub]: izstrādātāju platforma, kas ļauj izstrādātājiem izveidot, glabāt, pārvaldīt un kopīgot savu kodu;
/ GitHub Release #footnote[https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases]<gh-release>: izvēršamas programmatūras iterācijas, ko varat iepakot un padarīt pieejamas plašākai auditorijai, lai lejupielādētu un izmantotu;
/ Jaucējtabula#footnote[https://lv.wikipedia.org/wiki/Jauc%C4%93jtabula]: jeb heštabula (angl. hash table#footnote[https://en.wikipedia.org/wiki/Hash_table]) ir datu struktūra, kas saista identificējošās vērtības ar piesaistītajām vērtībām. / Jaucējtabula#footnote[https://lv.wikipedia.org/wiki/Jauc%C4%93jtabula]: jeb heštabula (angl. hash table#footnote[https://en.wikipedia.org/wiki/Hash_table]) ir datu struktūra, kas saista identificējošās vērtības ar piesaistītajām vērtībām.
/ Papildspēja: objekts, kas kā spēles mehānika spēlētājam piešķir īslaicīgas priekšrocības vai papildu spējas (angl. power-up#footnote[https://en.wikipedia.org/wiki/Power-up]<power-up>); / Laidiens: Programmatūras versija, kas ir gatava izplatīšanai lietotājiem un satur īpašas funkcijas, uzlabojumus vai labojumus.
/ Pirmkods: #todo("add description")
/ PPA: programmatūras projektējuma apraksts; / PPA: programmatūras projektējuma apraksts;
/ PPS: programmatūras prasību specifikācija; / PPS: programmatūras prasību specifikācija;
/ Renderēšana: #todo("add description") / Papildspēja: objekts, kas kā spēles mehānika spēlētājam piešķir īslaicīgas priekšrocības vai papildu spējas (angl. power-up#footnote[https://en.wikipedia.org/wiki/Power-up]<power-up>);
/ Pirmkods: Cilvēkam lasāmas programmēšanas instrukcijas, kas nosaka programmatūras darbību.
/ Renderēšana: Process, kurā tiek ģenerēts vizuāla izvade.
/ Sēkla: Skaitliska vērtība, ko izmanto nejaušo skaitļu ģeneratora inicializēšanai.
/ Spēlētājs: lietotāja ieraksts vienas virtuālās istabas kontekstā. / Spēlētājs: lietotāja ieraksts vienas virtuālās istabas kontekstā.
/ Sēkla: _seed_ #todo("add description")
/* Pēdējos gados spēļu izstrādes joma ir piedzīvojusi strauju popularitātes /* Pēdējos gados spēļu izstrādes joma ir piedzīvojusi strauju popularitātes
* pieaugumu, ko veicināja neatkarīgo spēļu skaita pieaugums un jaudīgu spēļu * pieaugumu, ko veicināja neatkarīgo spēļu skaita pieaugums un jaudīgu spēļu
@ -120,9 +120,10 @@ tostarp Linux, macOS, Windows un WebAssembly (WASM).
Tas nodrošina, ka spēle ir pieejama plašai auditorijai, nodrošinot konsekventu Tas nodrošina, ka spēle ir pieejama plašai auditorijai, nodrošinot konsekventu
un saistošu pieredzi dažādās operētājsistēmās un vidēs. un saistošu pieredzi dažādās operētājsistēmās un vidēs.
Spēle tiek izplatīta, izmantojot GitHub releases un Spēle tiek izplatīta, izmantojot "GitHub
#link("http://itch.io/")[itch.io], kas ir populāra neatkarīgo spēļu releases"@gh-release
platforma, kas ļauj viegli piekļūt un izplatīt spēles visā pasaulē. un itch.io#footnote("https://itch.io/")<itch-io>, kas ir populāra neatkarīgo
spēļu platforma, kas ļauj viegli piekļūt un izplatīt spēles visā pasaulē.
Izmantojot šīs platformas, datorspēle gūst dažādu maksājumu modeļu un kopienas Izmantojot šīs platformas, datorspēle gūst dažādu maksājumu modeļu un kopienas
iesasaistes funkcijas, tādējādi palielinot spēles sasniedzamību un atpazīstamību. iesasaistes funkcijas, tādējādi palielinot spēles sasniedzamību un atpazīstamību.
@ -149,7 +150,7 @@ Sistēmas izstrādē galvenā uzmanība tiks pievērsta sekojošu darījumprasī
+ Savietojamība ar vairākām platformām: sistēma būs pieejama vairākās + Savietojamība ar vairākām platformām: sistēma būs pieejama vairākās
platformās, tostarp Linux, macOS, Windows un WebAssembly, nodrošinot plašu platformās, tostarp Linux, macOS, Windows un WebAssembly, nodrošinot plašu
pieejamību un sasniedzamību. pieejamību un sasniedzamību.
+ Kopienas iesaiste: Spēle izmantos #link("http://itch.io/")[itch.io] kopienas + Kopienas iesaiste: Spēle izmantos itch.io@itch-io kopienas
funkcijas, lai sadarbotos ar spēlētājiem, apkopotu atsauksmes un veicinātu funkcijas, lai sadarbotos ar spēlētājiem, apkopotu atsauksmes un veicinātu
atbalstošu spēlētāju kopienu. atbalstošu spēlētāju kopienu.
+ Regulāri atjauninājumi un uzturēšana: CI/CD cauruļvadu veicinās regulārus + Regulāri atjauninājumi un uzturēšana: CI/CD cauruļvadu veicinās regulārus
@ -197,7 +198,7 @@ Ar lietotājiem saistītās datu plūsmas ir attēlotas sistēmas nultā līmeņ
- Windows kompilācijām; - Windows kompilācijām;
- WebAssembly kompilāciju. - WebAssembly kompilāciju.
- Izplatīšanas atkarības: - Izplatīšanas atkarības:
- Pastāvīga #link("http://itch.io/")[itch.io] platformas pieejamība spēļu izplatīšanai. - Pastāvīga itch.io@itch-io platformas pieejamība spēļu izplatīšanai.
- CI/CD darbplūsmai nepieciešamo kompilēšanas rīku un atkarību uzturēšana. - CI/CD darbplūsmai nepieciešamo kompilēšanas rīku un atkarību uzturēšana.
- Izstrādes atkarības: - Izstrādes atkarības:
- Rust programmēšanas valoda (stabilā versija); - Rust programmēšanas valoda (stabilā versija);
@ -205,7 +206,7 @@ Ar lietotājiem saistītās datu plūsmas ir attēlotas sistēmas nultā līmeņ
- Nepieciešamie Bevy spraudņi un atkarības, kā norādīts projekta Cargo.toml failā. - Nepieciešamie Bevy spraudņi un atkarības, kā norādīts projekta Cargo.toml failā.
- Lietotāja vides pieņēmumi: - Lietotāja vides pieņēmumi:
- Spēlētājiem ir pamata izpratne par labirinta navigāciju un mīklu risināšanas koncepcijām. - Spēlētājiem ir pamata izpratne par labirinta navigāciju un mīklu risināšanas koncepcijām.
- Lietotāji var piekļūt un lejupielādēt spēles no #link("http://itch.io/")[itch.io] platformas. - Lietotāji var piekļūt un lejupielādēt spēles no itch.io@itch-io platformas.
- Spēlētājiem ir ievadierīces (tastatūra/pele), ar kurām kontrolēt spēli. - Spēlētājiem ir ievadierīces (tastatūra/pele), ar kurām kontrolēt spēli.
= Programmatūras prasību specifikācija = Programmatūras prasību specifikācija
@ -271,7 +272,7 @@ pienākumi, un tas ietver funkcijas, kas veicina kopējo spēles sistēmu.
[Spēlētāju stāvokļa atjaunināšana], [], [Spēlētāju stāvokļa atjaunināšana], [],
rowspanx(1)[Labirinta ģenerēšanas modulis], rowspanx(1)[Labirinta ģenerēšanas modulis],
[Labirinta ģenerēšana], [#link(<LGMF01>)[LGMF01]], [Labirinta būvētājs], [#link(<LGMF01>)[LGMF01]],
rowspanx(5)[Līmeņu pārvaldības modulis], rowspanx(5)[Līmeņu pārvaldības modulis],
[Līmeņu ielāde], [], [Līmeņu ielāde], [],
@ -297,16 +298,38 @@ pienākumi, un tas ietver funkcijas, kas veicina kopējo spēles sistēmu.
=== Spēles stāvokļa pārvaldības modulis === Spēles stāvokļa pārvaldības modulis
=== Spēlētāja modulis === Spēlētāja modulis
=== Labirinta ģenerēšanas modulis === Labirinta ģenerēšanas modulis
Apakšnodaļa ietver labirinta moduļa funkcijas. Moduļa funkcionalitāte ir
izmantota sešstūraina labirinta ģenerēšanai.
Moduļa funkciju datu
plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @dpd-2-maze-gen att.)
Labirinta būvēšanas funkcija ir aprakstītas atsevišķā tabulā (skat.
#link(<LGMF01>)[LGMF01] tab.)
Modularitātes un atkārtotas lietojamības apsvērumu dēļ labirinta ģenerēšanas
funkcionalitāte tika pārnesta uz ārēju bibliotēku "hexlib"@hexlab. Šis lēmums
ļauj labirinta ģenerēšanas loģiku atkārtoti izmantot dažādos projektos un
lietojumprogrammās, veicinot atkārtotu koda izmantošanu.
Iekapsulējot labirinta ģenerēšanu atsevišķā bibliotēkā, to ir vieglāk pārvaldīt
un atjaunināt neatkarīgi no galvenās lietojumprogrammas, nodrošinot, ka
labirinta ģenerēšanas algoritma uzlabojumus vai izmaiņas var veikt, neietekmējot
programmu.
#figure(
caption: [Labirinta ģenerēšanas moduļa 2. līmeņa DPD],
image("assets/images/dpd/dpd2/maze-gen.svg"),
) <dpd-2-maze-gen>
#function-table( #function-table(
"Labirinta ģenerēšana", "Labirinta būzētājs",
"LGMF01", "LGMF01",
[Izveido sešstūrainu labirintu ar norādītajiem parametriem.], [Izveido sešstūrainu labirintu ar norādītajiem parametriem.],
[ [
+ Rādiuss: `u32` -- Labirinta rādiuss. Obligāts parametrs, kas nosaka labirinta izmēru. + Rādiuss -- Labirinta rādiuss. Obligāts parametrs, kas nosaka labirinta izmēru.
+ Sēkla: `Option<u64>` -- Neobligāta sēkla nejaušo skaitļu ģeneratoram. Ja + Sēkla -- Neobligāta sēkla nejaušo skaitļu ģeneratoram. Ja
norādīta, nodrošina reproducējamu labirinta ģenerēšanu ar vienādiem norādīta, nodrošina reproducējamu labirinta ģenerēšanu ar vienādiem
parametriem. Ja nav norādīta, tiek izmantota nejauša sēkla. parametriem. Ja nav norādīta, tiek izmantota nejauša sēkla.
+ Sākuma pozīcija: `Option<Hex>` -- Neobligāta sākotnējā pozīcija labirintā. + Sākuma pozīcija -- Neobligāta sākotnējā pozīcija labirintā.
Ja norādīta, labirinta ģenerēšana sāksies no šīs pozīcijas. Ja nav norādīta, Ja norādīta, labirinta ģenerēšana sāksies no šīs pozīcijas. Ja nav norādīta,
tiek izvēlēta nejauša derīga sākuma pozīcija. tiek izvēlēta nejauša derīga sākuma pozīcija.
// + Ģeneratora tips: `GeneratorType` -- Algoritms, kas tiks izmantots // + Ģeneratora tips: `GeneratorType` -- Algoritms, kas tiks izmantots
@ -391,55 +414,103 @@ Pret sistēmas izstrādājamo programmatūras uzturamību tiek izvirzītas sekoj
= Programmatūras projektējuma apraksts = Programmatūras projektējuma apraksts
== Daļējs funkciju projektējums == Daļējs funkciju projektējums
#todo("pievienot funkciju projektējumu +diagrammas")
/* Apraksta svarīgākās, sarežģītākās funkcijas vai sistēmas darbības aspektus; /* Apraksta svarīgākās, sarežģītākās funkcijas vai sistēmas darbības aspektus;
* obligāti jālieto vismaz 4 dažādi diagrammu veidi, izņemot DPD un lietošanas * obligāti jālieto vismaz 4 dažādi diagrammu veidi, izņemot DPD un lietošanas
* piemēru (use case) diagrammas */ * piemēru (use case) diagrammas */
== Izmantotās bibliotēkas == Saskarņu projektējums
== Daļējs lietotāju saskarņu projektējums #todo("pievienot saskarnes (UI/UX)")
/* 5-7 lietotāja saskarnes un to apraksts */ /* 5-7 lietotāja saskarnes un to apraksts */
= Testēšanas dokumentācija = Testēšanas dokumentācija
== Dinamiskā programmatūras testēšana Šajā nodaļā ir aprakstīta spēles "Maze Ascension" testēšanas process.
Testēšana tika veikta divos galvenajos virzienos -- statiskā un dinamiskā
testēšana, izmantojot gan automatizētus rīkus, gan manuālu pārbaudi.
== Statiskā testēšana <static-tests>
Statiskā testēšana ir svarīga daļa no projekta kvalitātes nodrošināšanas.
"Clippy"@clippy tiek izmantots koda analīzei, meklējot potenciālas problēmas un
neoptimālus risinājumus. Papildus noklusētajiem noteikumiem, tika aktivizēti
stingrāki koda kvalitātes pārbaudes līmeņi: "pedantic" režīms nodrošina
padziļinātu koda stila pārbaudi, "nursery" aktivizē eksperimentālās pārbaudes,
un "unwrap_used" un "expect_used" brīdina par potenciāli nedrošu kļūdu
apstrādi. Šie papildu noteikumi palīdz uzturēt augstāku koda kvalitāti un
samazināt potenciālo kļūdu skaitu.
/* Programmatūras statiskai testēšanai ir izmantots rīks „clang-tidy“, kas analizē
programmatūru, meklējot kļūdas un problēmas pirmkodā. [12] Rīks satur vairākas specifiskas
problēmu kopas, kas var tikt izmantotas analīzē. Tika izmantota „clang-analyzer“ problēmu
kopa. Vieglākai statisko testu darbināšanai tika izmantots vienkāršs programmēšanas valodas
„Python“ skripts, kas atlasa visus failus, kuru paplašinājums ir „cpp“ (valodas „C++“ pirmkoda
fails) vai „h“ (galvenes fails) un darbina statiskās analīzes rīku ar katru failu atsevišķi (skat.
izpildes rezultātu attēlā 4.3.). */
== Dinamiskā testēšana
#todo("uztakstīt dinamisko testēšanu")
=== Manuālā integrācijas testēšana === Manuālā integrācijas testēšana
=== Automatizēti testi === Automatizēti testi
== Statiskā programmatūras testēšana
= Programmas projekta organizācija = Programmas projekta organizācija
= Kvalitātes nodrošināšana Kvalifikācijas darba prasības paredz, ka programmatūru un dokumentāciju autors
PPS ir izstrādāta, ievērojot LVS 68:1996 standarta "Programmatūras prasību specifikācijas veido patstāvīgi, vadoties pēc darba vadītāja norādījumiem.
ceļvedis"@lvs_68 un LVS 72:1996 standarta "Ieteicamā prakse programmatūras projektējuma
aprakstīšanai"@lvs_72 standarta prasības. #todo("uzrakstīt projekta organizāciju")
== Kvalitātes nodrošināšana
Augstas koda kvalitātes nodrošināšana ir jebkura projekta būtisks aspekts.
Lai to panāktu, tiek izmantoti vairāki rīki un prakses, kas palīdz uzturēt tīru,
efektīvu un uzticamu koda.
Viens no galvenajiem rīkiem, kas tiek izmantots ir "Clippy"@clippy, kas analizē
iespējamās problēmas un iesaka uzlabojumus (skat. @static-tests nodaļu).
Kopā ar "Clippy" tiek arī izmantots "Rustfmt"@rustfmt, koda formatētājs, lai
uzturētu vienotu koda formatējumu visā projektā. Šis rīks automātiski formatē
kodu saskaņā ar Rust stila vadlīnijām@rust-style.
Turklāt visas publiskās funkcijas un datu struktūras
hexlab bibliotēkā ir
dokumentētas@hexlab-docs. Šajā dokumentācijā ir ietverti detalizēti apraksti un lietošanas
piemēri, kas ne tikai palīdz saprast kodu, bet arī kalpo kā dokumentācijas
testēšanas veids. Darbinot "cargo doc"@cargo-doc, tiek ģenerēja un validēja
dokumentācija, nodrošinot, ka piemēri ir pareizi un aktuāli.
Programmatūras prasības specifikācija ir izstrādāta, ievērojot LVS 68:1996
standarta "Programmatūras prasību specifikācijas ceļvedis"@lvs_68 un LVS 72:1996
standarta "Ieteicamā prakse programmatūras projektējuma aprakstīšanai"@lvs_72
standarta prasības.
// Programmatūras projektējuma aprakstā iekļautās // Programmatūras projektējuma aprakstā iekļautās
// aktivitāšu diagrammas ir izstrādātas, ievērojot UML 2.5 versijas // aktivitāšu diagrammas ir izstrādātas, ievērojot UML 2.5 versijas
// specifikāciju@omg-uml. // specifikāciju@omg-uml.
= Konfigurācijas pārvaldība == Konfigurācijas pārvaldība
Pirmkods tiek pārvaldīts, izmantojot "git"@git versiju kontroles sistēmu. Pirmkods tiek pārvaldīts, izmantojot "git"@git versiju kontroles sistēmu.
Repozitorijs tiek izvietots platformā "GitHub". Repozitorijs tiek izvietots platformā "GitHub".
Rīku konfigurācija ir definēta vairākos failos: Rīku konfigurācija ir definēta vairākos failos:
- "justfile#footnote[https://github.com/casey/just]" -- satur atkļūdošanas un - "justfile" -- satur atkļūdošanas un
piegādes komandas dažādām vidēm: laidiena komandas dažādām vidēm@justfile:
- atkļūdošanas kompilācijas ar iespējotu pilnu atpakaļsekošanu; - atkļūdošanas kompilācijas ar iespējotu pilnu atpakaļsekošanu;
- piegādes kompilācijas ar iespējotu optimizāciju. - laidiena kompilācijas ar iespējotu optimizāciju.
- "GitHub Actions" darbplūsmas, kas apstrādā: - "GitHub Actions" darbplūsmas, kas apstrādā:
- koda kvalitātes pārbaudes (vienībtesti, statiskie testi, formatēšana, - koda kvalitātes pārbaudes (vienībtesti, statiskie testi, formatēšana,
dokumentācijas izveide). dokumentācijas izveide).
- kompilācijas un izvietotošanas darbplūsma, kas: - kompilācijas un izvietotošanas darbplūsma, kas:
- izveido Windows, Linux, macOS un WebAssembly versijas; - izveido Windows, Linux, macOS un WebAssembly versijas;
- publicē bināros failus GitHub platformā; - publicē bināros failus GitHub platformā;
- izvieto tīmekļa versiju #link("http://itch.io/")[itch.io] platformā. - izvieto tīmekļa versiju itch.io@itch-io platformā.
#indent-par[Versiju kontrole notiek pēc semantiskās versiju@sem_ver atlases Versiju specifikācija notiek pēc semantiskās versiju atlases@sem_ver (MAJOR.MINOR.PATCH):
(MAJOR.MINOR.PATCH): ]
+ MAJOR -- galvenā versija, nesaderīgas izmaiņas, būtiskas koda izmaiņas. + MAJOR -- galvenā versija, nesaderīgas izmaiņas, būtiskas koda izmaiņas.
+ MINOR -- atpakaļsaderīgas funkcionalitātes papildinājumi. + MINOR -- atpakaļsaderīgas funkcionalitātes papildinājumi.
+ PATCH -- ar iepriekšējo versiju saderīgu kļūdu labojumi. + PATCH -- ar iepriekšējo versiju saderīgu kļūdu labojumi.
= Darbietilpības novērtējums == Darbietilpības novērtējums
#todo("uzrakstīt darbietilpības novērtējumu")
= Secinājumi // = Secinājumi
// #todo("uzrakstīt secinājumus")
#bibliography( #bibliography(
title: "Izmantotā literatūra un avoti", title: "Izmantotā literatūra un avoti",
@ -450,5 +521,5 @@ Rīku konfigurācija ir definēta vairākos failos:
// #include "doc.typ" // #include "doc.typ"
// #pagebreak() #pagebreak()
// #total-words words #total-words words