Skip to content

Termo de Abertura de Projeto (TAP)

1. Versionamento

Versão Data Modificação Autor
1.0 30/01/2022 Criação do documento João Pedro Moura
1.1 30/01/2022 Adição dos riscos João Pedro Moura
1.2 31/01/2022 Adição dos custos João Pedro Moura
1.3 03/02/2022 Linkagem léxicos Thiago

2. Introdução

   Esse documento tem como principal objetivo formalizar o início do projeto informando os estudos de viabilidade, prazos e entregas, orçamentos, objetivos e os riscos para a construção de todos os documentos e softwares desse programa.

3. Objetivos

   O objetivo principal é construir um aplicativo que um produtor possa estar utilizando para realizar a confecção de sua cardeneta de campo de um talhão de sua propriedade, através da ajuda pelo envio de fotos, e análise/verificação de um técnico sobre o artefato construído, de forma intuitiva, simples e rápida.

4. Justificativa

   O registro e venda de produtos agrícolas exige um mapeamento preciso e bem feito, de forma que uma cultura possa ser facilmente rastreável, e caso ocorram problemas, seja de fácil descobrimento a sua causa. Entretanto, é necessário um nível de conhecimento de leitura e escrita para a confecção de uma cardeneta de campo de acordo com os padrões exigidos.

   Por esse motivo, surge o papel importante dos técnicos em ajudar e validar o preenchimento desse artefato pelos produtores. Entretanto, muitas vezes essa comunicação entre as partes e o preenchimento da caderneta acontecem de formas muito manuais e via whatsapp, portanto, surge a premíssia principal desse projeto em se criar uma plataforma de fácil utilização tanto para produtores como para técnicos no preenchimento da sua cardeneta de campo.

5. Prazos e Entregas

   A entrega desse produto será feita em partes e conforme o que foi definido no plano de ensino da matéria de Arquitetura e Desenho de Software da professora Milene, a seguir se encontram os principais marcos da evolução desse projeto:

Entrega Estimativa de Entrega
Base 04/02/2022
Modelagem 21/02/2022
Padrões de Projeto 21/03/2022
Reutilização de Software 18/04/2022

Tabela 1: Tabela de prazos e entregas.
Fonte: Autor.

6. Riscos

   Dentro da gerência de um projeto de software, um dos pontos essenciais é realizar a gestão de riscos do produto. Com esse controle, é possível a equipe entender, listar, acompanhar, controlar, previnir e medir os impactos de cada risco dentro de todos os ciclos de vida do software que está sendo construído. Com essa medição, é possível focalizar nos riscos com uma maior prioridade - não ignorando aqueles com prioridade inferior - e tomar medidas para previnir seus acontecimentos [1].

6.1 Estrutura Analítica de Riscos (EAR)

   Uma das ferramentas utilizadas para gerir os riscos desse projeto é a Estrutura Analítica de Riscos (EAR), que corresponde a uma ferramenta de agrupamento e organização dos riscos em categorias [2], a seguir é possível visualizar essa categorização de forma visual para o projeto:

EAR

Figura 1: Estrutura Analítica de Riscos.
Fonte: Autor, baseado no projeto Curumim [3].

6.1.1 Externo

  • Cliente: Diz respeito ao critério de aceitação dos clientes desde etapas inicias de elicitação de requisitos até a utilização diária da aplicação.
  • Pandemia: Diz respeito à atual situação do mundo, com a pandemia do Covid-19 e da nova gripe H3N2.

6.1.2 Organizacional

  • Dependências de Projeto: Se refere à possíveis riscos advindo de depêndencias utilizadas dentro do projeto, sendo aplicável também aos riscos técnicos.
  • Financiamento: Referente à riscos em relação aos custos do projeto e possíveis financiamentos de interessados.
  • Recursos: Similar aos riscos de financiamento e também diretamente ligado aos custos do projeto.
  • Priorização: Riscos influenciados pelo cliente e possíveis priorizações equivocadas dos requisitos.

6.1.3 Técnico

  • Framework: Diz respeito à riscos de software em relação à frameworks utilizados.
  • Qualidade: Referente a modelagem FURPS+ dos requisitos dentro de todo o escopo do projeto e sua utilização.
  • Infraestrutura: Riscos advindos de plataformas que fornecem serviços de hospedagem.
  • Desempenho: Diretamente relacionados à velocidade e eficiência da aplicação construída.

