Introdução

Ao passar do tempo, ninguém imaginava que o software tornaria um elemento muito importante para o mundo e teria a capacidade de manipular a informação. Com muitos elementos computacionais tiveram mudanças até hoje e continuam tendo. Com este crescimento computacional, levam a criação de sistemas perfeitos e problemas para quem desenvolvem softwares complexos. As preocupações dos engenheiros de software para desenvolverem os software sem defeitos e entregarem estes produtos no tempo marcado, assim leva a aplicação da disciplina de engenharia de software. Com o crescimento desse segmento muitas empresas possuem mais especialistas em TI em que cada um tem sua responsabilidade no desenvolvimento de software e é diferente de antigamente que era um único profissional de software que trabalhava sozinho numa sala (PRESSMAN, 2006).

 

Software

O software é o conjunto de vários artefatos e não apenas o código fonte (SOMMERVILLE, 2003).      

Realizando uma comparação entre o software e hardware. Chegamos a seguinte conclusão. O software apenas pode ser desenvolvido e realizar a manutenção (mudança) no software é uma tarefa complicada, exige grande esforço da equipe de engenheiro de software. Ao passar do tempo o software fica deteriorado. Já para o hardware apenas pode ser fabricado e realizar a manutenção no hardware é simplesmente trocar à peça que esta em desgaste. Ao passar do tempo o hardware desgasta por vários motivos (PRESSMAN, 2006).

O software é caro porque torna se uma atividade difícil e trabalhosa de ser realizado pelo engenheiro de software (JALOTE, 2005).

De acordo Pressman (2006) o software estão categorizados em seguintes tipos, tais como:

  • Software de sistema. São programas que apóiam outros programas, como o software que realiza a comunicação com o hardware (sistema operacional) e software que ajuda na construção de outro software (compiladores).

 

  • Software de aplicação. São programas que são desenvolvidos para executar no negocio de uma empresa determinada.

 

  • Software cientifico e de engenharia. São algoritmos que processam números.

 

  • Software embutido. São programas construídos para executarem dentro de um produto especifico como a teclas digitais de um forno micro ondas.

 

  • Software para linhas de produtos. São os softwares conhecidos como software de prateleiras.

 

  • Software de web. São aplicativos que são executados via Internet.

 

  • Software de inteligência artificial. São softwares que fazem os usos de algoritmos não numéricos. Estes tipos software se encaixam na robótica.

 

  • Computação ubíqua. São softwares que realiza a verdadeira computação distribuída.  

  • Software aberto. São software que disponibiliza a visualização do código fonte da aplicação para o engenheiro de software modifica da maneira que deseja.  

Software Legado

O nome de software legado é dado quando refere se num programa de computador que foi desenvolvido por há muito tempo. A preocupação do engenheiro de software com os softwares legados esta na baixa qualidade do software. Muitas vezes não existem documentações e se existem são pobres de detalhes, os casos de teste são pobres quando tem e sem um controle de mudanças. E muitas vezes não mexem no software legado quando eles atentem as necessidades do cliente (PRESSMAN, 2006).

 

Engenharia de Software

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

Uma das grandes dificuldades da engenharia do software é resolver o problema e deixar o cliente satisfeito com o software (JALOTE, 2005).

Na demonstração da figura 1 representa uma visão do engenheiro de software em desenvolver o software que traz uma grande satisfação para o usuário quando ele próprio utiliza o software.

A engenharia de software foca no software como produto. Não entra neste escopo o softwares construídos apenas para passarem o tempo dos programadores (PAULA FILHO, 2009).

No desenvolvimento de um projeto de software quanto mais complexo é o software, maior é o empenho que o engenheiro de software deve fazer para desenvolver e tem que ter maior gerenciamento (JALOTE, 2005).

Na demonstração da figura 2 representa uma comparação entre projetos de software grande e pequeno. Verificar que quanto maior é a complexidade do software mais atenção deve ter para a construção do software. 

A base da engenharia de software são conjuntos de atividades para o processo de desenvolvimento de software. A existência de vários tipos de processo de desenvolvimento de software e podemos dizer para resolver o problema do software usam estas atividades tais como: analise de requisito, design do software, código e teste (JALOTE, 2005).

 
  • Analise de requisito. Através da analise de requisito é o momento onde efetua o conhecimento do problema para desenvolve o software (JALOTE, 2005).

 

  • Design do software. Pelo design do software é o momento que o engenheiro de software realiza o planejamento da solução do problema que foi levantado no documento de requisito (JALOTE, 2005).

 

  • Codificação. A codificação é o momento que pega o problema resolvido no design do software e transformará em uma linguagem de programação (JALOTE, 2005).

 

  • Teste. O teste de software é o processo tem a intenção de encontrar defeitos nos artefatos de software (MYERS, 2004). O teste é uma maneira de medir o controle da qualidade do software durante o desenvolvimento de software (JALOTE, 2005).

 

 

Mito do Software

Existem inúmeros mitos de software que pode ver um deles escrito à segu:

Mito 1. Se ocorrer um atraso no cronograma do projeto adicionamos um maior números de programadores no projeto para conseguir fica em dia com as tarefas (BROOKS, 1995).


Conclusão

Com a aplicação da engenharia de software no desenvolvimento do software traz uma certa qualidade para o software que foi produzido onde divide o problema em pedaços e são tratados por vários especialistas em determinada atividade.


Referencias

BROOKS, Jr., F.P. The Mythical Man-Month: Essays on Software Engineering, 20th Anniversary Edition. Reading, MA: Addison-Wesley, 1995, 322p.

JALOTE, P. An Integrated Approach to Software Engineering. 3. ed. New York: Springer, 2005, 566p.

MYERS, G. J. The Art of Software Testing. 2. ed., New York: John Wiley & Sons, 2004, 234p.

PAULA FILHO, W.P. Engenharia de software: fundamentos, métodos e padrões. 3. ed. Rio de Janeiro: LTC,2009, 1248p.

PRESSMAN, R. S. Engenharia de Software. 6. ed. Rio de Janeiro: McGraw-Hill, 2006, 720p.

SOMMERVILLE, I. Engenharia de software. 6. ed., o Paulo: Addison Wesley, 2003, 592p.   

Veja mais links sobre engenharia de software

Curso Extreme Programming XP

Curso de gerenciamento de projetos PMBOK

Curso de controle de versão com GIT

Curso de análise e projeto orientado a objetos

Curso de SCRUM conhecendo o Product Owner

Curso de introdução a reutilização de software e MDD

Curso de especificação de casos de uso

Curso gerenciamento de projetos

Curso de uml diagrama de casos de uso na prática

Curso de Validação Verificação e Testes

Curso de engenharia de requisitos soluções concretas para problemas práticos