Engenharia de software é uma área interdisciplinar de conhecimento, que agrega ciências exatas e humanas, e.g., engenharia e administração. A área rege o processo produtivo de sistemas baseados em rotinas computacionais, chamado processo de software, que por sua vez inclui especificação, desenvolvimento, manutenção e criação de software.[2] Tais atividades podem ser realizadas com a aplicação de tecnologias e práticas de gerência de projetos e outras disciplinas, visando organização, produtividade e qualidade.[3] Atualmente, essas tecnologias e práticas englobam linguagens de programação, banco de dados, ferramentas, plataformas, bibliotecas, padrões de projeto de software, processo de software e qualidade de software.
Os fundamentos científicos para a engenharia de software envolvem o uso de modelos abstratos e precisos que permitem ao engenheiro especificar, projetar, implementar e manter sistemas de software, avaliando e garantindo suas qualidades. A área que estuda e avalia os processos de engenharia de software, propondo a evolução dos processos, ferramentas e métodos de suporte a engenharia de software é a Engenharia de Software Experimental.