Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: Implementando Funções de Criptografia com "Nós" e "Trançados"

_Créditos da imagem: Gerada com auxílio do ChatGPT_ # Implementando Funções de Criptografia com "Nós" e "Trançados" A criptografia é um dos campos mais fascinantes da ciência da computação. Recentemente, no projeto experimental [Braided Encryption Message](https://github.com/naldodj/naldodj-braided_encryption_message), explorei como conceitos de "nós" e "trançados" podem ser aplicados na criação de algoritmos de criptografia. Este projeto, embora básico, é uma experiência rica para aprender mais sobre a implementação de funções criptográficas e algumas curiosidades relacionadas ao tema. ## Visão Geral do Projeto O repositório contém duas peças fundamentais: 1. [Arquivo C - `c_braided_encryption_message.c`](https://raw.githubusercontent.com/naldodj/naldodj-braided_encryption_message/refs/heads/main/src/c_braided_encryption_message.c): Implementa funções de criptografia em baixo nível, manipulando diretamente a estrutura dos dados para "...

BlackTDN :: Previsão de Horas para Customizações em ERP TOTVS

_Créditos da imagem: Gerada com auxílio do ChatGPT_

---

# **Previsão de Horas para Customizações em ERP TOTVS: Uma Abordagem Baseada em Fatores de Complexidade**

No universo de customizações para o ERP da TOTVS, uma das etapas mais desafiadoras é a estimativa precisa do esforço necessário para o desenvolvimento. Muitas vezes, projetos aparentemente simples podem se tornar complexos devido a fatores como dificuldade de acesso ao ambiente ou falta de conhecimento da regra de negócio. Por isso, criamos uma metodologia de cálculo baseada em fatores de ajuste para tornar as estimativas mais precisas e confiáveis.

## **Por que uma boa estimativa é essencial?**
Um orçamento mal calculado pode impactar diretamente o cronograma, os custos e até a qualidade da entrega. No caso de projetos relacionados ao ERP TOTVS, onde cada customização está ligada a regras de negócios específicas e a um ambiente muitas vezes complexo, subestimar ou superestimar o tempo necessário pode gerar problemas significativos.

Com isso em mente, desenvolvemos uma abordagem que considera diferentes fatores de complexidade que influenciam o desenvolvimento.

---

## **A Regra de Ajuste de Horas**
Nosso método consiste em estimar inicialmente o tempo bruto de desenvolvimento com base no escopo da customização. Em seguida, ajustamos essa estimativa usando multiplicadores que refletem condições reais do projeto, como:

### 1. **Facilidade de Acesso ao Ambiente**
- **Impacto**: O tempo necessário para acessar o ambiente impacta diretamente na agilidade da entrega.
- **Fatores**:
  - Acesso imediato e simples: 1.0  
  - Requer ajustes intermediários: 1.02  
  - Acesso complicado, com muitas restrições: 1.05  

### 2. **Todos os Acessos Disponibilizados e Funcionando**
- **Impacto**: Um acesso incompleto ou mal configurado pode gerar interrupções.
- **Fatores**:
  - Todos os acessos funcionando: 1.0  
  - Alguns ajustes necessários: 1.01  
  - Acessos com problemas graves: 1.03  

### 3. **Ambiente Conhecido ou Não**
- **Impacto**: Trabalhar em um ambiente familiar reduz o tempo de aprendizado e a chance de erros.
- **Fatores**:
  - Totalmente familiar: 1.0  
  - Parcialmente conhecido: 1.02  
  - Ambiente novo e desconhecido: 1.04  

### 4. **Ambiente com Restrições**
- **Impacto**: Restrições severas, como acesso limitado a bancos de dados, podem atrasar o desenvolvimento.
- **Fatores**:
  - Sem restrições: 1.0  
  - Restrições leves: 1.01  
  - Restrições severas: 1.05  

### 5. **Domínio da Regra de Negócio**
- **Impacto**: Compreender completamente a lógica do cliente evita retrabalhos.
- **Fatores**:
  - Domínio completo: 1.0  
  - Conhecimento parcial: 1.02  
  - Pouco ou nenhum conhecimento: 1.04  

### 6. **Outros Fatores**
- Tecnologias específicas, proeficiência na linguagem e recursos, dependências externas ou prazos apertados, dentre outros, podem ser ajustados com fatores entre 1.0 e 1.05.

