Atualmente os processos de desenvolvimento de software têm sido assunto bastante importante para as empresas de tecnologia de informação (TI), pois permitem que obtenham o mundialmente famoso certificado de qualidade Capability Maturity Model (CMM) nível 2 da Software Engineering Institute (SEI).
O certificado do instituto de engenharia de software do Departamento de Defesa dos Estados Unidos representa um grande diferencial em relação a empresas concorrentes. Os processos de desenvolvimento são objeto de estudos de uma ciência chamada Engenharia de Software.
A década de 90 foi marcada pelo início da adoção de computadores por pequenas e médias empresas, devido a popularização e o baixo custo destas máquinas. Surgia então uma nova e rica oportunidade de comercialização de softwares, que transformou Bill Gates no homem mais rico do mundo. O mercado era imaturo, devido à pouca idade, o que proporcionava a elaboração de software sem a utilização de processos de desenvolvimento. Bastava somente um habilidoso programador, já que raríssimos sistemas empresariais eram complexos nessa decáda.
No final da decáda de 90 o software consolida seu papel importante no mundo empresarial. Como exemplo pode ser citado o evento histórico intitulado bug do milênio, uma demonstração da importância que os softwares possuem na sociedade. Do mesmo período aos dias atuais, os sistemas tornaram–se cada vez mais complexos e exigem uma abordagem mais sistemática de desenvolvimento, visando a redução dos custos de produção, tempo de entrega e número de erros.
Desde então, um novo tipo de engenharia consolidou–se, intitulada Engenharia de Software – motivada pelo interesse das empresas de TI em reduzir custos, e dos clientes, em aumentar a qualidade.
O uso do termo engenharia implica em criar soluções economicamente efetivas, criar soluções para problemas práticos, aplicar conhecimento científico, criar objetos e aplicar a serviço do homem.
Portanto, o desenvolvimento de software é um problema de engenharia, que igualmente busca a criação de soluções econômicas para problemas práticos e a construção de objetos a serviço da sociedade. A engenharia baseia–se na codificação do conhecimento científico sobre um determinado domínio tecnológico – o domínio enfocado em nosso caso é o desenvolvimento de sistemas – e na partilha de soluções anteriores.
Existem três problemas de práticas correntes no desenvolvimento de software que podem ser destacados:
1. o conhecimento sobre as técnicas que funcionam não é partilhado
2. o conhecimento não está organizado de forma a poder ser usado como referência
3. a Ciência da Computação tem feito contribuições teóricas importantes, mas estas não têm influenciado a prática do desenvolvimento de software.
Em suma, engenharia de software, segundo o IEEE, é um enfoque sistemático para o desenvolvimento, operação, manutenção e descontinuação do software; ou – utilizando–se da definição de Barry Boehm, para melhor compreensão – é a aplicação prática do conhecimento científico no projeto e construção de programas e da documentação requerida para desenvolver, operar e manter esses programas.
Os processos de desenvolvimento, destacando o atualmente famoso Rational Unified Process (RUP) da IBM Rational, são os principais objetos de estudo dessa engenharia. Porém, muitos profissionais de tecnologia, por não compreenderem corretamente o significado real dos processos de desenvolvimento e de engenharia de software, usam este termo para designar modelos de ciclo de vida de desenvolvimento, métodos e ferramentas, técnicas para estimar custos, documentação e técnicas para controle de qualidade. Para essa situação o termo mais apropriado seria “gerenciamento de software”. [Webinsider]
.
Fabiano Sousa
<strong>Fabiano Sousa</strong> (fdsousa@gmail.com) é profissional de TI junto à Anatel.