İleriye uyumluluk

İleriye uyumluluk bir sistemin ileride çıkacak versiyonların çalıştırabileceği girdilerin önceki versiyonlar tarafından kabul edilebilmesidir. Tanım gereği İleriye uyumluluk teknolojisi, eski cihazların, yeni cihazlar tarafından oluşturulan verileri kısmen anlayabilmesini belirtir.Bu kavram elektriksel arayüzlere, iletişim sinyallerine, veri iletişim protokollerine, dosya türlerine ve programlama dillerine uygulanabilir. Eğer eski versiyonun standartları, yeni versiyonun standartlarını okuyabiliyor, görüntüleyebiliyor, oynatabiliyor veya çalıştırabiliyorsa bu versiyon ileriye uyumludur.İleriye uyumluluk ve genişletilebilme benzer olmalarına rağmen, aynı şey değildirler. İleriye uyumlu bir sistem daha ileri bir versiyondan veri alarak "bilinen" kısımlarını işleyebilmektedir. Örneğin, metin tabanlı bir kelime işlemci programı ileri versiyonlarda görüntülenebilen resimleri göz ardı ederek sadece metinleri işleyebilmektedir. Genişletilebilir bir sistem ise, güncellenerek yeni versiyonlara uyum sağlayabilen bir yapıdadır. Buna örnek ise, metin tabanlı kelime işlemcisini güncelleştirerek resimleri gösterebilir hale getirmektir.İleriye uyumlu bir sistemin yeni versiyonda var olan ancak eski versiyonun anlamlandıramadığı verileri ihmal edip, sadece anlamlandırabildiği veriler üzerinde yoğunlaşarak girdileri(input) kabul etmesi beklenir. İleriye uyumluluk, Geriye uyumluluktan gerçekleştirimi çok daha zordur. Çünkü sistemin gelecekteki veri türlerini veya gelecekteki kullanıcı beklentilerini önceden kestirmek mümkün değildir. Geriye uyumlulukta bu sıkıntılar yoktur çünkü bilinen dosya türleri için gerçekleştirimler yapılır.FM stereo iletimi veya renkli televizyonlar ileriye uyumluluğa izin vermektedir. Monofonik FM radyo alıcıları ve siyah-beyaz televizyonlar hala yeni vericilerden sinyal alabilmektedir. Aynı zamanda yeni ileticiler siyah-beyaz veya monofonik sinyalleri alarak geriye uyumluluk da sağlamaktadır.Bir başka örnek de S-VHS de bulunan yüksek çözünürlük içeren görüntüleri ihmal ederek normal görüntüleri gösteren VHSdir.Birçok uygulama yazılım sistemi çok güçlü ve kendine yeten bir sistem mimarisine sahiptir. Daha ileri bir versiyon için girdiler girildiğinde bile yeterince iyi çalışabilmektedirler.Her durumda, uygulama veya işletim sistemi beklenmeyen bir girdi girildiğinde, girdi ile ilgili problemi belirleyen bir çıktı vermektedir.İleriye uyumluluğun bir örneği kelime işlemci uygulamasıdır. Versiyon 1 kelime işlemcisinin sadece metinlere izin verdiğini ve grafiklere izin vermediğini varsayalım. Dosyaları kaydederken sadece yazılan metnin ve metin için yazı tipi, boyutu, rengini kaydetmektedir. Aynı zamanda farz edelim ki dosyanın sonuna [VERSİYON1 SON] işaretini de eklemektedir. Sonraki sene çıkan Versiyon 2 kelime işlemcisi ise grafiklere izin vermektedir. Ancak bu yeni kelime işlemcisi de metin girdilerini içerikleri ile birlikte dosyanın başına kaydedip sonuna [VERSİYON1 SON] işareti koyup, sonra grafik verilerini kaydedip sonuna da [VERSİYON2 SON] işaretini eklemektedir. Bu şekilde ilk versiyon kullanılarak bu dosya okunduğunda kelime işlemci [VERSİYON1 SON] işaretine kadar olan kısmı gösterebilecek, bundan sonra gelen grafik verisini ihmal edecektir. Kelime işlemcisinde video oynatımına izin veren Versiyon 3 çıktığında ise bu program dosyaları şu şekilde kaydedecektir: metin bilgisi [VERSİYON1 SON], grafik bilgisi [VERSİYON2 SON], video bilgisi [VERSİYON3 SON].Yukarıdaki örnek dosya düzeni ileriye uyumluluğa izin verse de, birkaç eklenti ile kullanıcılar için daha kullanışlı hale getirilebilir. Örneğin, daha sonraki bir versiyonda kaydedilmiş bir dosya Versiyon 1'de açılmaya çalışıldığında program bunu kullanıcıya bildirmeli ve içeriğin bazı kısımlarının gösterilemeyeceğini belirtmelidir. Adobe Reader programı daha sonraki bir versiyon olan Adobe Acrobat programında kaydedilmiş olan bir PDF dosyası açılmak istendiğinde bazı özelliklerin kullanılamayacağını belirten bir mesajı kullanıcıya göstermektedir.Başka bir kullanışlı özellik ise Versiyon 1 programın ileriki versiyonlardaki içeriği gösterebilen bir "görüntüleyici" veya "dönüştürücü" indirebilmesi olanağıdır. Yukarıdaki örneğe göre Versiyon 1 internet üzerinden kullanıcıların  grafik ve video verilerini düzenleyip değiştirme olanağı olmasa bile en azından kullanıcılara içeriği gösteren bir eklenti sağlaması gerekir. Bu fonksiyonelliğe örnek Microsoft Word kelime işlemcisi verilebilir. MS Word 2007 kullanılarak oluşturulan bir doküman, daha önceki bir versiyon olan MS Word 2003'te açıldığında Word 2003 kullanıcıya 2007 için bir dönüştürücü indirerek Word 2007 dosyalarını görüntüleyebileceğini söyler. Bu Word 2003'ün Word 2007 ile yaratılan dosyaları okuyabilmesine olanak sağlar. Ancak her halükarda Word 2003, daha gelişmiş bir versiyon olan Word 2007 formatında veri kaydedemeyecektir.İleriye uyumluluğa bir örnek de Portable Network Graphics (PNG) uzantılı dosyalardır. PNG dosyasında veriler "kritik" ve "ikincil öncelikli" olarak çeşitlendirilir. Bu ikincil öncelikli parçalar bu parçaları anlayamayan programlar tarafından ihmal edilir.Rule of Extensibility: Design for the future, because it will be here sooner than you think , in The Art of Unix Programming