# Versionamento IXC Soft
## Introdução
O versionamento é um processo fundamental para a evolução e a melhoria contínua de sistemas como o IXC Soft. Este método consiste no gerenciamento de versões distintas do sistema IXC Soft. Ao implementar o versionamento, é viabilizada a liberação de novas versões de forma controlada, incluindo novas funcionalidades, correções de bugs e aprimoramentos. 

Essa abordagem permite a liberação de atualizações de máxima qualidade. Neste artigo, exploraremos em detalhes o processo de versionamento do IXC Soft, desde a definição das novas versões até a sua implantação. Abordaremos as metodologias utilizadas, os desafios enfrentados e os benefícios proporcionados por essa prática para os usuários e para a equipe de desenvolvimento.

## Metodologia de Lançamento: Beta e Estável
### Desafios Comuns e Soluções
Na nova abordagem de versionamento, foi adotado o formato de versões **Beta** e **Estável**. Esta prática permite que duas versões distintas sejam disponibilizadas aos usuários. Ao utilizar a metodologia anteriormente aplicada, atualizações eram lançadas continuamente diariamente permitindo uma entrega rápida, mas limitando o tempo de teste para equipes e usuários. Inicialmente, uma equipe de desenvolvimento permitia mudanças rápidas e as implementações eram ágeis. Entretanto, à medida que a empresa crescia, conflitos eram gerados devido à vários desenvolvedores trabalharem na mesma base de código, comprometendo a manutenção da qualidade.

Foi identificada, então, a necessidade de reestruturar e reconsiderar os métodos de entrega. Tornou-se insustentável manter a qualidade com tantas atualizações simultâneas. Com isso, a possibilidade de implementação de uma nova estratégia foi repensada: o **versionamento**. Com este novo método, são lançadas duas diferentes versões, que permitem maior tempo e cobertura de testes, aprimorando as entregas e tornando as versões mais seguras e estáveis:

- Versões **Beta**: as versões **Beta**, possuem o lançamento de funcionalidades novas antecipadamente, contribuindo com feedbacks contínuos essenciais para o desenvolvimento do produto;

- Versões **Estáveis**: contam com os lançamentos de versões betas, correções e testes rigorosos de qualidade, tornando uma versão com menor quantidade de bugs e inconsistências, com alto nível de confiabilidade e desempenho, impactando diretamente na melhoria da experiência do usuário.

### Metodologias de Lançamento
Com as versões **Beta** e **Estável**, as entregas são efetuadas em períodos distintos:

- A versão **Beta** possui entregas e testes **quinzenais**, período este que tem como intuito validar as implementações feitas pela equipe de qualidade. Esta prática garante um tempo adequado para testes, tanto por parte das equipes como pelos usuários finais. Além disso, as versões **Beta** contam com o projeto de **Clientes Beta**, que avaliam a versão lançada e participam do processo de validação. No período de testes, são feitas correções e atualizações, mas não podem ser efetuadas quaisquer alterações que possam impactar a versão **estável**, tendo em vista o objetivo de eliminar falhas antes da liberação final.

