# Software-ontwikkelomgeving

Een software-ontwikkelomgeving is het geheel van computersoftware en hulpmiddelen die een software-ontwikkelaar ondersteunen bij het ontwikkelen van computersoftware.
De onderdelen van een software-ontwikkelomgeving hangen af van de taken die moeten worden uitgevoerd. In het algemeen kan een onderscheid gemaakt worden tussen omgevingen voor het ontwerpen, programmeren en testen van software. Afhankelijk van zijn vereisten kan de ontwikkelaar meerdere van deze aspecten opnemen in zijn software-ontwikkelomgeving. Daarnaast kunnen nog diverse andere hulpmiddelen deel uitmaken van de software-ontwikkelomgeving, zoals een versiebeheersysteem, het opzetten en controleren van achterliggende databanken en diensten, enz. Aanvankelijk bestond een ontwikkelomgeving uit een verzameling van verschillende kleine afzonderlijke tools, maar later werden veel hulpmiddelen meer en meer op elkaar afgestemd en verschenen geïntegreerde software-ontwikkelomgevingen.

## Ontwerpen

Voor een ontwerper zal de omgeving over het algemeen bestaan uit één of meer modelleergereedschappen, programma's waarmee modellen gemaakt en aangepast kunnen worden. Deze modellen dienen als een beschrijving van de te maken software. Modelleringsgereedschappen bieden over het algemeen ondersteuning voor één of meer schematechnieken, zoals UML. Waar UML-editoren vroeger afzonderlijke programma's waren, bieden veel producten nu de mogelijkheid automatisch schema's aan te maken uit broncode, of uit schema's code te integreren.

## Programmeren

Een programmeur zal over het algemeen beschikken over een reeks hulpmiddelen (of programmeertools) voor het creëren van software, zoals:
* een teksteditor of een broncode-editor voor het invoeren van programmeercode
* een compiler en een linker
* een debugger
* online documentatie van de gebruikte programmeertalen, bibliotheken, API's, protocollen. Hulpmiddelen zoals een documentatiegenerator maken het aanmaken van eigen documentatie eenvoudiger.
* verschillende tools die het creëren van code vergemakkelijkt, zoals het ontwerpen van een GUI, automatisch aanmaak van code en documenten.
* een versiebeheersysteem voor het ondersteunen van versiebeheer
De programmeerhulpmiddelen werden steeds meer geïntegreerd en afgestemd op elkaar, uiteindelijk ontstonden zo Integrated Development Environments (IDE's), omgevingen waar verschillende van deze functies en hulpmiddelen geïntegreerd zijn in een intuïtieve grafische werkomgeving.
Vaak brengen fabrikanten een volledige bundel hulpprogramma' en documentatie uit die de programmeur in staat moet stellen een software-ontwikkelomgeving op te zetten waarin hij kan ontwikkelen voor een specifiek softwareframework, besturingssysteem of hardwareproduct, dit noemt men een Software Development Kit.

## Testen

Bij het testen van software wordt uiteraard gebruikgemaakt van één of meerdere exemplaren van de ontwikkelde software. Daarnaast worden vaak testgereedschappen gebruikt die het mogelijk maken om testen automatisch uit te voeren. Voor het vastleggen en volgen van fouten en problemen wordt vaak gebruikgemaakt van een issue tracker.

## Omgeving

Met het woord omgeving duidt men soms ook een bepaalde configuratie van de software die getest moet worden aan. Bij de bouw van grote softwaresystemen worden vaak verschillende testen uitgevoerd die gericht zijn op verschillende aspecten van de software. Om deze testen gelijktijdig uit te kunnen voeren wordt de software dan in verschillende 'omgevingen' neergezet.
Zo kan één omgeving gebruikt worden voor functionele testen, terwijl een andere wordt gebruikt om de prestaties van de software te testen.