Programmatūra

[thumb|upright|Diagramma, kurā parādīts, kā |lietotājs mijiedarbojas ar [Lietojumprogrammatūra|lietojumprogrammatūru tipiskā darbvirsmā. Lietojumprogrammatūras slānis mijiedarbojas ar operētājsistēmu, kas savukārt sazinās ar aparatūru. Ar bultiņām norādīta informācijas plūsma.]]
**Programmatūra** ir datoru programmas, procedūras un ar tām saistītā dokumentācija un dati, kas nepieciešami datoru sistēmas darbībai un tiek glabāti datora datu nesējā noteiktam mērķim.

## Vēsture
Pirmo reizi vārdu "programmatūra" () lietojis matemātiķis Džons Tūkijs 1958. gadā. Pirmie mašīnvalodā programmējamie datori parādījās 1940. gadu beigās. Sākotnēji aparatūras resursi bija dārgāki nekā cilvēkresursi. Programmām kļūstot sarežģītākām, programmētāju produktivitāte kļuva par vājo vietu. Augsta līmeņa programmēšanas valodu ieviešana 1958. gadā atviegloja situāciju. Agrīnās šādas valodas bija Fortran, Lisp un COBOL.

## Veidi

### Pēc mērķa
Programmas parasti tiek iedalītas:
* **[[Lietojumprogrammatūra]]** jeb *lietotne* ir programmatūra, kas paredzēta kādu konkrētu datu apstrādes sistēmas lietotājam nepieciešamu specifisku uzdevumu risināšanai un kas satur attiecīgās lietojumprogrammas un lietojumpakotnes. Tipiskas lietojumprogrammas ir biroja lietujumprogrammu paketes, biznesa programmatūra, izglītojošā programmatūra, datu bāzes un datorspēles. Lielākā daļa lietojumprogrammatūras ir ar grafisko lietotāja saskarni.
* **[[Sistēmprogrammatūra]]** ir lietojumneatkarīga programmatūra, kas atbalsta lietojumprogrammatūras darbināšanu.
** **[[Operētājsistēma]]** ir programmatūra, kuras galvenie uzdevumi ir nodrošināt lietotājam iespējas vadīt datora darbu, piemēram, atvērt vajadzīgo lietojumprogrammu, kā arī nodrošināt programmatūras un aparatūras kopdarbību, piemēram, vajadzīgās informācijas saglabāšanai atmiņas ierīcē.
** **[[Dzinis]]** jeb *draiveris* ir programma kas vada dažādu procesu norisi vai ierīču darbību, lai saskaņotu šo procesu izpildi vai ierīču sadarbību ar datoru. Ierīču draiverus lieto, lai katrai programmai, kas grib lietot kāda veida ierīci, nebūtu jāiekļauj visu attiecīgā veida ierīču vadības kodu. Draiveri nodrošina standartizētu kāda veida ierīču piekļuves interfeisu.
** **[[Utilītprogramma]]** ir programmu kopa, kas nodrošina papildpakalpojumus lietotājiem uzturēt un kopt datorus, ko nesniedz operētājsistēma.
* **[[Ļaunprogrammatūra]]** ir programma, kas patvaļīgi pievienojas datnēm un to darba laikā veic daţādas nevēlamas darbības: bojā datnes, mapes un aprēķinu rezultātus, dzēš vai piesārņo atmiņu, kā arī citādi traucē datora darbību.