>[!INFO] **Clientes beta:**
>Os clientes **Beta** recebem a versão antecipadamente e podem testar, utilizar funcionalidades, melhorias e projetos antes dos clientes que estão em versão estável. O objetivo deste perfil de cliente é contribuir continuamente com feedbacks sobre possíveis problemas e melhorias na versão liberada.
>
>Além disso, este perfil de cliente recebe suporte carteirizado e priorizado e novos recursos em primeira mão. Por outro lado, pode atualizar o sistema com maior frequência e encontrar instabilidade na versão.
>
>>[!TIP] **Quer ser um cliente Beta?**
>Entre em [contato](https://my.nativeforms.com/4kRjZ1Sl1jZmEGUwNzUR1Db) com o setor de **Customer Success** da IXC Soft. Seja um Beta! 

- A versão **estável** é liberada **trimestralmente**, resultando em **quatro** versões por **ano**. Esta liberação é realizada após um período de testes e ajustes com clientes Beta, que auxiliam a identificar e corrigir falhas antes da versão final ser disponibilizada para todos os usuários. No ciclo de testes desta versão, a equipe de desenvolvimento faz as correções necessárias garantindo que a versão **estável** seja mais confiável e com menor chance de instabilidades, pois passa por um processo rigoroso de testes e ajustes. Os clientes que utilizam a versão estável, recebem apenas atualizações de correção de falhas e não possuem atualizações diárias como os clientes **Beta**.

## Fases do Processo de Lançamento
As fases do processo de lançamento das versões Beta e estável são as seguintes:

### Fases do Lançamento da Versão Beta:
- **Desenvolvimento e Implementação**: A equipe de desenvolvimento finaliza as implementações e correções necessárias;
- **Teste Beta**: A versão Beta é disponibilizada para clientes selecionados, que a utilizam e contribuem para identificar falhas e instabilidades e recebem projetos e melhorias antecipadamente;
- **Feedback e Ajustes**: Durante o período de testes, os clientes **Beta** reportam problemas, e a equipe realiza ajustes com base nesse feedback;
- **Preparação para Versão Estável**: Após o ciclo de testes, a versão **Beta** é refinada e preparada para a liberação da versão estável.
### Fases do Lançamento da Versão Estável:
- **Ciclo de Testes Beta**: A versão **Beta** é testada e ajustada com base nos feedbacks dos clientes **Beta**;
- **Liberação da Versão Estável**: Após o término do ciclo de testes, a versão **Estável** é liberada trimestralmente, resultando em quatro versões por ano;
- **Atualizações**: A versão estável recebe apenas atualizações de correção de falhas, enquanto os clientes **Beta** continuam a receber versões com mais frequência e potenciais instabilidades.

Essas fases garantem que a versão estável seja mais confiável e com menos falhas em comparação com as versões Beta.

### Correções
Quando identificadas instabilidades, são lançadas versões com os ajustes pontuais. As correções de instabilidades são realizadas através da modalidade **Hotfix**:

- **Hotfix:** esta modalidade consiste na correção e ajustes pontuais aplicados no sistema e liberados em versão exclusiva. Pode ser aplicado em versões **Beta** ou **Estável**. É liberado com frequência, sempre que necessário.

Essa abordagem permite que as correções sejam feitas de forma isolada, minimizando o impacto em outras áreas do sistema, ao contrário de correções anteriores que poderiam afetar múltiplas funcionalidades. As correções em formato **hotfix** são liberadas com frequência, muitas vezes no dia seguinte ou em poucos dias após a identificação de uma falha. O processo é ágil, permitindo que ajustes pequenos sejam disponibilizados rapidamente, muitas vezes em poucas horas.

### Timeline
Além disso, é possível consultar as correções e melhorias lançadas através da timeline, que é uma ferramenta disponível em versões **Beta** e **Estável**. É utilizada para:

- Mostrar as atualizações e versões do sistema, permitindo que os usuários vejam o que aconteceu ao longo do tempo.
- Identificar se um usuário está na versão **Beta** ou **Estável** do sistema, com informações específicas disponíveis para cada grupo.
- Facilitar a comunicação de novas funcionalidades e melhorias, com notificações sobre atualizações sendo exibidas na timeline.
- Organizar as liberações de versões, com um calendário que ajuda a equipe interna a planejar as atualizações.

Ela é uma parte importante do processo de atualização e comunicação com os usuários.

## Considerações Finais
A adoção de uma nova estratégia de versionamento representa uma evolução significativa do desenvolvimento de software da empresa. Na metodologia **anterior**, as atualizações eram lançadas diariamente, o que resultava em um fluxo constante de mudanças no código-base. Essa frequência acelerada, embora atrativa pela rapidez na entrega de novas funcionalidades, trazia consigo diversos problemas, como a dificuldade em identificar a causa de bugs e instabilidade.

Com a nova abordagem, que divide os lançamentos em versões Beta e Estável, conseguimos mitigar esses problemas e obter diversos benefícios, como ciclos de teste mais longos que permitem identificar e corrigir bugs antes do lançamento da versão estável e aumento da estabilidade. A implementação das versões **Beta** e **Estável** demonstra um compromisso com a qualidade, a experiência do usuário e a maturidade no processo de desenvolvimento. 

Ao estabelecer entregas de duas versões distintas, conseguimos conciliar a agilidade necessária para atender às demandas do mercado com estabilidade e qualidade. Esta metodologia permite realizar entregas mais frequentes e com maior segurança, garantindo um ciclo de desenvolvimento mais eficiente que prioriza a qualidade e a satisfação do cliente.

## Etiquetas
#Beta #Estavel #Versionamento #Versao #Atualizacao #Sistema #ConstumerSuccess #SucessoDoCliente #SatisfacaoDoCliente 

## Leia Também
- [[glossario do sistema|Glossário do Sistema]]
- [Quero ser um cliente Beta!](https://my.nativeforms.com/4kRjZ1Sl1jZmEGUwNzUR1Db)
- [[projetos|Projetos]]