Yazılım ürünlerinde ölçülebilen çeşitli kalite türleri vardır, örneğin amaca uygunluk (örn. Son kullanım), sürdürülebilirlik, verimlilik. Bunlardan bazıları biraz öznel veya alana özgüdür (örn. İyi GUI tasarım ilkeleri kültürler arasında farklı olabilir veya kullanım bağlamına bağlı olabilir, askeriye karşı tüketici kullanımını düşünebilir).
İlgilendiğim, türlerin ağı (veya grafiği) ve bunların birbiriyle ilişkili olmasıyla ilgili daha derin bir kalite biçimi, yani her bir türün ne anlama geldiği, uygun bir şekilde ilgili açıkça tanımlanabilir bağlantı bağlantıları kümeleri var mı? katmanlı mimari, ya da tersine büyük bir 'top' tipi referanslar ('monolitik' kod) vardır. Ayrıca, her tür ve / veya yöntemin boyutu (örneğin, Java bayt kodu veya .Net IL miktarıyla ölçülür), daha karmaşık / sürdürülebilir olarak ayrıştırılmak yerine monolitik kod blokları olarak büyük karmaşık algoritmaların nereye uygulandığına dair bazı belirtiler vermelidir. parçaları.
Bu tür fikirlere dayanan bir analiz, kalite için en azından bir vekil olan metrikleri hesaplayabilir. Yüksek ve düşük kalite arasındaki kesin eşik / karar noktaları sübjektif olduğundan şüphelenirim, örneğin sürdürülebilirlik ile insan programcıların sürdürülebilirliğini kastediyoruz ve bu nedenle fonksiyonel ayrışma insan aklının nasıl çalıştığı ile uyumlu olmalıdır. Bu nedenle, olası tüm senaryolarda olası tüm yazılımları aşan, matematiksel olarak saf bir yazılım kalitesi tanımı olup olmadığını merak ediyorum.
Ayrıca, bunun tehlikeli bir fikir olup olmadığını merak ediyorum, eğer kalite için nesnel vekiller popüler hale gelirse, iş baskıları geliştiricilerin bu metrikleri genel kalite pahasına (vekiller tarafından ölçülmeyen kalite yönleri) pahasına takip etmelerine neden olacaktır.
Kaliteyi düşünmenin bir başka yolu entropi açısındandır. Entropi, sistemlerin düzenden düzensiz durumlara dönme eğilimidir. Şimdiye kadar gerçek bir dünyada, orta ila büyük ölçekli yazılım projesinde çalışan herkes, kod tabanının kalitesinin zaman içinde bozulma derecesini takdir edecektir. İş baskıları genellikle yeni işlevselliğe (kalitenin kendisinin, örneğin aviyonik yazılımda ana satış noktası olduğu yerler) odaklanan değişikliklere ve regresyon sorunları ve iyi uymadığı durumlarda 'ayakkabı-horning' işlevselliği ile kalitenin aşınmasına neden olur. kalite ve bakım perspektifi. Peki, yazılımın entropisini ölçebilir miyiz? Ve eğer öyleyse, nasıl?