Kompiuterio programinė įranga, dar vadinama programine įranga, – tai instrukcijų ir jų dokumentų rinkinys, kuris nurodo kompiuteriui, ką daryti ir kaip atlikti konkrečias užduotis. Ji apima visas kompiuteryje esančias programas: nuo taikomąsias programas iki operacinę sistemą. Programos – tai sprendimai, skirti konkrečioms operacijoms atlikti, pavyzdžiui, žaidimams ar teksto redaktoriui. Operacinė sistema (pvz., „Mac OS“, „Microsoft Windows“, „Android“ ir įvairios „Linux“ distribucijos) yra programinės įrangos sluoksnis, kuris veikia kaip platforma programoms paleisti ir valdo naudotojo sąsają (ekraną, klaviatūrą, pelę), resursus, saugyklą ir ryšį su aparatine įranga.

Žodis „programinė įranga“ pradėtas plačiau vartoti XX a. septintojo dešimtmečio pabaigoje siekiant atskirti ją nuo kompiuterinės įrangos, kurią galima fiziškai pamatyti ir paliesti. Iki kompaktinių diskų (CD) ir interneto eros programinė įranga buvo platinama įvairiose kompiuterinių duomenų laikmenose: popierinėse perforacinėse kortelėse, magnetiniuose diskuose ar magnetinėse juostose. Vėliau atsirado diskeliai, DVD, atsiuntimai iš tinklalapių ir programų parduotuvės, o šiandien didelė dalis programų pasiekiama kaip debesijos paslaugos.

Programinės įrangos rūšys

  • Sisteminė programinė įranga. Pagrindas kompiuteriui veikti: operacinė sistema, branduolys, įrenginių tvarkyklės, sistemos bibliotekos ir naudingosios programos (pvz., atsarginių kopijų kūrimas, antivirusai, disko valymas).
  • Naudotojo taikomosios programos. Kasdieniams darbams skirti sprendimai: naršyklės, biuro paketai, el. pašto klientai, grafikos ir vaizdo redagavimo įrankiai, medijos grotuvai, žaidimai, mobiliosios ir žiniatinklio programos, taip pat SaaS (programinė įranga kaip paslauga).
  • Kūrimo įrankiai. Kompiliatoriai, interpretatoriai, integruotos kūrimo aplinkos (IDE), testavimo įrankiai, bibliotekos ir karkasai (frameworks), reikalingi kitai programinei įrangai kurti ir prižiūrėti.
  • Tarpinė programinė įranga (middleware). Programos, kurios sujungia sistemas ir paslaugas, teikia ryšį, autentifikavimą, pranešimų eilės ir API šliuzus.

Operacinės sistemos vaidmuo

Operacinė sistema koordinuoja visus resursus ir teikia bendras paslaugas programoms. Ji:

  • valdo procesorius, atmintį ir procesus (užduočių planavimas);
  • užtikrina failų sistemą, leidimus ir saugumą;
  • tvarko įrenginių tvarkykles ir ryšį su aparatine įranga;
  • suteikia naudotojo sąsają (grafinę ar komandų eilutę) ir lokalizacijos, prieinamumo funkcijas;
  • palaiko tinklo ryšį, virtualizaciją ir konteinerius, leidžiančius izoliuoti ir efektyviai vykdyti programas.
Populiarios sistemos: „Mac OS“, „Microsoft Windows“, „Android“, įvairios „Linux“ distribucijos.

Kas yra firmware?

Žodis „firmware“ apibūdina specialiai konkrečiam kompiuteriui ar elektroniniam įrenginiui sukurtą programinę įrangą, kuri paprastai saugoma Flash arba ROM atminties luste. Ji tiesiogiai valdo aparatinę įrangą ir įsikrauna anksčiausiai, todėl yra itin svarbi įrenginių darbui. Pavyzdžiai: pagrindinės plokštės BIOS/UEFI, SSD, maršrutizatorių ar spausdintuvų programinė įranga, kompaktinių diskų įrenginio programinė įranga arba modemo programinė įranga. Firmware dažnai atnaujinama siekiant ištaisyti klaidas, pagerinti suderinamumą ar užlopyti saugumo spragas.

