# Compatibilidade reversa

Em tecnologia, especialmente em informática (independentemente de plataforma), é dito de um produto que este possui compatibilidade reversa,$^[$ compatibilidade descendente ou retrocompatibilidade quando é capaz de assumir o lugar de um produto mais antigo, interagindo com outros produtos que foram desenhados para funcionar com a versão anterior.
A retrocompatibilidade é uma característica essencial no design de sistemas para a criação de sistemas sustentáveis, reutilizáveis e integrados. A retrocompatibilidade de um programa de software é garantida por meio de atualizações realizadas pela empresa que desenvolveu o programa. A nova versão do software deve ser capaz de interagir com o ambiente antigo, ou seja, deve ser retrocompatível com a versão anterior. A retrocompatibilidade é essencial não apenas para a continuidade do funcionamento sem interrupções, mas também para a sobrevivência do software no mercado e tornou-se uma característica essencial no design de produtos e na configuração de sistemas .

## Definição

A compatibilidade reversa é uma relação entre dois componentes, em vez de ser atributo de apenas um deles. Mais genericamente, os seguintes critérios precisam ser preenchidos:
* Há uma interface funcional "I" definida.
* Há um componente servidor "S" que provê a funcionalidade de I.
* Há um componente cliente "C" que depende de S via I.
* Um novo componente servidor "S2" é criado e possui uma funcionalidade maior que a de S e é exibido por uma nova interface "I2".
* Todas as funções de I são também fornecidas por I2. Em outras palavras, I é um subconjunto de I2.
Quando estes critérios são preenchidos, S2 é reversamente compatível com S porque ele ainda dá suporte à interface I e portanto, o cliente C pode ser alternado para o uso de S2 e ainda operar de modo correcto.

## Exemplos

* Um sistema computacional é compatível reversamente se ele é capaz de funcionar com softwares ou acessórios desenhados para o sistema que deve substituir.
** O Atari 7800 é compatível reversamente com a maioria dos jogos do Atari 2600.
** A linha Game Boy Advance (exceto o Game Boy Micro) é compatível reversamente com sua predecessora, a linha Game Boy; isso quer dizer que todos os títulos para Game Boy e Game Boy Color são jogáveis na linha Advance.
** O PlayStation 2 é compatível reversamente com a biblioteca do PlayStation original.
** O Nintendo DS é compatível reversamente apenas com os jogos do Game Boy Advance.
** O PlayStation 3(Versão 60GB) é compatível reversamente com a maioria dos jogos para PlayStation 1 e 2.
** O microprocessador Intel 80486 é compatível reversamente com os programas do 80386 porque pode executar programas escritos para o 80386.
** Os USB 1.0 e 1.1 são totalmente compatíveis com os padrões 2.0 e 3.0, e o mais recente USB-C, e assim vice-versa.
** O Xbox 360 é compatível reversamente com alguns jogos do Xbox. Isto é obtido via emulação.
** O Wii é compatível reversamente com a maioria dos jogos do sistema anterior da Nintendo, o GameCube. Alguns jogos lançados originalmente para consoles adicionais – o NES, SNES, Nintendo 64, Sega Genesis, Sega Master System, Turbografx 16 e Commodore 64 – também estão disponíveis para serem jogados no Wii via emulação.
* Outros exemplos de compatibilidade reversa em software:
** O Microsoft Word 2000 possui compatibilidade reversa com o Word 97 devido ao facto de que pode ler e gravar ficheiros no formato do Word 97, entendendo-se que as características exclusivas do Word 2000 não se aplicam ao Word 97 (ou seja, não há "compatibilidade ascendente").
** Acrescentando-se hardware externo apropriado, muitos consoles podem se tornar compatíveis reversamente. Isto inclui:
*** O Atari 5200 pode executar jogos do Atari 2600 acrescentando-se um "Atari VCS Cartridge Adapter".
*** O Colecovision pode executar jogos do Atari 2600 acrescentando-se o "Expansion Module #1".
*** O Intellivision pode executar jogos do Atari 2600 acrescentando-se o "System Changer".
*** O Sega Genesis pode executar jogos do Sega Master System acrescentando-se um "Power Base Converter".
*** O Sega Game Gear pode executar jogos do Sega Master System acrescentando-se um "Master Gear".
*** O Super NES pode executar jogos do Game Boy acrescentando-se um cartucho "Super Game Boy".
*** O Nintendo GameCube pode executar qualquer jogo existente da linha Game Boy com uma expansão "Game Boy Player" e um disco de boot.

## Retrocompatibilidade em hardwares

A retrocompatibilidade também se aplica aos sistemas de hardware. Os sistemas de manufatura inteligente combinam equipamentos de fabricação existentes com sensores, robôs e sistemas de manuseio de materiais, utilizando conceitos e tecnologias como Sistemas Ciberfísicos, Internet das Coisas (IoT), Computação em Nuvem, entre outros. Quando um sistema de manufatura automatizado é configurado com a mais recente tecnologia de IoT, é fundamental garantir a retrocompatibilidade com o sistema atual. Para isso, é necessário estabelecer uma arquitetura bem estruturada, escalável, retrocompatível e segura, que torne a implementação de IoT viável.
Uma diferença importante entre a configuração de sistemas de software e a configuração de sistemas de hardware é que as instalações de hardware costumam ter uma vida útil muito mais longa, de 10 anos ou mais, em contraste com os aproximadamente três anos dos sistemas de software. Isso ressalta a relevância da retrocompatibilidade com sistemas legados, não apenas na integração de sistemas de software, mas também na integração de sistemas de hardware.

## Sistemas e componentes retrocompativeis versus não retrocompativeis

Um estudo de caso publicado em 2023 demonstrou que, quando a retrocompatibilidade é considerada no design de um sistema, o desempenho é superior em comparação com abordagens que não a levam em conta. Para provar isso, a retrocompatibilidade foi incorporada àum modelo matemático que usou configuração modular de sistemas computacionais cuja complexidade é conhecida por ser NP Completo. A configuração modular de sistemas é definida como o design de um sistema que também é construída a partir de outros componentes modularizados por meio de interfaces padronizadas. Não apenas componentes, mas também produtos podem ser integrados através de interfaces padronizadas. A pesquisa cita como exemplo um laptop com Windows, que pode projetar sua tela em uma smart TV via HDMI (com fio) ou via Miracast (sem fio). O HDMI é uma interface física, enquanto Miracast é uma interface não física. Isso demonstra que, conforme a tecnologia avança, surgem variantes das interfaces padronizadas com diferentes versões de uma mesma interface. Muitas dessas interfaces oferecem suporte à retrocompatibilidade, o que significa que uma nova versão de uma interface ainda pode ser retrocompativel.
O modelo matemático proposto pode ser amplamente aplicado a sistemas eletrônicos que frequentemente tem suas interfaces padronizadas e retrocompativeis devido a organizações de padronização como o Instituto de Engenheiros Eletricistas e Eletrônicos e a Comissão Eletrotécnica Internacional. Interfaces padronizadas permitiram que alguns sistemas mecânicos, como sistemas de freios de bicicletas e rodas, sejam facilmente atualizados para novas versões.