O termo Engenharia de software (em inglês software engineering) designa o conjunto dos métodos, das técnicas e instrumentos que concorrem para a produção de um software, para além da simples actividade de programação.
A escolha do termo “engenharia” faz directamente referência à engenharia civil, designando a arte da construção. Com efeito, para construir uma obra arquitectural, o simples facto de pôr tijolo e cimento não é suficiente. A construção de um edifício é um todo, compreendendo actividades de concepção arquitectural, de alvenaria, de canalização e de eletricidade, devem ser coordenadas para obter um controlo dos prazos e do orçamento.
A engenharia de software comporta, por conseguinte, aspectos de gestão de projecto para um software nos prazos previstos, com um orçamento dominado e dando satisfação ao cliente (noção de qualidade).