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.
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., São Paulo: Addison Wesley, 2003, 592p.
Veja mais links sobre engenharia de software
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