IDEIA PARA SEPARAR CORRECOES DE NOVOS RECURSOS

LUIS.HERRERA 11/11/2010 11:12:15
#357199
Bom dia.
Estou tentando descobrir uma maneira de codificar de forma que seja possível identificar a cada atualização, se a versão é corretiva ou inclui novos recursos.

Tenho 3 tipos de clientes, com a seguinte situação:
(01) os que adquirem o programa (licença definitiva, mas não querem manutenção) = Só teriam direito a correções de bugs por um certo período
(02) os que adquirem o programa (licença definitiva + manutenção) = Teriam direito a correções, melhorias e suporte técnico.
(03) os que locam o programa (licença mensal) teriam direito igual ao item 02 (tudo).

A finalidade é que ao distribuir a nova versão do programa aos clientes, o próprio programa identifique se sua licença permite rodar a correção dos bugs (não expirou o prazo pois a validade do programa ainda permite utilizar tais recursos), se pode executar as melhorias ou se pode executar novas versões.

A princípio não consegui pensar em nada só dentro do código, pois ao meu ver teria de checar a licença do usuário. Sendo assim surgem várias dúvidas:

1- Cada novo recursos precisaria ter um tipo de código para checar o registro e bloquear ou não
2- Se o cliente pagasse por esse novo recurso apenas, um próximo recursos não poderia conter a mesma codificação, pois esta já estaria liberada, o que complicaria e muito a codificação dessa forma.
3- Se o cliente pagar por uma melhoria, sua chave de registro já não seria válida, isso obrigaria a um novo registro, o que também pode complicar sempre ter que ficar liberando novos registros para cada melhoria.
4- O pior de tudo é separar o que é correção de bugs do que é melhoria, e depois quem poderia usar as correções (versões mais recentes) e não pois já estaria com uma versão muito antiga e não autorizada.

Alguém sabe como resolver isso, tem algum exemplo?
ACG1574 11/11/2010 11:40:08
#357201
Luis, eu controlo isso nao pelo que o cliente tem de software, e sim pelo cadastro do cliente, se o cliente paga manutenção direitinho tem direito a todas as correções, se nao paga ele terá direito pagando a hora por fora, se é um novo modulo ele paga por fora tambem., no meu cadastro de cliente eu tenho o tipo de contrato do cliente que é somente paga ou nao manutenção.
LUIS.HERRERA 11/11/2010 11:56:32
#357203
Alexandre, mas o cliente faz download do programa, então isso não funciona, pois ele baixará sempre a última versão.
Para minimizar isso, eu criei uma área restrita no meu site, onde só quem tem o login pode baixar, o problema é que eu tenho um único EXE e assim não posso liberar para os que não pagam manutenção e teriam que baixar as correções apenas dos bugs. Por isso acredito que deve ser feito dentro do código uma checagem de alguma forma, pois assim qualquer um poderia baixar sem eu me preocupar de liberar para um ou para outro e não impedir que todos possam corrigir erros.
ACG1574 11/11/2010 14:14:46
#357212
mas, pra controlar isso dentro do codigo é muito dificil. vc teria que ter uma varialvel global e tudo que vc achar que é correção vc fazer um IF verificando essa variavel, por exemplo:

1-busca na tabela do cliente ou no registro do windows, qual tipo de cliente que ele é
2-atualiza a variavel global com essa informação
3-se for cliente só de correção de bugs, só deixa as correções, se for modulos novos, nao deixa.

if cliente_manutencao = [Ô]S[Ô] then
[ô]correcoes e modulos novos
else
[ô]só correcoes
endif

seria algo assim,
LUIS.HERRERA 11/11/2010 14:55:41
#357215
é amigo esse é o problema, como o cliente pode pagar ou não manutenção e também pode interromper quando desejar, tenho de encontrar uma forma de resolver isso, pois se ele não quiser mais pagar a manutenção, o sistema teria de identificar isso, uma vez que a manutenção é controlada pelo cadastro dele (administração) e não pelo software, assim não teria como informar ao software que ele não irá pagar mais, e ficaria complicado mudar o serial após isso.

Por esse motivo minha dúvida aqui, para saber se elguém usar uma solução para isso.

O IF simples como citou teria de usar a Chave de registro como eu citei no início, o que complica muito e até pode inviabilizar isso. Não quero ter de usar duas versões do sistema, pois gerenciar isso para manutenção é muito trabalhoso (fazer duas vezes a mesma coisa, além de corris muito risco de errar e deixar falhas no sistema), por isso quero descobrir uma alternativa via código mesmo.
ASHKATCHUP 11/11/2010 15:15:41
#357217
Sinceramente, acho que não tem como restringir correções através de [Ô]IFS[Ô]...
O que você pode fazer é restringir as novas funcionalidades, mas o teu código vai ficar um caos por causa disso...

A maneira que eu sugiro para diferenciar o tipo 1 do 2 é você controlar isso através do site, permitindo que o cliente faça downloads até uma certa data.
ACG1574 11/11/2010 15:58:53
#357234
luis, eu faço o seguinte, se o pagamento do cliente vence dia 10 por exemplo de todo mes, eu deixo o sistema funcionando ate dia 15, ele pagando ou nao, ele tem que pegar outra senha pra liberar o sistema, se ele pagou eu libero, posso passar a senha ate pelo msn mesmo, se ele nao pagou , eu negocio com ele e libero.
LUIS.HERRERA 11/11/2010 16:18:51
#357236
Alexandre a situação é mais complexa, parece que não me expliquei bem.
Hoje meu sistema de licenciamento já controla, pelo software, validade de uso. As chaves definem quem comprou o software ou que o alugou. Isso já funciona, não é essa a questão.

O problema real é quanto a manutenção para correções e novos recursos. Isso vale para quem Compra o software, pois ele tem direito a uso permanente, mas se não pagar manutenção, então não terá direito de ter novos recursos, só correções durante um certo tempo. Depois disso o sistema evolui, e se ele não foi atualizando, não terá direito a correções de bugs também, em face da complexidade do código que vai crescendo.

Então a questão não é passar um novo serial para o cliente, pois se ele não paga manutenção já tem um serial definitivo. Agora se derrepente ele quer pagar manutenção, paga durante 6 meses e depois volta a não pagar, o serial já estava registrado. Com isso o controle de pagamentos eu faço, mas como o software controlaria quando ele começou a pagar e depois parou?

Enviar um novo serial para alguém que já tem um definitivo e que não expira, fica meio ilógico. O cara pode não entrar com ele e o sistema continuará aceitando todas as novas alterações. Bem de alguma forma vou descobrir como resolver, pois isso não é impossível.
ACG1574 11/11/2010 16:26:42
#357240
entendi sim luis, sei que vc ta querendo controlar suas versoes de correções, novos modulos, etc... , estive pensando aqui, vc controlar pelo executavel, data, hora e tamanho do executavel, assim toda vez que vc gerar um executavel estavel ou seja fucnional, vc colocaria ele em uma pasta separada ai na sua maquina, e pra cada executavel vc colocaria comentarios na propriedade deles sobre atualizacoes e correcoes, e cada cliente teria um executavel da data que se encaixaria corretamente para ele.
Tópico encerrado , respostas não são mais permitidas