PARECER DE PERITOS EM SOFTWARE. UTILIZAÇÃO ILEGAL DO CÓDIGO FONTE

Conhecimentos de software

É encomendado um relatório a um perito em software. Para determinar se um antigo funcionário tinha utilizado o código fonte para produzir um produto semelhante para outra empresa. O relatório foi encomendado pelo Ministério Público.

 

Base documental:

  • Exame da documentação apresentada, incluindo o relatório da polícia.
  • Análise do disco rígido do arguido.
  • Comparação do código fonte, com as versões do mesmo na empresa e com outros desenvolvimentos em curso.
  • Procurar outras provas no disco rígido, tais como código compilado, documentos apresentados a terceiros relacionados com a questão, inspeção de mensagens de correio eletrónico enviadas/recebidas, etc.

 

Partes do relatório do perito

O software controlava duas máquinas-ferramentas. Tinha uma forte interação com o hardware e a programação de baixo nível. A tarefa era complexa, com desenvolvimentos de mais de 80.000 linhas de código. Foi codificado em Microsoft Visual Basic.

Para verificar se houve plágio no software, foram realizadas as seguintes tarefas:

Clonagem de duas máquinas virtuais com ambas as versões

Foram clonadas em duas máquinas virtuais que emulavam o comportamento das máquinas-ferramentas controladas (ambiente de teste). Nestas máquinas, foi executado o mesmo software que na máquina-ferramenta. Isto tornou possível emular o seu comportamento num PC.

Estudo de dispositivos controlados por software

As duas máquinas controladas foram também comparadas. Foram encontradas semelhanças entre as duas máquinas, uma vez que têm funcionalidades semelhantes, pelo que estudámos as sobreposições para descobrir até que ponto forçaram uma correspondência no software.

Comparação estatística

A nível estatístico, foram avaliadas as linhas de código que compunham as duas versões e a sua estruturação. O objetivo era identificar padrões comuns e se tinha havido uma mudança no estilo e nas orientações de programação.

Pesquisa de nomes comuns

Os nomes das funções, procedimentos e definições foram comparados em busca de correspondências. Todos os nomes correspondentes foram comparados lado a lado.

Comparação da estruturação do software

O software foi estruturado em três camadas: Gráfica / Lógica / Interação com o hardware. Seguia parcialmente o paradigma MVC. A estrutura de ambos os códigos foi comparada para determinar as partes plagiadas.

Comparação da interface gráfica

Documentar as semelhanças na interface gráfica. Nalguns aspectos, os parâmetros captados pela interface gráfica não podem ser diferentes. Estudar a forma como foi implementada. Tratava-se de um modelo de vistas comum aos dois projectos.

Estudo da documentação

Toda a documentação do processo judicial é estudada: relatório da polícia, ação e defesa, a fim de encontrar as bases e as chaves do processo.

Parecer sobre funcionalidades comuns ou partes comuns do software

Todas as coincidências e a sua razão de ser foram analisadas. As coincidências não são necessariamente indicativas de plágio. Duas funções podem ser a mesma:

  • Fazer parte de uma biblioteca externa importada
  • Para implementar o mesmo algoritmo de uso comum e conhecimento comum
  • Sendo implementações de rotina ou mesmo geradas automaticamente (getters / setters, interfaces, etc.).

 

Resultados obtidos:

O relatório esclarece:

  • Que partes do código foram reutilizadas.
  • Possível lucro ilegítimo da reutilização de código.
  • A existência de má fé.
  • Se a reutilização das metodologias reivindicadas pela empresa é punível ou se pode ser enquadrada no que é habitual.