# Ciclo de vida de liberação de software

Na informática, a liberação do programa computacional ou lançamento de software (em inglês: release) é o lançamento de nova versão oficial de produto de software. Cada vez que um produto de software é criado ou modificado, o fabricante e seus desenvolvedores decidem sobre como distribuir o novo produto (ou modificação/versão) às pessoas que o utilizam. Dá-se, pois, uma etapa de elaboração rumo ao produto final. Esse conjunto é denominado ciclo de vida de liberação de software.
O software é sempre produzido e, pois, identificado e liberado sob uma versão de programa, e é essa identificação própria garante que cada software seja absolutamente inconfundível com qualquer outra anterior ou posterior.
Patch é um método de distribuição de mudanças. Pode ser um programa que modifica o sistema original para criar um novo atualizado, como apenas uma lista de instruções que o usuário siga para atualizar o sistema.

## Histórico

O uso da terminologia teste "alfa / beta", como se dá correntemente em Informática, originou-se na empresa norte-americana IBM. Já nos anos 1950 (e provavelmente antes), a IBM usou terminologia similar para o desenvolvimento de hardware. Onde, o Teste "A" indicava a verificação de um novo produto antes do anúncio público; o Teste "B" era a verificação antes de liberar o produto para ser efetivamente fabricado; o Teste "C" significava o teste final antes da disponibilidade geral (e comercial) do produto. Como o software tornou-se parte significativa das ofertas de produto por parte de IBM, a terminologia do "teste alfa" passou a ser usada para denotar o teste pré-anúncio e o "teste beta", para mostrar a situação do produto para disponibilidade geral. Martin Belsky, gerente de alguns dos projetos de software anteriores da IBM, afirmou ter inventado essa terminologia. A IBM abandonou a terminologia alfa / beta durante a década de 1960, mas a essa altura já havia sido amplamente difundida. O uso do "teste beta" para se referir a testes feitos por clientes não foi feito na IBM; em vez disso, a IBM usa o termo "teste de campo".

## Desenvolvimento
### Pré-alfa

A versão pré-alfa compreende todas as atividades realizadas durante o projeto de software anteriores aos testes. Tais atividades podem incluir análise de requisitos, projeto de software, desenvolvimento e teste de unidade.
Em um desenvolvimento típico de código aberto, há várias versões pré-alfa. Versões chamadas milestone incluem conjuntos específicos de funções, e são lançadas tão logo a funcionalidade esteja implementada.

### Alfa

A versão alfa é a primeira versão testada — chama-se "α" a letra inicial do alfabeto grego ou o número 1 — nesta fase os desenvolvedores geralmente realizam testes caixa-branca. Validações requerem testes caixa-preta por uma equipe específica de testes.
Versões alfa podem ser instáveis, com travamento ou perda de dados, exceto se publicamente disponibilizadas. Nesse caso, os desenvolvedores focam mais na estabilidade, com testes mais extensivos. Porém é incomum a publicação de softwares em versão alfa.

### Beta

A versão beta (chama-se "β" correspondente à segunda letra do alfabeto grego e também ao número 2), é a que sucede a versão alfa. Inicia-se, geralmente, quando não há mais funcionalidades a implementar no software. Seu foco é reduzir impactos aos usuários, valendo-se de testes de usabilidade. O processo de liberação da versão beta é dito liberação beta e, tipicamente, é sua primeira divulgação pública, fora dos limites da organização que o desenvolve.
Usuários de versões beta costumam ser ditos beta testers ("testadores [de] beta"). Costumam ser consumidores prospectivos que aceitam participar dos testes sem pagamento, embora possam ganhar descontos, compensações, ou até receber o software sem custo.
Versões beta usam-se em demonstrações intra-organização e para clientes externos. Às vezes, refere-se o beta, alternativamente, como early access ("acesso adiantado"). preview ou technical preview. Alguns softwares permanecem como betas "perpétuos".

### Release candidate

A versão release candidate ("[produto] candidato a lançamento"), ou simplesmente RC, refere-se a uma versão com potencial para ser o produto final, pronta para ser lançada ao usuário, a menos que algum defeito (bug) sério apareça e se o perceba em tempo. Nesse estágio de estabilização do produto, todas as funcionalidades encontram-se especificadas, implementadas e testadas através de uma ou mais fases beta sem a ocorrência de defeitos sérios.
Apple Inc. usa o termo "golden master" para designar essa fase (release candidate), e o último golden master é utilizado como versão final. Outras letras do alfabeto grego, como gama e delta, são usadas para indicar versões substancialmente completas, mas ainda em fase de testes, com ômega ou zênite para versões finais de teste e tidas como livres de defeitos, prontas para produção. São especificidades de cada empresa.
Finalmente — ou quase finalmente — um produto em lançamento é denominado code complete ("código completo") quando a equipe de desenvolvimento concorda que a versão não terá, a priori, inclusão de qualquer código fonte adicional, embora, na prática, por motivos vários, ainda possa haver mudanças no código para corrigir defeitos. Pode ainda haver mudança na documentação ou nos arquivos de dados, ou no código utilizado para testes.

## Lançamento
### RTM

Release to manufaturing ("lançamento para a fabricação") ou release to marketing ("lançamento para o mercado"), ambos abreviados RTM, utilizam-se quando o software está pronto para o consumidor final. As iniciais RTM são tipicamente usadas se a produção destina-se a um grande público, em contraste a produtos para público mais restrito — como softwares para finalidades específicas ou governamentais —, notadamente nos já distribuídos com componentes de hardware (O&M, ou vendidos em grandes redes de lojas.

### GA

General availability ([produto para "disponibilidade geral") é o produto no ponto em que todas as atividades de comercialização necessárias foram completadas e o software foi oficialmente disponibilizado para o mercado, seja pela internet ou em mídias físicas.
Atividades comerciais podem incluir disponibilidade geográfica do produto, tradução em várias línguas conforme mercados-alvo e finalização de testes de segurança. O tempo entre RTM e GA dura semanas a meses, dependendo da demanda comercial da GA.
Essa é a fase em que o produto é considerado "vivo" — é a versão final. Tal versão é tida como muito estável e virtualmente livre de defeitos, com qualidade aceitável para todos os usuários finais. Em jogos, ela também é conhecida como gold edition ("versão ouro").
Long Term Support' ([produto com] "suporte de longa duração"), ou LTS, é a versão que confere a garantia adicional no tempo de serem atualizáveis para a próxima LTS e desfrutarem de suporte pelo fabricante por um tempo mais longo que versões não-LTS.