6.1.4 Gerencial

  • Estimativas: Riscos relacionados aos prazos de entregas e estimativas.
  • Comunicação: Diz respeito à comunicação entre membros de equipe.
  • Planejamento: Referentes aos riscos de um planejamento mal feito ou equivocado.

6.2 Strength, Weakness, Opportunity, and Threat (SWOT)

   Framework de gerência de riscos usado para avaliação competitiva e planejamento estratégico. Essa análise, busca projetar uma visão realista baseada em fatos e orientada por dados dos pontos fortes e fracos de uma organização [4].

Forças Comprometimento da equipe, experiências prévias dentros dos frameworks escolhidos, comunicação eficaz entre membros.
Fraquezas Falta de conhecimento, atraso de entregas indivudais.
Oportunidades Possibilidade de continuidade do projeto, capacitação em novas linguagens/frameworks, aquisição de conhecimentos em novas áreas do desenvolvimento de softwares.
Ameaças Greves da faculdade, doenças.

Tabela 2: Tabela SWOT.
Fonte: Autor.

6.3 Análise Quantitativa de Riscos

   Partindo agora para uma análise dos riscos através de dados mensuráveis e numéricos, a equipe optou por utilizar a Análise Quantitativa de Riscos [5]. Para realizar esse levantamento, utilizou-se a matriz de probabilidade e impacto que especifica as possíveis combinações e permite uma classificação dos riscos de acordo com uma prioridade. A seguir se encontram as tabelas:

6.3.1 Probabilidade

Peso Atributo Probabilidade
5 Esperado 81 ~ 100%
4 Muito Provável 61 ~ 80%
3 Provável 41 ~ 60%
2 Pouco Provável 21 ~ 40%
1 Quase Nulo 0 ~ 20%

Tabela 3: Tabela de probabilidades.
Fonte: Autor.

6.3.2 Impacto

Peso Impacto Descrição
5 Alto Impossibilita a continuação do projeto
4 Elevado Alto impacto no andamento do projeto
3 Moderado Afeta o projeto, mas tem solução
2 Baixo Influência baixa dentro do projeto
1 Limitado Impacto quase nulo

Tabela 4: Tabela de impacto.
Fonte: Autor.

6.3.3 Prioridade (Probabilidade x Impacto)

P/I Limitado Baixo Moderado Elevado Alto
Quase Nulo 1 2 3 4 5
Pouco Provável 2 4 6 8 10
Provável 3 6 9 12 15
Muito Provável 4 8 12 16 20
Esperado 5 10 15 20 25

Tabela 5: Tabela de prioridade.
Fonte: Autor.

6.3.4 Riscos Identificados

6.3.4.1 Riscos Externos

Risco Impacto Probabilidade Prevenção Resposta Prioridade
Desistência do cliente Elevado Pouco Provável Sempre estar em sincronia com os desejos do cliente e com o que está sendo produzido Buscar novo cliente com ideias similares e adaptar o projeto 8
Indisponibilidade de um integrante por doença Moderado Provável Buscar sempre atender as prevenções para o Covid-19 e a nova gripe H3N2 Alocação de membros para as issues que ficarem desfalcadas e revisão e adaptação do escopo do projeto 9

Tabela 6: Tabela de riscos externos.
Fonte: Autor.
6.3.4.2 Riscos Organizacionais

Risco Impacto Probabilidade Prevenção Resposta Prioridade
Desistência de integrante da matéria Alto Pouco Provável Manter motivação dos membros sempre alta e uma boa gerência de equipe Realocação das issues para os membros restantes e revisão e adaptação do escopo do projeto 10
Priorização equivocada de requisitos Elevado Pouco Provável Realizar uma elicitação e priorização condizente com as necessidades dos clientes Realizar nova elicitação e priorização de requisitos 8
Falta de recursos e financiamento Limitado Quase Nulo Buscar atender as necessidades do cliente para que se mantenham os financiamentos Por se tratar de um projeto open source para uma disciplina, não será procurado novas fontes de financiamento 1

Tabela 7: Tabela de riscos organizacionais.
Fonte: Autor.
6.3.4.3 Riscos Técnicos

