# 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.