Kaip programinė įranga pasiekia naudotoją

  • Diegimas. Naudojami diegimo paketai (pvz., .msi, .exe, .dmg), mobiliosios programų parduotuvės, paketų tvarkytuvės (pvz., apt, dnf, winget, Homebrew) ir nešiojamieji (portable) variantai be diegimo.
  • Platinimo modeliai. Fizinės laikmenos (pvz., kompaktinių diskų), atsiuntimai, įmonių katalogai, debesų paslaugos. Vis dažniau siūloma kaip SaaS, kai programai pasiekti pakanka naršyklės.
  • Licencijos. Nuosavybinės (komercinės), atvirojo kodo (pvz., su leidžiančiomis ar copyleft licencijomis), nemokamos (freeware), bandomosios (shareware), prenumeratos. Naudojimą apibrėžia EULA, o atvirasis kodas suteikia teisę peržiūrėti ir keisti šaltinį pagal licencijos sąlygas.

Kokybė, saugumas ir priežiūra

  • Kokybės savybės. Dažniausiai vertinami: patikimumas, našumas, saugumas, naudojamumas, keičiamumas (modifi kuojamumas), perkeliamumas (darbui skirtingose platformose), suderinamumas ir prieinamumas.
  • Atnaujinimai. Kuriami pataisymai (patch), funkcijų papildymai ir saugumo atnaujinimai. Naudojamas versijavimas (pvz., pagrindinė/mažoji/tvarkomoji versija), ilgalaikės palaikymo (LTS) laidos.
  • Saugos praktikos. Skaitmeninis pasirašymas, automatiniai atnaujinimai, teisių apribojimas (mažiausių privilegijų principas), atsarginės kopijos ir atkūrimo planai.

Kūrimas ir procesai

Programinę įrangą kuria komandos, kurios taiko reikalavimų analizę, projektavimą, programavimą, testavimą ir diegimą. Pagrindiniai procesų modeliai: „Build and Fix“, „Waterfall“ (kaskadinis) ir „Agile“ (iteratyvus). Šiandien plačiai taikomas „Agile“ su DevOps, nuolatine integracija ir tiekimu (CI/CD), automatiniu testavimu (vienetų, integraciniu, priėmimo), statine kodo analize ir nuolatiniu stebėjimu. Programinės įrangos inžinieriai siekia kurti patikimas, saugias ir priežiūrai parengtas sistemas, kurios atitinka standartus ir teisės aktus.

Pavyzdžiai, kuriuos sutinkame kasdien

  • Darbo įrankiai: teksto redaktoriui, skaičiuoklės, prezentacijų programos, el. pašto klientai.
  • Ryšys ir naršymas: žiniatinklio naršyklės, vaizdo konferencijos programos, pokalbių platformos.
  • Kūryba ir media: nuotraukų, vaizdo ir garso redagavimo programos, 3D modeliavimo įrankiai.
  • Sisteminės priemonės: atsarginės kopijos, šifravimas, antivirusai, failų archyvavimas.
  • Vairuotojai ir tvarkyklės: įrenginių tvarkymas, spausdintuvų, grafikos plokščių, garso įrangos veikimas.
  • Žaidimai: nuo mobiliųjų iki kompiuterinių ir konsolinių, su grafikos varikliais ir fizikos moduliais.
  • Debesijos paslaugos: el. pašto, dokumentų saugyklos, CRM/ERP, projektų valdymas kaip SaaS.
  • Operacinės sistemos: „Microsoft Windows“, „Mac OS“, „Android“, „Linux“.

Šiandien programinė įranga yra esminė mūsų gyvenimo dalis – nuo telefonų ir automobilių iki finansų, sveikatos priežiūros ir švietimo. Be jos negalėtume efektyviai dirbti, bendrauti ir kurti. Kad programos būtų naudingos, saugios ir patikimos, svarbios yra ir geros projektavimo praktikos, ir nuolatiniai atnaujinimai, ir tai, kad sprendimai būtų pritaikomi skirtingoms reikmėms bei aplinkoms.