Yazılım taşınabilirliği - Software portability

Taşınabilirlik içinde üst düzey bilgisayar programlama aynı kullanılabilirliğidir yazılım farklı ortamlarda. Taşınabilirlik için ön koşul , uygulama mantığı ve sistem arayüzleri arasındaki genelleştirilmiş soyutlamadır . Birkaç bilgi işlem platformu için aynı işlevselliğe sahip yazılım üretildiğinde , taşınabilirlik, geliştirme maliyetinin düşürülmesi için temel sorundur.

Taşınabilirlik için stratejiler

Yazılım taşınabilirliği şunları içerebilir:

  • Yüklü program dosyalarını temelde aynı mimariye sahip başka bir bilgisayara aktarmak.
  • Bir programı, temelde aynı mimariye sahip başka bir bilgisayardaki dağıtım dosyalarından yeniden yükleme.
  • Bina yürütülebilir farklı platformlar için programlar kaynak kodu ; bu genellikle " taşıma " ile anlaşılan şeydir .

Benzer sistemler

Ne zaman işletim sistemleri aynı ailenin iki bilgisayarlarda yüklü olan işlemciler benzer olan talimat setleri aralarındaki program dosyalarını uygulayan dosyaları aktarmak için genellikle mümkündür.

En basit durumda, dosya veya dosyalar bir makineden diğerine basitçe kopyalanabilir. Ancak, birçok durumda, yazılım olan yüklü olan, onun ayrıntılı donanım, yazılım ve kurulum bağlıdır şekilde bir bilgisayarda aygıt sürücüleri farklı yüklü işletim sistemini kullanan ve yazılım bileşenlerini destekleyen ve kullanan, özellikle cihazlar için sürücüler veya dizinleri .

Bazı durumlarda, genellikle " taşınabilir yazılım " olarak tanımlanan yazılım , özellikle uyumlu işletim sistemleri ve işlemcileri olan farklı bilgisayarlarda, makineye bağlı herhangi bir kurulum olmadan çalışmak üzere tasarlanmıştır. Taşıma, belirli dizinleri ve içeriklerini aktarmaktan başka bir şey değildir. USB çubukları gibi taşınabilir yığın depolama aygıtlarına yüklenen yazılım , herhangi bir uyumlu bilgisayarda, depolama aygıtının takılmasıyla kullanılabilir ve tüm yapılandırma bilgilerini çıkarılabilir aygıtta depolar. Donanıma ve yazılıma özel bilgiler genellikle belirli konumlardaki yapılandırma dosyalarında saklanır (örn. Microsoft Windows çalıştıran makinelerdeki kayıt defteri ).

Bu anlamda taşınabilir olmayan yazılımların, hedef makinedeki ortamı desteklemek için modifikasyonlarla aktarılması gerekecektir.

Farklı işlemciler

2011 itibariyle masaüstü ve dizüstü bilgisayarların çoğu , 32 ve 64 bit x86 komut setleriyle uyumlu mikroişlemciler kullandı . Daha küçük taşınabilir cihazlar, ARM gibi farklı ve uyumsuz komut setlerine sahip işlemcileri kullanır . Daha büyük ve daha küçük cihazlar arasındaki fark, ayrıntılı yazılım işleminin farklı olacağı şekildedir; Geniş bir ekranda uygun şekilde görüntülenmek üzere tasarlanmış bir uygulama, işlevsellik benzer olsa bile küçük bir ekrana sahip cep boyutundaki bir akıllı telefona kolayca taşınamaz.

Web uygulamalarının işlemciden bağımsız olması gerekir, bu nedenle taşınabilirlik, web programlama tekniklerini kullanarak, JavaScript ile yazarak sağlanabilir . Böyle bir program, ortak bir web tarayıcısında çalışabilir. Bu tür web uygulamaları , güvenlik nedenleriyle, özellikle dosyaları okuma ve yazma konusunda ana bilgisayar üzerinde sınırlı kontrole sahip olmalıdır. Bir bilgisayara normal şekilde yüklenen web dışı programlar, daha fazla kontrole sahip olabilir ve yine de farklı sistemlerde aynı arayüzü sağlayan taşınabilir kitaplıklara bağlanarak sistem taşınabilirliğini sağlayabilir.