### Pēc izpildes veida
* **[[Serveris#Serveris kā programmatūra|Servera programmatūra]]**, tostarp **Tīmekļa lietojumprogrammas**, kas parasti darbojas tīmekļa serverī un tīmekļa pārlūkprogrammās izvada dinamiski ģenerētas tīmekļa lapas, kas darbojas serverī.
* **[[Spraudnis]]** un **paplašinājumi** ir programmatūra, kas paplašina vai pārveido citas programmatūras funkcionalitāti, un, lai tā darbotos, ir jāizmanto šī programmatūra.
* **Iegultā programmatūra** ir iegultā datora programmatūra, ko izmanto sistēmā, kurā šis dators ir integrēts, specializētu aprēķinu veikšanai.

### Programmatūras rīks
**Programmatūras rīks** jeb **programmrīki** () ir arī programmas, ko izmanto citu programmu izstrādāšanai. Tās var būt teksta redaktors, kompilators, ielādes, atkļūdošanas un citas programmas, ko izmanto visā programmatūras izstrādes procesā, ieskaitot izstrādāšanas vadību un kvalitātes nodrošināšanu.

## Tēmas

### Arhitektūra
* **Platformprogrammatūra**: Ietver BIOS, ierīču draiverus, operacionālās sistēmas un parasti arī grafisko lietotāja saskarni, kas, visi kopā, nodrošina lietotājam iespēju mijiedarboties ar datoru un tā perifērijas iekārtām. Platformas programmatūra bieži vien nāk komplektā ar datoru un lietotājs var nemaz nenojaust par tās eksistenci.
* **Lietojumprogrammatūra**: Lietojumprogrammas ir tas, ko vairums lietotāju saprot ar vārdu *programmatūra*. Tipiski piemēri ir biroja lietojumprogrammu paketes un videospēles. Lietojumprogrammatūra bieži vien tiek iegādāta atsevišķi no datora. Dažreiz lietojumprogrammas tiek iekļautas datora komplektācijā, taču tas nemaina to, ka tās darbojas neatkarīgi. Lietojumprogrammas gandrīz vienmēr ir neatkarīgas no operacionālās sistēmas, lai gan visbiežāk darbojas tikai noteiktās platformās.
* **Lietotāja rakstīta programmatūra** (): Lietotāja programmatūra tiek veidota, lai pielāgotos konkrēta lietotāja vēlmēm. Tā ietver izklājlapu šablonus, tekstprocesoru makrodefinīcijas, zinātniskās simulācijas, grafikas un animācijas skriptus. Pat e-pasta filtri ir sava veida programmatūra.

### Kvalitāte un uzticamība

Kvalitāte ir produkta vai servisa īpašību kopums, kas liecina par produkta spēju nodrošināt pieprasītās un ietvertās vajadzības. Kvalitāti var iespaidot vairāki faktori, piemēram, drošība, efektivitāte, saprotamība, uzturamība, stabilitāte, atkalizmantojamība, utt. Katrai sistēmai kāds no faktoriem ir nozīmīgāks un kritiskās, bet cits ir mazāk būtisks. Kvalitātes faktors ir svarīgs gan pasūtītājam, gan izstrādātājam. Kvalitātes sistēmai būtu jānodrošina, lai kvalitātes faktori, par kuriem pasūtītājs un izstrādātājs ir vienojušies sistēmas izstrādes sākumā, būtu realizēti izveidotajā sistēmā.

Standarts ir projekta dokumenta apraksts, kas norāda tā struktūru un pielietojamību. Prasību specifikācijas standarts uzskaita visas dokumenta daļas, sniedz informāciju par to, kādai informācijai jābūt katrā no tām un uzskaita turpmākos dokumenta lietotājus un lietošanas mērķus.

Procedūra ietver norādījumus par to, kā izpildīt konkrētus uzdevumus projekta gaitā. Piemēram, programmēšanas procedūra norāda izmantojamos standartus, pielietojamo testu kategorijas, aizpildāmos dokumentus u.c.
Kvalitātes sistēma ietver standartus, procedūras un norādes arī testēšanai. Tās nodrošina, ka programmatūra tiek izstrādāta un pārbaudīta atbilstoši noteiktiem kvalitātes kritērijiem.
Programmatūras kvalitātes nodrošināšana sastāv no trim daļām:
* preventīvās darbības — novērst kvalitātes trūkumu programmatūrā (procedūras un standarti);
* detektīvās darbības — atklāt kvalitātes trūkumus programmatūrā (testēšana);
* korektīvās darbības — novērst atklātās problēmas programmatūrā un mazināt problēmas atkārtošanās iespēju, uzlabojot procedūras un standartus.

### Autortiesības

Latvijā darbojas *Autortiesību likums* un *Vispasaules intelektuālā īpašuma organizācijas* (WIPO) līgums par autortiesībām. Datoru lietotājiem jāievēro Autortiesību likuma normas, kas attiecas uz grāmatām, video un mūzikas diskiem un kasetēm, kā arī programmatūru. Datorprogrammu kopēšanu, izplatīšanu vai izmantošanu bez autortiesību īpašnieka atļaujas sauc par datorprogrammu pirātismu. Nelegālā datorprogrammu izmantošana, piemēram, ir:
* viena legāli iegādāta programmatūras kompaktdiska instalēšana uz vairākiem datoriem, ja licencē vai līgumā ir norādīts, ka to atļauts instalēt tikai uz viena datora;
* programmas kopēšana instalēšanai un izplatīšanai bez autora atļaujas;
* programmatūras instalēšana no nelegāli iegādāta diska;
* nelegālas datorprogrammu kopijas lejupielāde no interneta.

Internetā lejupielādei bez maksas tiek piedāvāta gan programmatūra, gan cita veida datnes (teksti, attēli u. c.). Ne vienmēr to publicētājiem ir tiesības tos izplatīt lietošanai citiem. Tāpēc pirms lejupielādes nepieciešams pārliecināties, vai to kopēšana ir legāla.

#### Licence

**Programmatūras licence** ir lietotāja un programmatūras izstrādātāja juridiska vienošanās, kas nosaka programmatūras lietotāja tiesības un pienākumus, kā arī programmatūras izplatītāja atbildību. Par pamatu programmas licencei tās izstrādātājs (ražotājs) var ņemt jau gatavus paraugus vai sastādīt to pats, tāpēc licences saturs un garums var būt ļoti atšķirīgs. Parasti licencē tiek iekļauta šāda informācija:
* programmas licences tips
* lietotāja programmas izmantošanas ierobežojumi un izplatīšanas tiesības
* izstrādātāja autortiesības un garantijas

#### Tipi
[thumb|300px|[LibreOffice Writer]]
Atkarībā no to izmantošanas noteikumiem, izšķir vairākus programmatūras tipus:
* **Komercprogrammatūra** ir programmatūra, kas jāiegādājas par maksu. Vienai un tai pašai programmatūrai var būt vairākas atšķirīgas cenas atkarībā no tās izmantošanas mērķa, piemēram, mazāka cena izglītības iestādēm vai to iegādājoties kopā ar jaunu datortehniku.
* **Izplatāmprogrammatūra** () ir programmatūra, kuru, lai pārbaudītu tās lietojamību, izplata bez maksas.
* **[[Bezmaksas programmatūra]]** jeb *brīvprogrammatūra* () ir datorprogramma, ko lietotājs var izmantot bez maksas.
* **[[Atvērtais pirmkods|Atklātā programmatūra]]** jeb *atvērtā pirmkoda programmatūra* () ir programmatūra, kuras pirmkods (programmas teksts) ir atklāti pieejams ne tikai tās veidotājiem, bet arī lietotājiem.

#### Patents
Patents ir ekskluzīvas monopoltiesības, kas valsts garantētas uz izgudrojumu noteiktā laika periodā. Patenta īpašnieks var aizliegt citiem lietot izgudrojumu, ko patents aizsargā, pārdot patentu vai piešķirt licences, t.i., izmantošanas atļaujas, kā arī brīvi vienoties par cenu jebkurai no šīm rīcībām. Patenta aizsardzība veicina izgudrojumu publiskošanu un padara to pieejamu citiem, vienlaikus nodrošinot atpelnīt izgudrojuma izstrādes ieguldītos līdzekļus. Taču ir svarīgi atzīmēt, ka šāda aizsardzība var būt trūkumi, piemēram, to var pārkāpt, nemaz nezinot, ka šāds patents eksistē.
Dažās valstīs, tostarp Savienotajās Valstīs, patents tiek izsniegts arī programmatūrai, kas dod tās izstrādātājiem iespēju aizsargāt savus jaunos un inovatīvos IT risinājumus.

## Lietotāja saskarne

Lietotāja saskarne jeb *interfeiss* ir veids, kādā lietotājs var mijiedarboties ar datoru. Izšķir divu veidu lietotāja saskarnes — rakstzīmju un grafiskā:

### Rakstzīmju lietotāja saskarne
Pirmajos IBM PC lietoja disku operētājsistēmu — DOS, kas izmantoja *rakstzīmju orientētu lietotāja saskarni* (). Tajā lietotājs instrukcijas ievadīja teksta veidā, izmantojot tastatūru. Šī saskarne nav lietotājdraudzīga, jo lielāko daļu operāciju lietotājam vajag veikt pašam, iedziļinoties datņu izveidošanas, izvietošanas un dzēšanas fiziskajās operācijās, kā arī iegaumējot programmatūras darbināšanas komandas.

### Grafiskā lietotāja saskarne
Grafiskā lietotāja saskarne () ir operētājsistēmas papildu daļa, kas satur izvēlnes, programmu logus, ikonas un citus grafiskus elementus. Tie ļauj lietotājam izvēlēties komandas, darbināt programmas, kā arī strādāt ar datnēm vai citiem objektiem, norādot to attēlus (ikonas). Izvēli var izdarīt, izmantojot tastatūru vai peli. GUI veicina efektīvāku datora lietošanu un atvieglo lietotāja mijiedarbība ar datoru.

## Izstrāde

Izstrādes procesā ir svarīgi izprast, kā izveidot datorizētas sistēmas. Programmatūras izstrāde parasti sastāv no vairākiem posmiem:
* **[[Sistēmu analīze|Analīze]]**. Pirms sistēmas izstrādnes ir nepieciešams definēt tai veicamos uzdevumus. Šajā posmā analizē esošo sistēmu darbību, ja tādas ir, aptaujājot lietotājus par pastāvošajām problēmām un noskaidrojot, kādai vajadzētu būt jaunajai sistēmai.
* **[[Programmatūras projektēšana|Projektēšana]]**. Visas prasības jaunajai sistēmai tiek sadalītas visu prasību grupas, kas attiecas uz aparatūru un programmatūru. Veido detalizētus uzdevumus un aprēķina nepieciešamo cilvēkstundu skaitu un izmaksas, kas nepieciešamas projekta veikšanai.
* **[[Programmēšana]]**. Šajā posmā tiek detalizēti risināti problēmas algoritmi un tie tiek pierakstīti atbilstošajā programmēšanas valodā. Veic datu struktūru izvēli un kodēšanu. Programmēšanas laikā tiek pārbaudīts, vai programma atbilst uzdevuma prasībām, un veic atkļūdošanu.
* **[[Programmatūras testēšana|Testēšana]]**. Šajā posmā tiek veikta sistēmas testēšana, lai pārliecinātos, ka tā darbojas pareizi un visas nepieciešamās programmatūras vajadzības ir realizētas. Izstrādes laikā var rasties problēmas un alternatīvi risinājumi, kas var prasīt pārskatīt iepriekšējos posmus.

## Atjaunināšana
Programmatūras ražotāji regulāri izdod jaunas programmatūras versijas, un šīm jaunajām versijām ir vairāki iemesli:
* Kļūdu novēršana no iepriekšējām versijām — jaunās versijas paredzētas labot problēmas un trūkumus, kas tika konstatēti iepriekšējās versijās, uzlabojot programmas stabilitāti un drošību.
* Jaunu papildu iespēju piedāvāšana — jaunās versijas var ieviest jaunas funkcijas, uzlabot esošās vai piedāvāt jaunus risinājumus, kas paplašina programmas iespējas un funkcionalitāti.
* Lietotājam draudzīgākas saskarnes izveide — jaunās versijas var iekļaut lietotājam draudzīgāku un intuitīvāku lietošanas saskarni, kas palīdz lietotājiem vieglāk izprast programmas darbību un funkcijas.

Izmantojot jaunākas programmatūras versijas, nereti ir nepieciešams arī dators ar jaunāku operētājsistēmas versiju un lielāku veiktspēju. Ja kāds fails ir sagatavots viena un tā paša nosaukuma lietotnes vienā versijā, tad var rasties problēmas to atvērt citā versijā, piemēram, datne var neatvērties vispār vai atvērties ar izmaiņām noformējumā u.tml. Lai novērstu šādas problēmas, lietotnēs bieži ir iespēja saglabāt datnes vecākās versijās vai citā formātā. Tas palīdz saglabāt datnes lietojamību un atvēršanas iespējas dažādās programmatūras versijās.

## Atsauces