Tarkvararaamistik

Programmeerimises tähendab tarkvararaamistik abstraktsiooni, mis pakub mingit teatud üldistatut funktsionaalsust tarkvaraarenduses ette tulevate ülesannete lahendamiseks olles samas spetsiifilise rakenduse tarvis laiendatav. Raamistikud võivad sisaldada erinevaid tugiprogramme ja tööriistu, kompilaatoreid, teeke või eeldada teatud rakendusliides(t)e kasutamist.

Teekidest eristuvad raamistikud järgmiselt:

 Kontrolli ümberpööramine: raamistiku puhul ei dikteeri koodi kulgu selle kasutaja (programmeerija) kirjutatud kood vaid raamistik ise.
 Laiendatavus: programmeerija saab raamistiku koodi valikuliselt laiendada ja/või üle kirjutada. Vajadusel saab raamistiku panna kasutama uut koodi. Raamistiku enda lähtekoodi muutmist ette nähtud ei ole.

 Põhjendatus 

Tarkvararaamistike loojate eesmärgiks on hõlbustada mingile arendusele esitatud spetsiifiliste talitusnõuete täitmist seeläbi, et "reaprogrammeerija" ei pea enam tegelema süsteemi üldise töötamise pisiasjadega. Näiteks võiks meeskonnal kuluda oluliselt vähem aega pangandustarkvara arendamiseks, kui nad saavad maksimaalselt tegeleda valdkonnaspetsiifilistele nõuetele vastava koodi loomisega, selle asemel, et süveneda HTTP päringute vastuvõtmise detailidesse.

Tarkvararaamistikust saadav töötundide võit võiks olla seda suurem, mida rohkem seda erinevates projektides taaskasutatakse ja mida levinum see arendajate seas on. On levinud kriitika, et programmeerija peab lisaks oma tavalistele töövahenditele õppima ka veel raamistiku eripärasid tundma ja seetõttu tarnitakse tarkvara just ebaefektiivsemalt, kui seda oleks tehtud rätseplahendusena.

Kõige paremini on ajahambale vastu pidanud tarkvararaamistikud, millel on teatud 'elegants' - nende peale ehitatud rakenduse kood on lühidam, loetavam ja lihtsamini muudetav, kui see oleks ilma raamistikuta.

 Näited 
Tarkvararaamistikud sisaldavad tihti suurt osa erinevat abikoodi, et alglaadida lõppkasutajani jõudev rakendus, kuid on lõpuks ise kindla fookusega, näiteks:
 Veebiraamistikud

 Vaata ka 
 Ettevõtte portaal??? (Software framework)

 Viited