De software engineering is een discipline die bestaat uit een reeks methoden, tools en technieken die worden gebruikt bij de ontwikkeling van software (software).
Deze discipline overstijgt de programmeeractiviteit, die de fundamentele pijler is bij het maken van een applicatie. De software engineer is verantwoordelijk voor al het beheer van het project zodat het binnen een bepaalde periode en met het geplande budget ontwikkeld kan worden.
Software engineering omvat daarom de voorafgaande analyse van de situatie, het ontwerp van het project, de ontwikkeling van de software, de tests die nodig zijn om de correcte werking ervan te bevestigen en de implementatie van het systeem.
Opgemerkt moet worden dat het softwareontwikkelingsproces de zogenaamde softwarelevenscyclus omvat, die uit vier fasen bestaat: conceptie, ontwikkeling, constructie en overgang.
Het concept bepaalt de reikwijdte van het project en ontwikkelt het bedrijfsmodel; de uitwerking definieert het projectplan, beschrijft de kenmerken en onderbouwt de architectuur; constructie is productontwikkeling; en de overgang is de overdracht van het eindproduct aan de gebruikers.
Zodra dit is voltooid, software onderhoud in het spel komt. Het is een fase van deze engineering waarin de ontdekte fouten (vaak opgemerkt door de gebruikers zelf) worden opgelost en updates worden opgenomen om aan de nieuwe vereisten te voldoen. In het onderhoudsproces zijn ook nieuwe ontwikkelingen opgenomen, waardoor de software een groter aantal taken kan vervullen.
Een gebied dat rechtstreeks verband houdt met software-engineering is de systeemarchitectuur, die bestaat uit het bepalen en schematiseren van de algemene structuur van het project, het met een relatief hoge mate van specificiteit in kaart brengen van het skelet en het aangeven van de verschillende componenten die nodig zijn om het project uit te voeren. ontwikkeling, zoals add-on applicaties en databases. Dit is een fundamenteel punt in het proces en is vaak de sleutel tot het succes van een computerproduct.
De eerste van alle fasen van het werk dat door software-ingenieurs wordt uitgevoerd, bestaat uit het zorgvuldig bestuderen van de kenmerken die nodig worden geacht om het programma te ontwikkelen, en dit is het punt waarop ze een balans moeten vinden (steeds moeilijker te bereiken) tussen de buitensporige eisen van slechte consumenten en de mogelijkheden van het bedrijf. Tijd is geld, en dat weten bedrijven in de IT-wereld maar al te goed.
Elke functie van een programma, elke functie die het comfortabeler, slimmer en toegankelijker maakt, vertaalt zich in een bepaalde hoeveelheid tijd, die op zijn beurt de salarissen draagt van alle mensen die bij de ontwikkeling ervan betrokken zijn. Maar naast de productiekosten die nodig zijn om elk onderdeel van een programma uit te voeren, moet software-engineering beslissen welke van hen zinvol zijn, consistent zijn met de rest en nodig zijn om de essentie en doelstellingen van de applicatie duidelijk te communiceren.