Ir direto para o conteúdo principal
Imagem de destaque do artigo Contrato de Desenvolvimento de Software: como Evitar Riscos e Proteger seu Código

Contrato de Desenvolvimento de Software: como Evitar Riscos e Proteger seu Código

Carol ParanhosPublicado em 20 Mai 2026Atualizado em 23 Mai 202618 min de leitura

A contratação de desenvolvimento de software sob demanda é uma das frentes mais complexas e propensas a conflitos no mercado de tecnologia brasileiro. O atrito geralmente surge do desalinhamento entre a expectativa do contratante, que deseja um sistema pronto, escalável e infalível, e a realidade do desenvolvimento técnico, que envolve imprevistos, bugs e dependência de integrações. Sem um contrato estruturado com precisão sob a Lei do Software e o Código Civil, ambas as partes assumem riscos severos.

Imagem editorial sobre contratos para o artigo Contrato de Desenvolvimento de Software: como Evitar Riscos e Proteger seu Código
Análise jurídica aplicada a contratos em negócios digitais.Imagens: arquivo do escritório, sem logotipo ou texto embutido
01

Por que contratos genéricos de serviços falham na tecnologia

Desenvolvimento de software é uma atividade de alta complexidade técnica e jurídica que não se confunde com a prestação de serviços convencionais de marketing ou design. Diferente dos contratos para agências digitais padrão, um contrato genérico de prestação de serviços civis falha na tecnologia porque ignora as particularidades de propriedade intelectual do software (regulado pela Lei nº 9.609/98) e de direitos autorais (regulado pela Lei nº 9.610/98), além de não prever a gestão da infraestrutura e dos repositórios de código.

O principal erro de quem usa modelos prontos é a omissão sobre a titularidade das ferramentas de desenvolvimento preexistentes do programador. Se o contrato apenas diz que 'toda a propriedade intelectual do projeto pertence ao cliente', o programador pode estar, involuntariamente, transferindo o direito sobre códigos, frameworks e scripts proprietários que ele próprio desenvolveu ao longo de anos e que reutiliza em todos os seus projetos.

Para o cliente contratante, o risco de um contrato mal feito é herdar um sistema inacabado, sem o código-fonte editável, ou com dependência de bibliotecas de terceiros não licenciadas que podem gerar disputas judiciais no futuro. A clareza contratual evita que a relação de tecnologia se converta em um passivo oculto para o ecossistema da startup ou da empresa tradicional, devendo também estar alinhada com as boas práticas societárias, como o vesting e acordo de sócios.

  • Omissão sobre a titularidade do código-fonte e documentação de arquitetura
  • Ausência de distinção entre o código customizado do projeto e o know-how do desenvolvedor
  • Falta de regras específicas para o licenciamento de bibliotecas de código aberto (Open Source)
  • Cronogramas rígidos que ignoram a dinâmica de desenvolvimento tecnológico real
  • Inexistência de política clara de transição de infraestrutura e credenciais de nuvem
02

A escolha metodológica: Escopo Fechado vs. Metodologias Ágeis

Juridicamente, o contrato de software deve ser estruturado de forma distinta dependendo da metodologia de desenvolvimento adotada pelas equipes técnicas. Contratos de escopo fechado (também conhecidos como modelo Waterfall ou cascata) são aqueles em que as partes definem previamente todas as telas, funcionalidades e comportamentos do sistema em um anexo técnico detalhado antes do início do código.

Esse modelo de escopo fechado exige regras rígidas de alteração (Change Requests). Se o cliente solicita qualquer alteração nas especificações originais, a prestadora tem o direito de suspender o prazo de entrega e cobrar valores adicionais, o que deve estar expressamente previsto no contrato principal para evitar desgaste comercial.

Por outro lado, quando o projeto adota metodologias ágeis (como Scrum ou Kanban), o escopo é flexível e as entregas ocorrem de forma incremental em Sprints (ciclos curtos). Nesse caso, a engenharia jurídica do contrato deve mudar: em vez de amarrar um escopo final estático, o contrato deve regular a governança das Sprints, a forma de contratação de horas técnicas ou Story Points e os critérios de aceite ao final de cada ciclo.

Ponto-chave

