Tarkvara

Programmeerimisvahendid

Programmeerimisvahendid on tarkvara programmide või rakenduste kujul, mida tarkvara arendajad (tuntud ka kui programmeerijad, koodijad, häkkerid või tarkvarainsenerid) kasutavad, et luua, siluda, säilitada (st parandada või täiustada) või muul viisil toetada tarkvara. Tarkvara kirjutatakse ühes või mitmes programmeerimiskeeles; on palju programmeerimiskeeli ja igaühel neist on vähemalt üks rakendus, millest igaüks koosneb oma programmeerimisvahendite komplektist. Need vahendid võivad olla suhteliselt iseseisvad programmid nagu koostajad, silujad, tõlgid ja teksti toimetajad, mida saab kasutada koos, et täita teatud ülesanne (täpselt nagu füüsilise objekti parandamisel mitme tööriista kasutamine). Nad võivad olla ka integreeritud arenduskeskkond (IDE), millel on mitmed või kõik selliseid kompaktsete tööriistade funktsioonid. Peaaegu kõik programmeerimiskeele rakendused (erandiks on Smalltalk) annavad võimaluse kasutada konkreetseid vahendeid IDE asemel, sest mõned programmeerijad eelistavad IDE mittekasutamist eri põhjustel. Lisaks läheb tavaliselt kauem aega, et arendada IDE "vastuvõetavale" tasemele.

Teostus

Arvuti tarkvara peab laadima arvuti "hoiusesse" (näiteks kõvaketas või mälu). Pärast tarkvara laadimist on arvuti võimeline tarkvara käivitama. See sisaldab rakendustarkvara juhiste läbimist läbi süsteemi tarkvara riistvarale, mis lõpuks saab juhendid kui masinkoodis. Iga juhis põhjustab arvutis teatud operatsiooni teostamise – andmete teisaldamise, arvutuse tegemise või juhiste kontrollvoolu muutmise.
Andmete teisaldamine tähendab tavaliselt andmete teisaldamist ühest mälu kohast teise. Vahel sisaldab see andmete teisaldamist mälu ja registrite vahel, mis võimaldavad protsessoris andmetele kiire juurdepääsu. Andmete teisaldamine, eriti suurtes kogustes, võib olla ohtlik. Seega aeg-ajalt välditakse seda, kasutades andmete viitu. Arvutused sisaldavad lihtsaid toiminguid, näiteks muutuva andme osale väärtuse juurde lisamine. Keerulisemad arvutused võivad sisaldada nii mitmeid operatsioone kui ka andmete elemente.

Litsents

Tarkvaralitsents annab kasutajale õiguse kasutada tarkvara litsentsitud keskkonnas. Mõnel tarkvaral on litsents, kui see ostetakse n-ö riiulilt, riistvaraga kaasas aga OEM litsents. Ülejäänud tarkvaraga kaasneb tasuta tarkvara litsents, andes saajale õigused muuta ja levitada antud tarkvara. Tarkvara võib olla ka vabavara või jaosvara kujul.

Patendid

Tarkvara saab patenteerida mõningates, kuid mitte kõikides riikides. Tarkvarapatendid võivad tarkvara tööstuses olla vastuolulised – paljudel inimestel on selles osas erinevad vaated. Lahkarvamused tarkvarapatentide kohta on seotud konkreetsete algoritmide ja tehnikate kasutamisega, mida tarkvara sisaldab ning mida ei tohi teised dubleerida. Selle dubleerimist peetakse intellektuaalomandi ja autoriõiguse rikkumiseks, sõltuvalt rikkumise raskusastmest.

Väljatöötamine ja rakendamine

Tarkvara väljatöötamine ja rakendamine sõltub suuresti tarkvara keerukusest. Näiteks Microsoft Wordi tarkvara väljatöötamine ja loomine võtab programmide funktsionaalsete erinevuste tõttu palju rohkem aega kui Microsoft Notepadi arendamine ja väljatöötamine.
Tarkvara on tavaliselt välja töötatud ja loodud (kodeeritud/kirjutatud/programmeeritud) integreeritud arenduskeskkondades (IDE) nagu Eclipse, Emacs ja Microsoft Visual Studio, mis suudavad protsessi lihtsustada ja koostada programmi. Nagu erinevates sektsioonides märgitud, loodakse tarkvara tavaliselt olemasoleva tarkvara ja rakenduse programmeerimisliidese (API), mille antud alumine tarkvara annab nagu GTK +, JavaBeans või Swing, peale. Rakenduse programmeerimisliidese raamatukogud on liigitatud erinevatel põhjustel. Näiteks JavaBeansi teeki (inglise library) kasutatakse ettevõtete rakenduste väljatöötamiseks, Windows Formsi teeki aga graafilise kasutajaliidese (GUI) rakenduste väljatöötamisel (näiteks Microsoft Word) ning Windows Communication Foundationi teeki veebiteenuste väljatöötamisel. Programmeerimise alusmõisted quicksort, paisktabel (inglise hash table), rida (inglise array) ja kahendpuu võivad olla tarkvara loomisel kasulikud. Programmi disainimisel tugineb see rakenduse programmiliidesele.