Přenositelnost softwaru - Software portability

Přenositelnost v počítačovém programování na vysoké úrovni je použitelnost stejného softwaru v různých prostředích. Předpokladem pro přenositelnost je zobecněná abstrakce mezi aplikační logikou a systémovými rozhraními . Když se pro několik výpočetních platforem vyrábí software se stejnou funkčností, je přenositelnost klíčovým problémem pro snížení nákladů na vývoj.

Strategie přenositelnosti

Přenositelnost softwaru může zahrnovat:

  • Přenos nainstalovaných programových souborů do jiného počítače v zásadě stejné architektury.
  • Přeinstalování programu z distribučních souborů na jiný počítač v zásadě stejné architektury.
  • Vytváření spustitelných programů pro různé platformy ze zdrojového kódu ; tomu se obvykle rozumí „ portování “.

Podobné systémy

Pokud jsou operační systémy stejné rodiny nainstalovány na dvou počítačích s procesory s podobnými instrukčními sadami , je často možné přenášet soubory, které mezi nimi implementují soubory programu.

V nejjednodušším případě může být soubor nebo soubory jednoduše zkopírovány z jednoho stroje do druhého. V mnoha případech je však software nainstalován do počítače způsobem, který závisí na jeho podrobném hardwaru, softwaru a nastavení, s ovladači zařízení pro konkrétní zařízení, pomocí nainstalovaného operačního systému a podpůrných softwarových komponent a pomocí různých jednotek nebo adresářů. .

V některých případech je software, obvykle popisovaný jako „ přenosný software “, speciálně navržen pro provoz na různých počítačích s kompatibilními operačními systémy a procesory bez jakékoli instalace závislé na počítači. Přenos není nic jiného než přenos zadaných adresářů a jejich obsahu. Software nainstalovaný na přenosných velkokapacitních paměťových zařízeních, jako jsou USB flash disky, lze použít na libovolném kompatibilním počítači po jednoduchém připojení paměťového zařízení a uloží všechny informace o konfiguraci na vyměnitelné zařízení. Informace o hardwaru a softwaru jsou často uloženy v konfiguračních souborech na určených místech (např. Registr na počítačích se systémem Microsoft Windows ).

Software, který v tomto smyslu není přenosný, bude muset být přenesen s úpravami, aby podporoval prostředí v cílovém počítači.

Různé procesory

Od roku 2011 většina stolních a přenosných počítačů používala mikroprocesory kompatibilní s 32- a 64bitovými instrukčními sadami x86 . Menší přenosná zařízení používají procesory s různými a nekompatibilními sadami instrukcí, například ARM . Rozdíl mezi většími a menšími zařízeními je takový, že podrobný provoz softwaru se liší; aplikace navržená pro vhodné zobrazení na velké obrazovce nelze jednoduše přenést na kapesní smartphone s malou obrazovkou, i když je funkce podobná.

Webové aplikace musí být nezávislé na procesoru, takže přenositelnosti lze dosáhnout pomocí technik webového programování a psaní v JavaScriptu . Takový program lze spustit v běžném webovém prohlížeči. Tyto webové aplikace musí z bezpečnostních důvodů mít omezenou kontrolu nad hostitelským počítačem, zejména pokud jde o čtení a zápis souborů. Non-webové programy, instalované na počítači běžným způsobem, mohou mít větší kontrolu a přesto dosáhnout přenositelnosti systému propojením s přenosnými knihovnami poskytujícími stejné rozhraní v různých systémech.

Přenositelnost zdrojového kódu

Software lze kompilovat a propojovat ze zdrojového kódu pro různé operační systémy a procesory, pokud je napsán v programovacím jazyce podporujícím kompilaci pro platformy. Toto je obvykle úkol pro vývojáře programů; typičtí uživatelé nemají ani přístup ke zdrojovému kódu, ani požadované dovednosti.

V prostředích s otevřeným zdrojovým kódem, jako je Linux, je zdrojový kód k dispozici všem. V dřívějších dobách byl zdrojový kód často distribuován ve standardizovaném formátu a mohl být zabudován do spustitelného kódu pomocí standardního nástroje Make pro jakýkoli konkrétní systém mírně informovanými uživateli, pokud během sestavení nedošlo k žádným chybám. Některé distribuce Linuxu distribuují software uživatelům ve zdrojové formě. V těchto případech obvykle není nutné podrobné přizpůsobení softwaru pro systém; je distribuován způsobem, který upravuje proces kompilace tak, aby odpovídal systému .

Snaha o zdrojový kód portu

I při zdánlivě přenosných jazycích, jako jsou C a C ++, se snaha o přenesení zdrojového kódu může značně lišit. Autoři UNIX / 32V (1979) uvádějí, že „[ Bourneův shell [...] vyžadoval zdaleka největší konverzní úsilí jakéhokoli údajně přenosného programu, a to z prostého důvodu, že není přenosný“.

Někdy úsilí spočívá v překompilování zdrojového kódu, ale někdy je nutné přepsat hlavní části softwaru. Mnoho jazykových specifikací popisuje chování definované implementací (např. Posunutí celého čísla se znaménkem v C může provést logický nebo aritmetický posun). Funkce operačního systému nebo knihovny třetích stran nemusí být v cílovém systému k dispozici. Některé funkce mohou být k dispozici v cílovém systému, ale vykazují mírně odlišné chování (např.: Utime () selže v systému Windows s EACCES, když je vyvolán adresář). Samotný programový kód může také obsahovat nepřenosné věci, jako jsou cesty zahrnutých souborů. Písmena jednotek a zpětné lomítko jako oddělovač cesty nejsou ve všech operačních systémech přijímány. Úsilí přenesení může také zvýšit implementace definovaných věcí, jako je pořadí bajtů a velikost int . V praxi je tvrzení o jazycích, jako jsou C a C ++ , mít WOCA ( zapisovat jednou, kompilovat kdekoli ) diskutabilní.

Viz také

Reference

Zdroje

  • Mooney (1997). „Přenositelnost do softwarového procesu“ (PDF) . Univerzita Západní Virginie. Ústav statistiky a informatiky. Archivovány z původního (PDF) 25. července 2008 . Citováno 2008-03-17 . Citovat deník vyžaduje |journal= ( pomoc )
  • Garen (2007). „Přenositelnost softwaru: Možnosti vážení, výběr“ . Deník CPA . 77 (11): 3.
  • Lehey (1995). „Přenos softwaru UNIX: od stahování po ladění“ (PDF) . Citováno 2010-05-27 . Citovat deník vyžaduje |journal= ( pomoc )