Risco Impacto Probabilidade Prevenção Resposta Prioridade
Dificuldades com as tecnologias utilizadas Moderado Pouco Provável Treinamentos e pareamentos Buscar treinamentos e troca de conhecimentos na equipe 6
Falhas na infraestrutura do sistema Alto Provável Utilização de boas plataformas de hospedagens para a infraestrutura do projeto Alterar a plataforma responsável pela hospedagem do projeto 15
Baixo desempenho da aplicação Alto Provável Criação/utilização de programas eficientes Procurar novas implementações mais eficientes para determinado problema 15
Descontinuidade de Frameworks Alto Quase Nulo Utilização de frameworks famosos e em constante desenvolvimento Alteração de framework e em casos extremos da linguagem de programação 5

Tabela 8: Tabela de riscos técnicos.
Fonte: Autor.
6.3.4.4 Riscos Gerenciais

Risco Impacto Probabilidade Prevenção Resposta Prioridade
Falta de planejamento Alto Pouco Provável Planejar bem sempre previamente às entregas Buscar alcançar um replanejamento para o tempo restante 10
Falhas de comunicação entre a equipe Elevado Quase Nulo Utilizar formas de engajar e aumentar a comunicação entre a equipe Alocar issues em pares e usar atividades de engajamento 4
Falta de atenção nas datas de entrega Alto Quase Nulo Sempre estar preparado previamente e ler o plano de ensino da matéria Realocar membros para realizar as tarefas restantes 5

Tabela 9: Tabela de riscos gerenciais.
Fonte: Autor.

7. Custos

7.1 Introdução

   Além dos riscos, a gerência de custos de um projeto de software é um outro ponto muito importante em todo o ciclo de vida do mesmo. Apesar de sua importância, essa medição tende a ser problemática visto que não existe um consenso sobre qual técnica ou modelo utilizar, alguns pesquisadores defendem a contagem por pontos de função, já outros afirmam que a utilização de linhas de código em um software é mais eficiente (CORRÊA, 2002) [5].

   De acordo com as pesquisas de Capers Jones, é indicado que as técnicas de estimativas formais são capazes de dobrar a probabilidade de um projeto de software ser concluido com sucesso, ressaltando a importância dessa gerência para o ciclo de vida do software. Hazan (2001), Calvert (1996) e Rezende (1999), ainda citam algumas razões principais para realizar essa medição, são elas:

  • Formar uma baseline para estimativas;
  • Verificar se as metas de produtividade e qualidade estão sendo atingidas;
  • Avaliar as vantagens do uso de novos métodos e ferramentas de engenharia de software;
  • Melhorar o relacionamento com o cliente;
  • Ajudar na justificativa de pedidos de treinamento e aquisição de novas ferramentas;
  • Melhorar a gerência de contratos de software;
  • Reduzir o risco do estabelecimento de um cronograma inviável;
  • Melhorar a gerência de projetos de desenvolvimento de software;

7.2 COCOMO

   Para realizar essa medição e gerência de riscos do projeto, a equipe optou por estar utilizando o modelo algorítmico COnstructive COst MOdel (COCOMO), desenvolvido por Barry Boehm (1981). Dentro desse modelo, ainda foi apresentado três possíveis implementações de acordo com o tipo de software desenvolvido e o grau de confiabilidade esperado, são eles:

  • COCOMO Básico: realiza a medição do esforço e custo de desenvolvimento baseado em uma estimativa de tamanho do programa (linhas de código).
  • COCOMO Intermediário: por sua vez o intermediário, além de utilizar essa estimativa de tamanho do programa faz o uso de um conjunto de direcionadores de custos, como: avaliações subjetivas do produto, do hardware, do pessoal e dos atributos do projeto.
  • COCOMO Detalhado: utiliza todas as métricas do COCOMO intermediário mais uma avaliação do impacto dos direcionadores de custos dentro de cada etapa do ciclo de vida do software.

   Além disso, o COCOMO ainda se divide em três classes de projeto distintos [5], são eles:

  • Modo Orgânico: Projetos simples, com equipes pequenas e experientes e sem um conjunto muito rígido de requisitos.
  • Modo Semidestacado: Projetos de tamanho e complexidade intermediários, já com alguns requisitos rígidos e outros não tão rígidos e com uma equipe de níveis mistos de experiência.
  • Modo Embutido: Projetos com conjuntos rígidos de restrições tando de software como de hardware.

   Portanto, após discussões o modelo escolhido foi o COCOMO Intermediário Semidestacado com enfoque nos seguintes atributos definidos por Boehm (1981):

  • Atributos de Produto
    • Confiabilidade exigida do software;
    • Complexidade do produto;
  • Atributos de Pessoal
    • Capacidade do programador;
    • 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;

