Tietokoneohjelma
Ulkoiset rajapinnat

Tietokoneohjelmalla ei olisi juurikaan käyttöä, mikäli se ei pystyisi kommunikoimaan millään tavalla ympäristönsä kanssa. Tämän vuoksi jokaiseen tietokoneohjelmaan liittyy ulkoisia rajapintoja, joiden avulla ohjelma voi kommunikoida ympäristönsä kanssa. Esimerkiksi lämpömittariin liitetty anturi voi lähettää väyläsignaalin, jonka antaman arvon perusteella tietokoneohjelma voi ohjata rakennuksen lämpötilaa.
Tietokoneohjelman ohjaama tai tietokoneohjelmaa ohjaava ympäristö voi koostua oheislaitteista tai muista tietokoneohjelmista. Koska erilaisia ympäristöjä voi olla teoriassa rajaton määrä, ohjelmien tarvitsemia ulkoisia rajapintoja on pyritty standardoimaan. Mitä vakiintuneempi ulkoinen rajapinta on, sitä useampi tietokoneohjelma sitä pystyy käyttämään ja sitä kestävämpi hyöty rajapinnasta saavutetaan. Tietotekniikan suurimmat kehitysaskeleet ovatkin usein olleet ulkoisten rajapintojen onnistuneita vakiintumisia, esimerkiksi mikroprosessorien käskykannan vakiintuminen tai käyttöjärjestelmien toimintaperiaatteiden yhtenäistyminen.
Tietokoneohjelman kommunikointi ympäristön kanssa voi tapahtua synkronisesti tai asynkronisesti. Lisäksi ohjelma voi sallia tietyn ulkoisen tapahtuman keskeyttää itsensä. Vaihtoehtoisesti ohjelma voi aika-ajoin tarkkailla ulkoista maailmaa lukemalla ulkoisen rajapinnan kautta tilatietoa.
Fyysisten laitteiden ohjaamista varten tietokoneiden prosessoreissa on määriteltynä mekanismeja, joiden avulla ohjelma voi kirjoittaa tai lukea tietoa mikroprosessorin suorittimen ulkopuolelta. Konekielen tasolla nämä ovat prosessoriin liitettyjä portteja tai I/O -muistialueita, joiden kautta tietokoneohjelmat pystyvät oikein toimiessaan ohjaamaan fyysisiä tai virtuaalisia kokonaisuuksia sekä lukemaan näiden kokonaisuuksien syöttämää tietoa. Tietokoneohjelmien rakentamista helpotetaan siten, että nämä palvelut abstraktoidaan käyttöjärjestelmän, laiteajureiden tai sovelluskirjastojen (API) avulla siten että ohjelman kirjoittajan ei tarvitse ymmärtää ulkoisten palveluiden tai laitteistojen sisäistä toimintaa.
Tietokoneohjelmille ulkoisia rajapintoja tarjoavat muun muassa
mikroprosessoriarkkitehtuuri (esimerkiksi I/O -portit, keskusmuisti, väylät, konekieli)
käyttöjärjestelmä (esimerkiksi ohjelmien käynnistäminen, muistin varaaminen, prosessit)
laitteistoajurit (esimerkiksi näytölle piirtäminen, videokaappaus, tulostaminen)
sovelluskehitysympäristö (esimerkiksi ohjelmointikirjastot, poikkeustilanteiden hallinta)
sovelluskirjastot ja komponentit (monipuolisia palveluita lähes mihin tahansa tarkoitukseen)
toiset ohjelmat tai ohjelmistot
Käyttöjärjestelmä, laitteistoajurit, sovelluskehitysympäristöt, sovelluskirjastot ja komponentit ovat yleisnimiä tiettyihin tarkoituksiin erikoistuneista tietokoneohjelmista. Ohjelma käyttää tarvitsemiaan palveluita ajoympäristöstä ja sen abstraktiotasosta riippuen. Alimmalla tasolla oleva mikroprosessori tarjoaa tietokoneohjelmille palveluita, joiden avulla ne voivat aikaansaada fyysisiä muutoksia ympäristössään, esimerkiksi vaihtaa väylän signaalin tason toiseksi.
Kukin rajapinnan toteuttava ohjelma tai laitteisto voi rajoittaa oikeuksia ulkoisten palveluiden käyttöön. Tietotekniikassa monet tietoturvakysymykset liittyvät ulkoisten rajapintojen oikeuksien hallintaan.