Conceito

Engenharia 

Engenharia em seu contesto geral, é a arte das construções, tendo como base o conhecimento científico e empírico. Onde temos o conhecimento cientifico, como o estudo,onde determina-se constante e métodos de trabalho, e o conhecimento empírico que  está relacionado à prática.

Software 

Software é uma sequência de comandos/instruções a serem interpretadas, com o objetivo de executar determinadas tarefas. São os programas de computadores.

Engenharia de Software

Engenharia de software é uma abordagem sistemática e disciplinada para o desenvolvimento de software (PRESSMAN, 2006).

Como a engenharia é a arte das construções, a engenharia de software é a arte da construção de um software. Mais do que isso, ela é uma tecnologia que visa construir um software de maneira coerente e precisa.

Engenharia de software é uma tecnologia de camadas, onde cada camada, representa uma etapa que deve ser executado da melhor forma possível, ela tem como base a camada de processos. Ilustrado na imagem 1.

Imagem 1
Imagem 1

O processo de engenharia de software, é quem mantém as camadas de tecnologia consistente, e possibilita o desenvolvimento racional de um software que  esteja dentro do prazo. Nessa camada há a definição de uma metodologia que deve ser estabelecida para que haja a entrega efetiva do software. O processo  constitui a base para se ter o controle e o gerenciamento de projetos, nisso há o estabelecimento do ambiente que são aplicados os métodos técnicos, é feita  a documentação, para definir marcos, para que a qualidade seja garantida, e as mudanças futuras ocorram de forma correta.

Os Métodos, fornecem informações técnicas para o desenvolvimento do software. Está envolvido nesses métodos, uma grande variedade de tarefas, como: a  analise de requisitos, a comunicação, a modelagem de projeto, construção de programa, teste e suporte. Essa camada se baseia em um conjunto de princípios básicos que governam cada área da tecnologia, que inclui atividades de modelagem e algumas outras técnicas descritivas.

As ferramentas, proporcionam um apoio automatizado (ou semiautomatizado), para as camadas de métodos e de processos. Quando há a integração das ferramentas,  de tal forma que, as informações geradas por uma seja capaz de ser utilizada por outra, é formado um sistema para o suporte ao desenvolvimento de software,  isso se denomina Engenharia de software com o auxilio do computador (CASE - Comput er-Aided Software Engineering).

Aplicações praticas

De modo geral, essas três bases da engenharia de software visam construir um software de maneira coerente e precisa, por isso é crucial que cada camada, seja  realizada da melhor forma possível, para que se obtenha o resultado esperado. 

Na pratica, existem várias metodologias, que visam uma boa pratica da engenharia de software. Como por exemplo:

Modelo cascata (Ou Waterfall)

No modelo cascata, as fases de desenvolvimento são definidas claramente, quando todas as fases são definidas, inicia se o desenvolvimento, quando há o termino  da primeira fase, inicia se a segunda, e assim sucessivamente, porém há um detalhe, como em uma cascata, quando a água passa por ela, é impossível fazer com que ela volte, correto!? 

Por isso, nesse modelo, a declaração das fases devem ser perfeitas, para que não haja erros no futuro.Por exemplo, ao desenvolver um produto web, você precisa 

especificar absolutamente todas as funcionalidades, pelo fato de que o desenvolvimento de software nesse modelo é visto com começo, meio e fim que acontece em  uma sequencia: definição de requisitos, detalhamento e especificação do software, codificação, teste e produção.

Desenvolvimento iterativo de software

Tal desenvolvimento se opõe ao modelo de cascata, pois o ciclo de desenvolvimento é menor e ele se repete varias  vezes, usando um relatório da fase anterior para melhorar a próxima. Como mostra a imagem a seguir.

Nesse modelo as fases são definidas com menos detalhes do que no modelo cascata, porém o mesmo permite alterações no projeto, por exemplo, ao desenvolver um produto web, você especifica tudo o que quer, se o desenvolvedor fizer o visual, e você querer muda-lo,por um motivo ou outro, essa mudança pode ocorrer.

Considerações finais

A base da engenharia de software são os processos, as pessoas e a tecnologia. Por isso, de nada adianta termos os melhores profissionais do mundo se não possuímos boas tecnologias para uso, ou se não possuímos um processo que guie o desenvolvimento de software.

Da mesma maneira, de nada adianta possuir as tecnologias mais avançadas se as pessoas não conseguem manusea-las. 

Além disso, mesmo que pareça inacreditável, de nada adianta termos a melhor tecnologia e as melhores pessoas se não existe um processo que guie as atividades dessas pessoas utilizando tais tecnologias. 

Referencias

http://www.guiadastartup.com.br/boas-praticas-de-engenharia-de-software/

https://books.google.com.br/books?hl=pt-BR&lr=&id=rtBvl_L-1mcC&oi=fnd&pg=PT23&dq=Tecnologia+de+Engenharia+de+Software&ots=9zhl-O4w_v&sig=aQiqF_lBhoPFawTQ_0n9UxQzM28#v=onepage&q&f=false

https://books.google.com.br/books?hl=pt-BR&lr=&id=wexzCwAAQBAJ&oi=fnd&pg=PR1&dq=Tecnologia+de+Engenharia+de+Software&ots=0M0HlLQA20&sig=CuSs4qknbXCebsmH0NGIkslxads#v=onepage&q=Tecnologia%20de%20Engenharia%20de%20Software&f=false