7.3 Tabela de Coeficientes

   Para suprir as necessidades do COCOMO e calcular a estimativa de esforço e tempo, utilizou-se uma matriz composta do COCOMO intermediário para os atributos "a" e "b" e para os atributos "c" e "d" aproveitou-se os valores referentes da tabela do COCOMO básico, disponibilizados por Boehm (1981).

Projeto de Software a b c d
Orgânico 3,20 1,05 2,50 0,38
Semidestacado 3,00 1,12 2,50 0,35
Embutido 2,80 1,20 2,50 0,32

Tabela 10: Tabela de coeficientes.
Fonte: Boehm (1981).

7.4 Multiplicadores de Esforço

Direcionadores de Custo Muito Baixo Baixo Normal Elevado Muito Elevado Extremamente Elevado
Atributos de Produto
Confiabilidade exigida do software 0,75 0,88 1,00 1,15 1,40 -
Complexidade do produto 0,70 0,85 1,00 1,15 1,30 1,65
Atributos de Pessoal
Capacidade do programador 1,42 1,17 1,00 0,86 0,70 -
Experiência com a linguagem de programação 1,14 1,07 1,00 0,95 - -
Atributos 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 -

Tabela 11: Tabela de multiplicadores de esforço.
Fonte: Boehm (1981).

7.5 Cálculo da Estimativa de Esforço

   Seguindo, portanto, a modelagem do COCOMO parte-se agora para o cálculo da estimativa de esforço. Pelas características do projeto e pelo modo intermediário ter sido escolhido para o desenvolvimento desses software, Boehm (1981) define a seguinte equação:

\[ \operatorname{E} = a * S^b * 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 10.
  • b: é um expoente fornecido pela Tabela 10.
  • fae: é o Fator de Ajustamento do Esforço (multiplicação de cada um dos Multiplicadores de Esforço fornecidos pela Tabela 11).

   Portanto, de acordo com as decisões da equipe em relação aos multiplicadores de esforço, o fae equivale à:

\[ \begin{align} fae &= 1,15 * 1,00 * 1,00 * 1,07 * 0,82 * 0,91 * 1,10 \\ fae &\approx 1,01 \end{align} \]

   Em equipe, o grupo decidiu utilizar uma estimativa de cerca de 2000 linhas de código equivalente à 2Kloc. Aplicando na equação obtemos:

\[ \begin{align} \operatorname{E} &= 3,00 * 2^{1,12} * 1,01 \\ \operatorname{E} &\approx 3,00 * 2,17 * 1,01 \\ \operatorname{E} &\approx 6,59 \textrm{ pessoas/mes} \end{align} \]

7.6 Cálculo da Estimativa de Custo

   Por fim, o grupo optou por utilizar o cálculo da estimativa de custo disponível pelo COCOMO básico, definida pela seguinte equação conforme Boehm (1981):

\[ \operatorname{T} = c * E^d \]

   Dessa forma, utilizando os valores de "c" e "d" da tabela 10 junto com a estimativa de esforço, obtemos o seguinte resultado:

\[ \begin{align} \operatorname{E} &= 2,50 * 6,59^0,35 \\ \operatorname{E} &\approx 2,50 * 1,93 \\ \operatorname{E} &\approx 4,83 \textrm{ meses} \end{align} \]

8. Referências

[1] Gerenciando os riscos do projeto com a matriz de probabilidade e impacto. Disponível em: https://danielettinger.com/2011/06/14/gerenciando-os-riscos-do-projeto-com-a-matriz-de-probabilidade-e-impacto/. Acesso em: 30 de jan. de 2022.

[2] Gerenciando os riscos do projeto com a matriz de probabilidade e impacto. Disponível em: https://glicfas.com.br/estrutura-analitica-de-riscos-2/. Acesso em: 30 de jan. de 2022.

[3] Termo de Abertura de Projeto, Projeto Curumin. Disponível em: https://unbarqdsw2021-1.github.io/2021.1_G6_Curumim/base/tap/tap/#introducao. Acesso em: 30 de jan. de 2022.

[4] Strength, Weakness, Opportunity, and Threat (SWOT) Analysis, Investopedia. Disponível em: https://www.investopedia.com/terms/s/swot.asp. Acesso em: 30 de jan. de 2022.

[5] Modelos para estimar custos de software: estudo comparativo com softwares de pequeno porte. CORRÊA, M., M. (2002).