Seja qual for a escolha metodológica, o contrato não deve conter lacunas. O anexo técnico ou o plano de Sprints deve ser incorporado como parte integrante e indivisível da avença principal.

03

Propriedade intelectual: o código customizado vs. conhecimento prévio

O coração jurídico do contrato de desenvolvimento está na cláusula de propriedade intelectual. No Brasil, o art. 4º da Lei nº 9.609/98 estabelece que, salvo disposição em contrário, pertencem exclusivamente ao empregador ou contratante os direitos sobre o software desenvolvido na vigência do vínculo. No entanto, a aplicação dessa regra sem critérios de refinamento técnico prejudica gravemente o desenvolvedor.

O contrato deve separar claramente a propriedade inetelectual em duas categorias: os 'Entregáveis Customizados' (a interface do usuário, a lógica de negócio específica do cliente e o banco de dados modelado para a operação) e o 'Conhecimento Prévio' ou 'Background IP' do prestador (as metodologias de codificação, os módulos de integração de pagamento padronizados, scripts de infraestrutura e bibliotecas reutilizáveis).

Enquanto os Entregáveis Customizados são transferidos de forma definitiva e exclusiva ao cliente após a quitação financeira do projeto, o Conhecimento Prévio permanece sob propriedade intelectual do desenvolvedor, que apenas outorga ao cliente uma licença de uso perpétua, não exclusiva e isenta de royalties para que o software possa rodar. Sem essa divisão, o desenvolvedor perde o direito de reutilizar suas próprias ferramentas de trabalho em projetos de outros clientes. Esse controle sobre ativos intangíveis difere de outras modalidades, como a propriedade intelectual em infoprodutos, onde o foco costuma ser a exclusividade de distribuição e direitos autorais de conteúdo.

  • Cessão definitiva de propriedade apenas após o pagamento integral de cada entrega ou do saldo final
  • Licença de uso não exclusiva e sem royalties sobre o Background IP (conhecimento prévio) do prestador
  • Declaração expressa do desenvolvedor sobre a conformidade de licenças de terceiros usadas no sistema
  • Proibição do uso de licenças copyleft (como GPL) que possam obrigar o cliente a abrir o código-fonte comercial do seu produto
  • Cláusula de indenidade protegendo o cliente contra eventuais acusações de plágio de código por parte de terceiros
04

Código-fonte e transição de repositórios: quando entregar?

O código-fonte (Source Code) é o conjunto de instruções escritas em linguagem de programação que permite editar, atualizar e expandir o software. O executável final compilado (Object Code) é o que o usuário usa, mas sem o código-fonte, o cliente fica completamente dependente do prestador original para qualquer modificação.

O contrato deve detalhar como e quando ocorrerá a entrega do código-fonte e das chaves de acesso aos repositórios oficiais (como GitHub, GitLab ou Bitbucket). A prática de mercado mais segura para o desenvolvedor é prever que a posse provisória do repositório pode ser compartilhada para fins de homologação do software, mas a transferência da propriedade definitiva e a entrega das credenciais de administrador só ocorrem após o recebimento total do valor do projeto.

Também é prudente que o contrato estipule a responsabilidade pela contratação e pagamento dos servidores de hospedagem (AWS, Google Cloud, Azure) e ferramentas SaaS complementares. O cliente deve contratar esses serviços em seu próprio nome e CNPJ, evitando que o desenvolvedor figure como responsável financeiro de infraestrutura alheia, o que também facilita a conformidade sob o aspecto de tributação de SaaS.

Ponto-chave

Vincule a transferência final de titularidade do código e a entrega de credenciais administrativas à liquidação das obrigações de pagamento no contrato.

05

Garantia técnica, severidade de erros e SLA

Não existe software totalmente livre de bugs. Por isso, a cláusula de garantia técnica é essencial para limitar a responsabilidade do prestador e dar previsibilidade ao cliente. A garantia técnica deve cobrir apenas defeitos que impeçam o funcionamento do sistema conforme as especificações contratadas (desvios de especificação), não se aplicando a novas solicitações de melhoria ou novas funcionalidades.

