Portabilidade de software - Software portability

Portabilidade na programação de computador de alto nível é a usabilidade do mesmo software em ambientes diferentes. O pré-requisito para portabilidade é a abstração generalizada entre a lógica do aplicativo e as interfaces do sistema . Quando um software com a mesma funcionalidade é produzido para várias plataformas de computação , a portabilidade é a questão chave para a redução de custos de desenvolvimento.

Estratégias para portabilidade

A portabilidade do software pode envolver:

  • Transferir arquivos de programas instalados para outro computador com basicamente a mesma arquitetura.
  • Reinstalar um programa de arquivos de distribuição em outro computador com basicamente a mesma arquitetura.
  • Criação de programas executáveis para diferentes plataformas a partir do código-fonte ; isso é o que geralmente se entende por " portar ".

Sistemas semelhantes

Quando sistemas operacionais da mesma família são instalados em dois computadores com processadores com conjuntos de instruções semelhantes , geralmente é possível transferir os arquivos de implementação de programa entre eles.

No caso mais simples, o arquivo ou arquivos podem simplesmente ser copiados de uma máquina para outra. No entanto, em muitos casos, o software é instalado em um computador de uma forma que depende de seu hardware, software e configuração detalhados, com drivers de dispositivo para dispositivos específicos, usando o sistema operacional instalado e os componentes de software de suporte e usando diferentes unidades ou diretórios .

Em alguns casos, o software, geralmente descrito como " software portátil ", é projetado especificamente para ser executado em diferentes computadores com sistemas operacionais e processadores compatíveis, sem qualquer instalação dependente da máquina. A portabilidade nada mais é do que a transferência de diretórios específicos e seus conteúdos. O software instalado em dispositivos portáteis de armazenamento em massa , como pen drives, pode ser usado em qualquer computador compatível simplesmente conectando o dispositivo de armazenamento e armazena todas as informações de configuração no dispositivo removível. As informações específicas de hardware e software são freqüentemente armazenadas em arquivos de configuração em locais específicos (por exemplo, o registro em máquinas que executam o Microsoft Windows ).

O software que não é portátil neste sentido terá que ser transferido com modificações para suportar o ambiente na máquina de destino.

Processadores diferentes

Em 2011, a maioria dos desktops e laptops usavam microprocessadores compatíveis com os conjuntos de instruções x86 de 32 e 64 bits . Dispositivos portáteis menores usam processadores com conjuntos de instruções diferentes e incompatíveis, como ARM . A diferença entre dispositivos maiores e menores é que a operação detalhada do software é diferente; um aplicativo projetado para ser exibido adequadamente em uma tela grande não pode simplesmente ser transferido para um smartphone de bolso com uma tela minúscula, mesmo que a funcionalidade seja semelhante.

Os aplicativos da Web devem ser independentes do processador, de modo que a portabilidade pode ser alcançada usando técnicas de programação da Web, escrevendo em JavaScript . Esse programa pode ser executado em um navegador da web comum. Esses aplicativos da web devem, por razões de segurança, ter controle limitado sobre o computador host, especialmente em relação à leitura e gravação de arquivos. Programas não-web, instalados em um computador da maneira normal, podem ter mais controle e, ainda assim, alcançar a portabilidade do sistema vinculando-se a bibliotecas portáteis que fornecem a mesma interface em sistemas diferentes.

Portabilidade do código fonte

O software pode ser compilado e vinculado a partir do código-fonte para diferentes sistemas operacionais e processadores, se escrito em uma linguagem de programação que suporte a compilação para as plataformas. Normalmente, essa é uma tarefa para os desenvolvedores do programa; usuários típicos não têm acesso ao código-fonte nem as habilidades necessárias.

Em ambientes de código aberto como Linux, o código-fonte está disponível para todos. Antigamente, o código-fonte era frequentemente distribuído em um formato padronizado e podia ser integrado ao código executável com uma ferramenta Make padrão para qualquer sistema específico por usuários com conhecimento moderado, se nenhum erro ocorresse durante a construção. Algumas distribuições do Linux distribuem software aos usuários na forma de código-fonte. Nestes casos, geralmente não há necessidade de adaptação detalhada do software para o sistema; ele é distribuído de uma forma que modifica o processo de compilação para corresponder ao sistema .

Esforço para portar o código-fonte

Mesmo com linguagens aparentemente portáveis ​​como C e C ++, o esforço para portar o código-fonte pode variar consideravelmente. Os autores de UNIX / 32V (1979) relataram que "[o] shell (Bourne) [...] exigiu de longe o maior esforço de conversão de qualquer programa supostamente portátil, pela simples razão de que não é portátil."

Às vezes, o esforço consiste em recompilar o código-fonte, mas às vezes é necessário reescrever partes importantes do software. Muitas especificações de linguagem descrevem o comportamento definido pela implementação (por exemplo, deslocar para a direita um inteiro com sinal em C pode fazer uma mudança lógica ou aritmética ). As funções do sistema operacional ou bibliotecas de terceiros podem não estar disponíveis no sistema de destino. Algumas funções podem estar disponíveis em um sistema de destino, mas exibem um comportamento ligeiramente diferente (Ex: utime () falha no Windows com EACCES, quando é chamado para um diretório). O próprio código do programa também pode conter coisas não portáveis, como os caminhos dos arquivos de inclusão. Letras de unidade e barra invertida como delimitador de caminho não são aceitas em todos os sistemas operacionais. A implementação definiu coisas como a ordem dos bytes e o tamanho de um int também podem aumentar o esforço de portabilidade. Na prática, a reivindicação de linguagens, como C e C ++ , de ter o WOCA ( escrever uma vez, compilar em qualquer lugar ) é discutível.

Veja também

Referências

Origens

  • Mooney (1997). "Trazendo portabilidade para o processo de software" (PDF) . West Virginia University. Departamento de Estatística e Ciência da Computação. Arquivado do original (PDF) em 25/07/2008 . Página visitada em 2008-03-17 . Citar diário requer |journal= ( ajuda )
  • Garen (2007). "Portabilidade de software: opções de pesagem, fazendo escolhas" . The CPA Journal . 77 (11): 3.
  • Lehey (1995). "Porting UNIX Software: From Download to Debug" (PDF) . Página visitada em 2010-05-27 . Citar diário requer |journal= ( ajuda )