Plano de Análise de Esforço e Tempo
Versionamento
Data | Versão | Descrição | Autor(es) |
---|---|---|---|
03/09/2020 | 0.1 | Construção do documento a partir do template recomendado[1] | Murilo Loiola |
11/09/2020 | 1.0 | Revisão do documento | Murilo Loiola |
Introdução
Neste documento serão abordadas técnicas utilizadas para a medição de custos de fabricação de software, onde esses custos representam o valor dos insumos utilizados na fabricação de um determinado produto. Segundo Fenton e Pfleeger (1997), uma estimativa é uma avaliação de probabilidade. Uma estimativa só é útil se for razoavelmente precisa.
Estimativas são necessárias nas fases iniciais do ciclo de vida de cada projeto, pois há uma necessidade de apresentar propostas apropriadas de negócio e administrar corretamente os recursos ao longo do mesmo. O uso de técnicas formais de estimativa pode dobrar a probabilidade do projeto de software ser concluído com sucesso, conforme indicaram as pesquisas de Roetzheim (2000b).
Para a estimativa do custo, será levado em consideração apenas o ciclo de produção do software e não o ciclo de vida por completo, que poderia envolver questões como distribuição, atendimento ao cliente, garantia, propaganda, retirada de mercado etc. Geralmente os custos são subdivididos em Custos de Matéria-Prima, Custos de Mão-de-Obra Direta e Custos Indiretos de Fabricação. O modelo utilizado para a realização dessas estimativas será feito utilizando o método COCOMO (COnstructive COst MOdel).
Modelo de Custo Construtivo (Constructive Cost Model - COCOMO)
COCOMO ou Modelo de Custo Construtivo, é um modelo de estimativa do tempo e esforço de desenvolvimento de um software. Criado por Barry Boehm, é baseado no estudo de sessenta e três projetos. Os programas examinaram de 2.000 a 100.000 linhas de código em linguagens de programação de Assembly a PL/I. Pelo fato dessa metodologia ter utilizado várias linguagens de programação para criar as deduções, constantes e atributos para cada situação, esse método pode ser considerado generalista e útil para quase todos os projetos de software. O COCOMO pode ser divido em três implementações, a depender do tipo de software que será desenvolvido e qual o grau de confiabilidade a que se quer chegar na estimativa de um projeto. São eles:
COCOMO Básico (Basic): computa o esforço e o custo de desenvolvimento considerando uma estimativa do tamanho do programa (em LOC ou contagem do número de linhas de código).
COCOMO Intermediário (Intermediate): computa o esforço e o custo de desenvolvimento considerando uma estimativa do tamanho do programa e um conjunto de direcionadores de custo (avaliações subjetivas do produto, do hardware, do pessoal e dos atributos do projeto).
COCOMO Detalhado (Detailed): além das características do COCOMO intermediário, inclui uma avaliação do impacto dos direcionadores de custo sobre cada etapa do desenvolvimento.
O modelo COCOMO pode ser aplicado em três classes de projetos:
Modo Orgânico: projetos simples, relativamente pequenos, com conjuntos de requisitos não tão rígidos, com equipes pequenas e experientes.
Modo Semidestacado: projetos intermediários (em tamanho e complexidade), com alguns requisitos rígidos e outros não tão rígidos, com níveis mistos de experiência nas equipes.
Modo Embutido: projetos com conjunto rígido de restrições operacionais, tanto de hardware, quanto de software.
Dado as características do software que será desenvolvido, sendo ele um aplicativo para facilitar o acompanhamento (por parte do médico) de grupos de paciente com doenças crônicas, o projeto se encaixa na classe de Semidestacado, pois ele exige certos requisitos rígidos, como confiabilidade na identificação dos dados corretos dos médicos e pacientes, garantia de que os pacientes estarão vinculados ao médico correto, entre outros requisitos que não são considerados triviais. Além disso, o projeto será desenvolvido por uma equipe composta de vários alunos que não fazem parte de uma equipe fixa e que possuem níveis mistos de experiência tanto nas questões tecnológicas quanto no entendimento dos processos de atendimento aos grupos citados.
COCOMO Intermediário
De acordo com as caracteristicas do prjeto a ser densenvolvido, torna-se necessário o uso de uma implementação mais avançada que o COCOMO Básico, mas que também não tenha que lidar com variáveis muito complexas, como no COCOMO Detalhado que faz uso de multiplicadores sensiveis à fase do projeto ou hierarquia do produto(Nível de Módulo, Nível de Subsistema e Nível de Sistema). Assim sendo, a implementação intermediária, que considera atributos de esforços além de oferecer maior simplicidade quando comparada com o COCOMO Detalhado, foi considerada a melhor escolha.
Neste modelo, o COCOMO Básico é ampliado com a finalidade de levar em consideração um conjunto de atributos direcionadores do custo que são agrupados em quatro categorias:
- Atributos do produto:
- confiabilidade exigida do software;
- tamanho do banco de dados;
- complexidade do produto.
- Atributos do hardware:
- restrições ao tempo de execução;
- restrições de memória;
- volatilidade do ambiente de máquina virtual;
- tempo de turnaround (tempo para completar o ciclo) exigido.
- Atributos de pessoal:
- capacidade do analista;
- experiência em aplicações;
- capacidade do programador;
- experiência em máquina virtual;
- experiência com a linguagem de programação.
- Atributos de projeto:
- uso de práticas modernas de programação.
- uso de ferramentas de software;
- cronograma exigido de desenvolvimento.
Cada um desses atributos deve ser classificado de acordo com uma escala que varia de “muito baixo” a “extremamente elevado” (em importância e valor). A partir desta classificação determina-se o Multiplicador de Esforço (considerando a Tabela publicada por Boehm (1981)). O produto de todos os resultados de Multiplicadores de Esforços é chamado de Fator de Ajustamento de Esforço.
Direcionadores de Custo | Muito Baixo | Baixo | Normal | Elevado | Muito Elevado | Extremamente Elevado |
---|---|---|---|---|---|---|
ATRIBUTOS DO PRODUTO | ||||||
Confiabilidade exigida do software | 0.75 | 0.88 | 1.00 | 1.15 | 1.40 | - |
Tamanho do banco de dados | - | 0.94 | 1.00 | 1.08 | 1.16 | - |
Complexidade do produto | 0.70 | 0.85 | 1.00 | 1.15 | 1.30 | 1.65 |
ATRIBUTOS DO HARDWARE | ||||||
Restrições ao tempo de execução | - | - | 1.00 | 1.11 | 1.30 | 1.66 |
Restrições de memória | - | - | 1.00 | 1.06 | 1.21 | 1.56 |
Volatilidade do ambiente de máquina | - | 0.87 | 1.00 | 1.15 | 1.30 | - |
Tempo de turnaround (tempo para completar o ciclo) exigido | - | 0.87 | 1.00 | 1.07 | 1.15 | - |
ATRIBUTOS DE PESSOAL | ||||||
Capacidade do analista | 1.46 | 1.19 | 1.00 | 0.86 | 0.71 | - |
Experiência em aplicações | 1.29 | 1.13 | 1.00 | 0.91 | 0.82 | - |
Capacidade do programador | 1.42 | 1.17 | 1.00 | 0.86 | 0.70 | - |
Experiência em Máquina Virtual | 1.21 | 1.10 | 1.00 | 0.90 | - | - |
Experiência com a linguagem de programação | 1.14 | 1.07 | 1.00 | 0.95 | - | - |
ATRIBUTO DE PROJETO | ||||||
Uso de práticas modernas de programação | 1.24 | 1.10 | 1.00 | 0.91 | 0.82 | - |
Uso de ferramentas de software | 1.24 | 1.10 | 1.00 | 0.91 | 0.83 | - |
Cronograma exigido de desenvolvimento | 1.23 | 1.08 | 1.00 | 1.04 | 1.10 | - |
Cálculo da Estimativa do Esforço
O resultado do esforço representa o valor de Pessoas/Mês. O modelo COCOMO Intermediário usa a seguinte equação para a estimativa do esforço:
E = a x Sb x fae
onde:
- E: é o esforço aplicado (em pessoas/mês).
- S: é o número (estimado) de linhas de código para o projeto (em milhares).
- a: é um coeficiente fornecido pela Tabela.
- b: é um expoente fornecido pela Tabela.
- fae: é o Fator de Ajustamento do Esforço (multiplicação de cada um dos Multiplicadores de Esforço fornecidos pela Tabela).
Tabela para os valores dos coeficientes "a" e "b" de acordo com o tipo do projeto, a mesma tabela utilizada no COCOMO básico:
Projeto de Software | a | b | c | d |
---|---|---|---|---|
Orgânico | 2.40 | 1.05 | 2.50 | 0.38 |
Semidestacado | 3.00 | 1.12 | 2.50 | 0.35 |
Embutido | 3.60 | 1.20 | 2.50 | 0.32 |
Como dito na introdução, nosso projeto é do tipo Semidestacado, portanto os valores serão a = 3.00 e b = 1.12.
Cálculo da Estimativa do Tempo
Representa a quantidade de meses prevista para a conclusão do projeto:
T = c x Ed
onde:
- T: é o tempo de desenvolvimento (em meses cronológicos).
- E: é o esforço aplicado (em pessoas/mês).
- c: é um coeficiente fornecido pela Tabela.
- d: é um expoente fornecido pela Tabela.
Resultados
Estimativa de Quantidade de Linhas de Código:
O projeto não é trivial e, portanto, o número de linhas de código foi estipulado na casa dos milhares. Levando em consideração o uso de frameworks e padronização de código, a linguagem de programação que será utilizada no backend (JavaScript - Node) e o framework que será utilizado no frontend (React Native), o grupo fez uma estimativa inicial de que a aplicação deve alcançar pelo menos 2.500 linhas de código.
Os módulos necessários para o desenvolvimento da aplicação ainda serão estruturados através do levantamento de requisitos. Dessa forma, o grupo estipulou somente o número de linhas de código geral do projeto, como mencionado acima. Espera-se que conforme a estrutura do projeto torne-se mais clara, a estimativa seja refeita com mais precisão.
Estimativa de Esforço
Para 2,5 Kloc:
E = a x Sb x fae
E = 3,0 x 2,51,12 x 0,84
E = 7,03 pessoas/mês
Pesos atribuídos a cada atributo através de uma reunião em grupo para a convergência em cada esforço de cada atributo:
Direcionadores de Custo | Muito Baixo | Baixo | Normal | Elevado | Muito Elevado | Extremamente Elevado |
---|---|---|---|---|---|---|
ATRIBUTOS DO PRODUTO | ||||||
Confiabilidade exigida do software | 0.75 | 0.88 | 1.00 | 1.15 | 1.40 | - |
Tamanho do banco de dados | - | 0.94 | 1.00 | 1.08 | 1.16 | - |
Complexidade do produto | 0.70 | 0.85 | 1.00 | 1.15 | 1.30 | 1.65 |
ATRIBUTOS DO HARDWARE | ||||||
Restrições ao tempo de execução | - | - | 1.00 | 1.11 | 1.30 | 1.66 |
Restrições de memória | - | - | 1.00 | 1.06 | 1.21 | 1.56 |
Volatilidade do ambiente de máquina | - | 0.87 | 1.00 | 1.15 | 1.30 | - |
Tempo de turnaround (tempo para completar o ciclo) exigido | - | 0.87 | 1.00 | 1.07 | 1.15 | - |
ATRIBUTOS DE PESSOAL | ||||||
Capacidade do analista | 1.46 | 1.19 | 1.00 | 0.86 | 0.71 | - |
Experiência em aplicações | 1.29 | 1.13 | 1.00 | 0.91 | 0.82 | - |
Capacidade do programador | 1.42 | 1.17 | 1.00 | 0.86 | 0.70 | - |
Experiência em Máquina Virtual | 1.21 | 1.10 | 1.00 | 0.90 | - | - |
Experiência com a linguagem de programação | 1.14 | 1.07 | 1.00 | 0.95 | - | - |
ATRIBUTO DE PROJETO | ||||||
Uso de práticas modernas de programação | 1.24 | 1.10 | 1.00 | 0.91 | 0.82 | - |
Uso de ferramentas de software | 1.24 | 1.10 | 1.00 | 0.91 | 0.83 | - |
Cronograma exigido de desenvolvimento | 1.23 | 1.08 | 1.00 | 1.04 | 1.10 | - |
Estimativa de Tempo
Para 2,5 Kloc:
T = c x Ed
T = 2,50 x 7,030,35
T = 4,95 meses
Referências
- ^ Arquitetura e Desenho de Software 2019.2 - Grupo "A Monitoria", artefato - Estimativas de Custo;
- Meller, Maristela Corrêa. Modelos Para Estimar Custos De Software: Estudo Comparativo Com Softwares De Pequeno Porte. 2002. Disponível em: https://repositorio.ufsc.br/xmlui/handle/123456789/82351;