Engenharia Reversa Aplicada à Inovação

Por Daniel Campos do Amaral | 08/10/2013 | Adm

Podemos começar com a curiosidade que todas as pessoas têm, como por exemplo: Quem nunca abriu um objeto eletrônico qualquer para entender seu funcionamento? Nem todas as invenções tecnológicas do mundo moderno foram criadas a partir de uma grande idéia. Algumas delas surgiram do estudo de outras, e posteriormente se desenvolveram de forma independente do objeto inicial de estudos. A engenharia reversa está cada vez mais se tornando uma importante área de pesquisas para o avanço das tecnologias existentes, pois permite que mesmo aquilo que é protegido por leis de propriedade intelectual seja estudado e melhorado pelos concorrentes.

Apesar de parecer, a engenharia reversa não pode ser considerada uma espécie de cópia, pois se trata apenas do estudo daquilo que foi criado. A cópia é somente uma das consequências possíveis do estudo de um produto ou ideia. A engenharia reversa também pode nos ajudar a entender o funcionamento de algo, para desenvolver o objeto de estudo, ou mesmo produzir algo completamente novo, a partir dos dados coletados, sem qualquer semelhança com o original. Desde a sua primeira utilização, a engenharia reversa cresceu muito, e hoje possibilita desde o entendimento e melhoria daquilo que se estuda, até a descoberta de segredos industriais e comerciais.

Como este mercado está crescendo, a Engenharia Reversa está abrangendo uma grande parte do mercado geral (Mercado geral – Pode ser considerado um consolidado de todas as matérias primas criadas ou copiadas, tendo assim um termo para generalizar e abranger o todo) a competitividade entre os clientes e fornecedores estão crescendo muito. A cada dia, uma nova ideia se surge, um novo pensamento se materializa, e matérias primas velhas voltam a ter vida, as vezes com um toque de inovação.

Para facilitar o entendimento, vamos usar duas empresas, que coincidentemente produzem o mesmo produto. Vamos usar como exemplo o celular, que é um produto que está sempre à frente das inovações e criando cada vez mais uma competitividade entre os clientes e fornecedores. A partir do momento que temos duas empresas desenvolvendo o mesmo produto, automaticamente é criado um ambiente de competitividade, onde o foco das duas empresas é inovar seus produtos mantendo o lucro e qualidade. Sendo assim, se uma das empresas lançar um celular com diversas funcionalidades e disponibilidades, a empresa concorrente pode usar a engenharia reversa para lucrar em cima disto.

A empresa concorrente compra o produto e faz uma análise sobre o produto, já tendo em mente melhorias, modificações e termos de funcionalidade. Esta analise pode ser feita de várias formas, vamos listar apenas 4 pontos que dever ser feitos, que são:

  • Desmontar o produto acabado;
  • Verificar preços das peças constituintes;
  • Supostos fornecedores das peças do produto;
  • Funcionalidade do produto;

Entre outras que também são essenciais para desenvolver um novo produto mais inovador, com mais qualidade, mais barato e ganhar os clientes do concorrente. Ao entender como o produto funcionado, qual sua base de gastos e lucros, é criado um plano de ação para focar em inovações e ideias para um produto já criado, disponibilizando assim mais conhecimento em um produto já existente, só que mais potente.

Este trabalho pode levar dias, semanas e às vezes até anos, mas nem sempre terá sucesso, pois como este marcado está grande, não podemos perder tempo desenvolvendo alguma coisa, pois outros fornecedores podem criar algo melhor e mais rápido, tomando assim a frente do mercado.

Para realizar esta analise, vamos aprimorar um pouco mais nossos procedimentos para esclarecer possíveis dúvidas. Podemos usar agora, outro produto para utilizar como exemplo, o SOFTWARE.

Considerações Iniciais:

Inicia-se este tópico com a colocação dos Níveis de Abstração no Ciclo de Vida do Software, visto que o processo de Engenharia Reversa envolve mudanças nesse nível. Veremos também as Visualizações, em diferentes níveis de abstração, que se pode obter do software pela Engenharia Reversa. De acordo com o nível de entendimento obtido do sistema e o escopo das informações usadas é apresentada uma Categorização de Engenharia Reversa, e finalizando este tópico, é apresentado um Quadro das Principais Ferramentas relacionadas.

Níveis de Abstração no Ciclo de Vida:

As fases do ciclo de vida podem ser agrupadas em três atividades fundamentais: Sistema (engenharia de sistemas), Requisitos (análise), e Desenvolvimento (projeto, codificação e testes). A fase de manutenção é vista como reiteração de atividades prévias. A primeira atividade envolve o contexto em que o sistema está operando, ou seja, o porquê do sistema ser desenvolvido. A segunda é descrita como o estabelecimento dos serviços a serem fornecidos pelo sistema e as restrições sob as quais ele deve operar, ou seja, o que o sistema deve fazer e sob quais circunstâncias. A terceira é a criação de um planejamento da solução, ou seja, como o sistema fará o proposto na atividade de requisitos, seguido da implantação da solução proposta, incluindo a codificação, os testes, a depuração, e a entrega do sistema para operação. Para efeito desse estudo, devem-se considerar as fases genéricas, as quais possuem uma clara diferenciação nos níveis de abstração.

Abstração é definida como a habilidade de se ignorar os aspectos de assuntos não relevantes para o propósito em questão, tornando possível uma concentração maior nos assuntos principais. Dois conceitos relacionam abstração com as atividades do ciclo de vida: Nível de Abstração: Cada passo no processo de desenvolvimento de software é um refinamento do nível de abstração do software. Um alto nível de abstração tem menos detalhes que um baixo nível de abstração. Nos estágios iniciais do ciclo de vida as informações estão representadas de uma forma mais global (possuem alto nível de abstração) e nos estágios finais de uma forma mais detalhada (baixo nível de abstração). Grau de Abstração: Está relacionado a uma mesma atividade no ciclo de vida do software. Informações em uma forma mais global possuem alto grau de abstração, em uma forma mais detalhada, baixo grau de abstração.

O processo tradicional de engenharia de software, caracterizado pelas atividades progressivas do ciclo de vida, que partem de um alto nível de abstração, para um baixo nível de abstração, é conhecido como Engenharia Progressiva. O processo inverso à Engenharia Progressiva, caracterizado pelas atividades retroativas do ciclo de vida, que partem de um baixo nível de abstração para um alto nível de abstração, é conhecido como Engenharia Reversa.

Definições de Engenharia Reversa:

O termo “Engenharia Reversa” tem sua origem na análise de hardware, onde é comum a prática de decifrar projetos de produtos finalizados. Engenharia Reversa de Hardware é regularmente aplicada para melhorar os próprios produtos, bem como para analisar os produtos de competidores ou de adversários em situações militares ou de segurança nacional. O conceito de Engenharia Reversa de Software é similar. Porém, enquanto tradicionalmente o objetivo da engenharia reversa de hardware é duplicar o sistema, o objetivo da engenharia de software freqüentemente é obter um entendimento do sistema em um nível maior de abstração.