O contrato deve definir um período de garantia pós-entrega homologada (geralmente entre 30 e 90 dias) no qual o prestador corrigirá os bugs cobertos sem qualquer custo adicional. Para o suporte continuado após esse período de garantia, o ideal é celebrar um acordo de nível de serviço (SLA - Service Level Agreement) ou um contrato de manutenção mensal (Retainer).

O SLA de suporte deve classificar os incidentes por gravidade e estabelecer tempos de resposta (Response Time) e de solução (Resolution Time) proporcionais à gravidade do erro. Um bug crítico que paralisa a operação comercial deve ter um tempo de resposta muito menor do que uma falha de layout secundária que não prejudica o fluxo do sistema.

  • Garantia de 30 a 90 dias restrita à correção de bugs com base no escopo homologado
  • Classificação objetiva de erros: Crítico (bloqueio de operação), Alto (prejuízo parcial), Médio e Baixo
  • SLA de tempo de resposta para atendimento e tempo estimado de solução de incidentes
  • Exclusão da garantia em caso de modificação do código por terceiros ou falha em APIs de terceiros
  • Regras financeiras para a contratação de horas de suporte adicionais fora do período de garantia
06

Proteção da equipe: cláusula de não aliciamento (Non-Solicitation)

A contratação de desenvolvimento de software envolve o contato próximo entre o cliente e o time técnico do prestador. Não é raro que, durante o projeto, o cliente tente contratar diretamente os desenvolvedores chave da empresa contratada, pulando a intermediação da agência ou estúdio de software.

Para evitar essa perda de talentos e o esvaziamento da capacidade operacional, o contrato deve prever uma cláusula de não aliciamento (non-solicitation) rígida. Essa cláusula proíbe o cliente de contratar, direta ou indiretamente, os colaboradores ou prestadores de serviço da contratada durante a vigência do contrato e por um período de 12 a 24 meses após a sua rescisão.

A infração a essa cláusula deve acarretar a aplicação de uma multa rescisória expressiva, geralmente calculada com base no custo de substituição do desenvolvedor ou um múltiplo do seu faturamento mensal, servindo como desincentivo real para a prática de aliciamento de equipe no competitivo mercado de TI brasileiro.

07

A responsabilidade civil do desenvolvedor e a limitação de danos

Um dos pontos de maior discórdia em contratos de software é o limite da responsabilidade financeira do prestador em caso de falha no sistema. O contratante, muitas vezes, deseja que o desenvolvedor responda por qualquer prejuízo comercial decorrente de indisponibilidade ou lentidão do software, incluindo perda de vendas, danos à imagem e lucros cessantes.

Sob a ótica do Código Civil brasileiro, a responsabilidade civil por perdas e danos deve ser proporcional e razoável. O desenvolvedor deve lutar pela inclusão de uma cláusula expressa de limitação de responsabilidade (Limitation of Liability). Essa cláusula deve excluir de forma absoluta o dever de indenizar por danos indiretos, lucros cessantes ou perda de dados comerciais, fixando um teto (Cap) máximo para danos diretos.

A prática padrão de mercado no Brasil é limitar a responsabilidade máxima agregada do prestador a 100% dos valores efetivamente pagos pelo cliente nos últimos 6 ou 12 meses sob o respectivo contrato, ou um valor fixo previamente acordado. Essa limitação é perfeitamente válida em relações B2B puras e protege o prestador de sofrer um prejuízo financeiro que inviabilize a sua operação por conta de uma falha involuntária na escrita do código.

  • Exclusão expressa de lucros cessantes, danos morais e danos indiretos na relação de desenvolvimento
  • Fixação de um teto (cap) financeiro equivalente à soma das parcelas quitadas nos últimos meses
  • Excludentes de responsabilidade para incidentes causados por instabilidade na infraestrutura ou nuvem do cliente
  • Exoneração de culpa por atrasos decorrentes de caso fortuito, força maior ou greve de provedores de internet
  • Previsão de seguro de responsabilidade civil tecnológica apenas quando exigido expressamente pelo volume financeiro do contrato

Ponto-chave

Limitar a responsabilidade por danos a 100% do valor do contrato é a blindagem financeira indispensável para qualquer estúdio de software no Brasil.

08

