Engenharia De Software: Investimento Ou Desperdício?

Engenharia De Software: Investimento Ou Desperdício?

Como surgiu a Engenharia de Software?

O termo “crise do software” foi criado no final dos anos 60 para tratar de uma séria questão que começava a despontar: a dificuldade enfrentada para desenvolvimento de softwares. Essa situação foi desencadeada pela complexidade cada vez maior dos problemas, ausência de técnicas bem estabelecidas e crescente demanda por novas aplicações. Para contorná-la, surge a engenharia de software, que traz uma abordagem disciplinada e sistemática sobre o desenvolvimento, operação e manutenção, incluindo métodos para projeção, implementação, teste e documentação.

Qual modelo usar?

Um modelo de desenvolvimento de software tem como objetivo descrever formalmente as atividades a serem seguidas. Existem diversas opções: o modelo cascata, o de prototipação, o espiral, o incremental e o RUP, todos com suas vantagens e desvantagens. No entanto, a principal metodologia usada nos dias de hoje é a Ágil, mais especificamente o Scrum. Com foco na gestão de projetos, ela tem uma base no planejamento iterativo e incremental, por meio de Sprints (um ciclo envolvendo as pessoas que estão trabalhando no projeto, com reuniões e entregas frequentes, a fim de promover um desenvolvimento mais focalizado e feedback frequente).

Em cada Sprint, os membros da equipe – geralmente pequena – têm tarefas a cumprir e, no fim de cada uma delas, é feita uma reunião de alinhamento sobre o que foi entregue. O Scrum, além de ser muito eficaz, permite a alteração de funcionalidades durante o desenvolvimento de acordo com a necessidade e permite um processo muito fluido e, por isso, é o método usado para grande parte dos projetos.

Ciclo Scrum

Ciclo Scrum

O método SCRUM é o mais usado nos dias de hoje.

Requisitos do projeto

Uma das partes mais importantes do processo de desenvolvimento é a engenharia de requisitos, quando é definido quais são as necessidades e desejos do cliente para o projeto. Depois de três etapas (elicitação, análise, modelagem), é desenvolvido um documento com a especificação de todos os requisitos funcionais e de qualidade do software. Durante esse processo, é fundamental que as etapas citadas acima sejam seguidas, para garantir que o time está alinhado com as expectativas do cliente. Apesar de parecer óbvio, a parte de definição dos requisitos do projeto deve ser discutida e elaborada de forma clara, a fim de evitar problemas futuros, onde a funcionalidade é interpretada de uma maneira diferente por pessoas diferentes.

Imagem que ilustra a importância do documento de requisitos para um projeto bem definido

Imagem que ilustra a importância do documento de requisitos para um projeto bem definido

A ausência de um documento de requisitos claro pode gerar confusão na execução do projeto.

Arquitetura de software

A arquitetura de software é a organização dos componentes e relacionamentos de um sistema e pode ser considerada o pilar de qualquer projeto bem desenvolvido. Apesar de cara, é fundamental para evitar falhas e, por isso, deve ser utilizada, principalmente em softwares críticos. Ao longo dessa etapa, é feita uma análise de quais requisitos são importantes para a arquitetura e, com eles, algumas alternativas são criadas e avaliadas para decidir qual solução é a mais adequada para seguir como pilar do projeto.

Estimativas e métricas

É importante saber, antes de tudo, que as estimativas não são exatas e são afetadas por variáveis humanas, técnicas, ambientais e políticas. No entanto, algumas táticas podem ser usadas para aumentar a precisão no cálculo, como dividir um problema grande em vários menores, utilizar um modelo empírico (COCOMO, por exemplo), usar várias técnicas ou baseá-las em dados históricos. Esses dados são construídos ao longo do tempo, por meio de medidas de tamanho, custo, esforço, qualidade, entre outras, obtidas através de métricas.

Algumas das mais conhecidas são LOC ou KLOC (indicando o número de linhas de código) ou pontos por função (focada na funcionalidade, evitando a dependência da linguagem escolhida) para tamanho e erros por KLOC, tempo médio para mudança, integridade (capacidade de suportar ataques) e usabilidade para qualidade. Algumas medidas, como custo e esforço, têm relação direta com o tamanho. Além de servir como base para estimativas, as medidas de software também indicam a qualidade do produto, avaliam a produtividade dos envolvidos, determinam os benefícios de métodos e ferramentas e justificam novos investimentos, permitindo uma visão melhor do processo e do produto.

Testes

O objetivo dos testes é garantir que o processo e o produto atinjam os níveis de qualidade especificados, assegurando que os requisitos dos usuários estão sendo atendidos e que todas as fases e entre fases do desenvolvimento sejam consistentes, completas e corretas. Contudo, o grande número de combinações de entradas e saídas, problemas com os requisitos e a falta de tempo ou de treinamento são muitos dos obstáculos encontrados durante essa etapa e, por conta deles, os testes são deixados de lado.

Isso é um grande problema, porque erros que passam despercebidos se tornam falhas reveladas durante a utilização, gerando necessidade de manutenção e um alto custo. Para evitar isso, o processo deve ser feito com cuidado e dividido em etapas: planejamento, projeto e execução de casos de teste e análise de resultados. Esses casos consistem em uma entrada e em uma saída prevista e devem considerar partes ainda não testadas, aumentando a probabilidade de revelar um novo erro. A confecção deles pode ser tão difícil quanto o projeto do produto, mas é um dos melhores mecanismos para a prevenção de defeitos.

Manutenção

A manutenção é a parte mais problemática do ciclo de vida do software, podendo chegar a mais de 70% do esforço de desenvolvimento, por conta de migrações para novas plataformas, arquiteturas mal projetadas, melhorias para atender novas necessidades, entre muitas outras dificuldades e situações. Além disso, essa etapa também tem um alto custo financeiro (passando de 50% do orçamento em alguns casos), pode gerar insatisfação do cliente e reduzir a qualidade global do software. Apesar de todos esses problemas, a manutenção é uma fase inevitável no processo e, por isso, é essencial que o software tenha manutenibilidade.

Para isso, algumas práticas podem ser adotadas: cuidado com a codificação, documentação e teste, adoção de boas arquiteturas, disponibilidade de um time qualificado e uso de linguagens de programação e sistemas operacionais padronizados. A fim de diminuir os custos e garantir a adesão dessas práticas, a manutenção do software deve ser considerada durante o desenvolvimento de todas as etapas anteriores, sempre lembrando da sua importância e garantindo a manutenibilidade.

Ou seja, a engenharia de software é composta por diversas etapas, que precisam de muita atenção, esforço e dinheiro e, por isso, grande parte das empresas opta por deixá-la de lado. Para elas, estão economizando recursos ao evitar esse processo longo e detalhista, mas na realidade, como foi descrito nesse artigo, estão apenas postergando os gastos. A adoção da engenharia de software na sua empresa não é um desperdício de dinheiro e sim um investimento no projeto, garantindo que os custos futuros serão menores e a qualidade do produto será maior, gerando uma aprovação superior.

Curtiu nosso artigo sobre a importância da Engenharia de Software? Comente e compartilhe o artigo para seguirmos trazendo conteúdo informativo e de qualidade para você 🙂

Não esqueça também de acessar nossas páginas de Computação e Estatística e ver todos os serviços que temos a oferecer!

Autor: Leonardo Fonseca Pinheiro

ESCREVER UM COMENTÁRIO

Enter your keyword