Kaynak kodu taşınabilirliği

Yazılım , platformlar için derlemeyi destekleyen bir programlama dilinde yazılırsa, farklı işletim sistemleri ve işlemciler için kaynak kodundan derlenebilir ve bağlanabilir . Bu genellikle program geliştiricileri için bir görevdir; tipik kullanıcıların ne kaynak koduna ne de gerekli becerilere erişimi vardır.

In açık kaynak Linux gibi ortamlarda kaynak kodu tüm kullanılabilir. Daha önceki günlerde kaynak kodu genellikle standartlaştırılmış bir biçimde dağıtılırdı ve derleme sırasında herhangi bir hata oluşmazsa, orta düzeyde bilgili kullanıcılar tarafından herhangi bir belirli sistem için standart bir Make aracı ile yürütülebilir koda yerleştirilebilirdi . Bazı Linux dağıtımları, yazılımı kullanıcılara kaynak biçiminde dağıtır. Bu durumlarda genellikle yazılımın sisteme detaylı olarak uyarlanmasına gerek yoktur; derleme sürecini sisteme uyacak şekilde değiştirecek şekilde dağıtılır .

Kaynak kodunu taşıma çabası

C ve C ++ gibi görünüşte taşınabilir dillerde bile, kaynak kodunu taşıma çabası önemli ölçüde değişebilir. UNIX / 32V'nin (1979) yazarları, "[t] he (Bourne) kabuğunun [...], taşınabilir olmaması nedeniyle, sözde taşınabilir herhangi bir programın en büyük dönüştürme çabasını gerektirdiğini " bildirdi .

Bazen çaba, kaynak kodunu yeniden derlemekten ibarettir, ancak bazen yazılımın büyük bölümlerini yeniden yazmak gerekir. Birçok dil özelliği, uygulama tanımlı davranışı tanımlar (örneğin, C'de işaretli bir tamsayıyı sağa kaydırmak mantıksal veya aritmetik bir kayma yapabilir). Hedef sistemde işletim sistemi işlevleri veya üçüncü taraf kitaplıkları kullanılamayabilir. Bazı işlevler bir hedef sistemde kullanılabilir, ancak biraz farklı davranış sergiler (Örn: utime (), bir dizin için çağrıldığında EACCES ile Windows altında başarısız olur). Program kodunun kendisi de içerme dosyalarının yolları gibi taşınabilir olmayan şeyler içerebilir. Yol sınırlayıcı olarak sürücü harfleri ve ters eğik çizgi tüm işletim sistemlerinde kabul edilmez. Bayt sırası ve int boyutu gibi uygulama tanımlı şeyler de taşıma çabasını artırabilir. Uygulamada, C ve C ++ gibi dillerin WOCA'ya (bir kez yazın, her yerde derleyin ) sahip olma iddiası tartışılabilir.

Ayrıca bakınız

Referanslar

Kaynaklar

  • Mooney (1997). "Taşınabilirliği Yazılım Sürecine Getirmek" (PDF) . Batı Virginia Üniversitesi. İstatistik ve Bilgisayar Bilimleri Bölümü. 2008-07-25 tarihinde orjinalinden (PDF) arşivlendi . Erişim tarihi: 2008-03-17 . Alıntı günlüğü gerektirir |journal= ( yardım )
  • Garen (2007). "Yazılım Taşınabilirliği: Tartım Seçenekleri, Seçim Yapma" . CPA Dergisi . 77 (11): 3.
  • Lehey (1995). "UNIX Yazılımını Taşıma: İndirmeden Hata Ayıklamaya" (PDF) . Erişim tarihi: 2010-05-27 . Alıntı günlüğü gerektirir |journal= ( yardım )