***Exemplo:***
```markdown

+----------------------------------------------------+--------------------+-----------------------------------------------------------------------------------------------------------------------+
| **Problema/Variável**                              | **Peso (Sugestão)**| **Descrição**                                                                                                         |                        |
+----------------------------------------------------+--------------------+-----------------------------------------------------------------------------------------------------------------------+
| **Facilidade de acesso ao ambiente**               | 1.02               | Dificuldade de acessar os sistemas, como VPN instável, restrições de rede ou falta de credenciais.                    |
| **Acesso incompleto ou com falhas**                | 1.05               | Credenciais ou permissões faltantes, causando atrasos na execução de testes e integrações.                            |
| **Ambiente desconhecido**                          | 1.04               | Trabalhar em um sistema ou estrutura de código que a equipe ainda não conhece.                                        |
| **Ambiente com restrições de segurança**           | 1.03               | Ambientes com firewalls rígidos, logs obrigatórios ou restrições de instalação de ferramentas.                        |
| **Regra de negócio complexa ou desconhecida**      | 1.06               | Necessidade de aprender novas regras de negócio ou lidar com regras muito específicas e complicadas.                  |
| **Falta de documentação do sistema**               | 1.04               | Ausência de documentação adequada, dificultando a análise e aumentando o tempo necessário para compreensão.           |
| **Integração com sistemas externos**               | 1.05               | Sistemas de terceiros, APIs ou módulos externos que requerem esforço adicional de compatibilidade.                    |
| **Mudança de escopo durante o projeto**            | 1.07               | Alterações nos requisitos previamente acordados, demandando mais tempo de análise e desenvolvimento.                  |
| **Ferramentas de desenvolvimento não padronizadas**| 1.03               | Uso de ferramentas ou metodologias não comuns à equipe, resultando em uma curva de aprendizado adicional.             |
| **Dependências de outras equipes**                 | 1.04               | Dependência de entregas de outras equipes que podem atrasar o andamento do projeto.                                   |
| **Falta de testes automatizados**                  | 1.05               | Ambientes onde os testes dependem exclusivamente de execução manual, aumentando o tempo de validação.                 |
| **Mudanças frequentes nos requisitos do cliente**  | 1.06               | Solicitações constantes de mudanças ou falta de clareza nos requisitos por parte do cliente.                          |
| **Falta de um ambiente de homologação adequado**   | 1.03               | Ambientes de homologação que não refletem adequadamente o ambiente de produção, dificultando a validação.             |
| **Equipe com baixa experiência na tecnologia**     | 1.04               | Quando a equipe não possui pleno domínio da tecnologia ou linguagem usada no desenvolvimento.                         |
| **Complexidade da interface de usuário (UI)**      | 1.02               | Interfaces com alto grau de personalização ou design detalhado que demandam mais tempo para implementar.              |
| **Volume de dados elevado**                        | 1.03               | Projetos que precisam lidar com grandes quantidades de dados, como migrações ou processamento de relatórios complexos.|
| **Deadline apertado**                              | 1.04               | Cronogramas irrealistas, exigindo maior esforço e possíveis ajustes na qualidade para cumprir o prazo.                |
| **Ambiente legados ou desatualizados**             | 1.05               | Trabalhar em sistemas antigos que não seguem padrões modernos, resultando em maior esforço de manutenção.             |
| **Ambiguidade nos requisitos**                     | 1.04               | Requisitos mal definidos ou vagos que demandam mais esforço para entender as necessidades reais do cliente.           |
| **Falta de comunicação clara entre stakeholders**  | 1.03               | Falta de alinhamento ou resposta lenta de partes interessadas, gerando bloqueios no progresso.                        |
+----------------------------------------------------+--------------------+-----------------------------------------------------------------------------------------------------------------------+
```

---

### **A Fórmula de Cálculo**

Para calcular as horas ajustadas, utilizamos a seguinte fórmula:

```
Horas Ajustadas = Horas Estimadas × (Fator Acesso) × (Fator Acessos) × (Fator Conhecimento) × (Fator Restrições) × (Fator Negócio) × (Fator Outros)
```

---

### **Exemplo Prático**

Imagine que você estimou inicialmente **40 horas** para desenvolver uma customização. Após avaliar os fatores, temos:

- **Facilidade de acesso ao ambiente**: 1.02 (ajuste necessário)  
- **Acessos disponibilizados e funcionando**: 1.0 (tudo em ordem)  
- **Ambiente conhecido**: 1.02 (parcialmente familiar)  
- **Ambiente com restrições**: 1.01 (restrições leves)  
- **Domínio da regra de negócio**: 1.04 (pouco conhecimento)  
- **Outros fatores**: 1.0 (nenhuma complicação adicional)  

**Cálculo**:

```
Horas Ajustadas = 40 × 1.02 × 1.0 × 1.02 × 1.01 × 1.04 × 1.0
Horas Ajustadas = 43.7134464 horas
```

---

## **Benefícios da Metodologia**
1. **Precisão**: A estimativa se baseia em uma visão ampla do projeto, reduzindo surpresas no caminho.  
2. **Flexibilidade**: É possível ajustar os fatores conforme as condições específicas de cada cliente.  
3. **Confiabilidade**: Permite apresentar ao cliente um orçamento fundamentado e transparente.

---

## **Conclusão**
No mundo das customizações para o ERP TOTVS, cada projeto apresenta desafios únicos. Utilizar uma metodologia estruturada para estimar o esforço de desenvolvimento é fundamental para garantir a entrega dentro do prazo e do orçamento. Aplicar os fatores de ajuste ajuda a lidar com imprevistos e a planejar com mais eficiência.

Gostou da metodologia? Deixe seu comentário ou compartilhe suas experiências com estimativas de projetos no TOTVS!

---

Comentários

Postar um comentário

Postagens mais visitadas