Distribuir aplicação

Pessoal, estou desenvolvendo um sistema que permitirá ao cliente ter controle sobres as notas fiscais de entrada e saída, estoque, controle de despesas… bom, minha dúvida é a seguinte: estou fechando com ele sobre o pagamento de mensalidade (acho que é mais negócio), mas pode acontecer que em determinado momento esse pagamento deixe de ser feito.

O que os colegas sugerem (ou tem o costume de fazer) para evitar que o cliente possa continuar usando o sistema sem pagar as mensalidades?

Um arquivo criptografado seria uma boa opção? Aí todo mês ao visitar o cliente trocaria esse arquivo, seu conteúdo ao ser descriptografado seria exatamente uma data futura que representa o máximo em que o programa funcionará.

Nesse caso eu recomendaria alguns pontos:

Primeiro de tudo, criptografar o executável e dificultar a engenharia reversa, principalmente se for Java.

Segundo, desenvolver um sistema de licença online, onde ao abrir o programa ele acessa um servidor e verifica se a licença é válida. Essa é uma solução bem comum e a licença do usuário pode ser atrelada ao hardware.

A abordagem de usar o arquivo criptografada pode funcionar, porém você deve proteger a região de memória responsável pela criptografia do arquivo, de forma a prevenir a leitura do conteúdo do arquivo por alguém mal intencionado.

Tive a mesma duvida um tempo atrás, o que sugiro:

Primeiro use algum obfuscador no codigo, muitos usam o ProGuard, porem ele é muito facil de quebrar, recomendo o Allatori.

Segundo use no programa um verificador do MAC do pc para ele funcionar, quando abrir o programa ele ve o MAC e se for o do pc do cliente roda.

Terceiro o meu se o cliente não pagar em 5 dias após o vencimento o sistema bloqueia o uso até o pagamento, um metodo para fazer isso é utilizar a data do pc, porem o usuario pode burlar a data do pc, a solução que achei foi criar um outro software em java msm, que me de acesso de minha casa ao Banco de dados do cliente, no banco criei uma tabela com um campo boolean, toda vez que o cliente abrir o programa, ele ve na tabela se pode usar, dai modifico para falso, e fica bloqueado, o banco so vc tem acesso com senha entao é mais tranquilo.

Quarto isso fiz mais para ver quem usa, caos algm burle isso que mencionei antes, fiz uma classe com uns nomes nada a ver, onde todo dia 10 eu recebo um email com o MAC do pc que esta rodando o pc, ip, nome do computador etc, caso nao tenha internet fica gravado no banco que esta pendente o envio, ligou na rede me envia dai xD

Meio grande o texto mas ta ai algumas opções kkkkk so o MAC e o acesso remoto ja ajuda tb xD

Obrigado pelas dicas!

br1337 sua solução de um sistema de licença online é excelente, fica bem profissional a coisa.

guilherme.programmer, sua solução de endereço de mac ótima, já garante que só rode numa máquina. Agora com relação a data realmente pode ser burlado. O ideal será checar no banco se está ok com o pagamento mesmo. Vou ter que cogitar um acesso ao banco de dados do cliente via internet.

Em relação ao preço da mensalidade, poderiam sugerir com base no que falei no tópico inicial? Um detalhe que não citei é que ainda serão necessários uma meia dúzia de relatórios.

Sei que o mais recomendado seria usar análise de pontos de função, mas só pra ter uma noção mesmo.

Então marcos a licença online é a melhor opção e ela confere o MAC e tudo, eu dei as sugestões acima, pois as vezes o cliente n tem internet e n quer contratar, eh dificil mas tenho clientes assim, então as que eu faço elas tem funções que funcionam com internet, como por exemplo o preenchimento dos dados do endereço pelo cep, o cliente digita o cep e o sistema busca em um webservice os dados como rua bairro etc, porem caso n tenha internet ele pode preencher manualmente, agora se você fizer para quando iniciar o sistema verificar online se pode utilizar, ele tera que ter internet, se a internet estiver fora por exemplo ele n consegue usar, eu utilizo JavaFX na maioria dos meus, as vezes alguns pedem web mas é dificil…
Quanto a mensalidade depende muito, o seu ira cobrar para desenvolver ou mensalidade, os meus cobro apenas uma taxa de customização, visto que tenho diversos ja prontos, ai so customizo eles a gosto do cliente, e depois cobro taxa mensal para dar suporte e para o cliente poder utilizar o software, depende se vc ira querer que seu software emita NF-e e Cupom Fiscal SAT por exemplo etc, então tudo depende, eu cobraria taxa mensal para sempre ter aquela grana, eu tenho uma ME, então tem gastos com contador e mais uma renca kkkk entao todo mês ajuda, pois todo mês tem venda, mas vai que um mes vc n venda, mas vai a gosto, qualquer duvida so mandar um PM blz