Kaavio ohjelmiston ja laitteiston sijoittumisesta. Kayttaja kayttaa sovellusohjelmaa, joka toimii kayttojarjestelman kanssa, joka ohjaa tietokonelaitteistoa. Seka sovellusohjelma etta kayttojarjestelma ovat ohjelmistoja, jotka voivat koostua useista ohjelmakomponenteista.
Ohjelmisto
tai
tietokoneohjelmisto
(
engl.
software
) on joukko kaskyja
tietokoneen
ja siihen liittyvan
laitteiston
eli tietokonejarjestelman kayttamiseen: ohjelmisto on vastakohta laitteistolle.
[1]
[2]
[3]
[4]
Ohjelmisto on immateriaalista (ilman fyysista olomuotoa) ja nimenomaisesti jotain, mika ei ole konkreettista (laitteistoa).
[4]
Ohjelmisto on myos tarpeen yleiskayttoisen tietokoneen kayttamiseen, jota ilman laitteisto ei ratkaise ongelmaa.
[4]
Termi "ohjelmisto" viittaa yksittaiseen entiteettiin, mutta mitaan yksittaista ei ole: tietokonejarjestelma koostuu sipulimaisista kerroksista, jossa on useita ohjelmakerroksia laitteistoytimen paalla.
[4]
Myos laitteiston sisalla on kerroksia kuten
mikro-ohjelma
ja
firmware
.
[4]
Ohjelmisto koostuu yhdesta tai useammasta
tietokoneohjelmasta
,
valiohjelmasta
,
ohjelmistokehyksesta
tai
ohjelmakomponentista
(kuten
kirjastoista
). Ohjelmistotuotteisiin liittyvat usein myos niiden kayttamat
tiedostot
ja
dokumentaatio
. Ohjelmistoja ovat esimerkiksi niin tavalliset
toimisto-ohjelmistot
ja
videopelit
kuin kokonaiset
kayttojarjestelmatkin
. Usein termeja
ohjelma
ja
ohjelmisto
kaytetaan sekaisin seka toistensa synonyymeina.
Erityisesti
sulautetuissa jarjestelmissa
, mutta myos yleisesti tietokoneista puhuttaessa, ohjelmistoksi kutsutaan usein kaikesta laitteen sisaltamasta ohjelmakoodista muodostuvaa kokonaisuutta.
Laitteistoon laheisesti liittyva ohjelmisto on
firmware
, joka on erikoisunut ohjelmisto.
[5]
Suorittimen
sisainen ohjelma on
mikro-ohjelma
, joka toimii alemmalla tasolla kuin
konekielinen
ohjelma.
[6]
Tietokoneen varsinaisen suorittimen lisaksi
grafiikkasuoritinta
voidaan kayttaa ohjelmakoodin suorittamiseen (
GPGPU
-kaytto).
Ohjelmat voidaan jakaa kahteen kategoriaan:
[2]
- jarjestelmaohjelmat
: tietokonejarjestelman sisaista toimintaa ohjaava ohjelmisto kuten kayttojarjestelma
- sovellusohjelmat
: kayttajan toiminnoista vastaavat ohjelmat kuten taulukkolaskentaohjelmat ja tekstinkasittelyohjelmat
Epatoivottava ohjelmisto on
haittaohjelma
kuten
tietokonevirus
tai
mato
.
Manchesterin yliopiston
Small-Scale Experimental Machine
(SSEM) oli ensimmainen
tietokone
, jossa ohjelmaa voitiin vaihtaa ilman fyysisia muutoksia tietokoneeseen (
tallennetun ohjelman tietokone
).
[7]
Ennen
IBM S/360
:ta ja monopolioikeudenkayntia
IBM
:aa vastaan ohjelmistot seurasivat ilmaiseksi tietokoneen mukana tai ne olivat erityisesti kayttotarpeeseen kehitettyja.
[8]
Kasite
omisteinen ohjelmisto
syntyi vasta vuonna 1983
Applen
oikeudenkaynnissa
Franklin ACE
-tietokoneista.
[9]
[10]
[11]
1950-luvulla julkaistuja varhaisia
korkean tason ohjelmointikielia
olivat
ALGOL
,
COBOL
,
Fortran
ja
LISP
.
Ohjelmistoja voi
ohjelmoida
itse, niita voi saada
ilmaisohjelmina
(
vapaan
ja
avoimen lahdekoodin
ohjelmistot) tai niita voi hankkia kaupallisina valmisohjelmistoina (
omisteinen ohjelmisto
).
[12]
Valmisohjelmistot hinnoitellaan usein viela lisenssipohjaisesti kuten lisenssi per kayttaja tai lisenssi per suoritin (palvelinohjelmistot). Eras ohjelmistotyyppi on
pilvipalveluna
tarjottava
Software as a Service
(SaaS) -ohjelmistotyyppi, jossa ohjelmistoa vuokrataan. SaaS-mallissa hinnoittelu perustuu kayton laajuuteen kuten projektinhallintatyokalussa hallittavien projektien maaraan.
Ohjelmistot voidaan toteuttaa
edusta
- ja
taustasovelluksina
(
frontend
ja
backend
, esimerkiksi verkkoselainsovellukset)
[13]
, apuohjelmien avulla (kuten kaavaeditori Microsoft Officessa
[14]
), komponenttien ja kirjastojen avulla tai yhtena suurena ohjelmana.
Muun muassa pelikonsoleille julkaistavat videopelit voivat olla yhtena suurena binaaritiedostona (
blob
)
[15]
, joka kayttaa useita yhteen liitettyja datatiedostoja.
[16]
[17]
Ohjelmointikielella
toteutettu ohjelma
kaannetaan
tai
tulkataan
siihen tehdylla ohjelmalla. Kaannoksen automatisointiin kaytetaan useita aputyokaluja kuten
GNU Autotools
.
Valmiit ohjelmat ja ohjelmistot voidaan levittaa
jakelupaketteina
tai myytavina kokonaisuuksina. Vapaat ja avoimen lahdekoodin ohjelmistot jaetaan usein
paketinhallintajarjestelman
avulla.
Asennuksen
yhteydessa ohjelma(t) ja sen komponentit
konfiguroidaan
kayttotapausta ja kayttoymparistoa varten.