Homologação, testes e o aceite tácito do contratante

Para evitar que o cliente arraste o encerramento do contrato e o pagamento final recusando-se a declarar que o sistema está 'concluído', o contrato deve prever um protocolo claro de homologação e a cláusula de aceite tácito (Deemed Acceptance).

O fluxo correto consiste em prever que, após a entrega técnica do software em ambiente de staging (homologação), o cliente possui um prazo predeterminado (geralmente entre 5 e 10 dias úteis) para realizar testes funcionais e apresentar uma lista detalhada e fundamentada de eventuais bugs ou desvios de especificação.

Se o cliente não se manifestar formalmente por escrito dentro desse prazo de testes, ou se ele colocar o software em produção (ambiente de uso real pelos usuários finais), opera-se o aceite tácito. O sistema é considerado homologado e aceito para todos os fins jurídicos e financeiros, vencendo-se a respectiva parcela de pagamento.

  • Prazo fixo de 5 a 10 dias úteis para testes de homologação pelo cliente
  • Exigência de notificação formal escrita detalhando objetivamente cada desvio de especificação encontrado
  • Caracterização do aceite tácito pela ausência de manifestação no prazo ou pelo uso do software em ambiente de produção
  • Divisão do aceite por módulos funcionais para evitar o travamento de pagamento de um sistema inteiro por conta de falha menor em uma tela secundária
Visual de apoio sobre riscos, contratos e governança para Contrato de Desenvolvimento de Software: como Evitar Riscos e Proteger seu Código
Pontos de controle, documentação e governança tratados neste guia.

Perguntas frequentes

Quem é dono do código se o contrato for omisso?
No Brasil, nos termos do art. 4º da Lei do Software (Lei 9.609/98), os direitos sobre o programa de computador pertencem exclusivamente ao contratante ou empregador quando desenvolvidos durante a vigência do contrato ou vínculo. No entanto, deixar o contrato omisso sobre bibliotecas de terceiros ou o código-fonte proprietário do desenvolvedor gera enorme insegurança jurídica.
O desenvolvedor deve entregar o código-fonte no final?
Sim, a menos que haja previsão expressa em contrário no contrato. O recomendável para o desenvolvedor é prever que a transferência de propriedade intelectual e a entrega das credenciais do repositório final fiquem condicionadas ao pagamento integral das parcelas acordadas.
Como funciona a garantia de software para correção de bugs?
A lei brasileira não fixa prazo automático de garantia para bugs de software customizado, aplicando-se as regras gerais de vícios do Código Civil. Por isso, as partes devem estabelecer contratualmente um prazo de garantia técnica (geralmente entre 30 a 90 dias) e definir níveis de severidade (SLA) para a correção.
O desenvolvedor é responsável pelo funcionamento do software na nuvem do cliente?
O desenvolvedor responde pela conformidade técnica do código-fonte entregue de acordo com o escopo pactuado. Ele não deve ser responsabilizado por falhas decorrentes de instabilidades dos provedores de nuvem (AWS, Azure) escolhidos pelo cliente, problemas de conexão à internet, ou atualizações incompatíveis feitas por APIs de terceiros integradas ao sistema.
O que ocorre se o cliente alterar o código por conta própria durante a garantia?
Em regra, qualquer modificação, intervenção técnica ou alteração do código-fonte realizada pelo cliente ou por terceiros não autorizados durante o período de garantia técnica acarreta a perda imediata e automática da garantia e do suporte corretivo gratuito do desenvolvedor original.

Fechamento

Um contrato de desenvolvimento de software robusto não visa engessar a relação, mas sim criar regras claras para que as equipes de tecnologia e de negócios possam colaborar com segurança. Ao regular adequadamente a propriedade intelectual, as metodologias de entrega, os limites de garantia e as chaves de acesso, as partes reduzem drasticamente o risco de disputas judiciais e garantem a integridade operacional do produto tecnológico.

Autor

Carol Paranhos

Carol Paranhos

Advogada associada - OAB/RS 141.676

Advogada associada do Castro e Paranhos, com atuação em assessoria jurídica e contratos especializados para agências, startups e empresas de tecnologia.

Estruturar meu contrato de tecnologia

Artigos relacionados