Software-engineering is een reeks methoden en processen die worden toegepast bij het ontwerpen, ontwikkelen, testen, onderhouden en evalueren van computersoftware.
Normaal gesproken moet elke stap van het proces vele malen opnieuw worden bekeken voordat naar de volgende ontwikkelingsfase wordt gegaan. Deze aanpak garandeert de betrouwbaarheid en kwaliteit van de softwareoplossing.
Naast het behandelen van de praktische aspecten van het schrijven en testen van code, richt software engineering zich ook op juridische en ethische implicaties en zorgt ervoor dat het eindproduct voldoet aan professionele normen.