Engenharia de Software: Métricas, Processos e Gestão
COCOMO
O modelo COCOMO é uma metodologia de estimativa de cronograma e custo para o desenvolvimento de produtos de software.
É dividido em três partes:
Básico
No modelo básico, calcula-se o esforço e o custo do desenvolvimento em função do número de linhas de código. Embora seja um método rápido, não considera a diferença entre ferramentas ou outros atributos que impactam o custo.
Intermediário
Calcula o esforço em função do tamanho do programa e de quatro "direcionadores de custo" (cost drivers), que contêm 15 subatributos classificados de "muito baixo" a "extra alto".
Cost Drivers
Atributos de produto
- Confiabilidade necessária do software
- Tamanho do banco de dados de aplicação
- Complexidade do produto
Atributos de hardware
- Restrições de desempenho
- Restrições de memória
- Volatilidade do ambiente da máquina virtual
- Tempo de resposta necessário
Atributos de pessoal
- Capacidade do analista
- Capacidade do engenheiro de software
- Experiência em aplicações
- Experiência em máquina virtual
- Experiência em linguagem de programação
Atributos de projeto
- Utilização de ferramentas de software
- Aplicação de métodos de engenharia de software
- Cronograma de desenvolvimento obrigatório
Implementação detalhada
Utiliza as características da versão intermediária com uma avaliação do impacto de custo em cada etapa da engenharia de software. As 5 fases são:
- Plano de exigência;
- Projeto de sistema;
- Projeto detalhado;
- Código do módulo;
- Teste.
Importância do COCOMO
O COCOMO é eficiente para estimar cronogramas, custos e esforço, facilitando a tomada de decisão em empresas que implementam novos sistemas.
Métricas de Software
Uma métrica é a medição de um atributo de uma entidade (produto, recurso ou processo).
Exemplos de métricas:
- Número de defeitos por fase;
- Custo e tempo de desenvolvimento;
- Esforço necessário;
- Tamanho do produto (linhas de código);
- Grau de satisfação do cliente.
Por que medir um software?
Para avaliar a produtividade, reduzir frustrações com cronogramas, indicar a qualidade, melhorar a gestão e identificar melhores práticas.
Categorização das métricas
- Métricas diretas: Observação de atributos (custo, linhas de código, esforço).
- Métricas indiretas (derivadas): Obtidas através de outras métricas (confiabilidade, eficiência, complexidade).
- Métricas orientadas por tamanho: Medidas diretas dos artefatos (ex: páginas de documentação).
- Métricas orientadas por funções: Medição sob o ponto de vista do usuário.
- Métricas de produtividade: Focam na saída do processo.
- Métricas de qualidade: Indicam a adequação às exigências do cliente.
- Métricas técnicas: Focam nas características do software (ex: complexidade lógica).
Processos de Software
Um processo de software é um conjunto de atividades para a produção de um produto. São complexos e dependem do julgamento humano, limitando a automatização total.
Estágios do processo
Requisitos, Design, Codificação, Teste e Manutenção.
Gerenciamento de Projetos
Benefícios
- Minimização de riscos;
- Melhoria na qualidade dos resultados;
- Disponibilidade de informações para decisão;
- Maior comprometimento com objetivos.
Desafios do gerente
- Produto intangível: Dificuldade de visualizar o progresso.
- Ausência de processo padrão: Variações entre empresas.
- Projetos únicos: Grande porte e alta complexidade.
Requisitos de Software
A especificação de requisitos visa garantir produtos de qualidade que satisfaçam as necessidades do cliente dentro do prazo e orçamento.
Classificação dos requisitos
- Funcionais: Descrevem o que o software deve fazer (ex: cadastro de clientes).
- Não funcionais: Restrições ou qualidades (ex: tempo de resposta, compatibilidade).
- De domínio: Derivados da área de aplicação (ex: fórmulas de cálculo).
Gestão de Riscos
A gestão de risco gerencia incertezas para garantir o alcance dos objetivos do projeto. Envolve identificar, documentar e planejar respostas para possíveis problemas ou oportunidades.