# Moodul B - Arenduse
# Mooduli eesmärk
Moodul B - Arendus, eeldab eksaminandilt infosüsteemide arenduse ja juurutamise oskusi.
Eksaminineeritav peab:
- Aru saama IT süsteemide disaini, spetsifikatsioonide, teostuse, testimise, ühendamise ja juurutamise tehnilistest aspektidest.
- Aru saama süsteemiarenduse elutsüklist, arendusprotsessist ja uusimatest arendussuundadest. Hindama ja aru saama relatsiooniliste andmebaaside ja andmeaitade põhimõttest ja kasutamisest.
- Aru saama relatsioonilisest mudelist ja päringukeeltest.
Mõistma tarkvara projekteerimise meetodeid ja võtteid, kirjeldama üldiseid andmestruktuure, algoritme ja tõlgendama programmielemente. - Aru saama objektorienteeritud programmeerimise põhimõttest.
- Teadma programmide hoolduse probleeme ja seda, kuidas tarkvara dokumenteerida ja testida.
- Tundma kasutajaliideste, veebilehtede ja hüpermeediumi projekteerimispõhimõtteid.
- Mõista põhilisi HTML ja XML elemente ja teada veebipõhise programmeerimise viise.
# B.1 Tarkvaraarenduse protsessid ja meetodid
# B.1.1 Infosüsteem
# B.1.1.1
Kirjeldada infosüsteemi kui komplekti riistvarast, tarkvarast, püsivarast, operatsioonisüsteemist, rakendusest.
# B.1.1.2
Määratleda ja loetleda süsteemitarkvara näiteid.
# B.1.1.3
Määratleda ja loetleda rakendustarkvara näiteid.
# B.1.2 Tarkvaraarenduse elutsükkel
# B.1.2.1
Kirjeldada tarkvaraarenduse põhilisi etappe.
# B.1.2.2
Võrrelda omavahel klassikalisi tarkvaraarenduse metoodikaid nt koskmudel, spiraalmudel, prototüüpimine, iteratiivne, inkrementaalne arendus.
# B.1.2.3
Kirjeldada tarkvara elutsükli põhietappe analüüsi, teostuse, kasutuse ja hoolduse ning kasutamise lõpetamise seostes.
# B.1.2.4
Koostada tarkvara nõuded ja spetsifikatsioon projekteerimise tarbeks.
# B.1.3 Tarkvara arendusvahendid
# B.1.3.1
Tuua välja tarkvaraarenduse erinevatel etappidel kasutavad töövahendid (nt integreeritud CASE vahendid).
# B.1.3.2
Tuua esile erinevate tarkvaraarendusvahendite tugevad ja nõrgad kohad.
# B.1.3.3
Selgitada lihtsa arendusvahendi kasutamist programmi redigeerimiseks, kompileerimiseks, testimiseks ja silumiseks.
# B.1.4 Süsteemide testimine ja juurutamine
# B.1.4.1
Kirjeldada peamisi tarvkara testimismetoodikaid.
# B.1.4.2
Kirjeldada peamisi tarkvara juurutusfaasi probleeme, näiteks tarkvara paigaldamisel, andmete kolimisel, kasutajate koolitamisel ja neile esialgse toe osutamisel.
# B.1.4.3
Tuua välja erinevate juurutusmeetodite (suur pauk, samm-sammult, pakettmudel, üksuste kaupa (rollout)) tugevad ja nõrgad küljed.
# B.1.4.4
Kirjeldada kasutajajuhendi ja tehnilise kirjelduse (reference) põhiosi.
# B.1.5 Tarkvara paigaldamine, kontroll ja turvalisus
# B.1.5.1
Eristada arendus-, test- ja töökeskkondi, mõista tarkvara paigaldamise, versioonihalduse ja tarkvara levitamise meetodeid.
# B.1.5.2
Tuua välja süsteemi tõrgetega seotud riskid ja pakkuda meetmed, et kaitsta organisatsiooni olulisi andmeid mitmel sh füüsilisel ja menetlustasemel (procedural level).
# B.1.5.3
Kirjeldada igapäevaseid infoturbe alaseid tegevusi, näiteks varundus, juurdepääsu tagamine.
# B.1.6 Tarkvaraarenduse suundumused
# B.1.6.1
Kirjeldada standardseid ja kaasaegseid tarkvaraarenduse meetodeid nt ISO 12207, SEI/CMMI, agiilne arendus.
# B.1.6.2
Aru saada kaasaegsetest tehnilise arhitektuuri arengutest nt kahe- või kolmetasemeline klient-server lahendus, n-tasemeline veebipõhine, teenusepõhine arhitektuur, liidesed.
# B.1.6.3
Kirjeldada kaasaegse IT-süsteemi keerukust ja kuidas sellega toime tulla, nt autonoomsed süsteemid.
# B.2 Andmehaldus ja andmebaasid
# B.2.1 Andmed ja transaktsioonid
# B.2.1.1
Tuua välja vastupidava (durable) andmesalvestuse ja aruandlussüsteemi tähtsus.
# B.2.1.2
Tuua välja, kuidas atomaarsus, järjepidevus (consistency), isoleeritus ja vastupidavus (ACID) aitavad tagada töökindlaid andmebaasi transaktsioone.
# B.2.1.3
Näidata mitmekasutaja-süsteemides projekteerimise ja hoolduse probleeme nt andmete liiasus ja vastuolulisus, terviklus, andmete paindlikkus, samaaegne juurdepääs ja turvalisus.
# B.2.2 Andmebaaside struktuur
# B.2.2.1
Tuua välja erinevused failihaldussüsteemi ja andmebaaside haldussüsteemi vahel (DBMS).
# B.2.2.2
Kirjeldada andmebaasisüsteemi komponente: andmefailid, andmesõnastikud, indeksid, statistilised andmed.
# B.2.2.3
Kirjelda andmebaaside haldussüsteemide kasutamist organisatsioonides ja nende kasutamise eeliseid.
# B.2.2.4
Kirjelda andmebaasi haldussüsteemide komponente: päringukeel, aruandegeneraator, haldusvahendid, paralleeltöö haldus (concurrency control), transaktsioonide haldus, varundus- ja taastevahendid.
# B.2.2.5
Kirjeldada andmebaasi administraatori, projekteerija /programmeerija, kasutaja rolle.
# B.2.3 Andmemudelid
# B.2.3.1
Defineerida andmete abstraheerimine ja selgitada erinevusi füüsilise taseme, kontseptuaalse (loogilise) ja vaate (kasutaja) tasemel.
# B.2.3.2
Selgitada andmemudelite erinevusi: objektipõhine loogiline mudel, kirjepõhine loogiline mudel ja füüsiline andmemudel.
# B.2.3.3
Kirjeldada kirjepõhise loogilise mudeli põhimõtet nt hierarhilise või võrkmudeli abil.
# B.2.3.4
Kirjeldada objektipõhise loogilise mudeli põhimõtet nt olem-relatsioonmudeli või objektorienteeritud mudeli abil.
# B.2.4 Relatsiooniline mudel
# B.2.4.1
Tuua välja relatsioonilise mudeli eelised, nagu mitteliiasus, paindlikkus, skaleeritavus.
# B.2.4.2
Kirjeldada relatsioonilise mudeli olulisi mõisteid: relatsioon, võti, primaarvõti, alternatiivvõti, välisvõti, viidete terviklus (referential integrity).
# B.2.4.3
Selgitada lihtsate näidete varal 1. 2. ja 3. normaalkujule viimist.
# B.2.5 Päringukeeled
# B.2.5.1
Tuua välja erinevused protesuursete ja mitteprotseduursete keelte vahel.
# B.2.5.2
Kirjeldada põhilisi relatsioonalgebra tehteid: valik (select), projektsioon (project), ümbernimetamine (rename), otsekorrutis (cartesian product), ühend (union), konjunktsioon (join), vahe (set difference).
# B.2.5.3
Kirjeldada SQL keele komponente: andmete defineerimiskeel (DDL), andmete manipuleerimiskeel (DML), andmete juhtkeel (DCL).
# B.2.5.4
Aru saada SQL andmete defineerimiskeele käskude toimimisest nt create, drop, alter table.
# B.2.5.5
Aru saada SQL andmete juhtkeele käskude toimimisest nt grant, revoke.
# B.2.6 SQL päringud
# B.2.6.1
Aru saada SQL andmete manipuleerimiskeele käskude toimimisest nt insert, delete, update, select.
# B.2.6.2
Aru saada SQL tingimustest: where, order by, group by.
# B.2.6.3
Tuua välja vaadete kasutamine ja SQL erikäsud nt commit, rollback.
# B.2.7 Andmebaaside haldus ja turvalisus
# B.2.7.1
Kirjeldada kõige olulisemaid andmebaaside halduse toimingud, näiteks skeemi määratlemine, salvetusmahu struktuur ja pöördusmeetodid, skeemi ja füüsilise paigutuse muutmine, andmetele juurdepääsu lubamine.
# B.2.7.2
Kirjeldada konfidentsiaalsuse ja terviklusega seotud probleeme nt tervikluse piirangud, õnnetusjuhtumiga põhjustatud terviklusekadu, õnnetusjuhtumiga põhjustatud järjepidevuse kadu, pahatahtlik andmete poole pöördumine.
# B.2.7.3
Tuua näiteid turvareeglitest näiteks isikuturvalisusest, füüsiliset turbest, operatsioonisüsteemi turbest, andmebaasi turvalisusest.
# B.2.7.4
Kirjeldada taastekavasid, mida kasutatakse erinevat tüüpi vigade korral, näiteks loogiline viga, süsteemi viga, süsteemi ootamatu seiskumine, kettaseadme tõrge.
# B.2.8 Andmeaidad ja andmekaeve
# B.2.8.1
Kirjeldada andmeaida mõistet ja selle komponente.
# B.2.8.2
Määratleda andmekaeve mõiste.
# B.2.8.3
Kirjeldada andmeaida tööpõhimõtted.
# B.3 Programmeerimine
# B.3.1 Tarkvara projekteerimise meetodid ja vahendid
# B.3.1.1
Tuua erinevate programmide projekteerimise meetodite põhijooned, nagu näiteks objektorienteeritud (OO) projekteerimine, ülalt-alla disain, struktureeritud programmeerimine.
# B.3.1.2
Kirjeldada abstraktsiooni kui probleemilahenduse ja tarkvara projekteerimise vahendit.
# B.3.1.3
Tuua välja vanemate tarkvarade projekteerimise erivajadused ja -nüansid, näiteks keeruline struktuur, halb dokumentatsioon, vananenud riist-/tarkvara, ärikriitiline süsteem.
# B.3.1.4
Tuua välja erinevused avatud lähtekoodiga ja kommertstarkvara arenduses.
# B.3.1.5
Tuua välja erinevad litsentseerimise nõuded kommertstarkvarale, avatud lähtekoodiga tarkvarale, vabale tarkvarale ja vabavarale.
# B.3.2 Andmestruktuurid ja algoritmid
# B.3.2.1
Kirjeldada struktureeritud ja struktureerimata andmetüüpe ja erinevaid andmestruktuure: kirjed, massiivid, listid.
# B.3.2.2
Hinnata tüüpiliste otsi- ja sortimisalgoritmide sobivust erinevate andmestruktuuridega.
# B.3.3 Programmeerimiskeeled
# B.3.3.1
Tuua välja programmeerimiskeelte liikide erinevused ja eelised: funktsionaalsed, protseduursed, objektorienteeritud.
# B.3.3.2
Kirjeldada protseduuride ja funktsioonide kasutamist ja tuua välja erinevused väärtuse (call by value) ja nime (viite) järgi (call by reference) väljakutsumisel.
# B.3.3.3
Kirjeldada süntaksi mõistetd ja olulisust programmeerimiskeeltes.
# B.3.3.4
Kirjeldada kompileerivate ja interpreteerivate programmeerimiskeelte erinevust.
# B.3.4 Objektorienteeritud programmeerimine
# B.3.4.1
Kirjeldada objektorienteeritud projekteerimise põhimõtteid.
# B.3.4.2
Kirjeldada objektorienteeritud programmeerimise kontseptsiooni.
# B.3.4.3
Kirjeldada mõisteid klass, objekt, eksemplar, meetod ja nende seost objektorienteeritud programmeerimisega.
# B.3.4.4
Kirjeldada pärimise mõistet ja selle vajalikkust programmeerijale.
# B.3.4.5
Kirjeldada mõisteid abstraktsioon ja kapseldamine (information hiding).
# B.3.4.6
Kirjeldada, kuidas polümorfism aitab korduvkasutatavate komponentide abil kaasa tõhusamale tarkvara projekteerimisele.
# B.3.5 Programmi komponendid
# B.3.5.1
Selgitada sisend- ja väljundkäskude kasutamist.
# B.3.5.2
Selgitada juhtkäskude kasutamist.
# B.3.5.3
Selgitada aritmeetiliste ja loogika tehete kasutamist.
# B.3.6 Testimine
# B.3.6.1
Kirjeldada testimise põhimõisteid: veavõimalus (fault), viga (error), tõrge (failure). Tuua välja kontrollimise, testimise ja silumise erinevad tasemed.
# B.3.6.2
Kirjeldada erinevate testimiste eesmärke ja ulatust: komponendi testimine, süsteemi testimine, vastuvõtueelne testimine.
# B.3.6.3
Tuua välja erinevus staatilise ja dünaamilise testimismetodoloogia vahel ja loetleda automatiseeritud testimisvahendite näiteid.
# B.3.7 Dokumentatsioon ja hooldus
# B.3.7.1
Kirjeldada tarkvaraarenduses ja üleandmisel kasutavat dokumentatsiooni, nt struktureeritud kirjeldus loomulikus keeles (structural English), otsustuspuud, UML diagrammid, programmi kommentaarid, plokkskeemid.
# B.3.7.2
Selgitada dokumenteerimise häid tavasid ja hästi struktureeritud dokumentatsiooni väärtuslikkust.
# B.3.7.3
Selgitada, kuidas dokumenteerida muudatusi tarkvaras ja dokumentatsioonis.
# B.3.7.4
Kirjeldada meetmeid tarkvara kvaliteetseks hooldamiseks nagu koodi ülevaatamine, koodi kommenteerimise reeglid, tehnilised viitedokumendid.
# B.3.8 Programmeerimise näited
# B.3.8.1
Tõlgendada programmilõiku etteantud hüpoteesi alusel.
# B.3.8.2
Leida programmilõigus viga või puudus ja parandada see nõuetele vastavaks.
# B.4 Kasutajaliides ja veebidisain
# B.4.1 Kasutaja ja arvuti vastasmõjud: juhtnöörid ja standardid
# B.4.1.1
Määratleda kommunikatsiooniteooria põhimõisted: saatja, sõnum, vastuvõtja.
# B.4.1.2
Selgitada, kuidas kommunikatsioon toimub ka inimeste vahel ja tuua välja tõhusamad teabe edastamise meetodid.
# B.4.1.3
Defineerida kasutajaliides ja loetleda liideste liike, näiteks tekstiline, graafiline, heliline.
# B.4.1.4
Tuua välja tehnoloogilised vahendid, millega saab infot edastada erinevatele meeltele, näiteks helitüübid, visuaalsed vahendid, digitaalsed lõhnad, kompamine/puutetundlikkus.
# B.4.1.5
Loetleda mudelid kasutajaliidese nõuete ja eesmärkide vastavuse testimiseks.
# B.4.2 Graafiline disain
# B.4.2.1
Selgitada graafika ja animatsiooni mõisted, nende edastuskuju (raster, vektor), digitaalaudio ja –video mõisted, näidata nende erisusi, kasutamist ja standardformaate.
# B.4.2.2
Kirjeldada jooniste, piltide, värvide, animatsiooni kasutamist ja graafilise disaini põhireeglite arvestamist nt tasakaal (balance), kooskõla (harmony), kontrastsus, varieeruvus (variety).
# B.4.2.3
Kasutada üldlevinud pilditöötlusvahendeid lihtsateks toiminguteks: graafiliste objektide suuruse, kuju, värvide, kontrastsuse, läbipaistvuse muutmiseks.
# B.4.3 Veeb ja hüpermeedia: võimalused ja piirangud
# B.4.3.1
Rääkida veebi ja Interneti ajaloost.
# B.4.3.2
Kirjeldada hüperteksti ja hüpermeediumi mõisted ning tuua välja nende tähtsus veebilehtede disainimisel.
# B.4.3.3
Selgitada veebilehtede tavapärased komponendid nt ülariba (top bar), külgriba (side bar), lehekülje sisu, kontaktid, otsing, uuendamise info, navigeerimine.
# B.4.3.4
Kirjeldada erinevate veebipõhiste teenuste kasutamist ettevõttes.
# B.4.3.5
Tuua välja mõningad probleemid, mis on seotud äriettevõtte veebilehe ülalpidamisega.
# B.4.4 Veebidisaini nõuded ja meetodid
# B.4.4.1
Määratleda veebilehe sihtrühma vajadused.
# B.4.4.2
Tuua välja riskid, mis ilmnevad kui ühel lehel on liiga palju sõnumeid.
# B.4.4.3
Loetleda probleemid seoses veebilehel kasutava halva värvilahendusega.
# B.4.4.4
Tuua juhtnöörid kasutajasõbraliku veebilehe loomiseks: loetavus, prioritiseeritud sisu, liikumise lihtsus ja järjepidevus, hetkeasukoha tuvastus.
# B.4.4.5
Kirjeldada veebilehe kvaliteedi hindamise vahendeid: erinevate veebilehitseja võimekus, HTML valideerimine, teksti tihendamine (condence), õigekirjakontroll, graafika optimeerimine (small byte-size graphics).
# B.4.4.6
Selgitada veebilehel lihtsa liikumise nõuet.
# B.4.4.7
Loetleda veebilehe loomise töövahendid.
# B.4.4.8
Tuua välja struktuurskeemide kasutamise vajalikkus ja eesmärk veebilehe disainimisel.
# B.4.4.9
Kirjeldada peamisi veebilehe navigeerimisviise.
# B.4.4.10
Kirjeldada veebilehe loomise etappe ja kasutavaid töövahendeid nt kadreering (storyboard), visand (rough draft).
# B.4.5 Veebilehtede kujundus
# B.4.5.1
Selgitada märgistuskeele mõistet ja kirjeldada HTML peamisi omadusi.
# B.4.5.2
Kasutada põhilisi HTML käske ja selgitada nende täitmist: tugev kujundamine, pehme kujundamine, erisümbolid, eraldajad, joondamine, päised, piltide sildid, taustad, värvid, lingid, loendid, tabelid, vormid, raamid.
# B.4.5.3
Tuua välja teksti kujunduse põhimõtted: kirja suurus, vaba ruumi osakaal.
# B.4.5.4
Loetleda XML põhielemendid ja nende kasutamine, areng HTML-ilt XHTM-ile.
# B.4.5.5
Kirjeldada laadifaile nagu kaskaadlaadistik (CSS) ja laiendatav laadistikukeel (XSL). Mõista nende kasutamist disainimisel.
# B.4.6 Veebipõhine programmeerimine
# B.4.6.1
Kirjeldada kliendipõhise ja serveripõhise tehnoloogia erinevusi ja teada veebiprogrammeerimise vahendeid.
# B.4.6.2
Kirjelda veebipõhiste süsteemide integreerimise võimalikke probleeme.