A engenharia de software é a aplicação dos princípios usados no campo da engenharia, que geralmente lida com sistemas físicos, ao projeto, desenvolvimento, teste, implantação e gerenciamento de sistemas de software.
O campo da engenharia de software aplica a abordagem disciplinada e estruturada à programação que é usada na engenharia ao desenvolvimento de software com o objetivo declarado de melhorar a qualidade, tempo e eficiência orçamentária, juntamente com a garantia de testes estruturados e certificação de engenharia.
A engenharia de software é tipicamente usada para sistemas de software grandes e intrincados ao invés de aplicações ou programas únicos. O desenvolvimento, no entanto, é simplesmente uma fase do processo. Enquanto um engenheiro de software é tipicamente responsável pelo projeto de sistemas, os programadores são frequentemente responsáveis pela codificação da sua implementação.
A engenharia de software envolve uma série de campos que cobrem o processo de engenharia de software e certificação, incluindo: levantamento de requisitos, projeto de software, construção de software, manutenção de software, gerenciamento de configuração de software, gerenciamento e criação de software, modelos e métodos de engenharia de software, qualidade de software, práticas profissionais de engenharia de software, bem como computação fundamental e estudo matemático e de engenharia.
Embora o uso original do termo seja incerto, a primeira conferência de engenharia de software foi realizada e patrocinada pela OTAN em 1968. A conferência abordou a inconsistência e a falta de fiabilidade no desenvolvimento de software, bem como a necessidade de uma melhor qualidade e fiabilidade. A conferência reuniu especialistas internacionais que concordaram que a abordagem sistemática da engenharia do mundo físico deveria ser aplicada ao desenvolvimento de software, pois já foi desenvolvida com esses objetivos em mente.
O Software Engineering Institute (SEI) é uma organização que trabalha com engenheiros, empresas, educação e instituições governamentais dos EUA para melhorar a eficiência do trabalho dos projetos e processos de engenharia de software e abriga o Computer Emergency Response Team (CERT).