Este artigo apresenta uma visão geral da engenharia de software, que é um ramo da engenharia associado ao desenvolvimento de produtos de software, programas de computador, usando princípios, métodos e procedimentos científicos bem definidos. O resultado da engenharia de software é um produto de software eficiente e confiável.

O gerenciamento de projetos de software tem um escopo mais amplo do que o processo de engenharia de software, pois envolve comunicação, suporte pré e pós-entrega, manutenção, etc.

Este tutorial apresenta uma compreensão geral do produto de software, projeto de software e processo de desenvolvimento de software, gerenciamento de projeto de software e complexidades de projeto, etc.

No final do tutorial, você deverá possuir uma boa compreensão dos conceitos de engenharia de software.

Quem deve ler este tutorial

Profissionais iniciantes ou em nível pleno que necessitam aprender, compreender ou revisar os conceitos fundamentais para o desenvolvimento de produtos de software com alta qualidade.

Visão geral da Engenharia de Software

Primeiramente devemos entender o que significa engenharia de software. O termo é composto de duas palavras: software e engenharia.

Software é mais do que apenas um código de programa. Um programa é um código executável, que serve a algum propósito computacional. Software é considerado uma coleção de código de programação executável, bibliotecas associadas e documentações. Software, quando feito para um requisito específico, ou um domínio de negócio específico, é chamado de produto de software.

Engenharia, por outro lado, trata do desenvolvimento de produtos, usando princípios e métodos científicos bem definidos.

Engenharia de software, portanto, é um ramo da engenharia associado ao desenvolvimento de produtos de software, usando princípios, métodos e procedimentos científicos bem definidos. O resultado da engenharia de software é um produto de software eficiente e confiável.

Definições de Engenharia de Software

Algumas definições formais, publicadas por instituições e pesquisadores reconhecidos no ramo:

(1) A aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e manutenção de software; isto é, a aplicação da engenharia ao software.

(2) O estudo de abordagens como na afirmação acima.

IEEE

A engenharia de software é o estabelecimento e uso de princípios sólidos de engenharia para obter software economicamente confiável e que funcione eficientemente em máquinas reais.

Fritz Bauer, cientista da computação

Evolução do Software

O processo de desenvolvimento de um produto de software usa princípios e métodos de engenharia de software. Este processo é conhecido como evolução do software. Isso inclui o desenvolvimento inicial de software, sua implementação, manutenção e atualizações, até que o produto de software planejado seja definido como finalizado, isto é, que satisfaça os requisitos esperados.

Na verdade, o processo tende a ser mais complicado, pois alguns softwares podem funcionar e receber atualizações por décadas, portanto a evolução do software é melhor relacionada ao contexto de um projeto de desenvolvimento de software, que pode ser um software construído do zero, ou um projeto para incorporar melhorias significativas a ele - lançamentos de versões ou melhorias contínuas.

O processo de evolução começa a partir do processo de coleta de requisitos. Diversos métodos podem ser aplicados a partir desta etapa para a condução do projeto evolutivo de construção do software. Um dos métodos é a criação de um protótipo do software para ser apresentado aos usuários e sponsors, com o objetivo de obter seu feedback no estágio inicial do desenvolvimento do produto de software. Desta maneira eles podem identificar necessidades de mudanças, nas quais várias atualizações e manutenções consecutivas também mudam. Este processo altera constantemente o software original, até que o objetivo definido para o projeto do software desejado seja atingido.

Protótipos de software podem ser desenvolvidos em diversos níveis de refinamento. Leia sobre no artigo Prototipação de Software.

Mesmo depois de o usuário ter o software desejado em mãos, o avanço da tecnologia e as mudanças nos requisitos forçam o produto de software a mudar de acordo, acompanhando o mercado, o negócio que apoiam ou melhorias tecnológicas. Recriar um software já existente a partir do zero e lidar com os requisitos, em geral, não é viável. A solução mais viável e econômica é atualizar constantemente o software existente para que ele atenda aos requisitos mais recentes.

Ref: https://www.tutorialspoint.com/software_engineering/software_engineering_overview.htm