Yazılım kalitesi nasıl korunur?
Yazılım kalitesi, yazılımın hem işlevsel hem de işlevsel olmayan gereksinimlerini karşılayıp karşılamadığını ölçer.
İşlevsel gereksinimler , yazılımın ne yapması gerektiğini tanımlar. Teknik detayları, veri işlemeyi ve işlemeyi, hesaplamaları veya bir uygulamanın neyi başarmayı amaçladığını belirten diğer herhangi bir özel işlevi içerirler.
Yazılım kalitesi, yazılımın hem işlevsel hem de işlevsel olmayan gereksinimlerini karşılayıp karşılamadığını ölçer.
İşlevsel gereksinimler , yazılımın ne yapması gerektiğini tanımlar. Teknik detayları, veri işlemeyi ve işlemeyi, hesaplamaları veya bir uygulamanın neyi başarmayı amaçladığını belirten diğer herhangi bir özel işlevi içerirler.
Kalite özellikleri olarak da bilinen işlevsel olmayan gereksinimler, sistemin nasıl çalışması gerektiğini belirler. İşlevsel olmayan gereksinimler arasında taşınabilirlik, olağanüstü durum kurtarma, güvenlik, gizlilik ve kullanılabilirlik yer alır.
Yazılım testi , yazılımın kaynak kodundaki teknik sorunları algılar ve çözer ve gereksinimlerini karşıladığından emin olmak için ürünün genel kullanılabilirliğini, performansını, güvenliğini ve uyumluluğunu değerlendirir.
Yazılım kalitesinin boyutları aşağıdaki özellikleri içerir:
- Ulaşılabilirlik. Ses tanıma ve ekran büyütücüler gibi uyarlanabilir teknolojilere ihtiyaç duyan bireyler de dahil olmak üzere farklı bir grup insanın yazılımı rahatça kullanabilme derecesi.
- Uyumluluk _ Yazılımın farklı işletim sistemleri, cihazlar ve tarayıcılar gibi çeşitli ortamlarda kullanıma uygunluğu.
- Yeterlik. Yazılımın enerji, kaynak, çaba, zaman veya para israf etmeden iyi performans gösterme yeteneği.
- işlevsellik. Yazılımın belirtilen işlevleri yerine getirme yeteneği.
- Kurulabilirlik. Yazılımın belirli bir ortama kurulabilme yeteneği.
- yerelleştirme _ Bir yazılımın çalışabileceği çeşitli diller, saat dilimleri ve benzeri diğer özellikler.
- Bakım kolaylığı. Özellik eklemek ve geliştirmek, hataları düzeltmek vb. için yazılımın ne kadar kolay değiştirilebileceği.
- Verim. Yazılımın belirli bir yük altında ne kadar hızlı performans gösterdiği.
- taşınabilirlik Yazılımın bir konumdan diğerine kolayca aktarılabilmesi.
- Güvenilirlik. Yazılımın belirli koşullar altında gerekli bir işlevi belirli bir süre boyunca hatasız olarak gerçekleştirebilmesidir.
- ölçeklenebilirlik _ Yazılımın, işleme taleplerindeki değişikliklere yanıt olarak performansı artırma veya azaltma yeteneğinin ölçüsü.
- Güvenlik. Yazılımın yetkisiz erişime, gizliliğin ihlaline, hırsızlığa, veri kaybına, kötü amaçlı yazılımlara vb. karşı koruma yeteneği.
- Test edilebilirlik. Yazılımı test etmek ne kadar kolay.
- Kullanılabilirlik Yazılımı kullanmak ne kadar kolay.
Dağıtıldıktan sonra yazılım kalitesini korumak için geliştiriciler, yazılımı yeni müşteri gereksinimlerini karşılayacak ve müşterilerin tanımladığı sorunları çözecek şekilde sürekli olarak uyarlamalıdır. Bu, sorunları önlemek için işlevselliği geliştirmeyi, hataları düzeltmeyi ve yazılım kodunu ayarlamayı içerir. Bir ürünün piyasada ne kadar süre kalacağı, geliştiricilerin bu bakım gereksinimlerine ayak uydurabilme becerisine bağlıdır.
Bakım gerçekleştirme söz konusu olduğunda , geliştiricilerin yapabileceği dört tür değişiklik vardır:
- Düzeltici. Kullanıcılar genellikle, yazılımın gereksinimlerini karşılamasını engelleyen kodlama hataları ve diğer sorunlar da dahil olmak üzere, geliştiricilerin düzeltmesi gereken hataları belirler ve bildirir.
- Uyarlanabilir. Geliştiriciler, işletim sisteminin yeni bir sürümünün çıkması gibi değişen donanım ve yazılım ortamlarıyla uyumlu olmasını sağlamak için yazılımlarında düzenli olarak değişiklikler yapmalıdır.
- Mükemmel. Bunlar, kullanıcı arayüzünün iyileştirilmesi veya performansı artırmak için yazılım kodunun ayarlanması gibi sistem işlevselliğini geliştiren değişikliklerdir.
- önleyici. Bu değişiklikler, yazılımın başarısız olmasını önlemek için yapılır ve kodun yeniden yapılandırılması ve optimize edilmesi gibi görevleri içerir.
Yazılım lisanslama ve patentler
Bir yazılım lisansı , yazılımın kullanımını ve dağıtımını kısıtlayan yasal olarak bağlayıcı bir belgedir.
Tipik olarak, yazılım lisansları, kullanıcılara telif hakkını ihlal etmeden yazılımın bir veya daha fazla kopyasına sahip olma hakkı sağlar. Lisans, sözleşmeye giren tarafların sorumluluklarını ana hatlarıyla belirtir ve yazılımın nasıl kullanılacağına ilişkin kısıtlamalar getirebilir.
Yazılım lisanslama hüküm ve koşulları genel olarak yazılımın adil kullanımını, sorumluluk sınırlamalarını, garantileri, feragatnameleri ve yazılımın veya kullanımının başkalarının fikri mülkiyet haklarını ihlal etmesi durumunda korumaları içerir.
Lisanslar genellikle, onu oluşturan kuruluşun, grubun veya bireyin mülkiyetinde kalan özel mülk yazılımlar içindir; veya kullanıcıların yazılımı çalıştırabileceği, inceleyebileceği, değiştirebileceği ve dağıtabileceği ücretsiz yazılımlar için. Açık kaynak, yazılımın ortaklaşa geliştirildiği ve kaynak kodunun ücretsiz olarak sunulduğu bir yazılım türüdür. Açık kaynak yazılım lisansları ile kullanıcılar, özgür yazılıma benzer şekilde yazılımı çalıştırabilir, kopyalayabilir, paylaşabilir ve değiştirebilir.
Son yirmi yılda, yazılım satıcıları yazılım lisanslarını tek seferlik satıştan, hizmet olarak yazılım abonelik modeline geçtiler. Yazılım satıcıları, yazılımı bulutta barındırır ve abonelik ücreti ödeyen ve yazılıma internet üzerinden erişen müşterilerin kullanımına sunar.
Telif hakkı başkalarının bir geliştiricinin kodunu kopyalamasını engellese de, bir telif hakkı onların aynı yazılımı kopyalamadan bağımsız olarak geliştirmelerini engelleyemez. Öte yandan bir patent, bir geliştiricinin, yazılımı başka bir kişi bağımsız olarak geliştirmiş olsa bile, bir geliştiricinin bir patentte iddia ettiği yazılımın işlevsel yönlerini başka bir kişinin kullanmasını engellemesini sağlar.
Genel olarak, yazılım ne kadar teknik olursa, patentlenme olasılığı o kadar yüksektir. Örneğin, bir yazılım ürünü, yeni tür bir veri tabanı yapısı oluşturursa veya bir bilgisayarın genel performansını ve işlevini geliştirirse patent alabilir.