Yazılım uyumsuzluğu - Software incompatibility

Yazılım uyumsuzluğu , aynı bilgisayarda veya bir bilgisayar ağıyla bağlı farklı bilgisayarlarda birlikte tatmin edici bir şekilde çalışamayan yazılım bileşenlerinin veya sistemlerinin bir özelliğidir . Bunlar, işbirliği içinde veya bağımsız olarak çalışması amaçlanan bileşenler veya sistemler olabilir. Yazılım uyumluluğu , aynı bilgisayarda veya bir bilgisayar ağıyla birbirine bağlı farklı bilgisayarlarda tatmin edici bir şekilde birlikte çalışabilen yazılım bileşenlerinin veya sistemlerinin bir özelliğidir. Bazı yazılım bileşenlerinin veya sistemlerinin bir ortamda uyumlu, diğerinde uyumsuz olması mümkündür.

Örnekler

kilitlenmeler

Formun sıralı programlarını düşünün:

Request resource A
Request resource B
Perform action using A and B
Release resource B
Release resource A

Belirli bir program , dosyayı yazdırmak için bir yazıcı (kaynak A) ve bir dosya (kaynak B) kullanabilir.

Birkaç tür programlar P1, P2, P3 ise ... o zaman, aynı anda ilk kişinin işletmek yürütmek olacak engellemek kaynakları serbest bırakılana kadar başkalarını ve programlar sırayla çalıştırır. Sorun olmayacak. Yürütme sırasını belirleyen kaynakların tahsisi olduğundan, tek işlemcili veya çok işlemcili bir sistemin kullanılması fark etmez .

Bununla birlikte, programcıların genel olarak programları belirli bir şekilde yazmakla sınırlandırılmadığını veya yönergeler olsa bile, bazılarının yönergelerden farklı olabileceğini unutmayın. Önceki programın bir varyantı şunlar olabilir:

Request resource B
Request resource A
Perform action using A and B
Release resource A
Release resource B

A ve B kaynakları önceki örnektekiyle aynıdır – yalnızca kukla değişkenler değil , aksi takdirde programlar aynıdır.

Daha önce olduğu gibi, daha önce olduğu gibi kaynakları kullanarak aynı anda çalışan Q1,Q2,Q3 gibi birkaç program varsa, sorun olmayacaktır.

Ancak, birkaç Ps, birkaç Q ile aynı anda çalışacak şekilde ayarlanırsa, bir kilitlenme durumu ortaya çıkabilir. Kilitlenmenin ortaya çıkması gerekmediğini, ancak olabileceğini unutmayın.

P: Request resource A
Q: Request resource B
Q: Request resource A (blocked by P)
P: Request resource B (blocked by Q)
...

Şimdi ne P ne de Q ilerleyemez 1 .

Bu, programların uyumsuzluk gösterebileceği bir tür örnektir.

Arayüz uyumsuzluğu

Farklı türden başka bir örnek, bir yazılım bileşeninin diğerine hizmet sağlaması olabilir. Uyumsuzluk, hizmet talep eden yazılım bileşeni ile hizmeti sağlayan bileşen arasındaki parametrelerin sıralanmasındaki bir değişiklik kadar basit olabilir . Bu bir tür arayüz uyumsuzluğu olacaktır. Bu bir hata olarak kabul edilebilir , ancak bazı sistemlerde tespit edilmesi çok zor olabilir. Bazı arayüz uyumsuzlukları , özellikle güçlü bir şekilde yazılmış sistemler için , yapım aşamasında kolayca tespit edilebilir , diğerlerini bulmak zor olabilir ve sadece çalışma zamanında tespit edilebilirken, diğerlerini detaylı bir program analizi olmadan tespit etmek neredeyse imkansız olabilir.

Aşağıdaki örneği göz önünde bulundurun:

 Component P calls component Q with parameters x and y. For this example, y may be an integer.
 Q returns f(x) which is desired and never zero, and ignores y.

Bir Q, Q' varyantı, aşağıdaki farklılıklarla benzer davranışa sahiptir:

 if y = 100, then Q' does not terminate.

P, y 100'e ayarlıyken Q'yu asla çağırmazsa, bunun yerine Q' kullanmak uyumlu bir hesaplamadır . Ancak P, y 100'e ayarlı olarak Q'yu çağırırsa, bunun yerine Q' kullanmak, sonu olmayan bir hesaplamaya yol açacaktır.

Ayrıca f(x)'in sayısal bir değeri olduğunu varsayarsak, Q'' bileşeni şu şekilde tanımlanır:

 Q'' behaves as Q except that
 if y = 100 then Q'' does not terminate
 if y = 101 then Q'' returns 0.9 * f(x)
 if y = 102 then Q'' returns a random value
 if y = 103 then Q'' returns 0.

problem davranışa neden olabilir. Eğer P şimdi Q'' ile = 101'i çağırırsa, o zaman hesaplamanın sonuçları yanlış olacaktır, ancak bir program hatasına neden olmayabilir. P, Q'' y = 102 ile çağırırsa, sonuçlar tahmin edilemez ve muhtemelen sıfıra bölme veya aritmetik taşma gibi diğer hatalar nedeniyle başarısızlık ortaya çıkabilir . P, Q'' öğesini y= 103 ile çağırırsa, P'nin sonucu bir bölme işleminde kullanması durumunda, sıfıra bölme hatası meydana gelebilir.

Bu örnek, bir P1 programının nasıl başka bir Q1 ile her zaman uyumlu olabileceğini, ancak başka Q1' ve Q1'' programlarının oluşturulabileceğini, öyle ki P1 ve Q1''in bazen uyumsuz olduğunu ve P1 ve Q1'' her zaman uyumsuz olduğunu göstermektedir.

Performans uyumsuzluğu

Bazen P ve Q programları aynı bilgisayarda çalışabilir ve birinin varlığı diğerinin performansını engeller. Bu, özellikle bilgisayarın sanal bellek kullandığı durumlarda olabilir . Sonuç, disk çökmesi olabilir ve programlardan biri veya her ikisi de performansı önemli ölçüde düşürür. Bu uyumsuzluk biçimi, P ve Q'nun işbirliği yapması amaçlandığında ortaya çıkabilir, ancak P ve Q tamamen ilgisizse, ancak aynı anda çalışıyorsa da ortaya çıkabilir. Örneğin, P, ana bellekte depolanan büyük çıktı dosyaları üreten bir programsa ve Q, sabit diskteki birçok dosyayı tarayan bir virüsten koruma programı olabilir. Sanal bellek için bir bellek önbelleği kullanılıyorsa, iki programın olumsuz etkileşime girmesi mümkündür ve her birinin performansı büyük ölçüde düşer.

Bazı P ve Q programları için performans uyumlulukları, çalıştırıldıkları ortama bağlı olabilir. Sınırlı ana belleğe sahip bir bilgisayarda çalıştırıldıklarında büyük ölçüde uyumsuz olabilirler, ancak bunları daha fazla belleğe sahip bir makinede tatmin edici bir şekilde çalıştırmak mümkün olabilir. Bazı programlar hemen hemen her ortamda performans uyumsuz olabilir.

Ayrıca bakınız

Referanslar

  • CM Krishna, KG Shin, Gerçek Zamanlı Sistemler, McGraw-Hill, 1997