A számítógép-programozásban a szoftverkörnyezet egy absztrakció, ami a szoftver által nyújtott általános funkcionalitást képes szelektíven megváltoztatni a felhasználói kód alapján, így alkalmazásspecifikus szoftvert biztosítanak. A keretrendszer szabványosítja az alkalmazások felépítésére és telepítésére. Általános, újrafelhasználható szoftverkörnyezet, ami egy nagyobb platform részeként megkönnyíti alkalmazások, termékek és megoldások fejlesztését. Tartalmazhatnak programokat, fordítókat, könyvtárakat, eszközkészleteket, alkalmazásprogramozási interfészek (API) programkönyvtárakat, amelyek komponenseket raknak össze, hogy támogassák a projekt vagy a rendszer fejlesztését.
Ezen környezetek fontos megkülönböztetéseket tartalmaznak, amik elválasztják őket a normál könyvtáraktól:
- az irányítás megfordítása – Egy szoftverkörnyezetben, nem úgy mint normál felhasználói alkalmazások könyvtáraiban, a teljes programfolyamat ellenőrzését nem a program hívója, hanem a környezet végzi.[1]
- alapértelmezett viselkedés – Egy környezetnek vannak alapértelmezett viselkedései. Ezeknek lényegében hasznos működésűeknek és nem NOOP-oknak (programnyelvi utasítások, amik nem csinálnak semmit) kell lenniük.
- bővíthetőség – Egy környezet bővíthetőnek kell lennie a felhasználó által szelektíven felülírva vagy specializálva a kódot a felhasználói kód által nyújtott specifikus funkciókkal.
- nem módosítható környezeti kód – A szoftverkörnyezet kódja, általában nem módosítható. A felhasználók kibővíthetik a környezetet, de nem módosíthatják a kódját.
A környezeteknek különböző típusai vannak: konceptuális, szoftver, domain, platform, összetevő, szolgáltatás, fejlesztés stb.[2]
- ↑ Riehle, Dirk (2000), Framework Design: A Role Modeling Approach, Swiss Federal Institute of Technology, <http://www.riehle.org/computer-science/research/dissertation/diss-a4.pdf>
- ↑ Shan, Tony: Taxonomy of Java Web Application Frameworks. Proceedings of 2006 IEEE International Conference on e-Business Engineering (ICEBE 2006), 2006 (Hozzáférés: 2010. október 10.)