Поред хардверских развојних окружења савремено рачунарство су обележила и софтверска развојна окружења. У принципу софтверска развојна окружења имају шире значење од хардверских развојних система. У општем случају оваква развојна окружења пружају подршку за развој софтвера за већ постојеће рачунаре. Њиховим коришћењем се процес развоја програма у великој мери олакшава, па често и аутоматизује.
Поступак развоја програма
Током развоја софтвера извршава се неколико операција:
- Унос и измене изворног програма, написаног у неком од програмских језика. За ову намену се користе тзв. едитори текста (Text Editors).
- Превођење изворног програма у тзв. објектни код (Object Code). За ову операцију се користе језички преводиоци (Compiler, Interpreter).
- Повезивање модула који представљају објектни код, укључујући програмске библиотеке у извршну форму програма захтева коришћење одговарајућих програма, који се називају повезивачи (Linker).
- Пре него се приступи извршавању развијеног рачунарског програма неопходно је извршити његово тестирање и евентуално извршити корекцију утврђене грешке у самој извршној верзији програма. За ову намену се користе програми познати као „дибагери“ (Debugger).
Наведене операције су довеле до развоја одговарајућих рачунарских програма који су помагали пројектантима софтвера да развијају одговарајуће софтверске апликације. У почетку су ти сервисни програми коришћени одвојено. Али је са развојем софтверског инжењерства уочено да би било корисно да се сви ови програми интегришу у јединствене програмске целине – интегрисанe развојнe алате (Integrated Development Tools, IDT). Развој програмске подршке за специјализоване рачунарске системе, поред развоја програма, коришћењем одређеног програмског језика, захтевао је и поседовање додатних могућности од развојног софтверског алата. Ту се пре свега мисли на операцију преношења добијеног машинског кода у развијени хардвер. Као и на могућност тестирања самог развијеног хардвера, односно праћења извршавања програма. Захваљујући томе дошло је до развоја нове класе програмских система – интегрисаних развојних окружења (Integrated Development Environment, IDE).
На крају треба указати и на софтверске системе, који имају шири контекст од самог развоја програма. Треба се подсетити да се поступак решавања проблема уз помоћ рачунара може оквирно реализовати кроз следеће кораке:
- Дефинисање проблема који треба решити;
- Израдити алгоритам решења;
- Реализовати одговарајући рачунарски програм.
Да би се пружила рачунарска подршка у свим фазама решавања проблема дошло је до развоја специјализованих алата – алата за рачунарску подршку софтверском инжењерству (Computer Aided Software Engineering, CASE).