KALİTE YÖNETİMİ

Birçok kuruluşun amacı, ürün veya servislerinde yüksek bir kalite seviyesine ulaşmaktır. Kalitesiz ürünleri dağıtmak ve müşteriye dağıtımı yapıldıktan sonra problem ve hataları tamir etmek kabul edilebilir bir durum değildir. Bu anlamda, yazılım da arabalar, televizyonlar veya bilgisayarlar gibi ürünlerden farklı değildir.

 

Buna rağmen, yazılım kalitesi basit bir yolla tanımlanması mümkün olmayan karmaşık bir kavramdır. Klasik olarak, kalite kavramı, üretilen ürünün belirtimlerini karşılaması gerektiğini ortaya koyar (Crosby, 1979). Gerçek dünyada bu tanım diğer bütün ürünlere uygulanabilir, fakat yazılım sistemleri için bazı sorunlar vardır:

1.       Belirtim, müşterinin istediği ürün özelliklerini karşılayacak şekilde ayarlanmalıdır. Ayrıca, geliştirme kuruluşunun da belirtimde bulunmayan bazı gereksinimleri ( bakım gereksinimleri gibi) olabilir.

2.       Bazı kesin kalite özelliklerinin şüphesiz bir yolla nasıl tanımlanacağı da bilinmemektedir.

3.       Gereksinim mühendisliğini kapsayan 1. Bölüm’de tartıştığım gibi, tamamlanmış yazılım belirtimleri yazmak çok zordur. Bunun için, ürün belirtime uysa bile, kullanıcılar ürünü yüksek kaliteye sahip bir ürün olarak nitelendirmeyebilirler.

 

Belirtimleri geliştirmek için çalışmalar yapılmaktadır; ancak şu an için bunların mükemmel olamayacağını kabul etmek zorundayız. Mevcut belirtimlerdeki problemleri fark etmeli ve mükemmel olmayan belirtimlerden dolayı oluşan kısıtlamaları karşılayacak yordamlar ortaya koyarak kaliteyi artırmalıyız. Bakım yapılabilirlik, taşınabilirlik veya verimlilik gibi yazılım özellikleri açık olarak tanımlanmamış fakat sistemin ulaşacağı kaliteyi etkileyecek önemli kalite özellikleri olabilir.

 

Bir kuruluştaki kalite yöneticilerinin sorumluluğu, ürün kalitesinin istenilen seviyeye ulaşmasının garanti edilmesidir. Prensip olarak kalite yönetimi, yazılım geliştirme sürecinde kullanılacak standart ve yordamlarım tanımlanması ve bütün mühendislerin bunları takip etmelerinin kontrol edilmesidir. Buna rağmen, pratikte kalite yönetiminin bundan daha fazla işi vardır.

 

İyi kalite yöneticileri, ürün geliştirmeden sorumlu herkesin yüksek bir ürün kalitesi seviyesine ulaşmada ortak bir görüşü sahip olacağı bir “kalite kültürü” geliştirmeyi amaçlarlar. Takımları, kendi işlerindeki kalitenin sorumluluğunu üzerlerine almaya ve kalite gelişimi için yeni yaklaşımlar geliştirmeye cesaretlendirirler. Standart ve yordamlar, kalite yönetiminin temelini oluşturmasına rağmen; yazılım kalitesini etkileyen ancak standartlarda bulunamayacak elle tutulamayan kavramların (güzellik, okunabilirlik, vb.) varlığı da deneyimli kalite yöneticileri tarafından fark edilmiştir. Elle tutulamayan bu kavramlarla ilgilenenleri desteklemekte ve bütün takım elemanlarında profesyonel davranışı özendirmektedirler.

 

Yazılım kalite yönetimi üç temel davranış ile yapılandırılabilir:

1.       Kalite Güvence: Yüksek kaliteye sahip yazılıma götürecek kurumsal yordam ve standartlar çatısının ortaya konması.

2.       Kalite Planlama: Bu çatıdan uygun standart ve yordamların seçimi ve bunların özel bir yazılım projesine uyarlanması.

3.       Kalite Kontrol: Proje kalite standart ve yordamlarının yazılım geliştirme takımı tarafından takip edildiğini garanti eden süreçlerin tanımlanması ve belgelenmesi.

 

Kalite yönetimi, yazılım geliştirme süreci üzerinde bağımsız bir kontrol sağlar. Yazılım sürecinin çıktıları kalite yönetim sürecinin girdileridir ve kurumsal standart ve hedeflerle tutarlı olmalarının sağlanması amacıyla kontrol edilirler . Kalite güvence ve kontrol takımı bağımsız olursa süreç üzerinde daha tarafsız bir inceleme yapabilir ve kurum yönetimine problem ve zorlukları raporlayabilir.

Kalite yönetimi ve yazılım geliştirme

 

Kalite yönetimi, proje yönetiminden ayrılmalıdır. Bu şekilde kalite, proje bütçesi ve çizelgesi üzerindeki yönetim sorumluluklarından etkilenmez. Kalite yönetiminden bağımsız bir takım sorumlu olmalı ve proje yöneticisi seviyesinden daha yukarıda bir yönetime rapor sunmalıdır. Kalite yönetimi takımı, herhangi bir geliştirme grubuyla bağlantılı olmamalı, fakat kurum genelinde kalite yönetiminden sorumlu olmalıdır.

 

Bütün endüstrilerdeki kalite yönetim sistemlerinin geliştirilmesinde kullanılabilecek uluslararası standarda ISO 9000 adı verilmektedir. ISO 9000, üretim endüstrilerinden servis endüstrilerine kadar geniş bir kapsamda kullanılabilecek bir standartlar kümesidir. ISO 9001 bu standartların en genelidir ve ürün tasarımı, geliştirme ve bakım yapan kuruluşlardaki kalite süreçleri ile ilgilidir. Diğer bir destekleyici belge (ISO 9000-3) ise ISO 9000’i yazılım geliştirme için yorumlamaktadır. ISO 9000 standardı ile ilgili birçok kitap mevcuttur (Johnson, 1993; Oskarsson ve Glass, 1995; Peach, 1996).

 

ISO 9001 kalite sürecinin genel bir modelidir. Bu sürecin çeşitli yanlarını tarif eder ve bir kuruluşta hangi standart ve yordamların bulunması gerektiğini tanımlar. Endüstriye özel olmadığı için bunlar ayrıntılı tanımlanmamıştır. Belirli bir kuruluşun içinde, uygun kalite süreçleri kümesi tanımlanmalı ve kurumsal bir kalite kılavuzunda belgelenmelidir.


Uymayan ürünlerin kontrolü                                              Tasarım kontrolü

Yönetim, depolama, paketleme ve dağıtım                       Satın alma

Müşteriye teslim edilen ürünler                                         Ürün tanıma ve izlenebilirlik

Süreç kontrolü                                                                        Denetim ve sınama

Denetim ve sınama gereçleri                                                Denetim ve sınama durumu

Anlaşma gözden geçirmesi                                                  Düzeltici eylem

Belge kontrolü                                                                         Kalite kayıtları

İçsel kalite izlemeleri                                                             Eğitim

Bakım yapma                                                                            İstatistiksel teknikler

 

 

ISO 9001 tarafından kapsanan alanları göstermektedir.

 

Bir kuruluştaki kalite güvence yordamları, kalite sürecinin tanımlandığı kalite kılavuzunda belgelenmiştir. Bazı ülkelerde kalite kılavuzunda yer alan kalite süreçlerinin, ISO 9001 ile uyumluluğunu onaylayan kurullar vardır. Buna ek olarak müşteriler üreticinin ISO 9000 belgesine, bu kuruluşun kaliteyi ne kadar ciddiye aldığının bir göstergesi olarak bakmaktadırlar.

 

ISO 9000, kalite kılavuzu ve özel proje kalite planları arasındaki ilişkiler aşağıda görülmektedir.

ISO 9000 ve kalite yönetimi

Kalite Güvence ve Standartlar

Kalite güvence (KG) etkinlikleri yazılım kalitesini başarmak için çatı tanımlar. KG süreci, yazılım geliştirme süreci veya yazılım ürününe uygulanacak standartlar seçmeyi veya tanımlamayı içerir. Bu standartlar geliştirme süresince uygulanacak yordam veya süreçlerin içine gömülmüş olabilir. Süreçler, içine kalite standartları bilgisi gömülü araçlar tarafından desteklenebilir.

 

Kalite güvence sürecinin bir parçası olarak yerleştirilmiş iki tip standart vardır:

1.       Ürün Standartları: Bunlar geliştirilecek yazılım ürününe uygulanacak standartlardır. Üretilebilecek gereksinim belgesinin yapısı gibi belge standartları, bir nesne sınıf tanımlaması için standart yorum başlığı gibi belgeleme standartları ve bir programlama dilinin nasıl kullanılabileceği gibi kodlama standartları bunlara dahildir.

2.       Süreç Standartları: Bunlar yazılım geliştirme süresince takip edilecek süreçleri tanımlayan standartlardır. Belirtim, tasarım ve doğrulama süreçlerinin tanımları ve bu süreçler süresince oluşturulması gereken belgelerin tanımları bunlara dahildir.

 

Ürün ve süreç standartları arasında çok yakın bir ilişki vardır. Ürün standartları yazılım sürecinin çıktılarına uygulanır ve çoğu durumda, süreç standartları, ürün standartlarına uyulmasını garanti eden özel süreç eylemlerini içerirler.

 

Yazılım standartlarının önemli olma nedenine dair birçok sebep vardır:

1.       En iyi, en azından en uygun, çalışmaların koruyuculuğunu sağlarlar. Bu bilgi genelde sadece uzun deneme yanılmalar sonucunda elde edilir. Bir standart oluşturmak geçmişteki hataların tekrarlanmasını engeller. Standartlar kuruluş için değerli bir bilgelik tutarlar.

2.       Kalite güvence sürecinin gerçekleştirilebileceği bir çatı sağlarlar. Standartlar en iyi çalışmaları kapsadığından dolayı, kalite kontrol işlemi standartlara uyulup uyulmadığının kontrolü ile kolayca yapılabilir.

3.       Bir işin bir kişi tarafından başlatılıp başak birisi tarafından devam ettiği durumlarda devamlılığın sağlanmasına yardım ederler. Standartlar kuruluştaki bütün mühendislerin aynı çalışmaları benimsemesini garanti eder. Sonuçta, yeni bir işe başlarken gereken öğrenme çabası azaltılır.

 

Yazılım mühendisliği proje standartları geliştirmek zor ve zaman alıcı bir süreçtir. Amerika Savunma Bakanlığı (USDoD), Amerika Ulusal Standartlar Enstitüsü (ANSI), İngiltere Standartlar Enstitüsü (BSI), NATO ve IEEE gibi ulusal ve uluslar arası kurumlar standartların üretilmesinde aktif görev almaktadırlar. Bunlar genel standartlardır ve bir çok projeye uygulanabilirler. NATO ve diğer savunma kurumları yazılım anlaşmalarında kendi standartlarına uyulmasını isteyebilirler.

 

Yazılım mühendisliği terminolojisi, Ada ve C++ gibi programlama dilleri, grafik semboller sistemi, yazılım gereksinimleri yazma çıkarma için yordamlar, kalite güvence yordamları ve yazılım doğrulama ve geçerleme süreçlerini (IEEE, 1994) kapsayan ulusal ve uluslar arası standartlar geliştirilmiştir.

 

Standartlar geliştiren kalite güvence takımları kurumsal standartları ulusal ve uluslar arası standartlara dayandırırlar. Bu standartları başlangıç noktası olarak kullanırsak kalite güvence takımı bir standartlar elkitabı ortaya çıkarmalıdır. Bu kuruluşa uyan standartları tanımlamalıdır.

Ürün standartları                                              Süreç standartları

 

 

 


Tasarım gözden geçirme formu                                          Tasarım gözden geçirme idaresi

Gereksinimler belge yapısı                                   Belgelerin değişim yönetimime sunumu

Yordam başlık formatı                                                           Versiyon yayınlanma süreci

Java programlama stili                                                           Proje planı onaylama süreci

Proje plan formatı                                                  Değişim kontrol süreci

Değişim istek formu                                                              Sınama kayıtlanma süreci

 

Ürün ve süreç standartları

 

Yazılım mühendisleri, bazen standartları bürokratik ve yazılım geliştirmenin teknik etkinliğine uygunsuz olarak kabul ederler. Bu standartlar sıkıcı form doldurmalar ve iş kayıtlama gerektirdiği zaman gerçekleşir. Çoğu zaman standartların genel gerekliliğinde anlaşılmasına rağmen mühendisler standartların bazı projelerde gerekli olmamalarına iyi nedenler bulmuşlardır.

 

Bu problemleri önlemek için standartları koyan kalite yöneticileri yeterli miktarda kaynağa sahip olmalı ve aşağıdaki adımları izlemelidir.

1.       Ürün standartlarının geliştirilmesinde yazılım mühendisleri görev almalıdır. Bu kişiler standartların geliştirilmesinin arkasındaki nedeni anlamalı ve standartları üstlenmelidir. Standart belgesi sadece uyulacak standardı ortaya koymamalı, ayrıca standardizasyon kararlarının neden alındığını anlatan bir açıklama da kapsamalıdır.

2.       Düzenli olarak değişen teknolojileri yansıtacak standart inceleme ve değişimleri yapılmalıdır. Daha önceleri geliştirilen standartlar bir şirket standartlar elkitabında saklanmaktaydı ve bunları değiştirmekte bir isteksizlik vardı. Bir standartlar elkitabı gereklidir fakat değişen durumlar ve teknoloji ile geliştirilmelidir.

3.       Mümkün olan her yerde standartları destekleyecek yazılım araçları sağlanmalıdır. Birçok şikayetin sebebi uygulanması sırasında zahmetten dolayı büro içindeki standartlardır. Eğer araç desteği varsa, bu standartların geliştirilmesi sırasında  büyük bir ek çalışma gerekmez.

 

Eğer geliştirme takımına uygulanması zor bir süreç yüklenirse, süreç standartları zorluklara sebep olabilir. Böyle standartlar genellikle proje yöneticileri tarafından yorumlanması gereken kılavuzlardır. Bir proje veya proje takımı için uygun olmayan bir çalışma şeklinin emredilmesine hiç gerek yoktur. Her proje yöneticisi süreç standartlarını şartlara göre değiştirebilecek otoriteye sahip olmalıdır. Bununla birlikte, ürün kalitesiyle ilgili ve dağıtım sonrası süreçle ilgili standartlar sadece dikkatli bir gözden geçirilme sonrasında değiştirilmelidir.

 

Proje yöneticisi ve kalite yöneticisi, dikkatli bir kalite planlaması ile uygun olmayan standartların problemlerini engelleyebilirler. Elkitabındaki standartlardan hangilerinin değiştirilmeden kullanılacağına, hangilerinin değiştirilmesi gerektiğine ve hangilerinin görmezlikten gelineceğine karar vermelidirler. Belirli bir proje gereksinimine tepki olarak yeni standartlar geliştirilmek zorunda kalınabilir. Örneğin, daha önceki projelerde kullanılmayan resmi belirtimler için standartlar gerekebilir. Bu yeni standartların proje sırasında geliştirilmesine izin verilmelidir.

 

Belgeleme Standartları

Bir yazılım projesindeki belgeleme standartları özellikle önemlidir, çünkü bunlar bir yazılım ve yazılım sürecinin tanımlanmasının elle tutulabilen tek yoludur. Standardize edilen belgeler karalı bir görünüm, yapı ve kaliteye sahiptir ve bu yüzden okunması ve anlaması kolaydır.

 

Belgeleme standartlarının üç tipi vardır:

1.       Belgeleme süreç standartları: Bu standartlar belge üretiminde takip edilecek süreci tanımlamaktadır.

2.       Belge standartları: Bunlar, belgelerin sunumu ve yapısını yöneten standartlardır.

3.       Belge değiş tokuş standartları: Bu standartlar belgelerin bütün elektronik kopyalarının birbirine uyumlu olmasını garanti eden standartlardır.

 

Süreç standartları belge üretirken kullanılan süreci tanımlar. Bu belge geliştirme de kullanılan yordamları ve belge üretmede kullanılan yazılım araçlarını tanımlamak anlamına gelir. Yüksek kaliteli belgeler üretilmesini garanti edecek kontrol ve ilave yordamları da tanımlanmalıdır.

 

Belge süreç kalite standartları esnek olmalı ve bütün belge tipleri ile başa çıkabilmelidir. Çalışma kağıtları ve küçük notlar için açık bir kalite kontrole gerek yoktur.  Bununla birlikte, bu belgelerin geliştirmede kullanılacak resmi belgeler olması durumunda veya müşterilere dağıtılacaksa resmi bir kalite süreci benimsenmelidir.

Kalite kontrolleri dahil olan bir belge üretim süreci

 

Taslaklama, kontrol, yeniden gözden geçirme ve yeniden taslaklama iteratif bir süreçtir. Kabul edilebilir kalitede bir belge üretilene kadar bu işlem devam eder. Kabul edilebilir kalite belgenin tipine ve belgenin potansiyel okuyucularına bağlıdır.

 

Belge standartları, yazılım geliştirme yolunda üretilen bütün belgelere uygulanmalıdır. Belgelerin tutarlı bir biçim ve görünüşü olmalıdır ve aynı tipteki belgeler tutarlı bir yapıya sahip olmalıdır. Özel projelerin gereksinimleri doğrultusunda belge standartları uyarlanabilmesine rağmen bir kuruluş içinde üretilen belgelerde aynı biçimin kullanılması iyi bir davranıştır.

 

Geliştirilebilecek belge standartlarının bazı örnekleri:

1.       Belge kimlik standartları: Büyük sistem projeleri binlerce belge oluşturabileceğinden dolayı her belge ayrı ayrı tanınmalıdır. Resmi belgeler için bu tanımlayıcı, konfigürasyon yöneticisi tarafından tanımlanan resmi tanımlayıcı olmalıdır. Resmi olmayan belgeler içinse, belge tanımlayıcının biçimi proje yöneticisi tarafından tanımlanabilir.

2.       Belge yapı standartları: Bir yazılım projesi süresince oluşturulacak her belge sınıfı  standart bir yapıya sahip olmalıdır. Yapı standartları, eklenecek bölümleri tanımlamalı ve sayfa numaralama, sayfa başlık ve altbilgisi, bölüm ve altbölüm numaralama ile ilgili kuralları belirlemelidir.

3.       Belge sunum standartları: Belge sunum standartları belgeler için bir içsel biçim tanımlamalı ve belge tutarlılığına katkıda bulunmalıdır.  Belgedeki yazı tipleri ve biçimlerin tanımını, logoların ve şirket adlarının kullanımını, belge yapısını işaret etmek için kullanılan renkleri içerirler.

4.       Belge güncelleme standartları:Eğer bir belge sistemdeki değişiklikleri göstermek için değiştirilirse, belge değişimlerini göstermenin tutarlı bir yolu bulunmalıdır. Yeni belge versiyonunu belirtmek için değişik kapak renkleri kullanılabilir ve değiştirilmiş yada eklenmiş paragrafları göstermek için sayfa kenarında çubuklar kullanılabilir.

 

Belgelerin elektronik kopyalarının değiş tokuşu sırasında belge değiş tokuş standartları önemlidir. Değiş tokuş standartlarının yararı belgelerin elektronik olarak transferinin ve orijinal biçimlerinde tekrar yaratılmasının sağlanmasıdır.

 

Eğer hangi araçların standart olarak kullanılması gerektiği süreç standardında belirtildiğini varsayarsak değiş tokuş standartları bu araçları kullanmada ki kuralları tanımlar. Değiş tokuş standartları yazı tipi ve yazı biçimlerini de yazıcı ve ekran yeterliliklerinin değişmesinden dolayı sınırlandırabilir.

 

Süreç ve Ürün Kalitesi

Kalite yönetimi ile ilgili altta yatan varsayımlardan biri de geliştirme sürecinin kalitesinin ürünün kalitesini doğrudan etkilediğidir. Bu varsayım, ürün kalitesinin kesin olarak üretim sürecine bağlı olduğu üretim sistemlerinden çıkarılmıştır. Aslında daha önceden kabul edilebilir bir süreç kalite seviyesini sağlandığı otomatik kütle üretim sistemlerinde ürün kalitesi doğal olarak gelir.

Rounded Rectangle: Süreci tanımla Rounded Rectangle: Ürünü geliştir Rounded Rectangle: Ürün kalitesinin değerini biç
 


Rounded Rectangle: Süreci standartlaştır Rounded Rectangle: Süreci iyileştir

Süreç tabanlı kalite

 

Süreç kalitesi yazılım geliştirmede çok önemlidir. Bunu nedeni bakım yapılabilirlik gibi yazılım özelliklerini yazılımı uzun süre kullanmadan ölçmenin zor olmasıdır. Kalite iyileştirme, kaliteli ürünleri ayırt etme, bu ürünleri geliştirmekte kullanılan süreçleri inceleme ve daha sonra bu süreçleri geniş bir proje yelpazesine uygulanabilecek şekilde genelleştirmeye odaklanır. Bununla birlikte, yazılım süreci ve yazılım ürün kalitesi arasındaki ilişki karmaşıktır. Süreci değiştirmek her zaman ürün kalitesinde bir ilerlemeye yol açmayabilir.

 

Üretim alanında süreç ve ürün kalitesi arasında açık bir bağlantı vardır, çünkü süreç göreceli olarak daha kolay izlenebilir ve standardize edilebilir. Üretim sistemleri bir kere ayarlandıktan sadece tekrar tekrar yüksek kaliteli ürünler üretmek için kullanılırlar. Yazılım üretilmez, tasarlanır. Yazılım geliştirme mekaniksel sürece göre daha yaratıcı olduğundan dolayı bireysel yetenek ve deneyim önemlidir. Yeni bir uygulanma veya daha erken bir ürün çıkarma ile ilgili piyasa baskısı gibi dış faktörler ürün kalitesini kullanılan sürece bakılmaksızın etkiler.

Bununla birlikte, süreç kalitesinin yazılımın kalitesi üzerinde kesin bir etkisi vardır. Süreç kalite yönetimi şunları gerektirir:

1.       İncelemelerin ne zaman ve nasıl yapılacağının belirtildiği süreç standartları tanımlamak.

2.       Standartlara uyulduğunun garanti edilmesi için geliştirme sürecini izlemek.

3.       Yazılım sürecini proje yönetimine ve yazılımın alıcısına rapor etmek.

 

Süreç tabanlı kalite güvencedeki bir tehlike de önceden tanımlanan sürecin geliştirilecek yazılımla uygun olmamasıdır. Örneğin, süreç kalite standartları bir belirtimin uygulama başlamadan önce tamamlanmış ve onaylanmış olması gerektiğini söyleyebilir. Bununla birlikte, bazı sistemler program uygulanmasını gerektiren prototip oluşturmayı gerektirebilir. Kalite takımı prototip oluşturmanın kalitenin izlenemeyeceğinden dolayı yapılmaması gerektiğini önerebilir. Böyle durumlarda üst yönetim, kalite sürecinin ürün geliştirmeyi engellemekten çok desteklemesini sağlamak amacıyla işe karışmalıdır.

 

Kalite Planlama

Kalite planlama yazılım sürecinin erken bir evresinde başlamalıdır. Kalite planı istenen ürün kalitelerini ortaya koyar. Bunlara nasıl değer biçileceğini de tanımlamalıdır. Bu yüzden yüksek kaliteli yazılımın gerçekte ne anlama geldiğini tanımlar. Böyle bir tanım olmazsa, farklı mühendisler zıt yönlerde çalışabilirler böylece farklı ürün özellikleri eniyilenir. Kalite planlama sürecinin sonucu bir proje kalite planıdır.

 

Kalite planı, yapılacak projeye ve geliştirme sürecine uygun kurumsal standartları seçmelidir. Eğer projede yeni yöntem ve araçlar kullanılıyorsa yeni standartlar tanımlanmak zorunda kalınabilir. Humprey (1989) yazılım mühendisliği üzerine yazdığı klasik kitabında kalite planı için şu taslak yapısını önermiştir:

1.       Ürün başlangıcı Ürünün, sunulacak pazarın ve ürün için kalite beklentilerinin tanımı

2.       Ürün planları Önemli sürüm tarihleri ve ürün sorumlulukları yanında dağıtım ve ürün bakım planları

3.       Süreç tanımlamaları Ürün geliştirme ve yönetimi için kullanılacak geliştirme ve bakım süreçleri

4.       Kalite hedefleri Önemli ürün kalite özelliklerinin de tanımlandığı ürün kalite hedef ve planları

5.       Riskler ve risk yönetimi Ürün kalitesini etkileyebilecek anahtar riskler ve bu riskleri karşılayan eylemler.

 

Kalite planları yazılırken bunların olabildiğince kısa olmasına dikkat edilmelidir. Belge çok uzun olursa mühendisler bunu okumazlar ve bu da bir kalite planı oluşturmanın amacını zedeler.

 

Kalite planlama sürecinde göz önünde bulundurulması gereken birçok olası yazılım kalite özellikleri mevcuttur Genelde bütün bu özelliklerin aynı anda eniyilenmesi mümkün değildir. Önemli kalite özelliklerini seçmek ve bunların nasıl yapılacağının planlanması, kalite planlamanın önemli kısımlarından biridir.

 

Yazılım kalite özellikleri

Emniyet                                    Anlaşılabilirlik                      Taşınabilirlik

Güvenlik                                   Sınanabilirlik                        Kullanılabilirlik

Güvenilirlik                              Uyarlanabilirlik                    Yeniden kullanılabilirlik

Esneklik                                    Modülerlik                              Verimlilik

Sağlamlık                                  Karmaşıklık                           Öğrenebilirlik

 

Kalite planı geliştirilecek ürün için en önemli olan kalite özelliklerini tanımlar. Verimlilik en üstte kabul edilebilir ve diğer etmenlerden bunu sağlamak için fedakarlık edilebilir. Eğer bu planda yer alırsa  geliştirmede çalışan mühendisler bunu sağlamak için işbirliği yapabilirler. Plan ayrıca kalite değerlendirme sürecini de tanımlamalıdır. Bu bir kalitenin, mesela bakım yapılabilirlik, üründe olup olmadığının değerlendirmenin standart bir yoludur.

 

Kalite Kontrol

 

Kalite kontrol, kalite güvence yordam ve standartlarına uyulmasını garanti etmek için yazılım geliştirme sürecinin gözden geçirilmesini gerektirir. Daha önce de tartışıldığı gibi yazılım sürecinin ara ürünleri, kalite kontrol sürecinde daha önceden tanımlanmış proje standartlarına karşı kontrol edilmektedir.

 

Kalite kontrol sürecinin yazılım geliştirme sırasında kullanılması gereken kendi yordam ve rapor kümesi vardır. Bu yordamlar yazılımı geliştiren mühendisler tarafından düzgün ve kolaylıkla anlaşılabilir olmalıdır. 

 

Kalite kontrole iki çeşit tamamlayıcı yaklaşım vardır:

1.       Yazılımı geliştirmek için kullanılan belgeleme ve süreçlerin kalite incelemesi bir grup insan tarafından yapılır. Bu kişiler proje standartlarının izlenmesinin ve yazılım ile belgelerin  standartlara uygunluğunun kontrolünden sorumludur. Standartlardan sapmalar kayıtlanmalı ve proje yönetiminin dikkatine sunulmalıdır.

2.       Üretilen yazılım ve standartların bir program tarafından yapılır ve geliştirme projesine uygulanan standartlarla karşılaştırılırsa buna otomatikleştirilmiş yazılım değerlendirme adı verilir. Otomatikleştirilmiş değerlendirme bazı yazılım özelliklerinin nicel ölçümlerini gerektirir.

 

Kalite Gözden Geçirmeleri

Bir süreç veya ürünün kalitesini geçerlemede en çok kullanılan yöntem gözden geçirmelerdir. Olası problemleri keşfetmek amacıyla bir grup insan, yazılım sürecinin bir kısmını yada tamamını, sistemi veya ilgili belgeleri incelerler. Gözden geçirme hakkındaki yorumlar resmi olarak kayıtlanmalı ve yazara yada keşfedilen problemlerin düzeltilmesinden sorumlu kişiye iletilmelidir.

 

Tasarım veya program denetimleri                                       Gereksinimlerdeki, tasarımlardaki veya koddaki detaylı hataları saptamak. Gözden geçirme, olası hatalardan oluşan bir kontrol listesi aracılığı ile yapılabilir.

Yordam gözden geçirmeleri                                                   Yönetime projenin genel yordam bilgisini sağlamak için. Bu hem süreç hem ürün gözden geçirmesidir ve maliyetler, planlar ve çizelgeler ile ilgilenir.

Kalite gözden geçirmeleri                                                      Ürün bileşenlerinin veya belgelerinin teknik analizlerini yapmak ve belirtim ile bileşen tasarımı, kod veya belgeler arasındaki uyumsuzlukları bulmak ve tanımlı kalite standartlarına uyumun garanti arasına alınması.

 

Gözden geçirme tipleri

 

Gözden geçirme takımının amacı hataları, tutarsızlıkları tespit etmek ve bunları tasarımcı yada belge yazarına bildirmektir. Gözden geçirmeler belge tabanlıdır ancak belirtimler, tasarımlar ve kodlarla sınırlı değildir. Süreç modelleri, sınama planları, konfigürasyon yönetimi yordamları, süreç standartları ve kullanıcı kılavuzları gibi belgelerin hepsi gözden geçirmelidir.

 

Gözden geçirme takımı etkili bir katkı yapacak proje elemanlarını da içermelidir. Örneğin, eğer bir alt sistem tasarımı gözden geçirilecekse ilgili alt sistemin tasarımcıları da gözden geçirme takımına dahil olmalıdır.

 

Gözden geçirme takımı, baş gözden geçiriciler olarak seçilmiş 3-4 kişilik bir çekirdeğe sahip olmalıdır. Bunlardan biri önemli teknik kakarları veren baş tasarımcılardan biri olmalıdır.  Baş gözden geçiriciler diğer proje elemanlarını gözden geçirmeye katılmaları için davet edebilir. Bütün belgeyi incelemekle zorunlu olmayabilirler. Bunu yerine işlerini etkileyen parçalara konsantre olabilirler. Alternatif olarak gözden geçirme takımı belgeyi gözden geçirme için dağıtabilir ve diğer proje elemanlarının yazılı yorumlarını isteyebilir.

Gözden geçirilecek belgeler, gözden geçirmenin yararı için gözden geçiricilere okuyacak ve anlayacak zaman bırakacak şekilde iyi dağıtılmalıdır. Bu ertelemenin geliştirme sürecini uzatabilmesine rağmen, gözden geçirme takımının gözden geçirme başlamadan önce belgeleri iyi anlamamış olması verimsiz bir gözden geçirmeye yol açar.

 

Gözden geçirme tek başına kısa olmalıdır (en fazla iki saat). İncelenecek belgenin yazarı, gözden geçirme takımı ile beraber belgeyi incelemelidir. Bir takım üyesi gözden geçirmeyi yönetmeli, bir diğeri ise alınan bütün gözden geçirme kararlarını resmi olarak kaydetmelidir. Gözden geçirme süresince yöneten kişi bütün yazılı yorumların ele alındığından emin olmalıdır. Gözden geçirme tamamlanması sırasında eylemler kaydedilmeli ve eylemler ile yorumları kayıtlayan formlar tasarımcı ve gözden geçirme yöneticisi tarafından imzalanmalıdır. Bunlar daha sonra resmi proje belgelendirmesinin bir parçası olarak dosyalandırılmalıdır. Eğer sadece küçük problemler keşfedildiyse daha ayrıntılı başka bir incelemeye gerek yoktur. Yönetici istenen değişikliklerin gerçekleştirildiğinden emin olmalıdır. Eğer büyük değişiklikler gerekiyorsa izleyecek bir gözden geçirme ayarlanmalıdır.

 

Yazılım Ölçümü ve Ölçütleri

Yazılım ölçümü, bir yazılım ürünü veya yazılım sürecinin bazı özellikleri için bir sayısal değer çıkarma ile ilgilenir. Bu değerleri, birbirleriyle ve kuruluşta bulunan standartlarla kıyaslayarak yazılımın veya yazılım sürecinin kalitesi hakkında yorumlar çıkarılabilir.Örneğin bir kuruluşun yeni bir yazılım sınama aracı kullanacağını düşünelim. Aracı kullanmaya başlamadan önce belli bir zamandaki yazılım hatalarının sayısı kaydedilir ve araç kullanılmaya başlandıktan sonra süreç tekrarlanır. Eğer aynı zamanda daha fazla hata fark edilmiş ise aracı kullanmanın yazılım doğrulama sürecine kullanışlı bir destek sağladığı söylenebilir.

 

Hewlett-Packard ve AT&T gibi büyük şirketler ölçüt programları kullanmaktadır ve toplanan ölçütleri kalite yönetim süreçlerinde kullanmaktadırlar. İlginin büyük çoğunluğu program hatalarını gösteren ölçütlerin toplanması ile doğrulama ve değerlendirme süreçlerine yöneliktir.

 

Buna rağmen sistematik yazılım ölçüm ve ölçütlerinin kullanımı hala nadirdir. Faydalarının açık olmamasından dolayı ölçümlere geçmekte bir isteksizlik vardır. Bir çok şirketteki sebeplerden biri, kullanılan yazılım süreçlerinin kötü düzenlenmesi ve bu ölçümlerden yararlanılabilecek yeterli olgunluğa ulaşılamamış olmasıdır. Diğer bir neden ise ölçümler için standartlar olmaması ve bu yüzden veri toplama ve analizi için sınırlı destek olmasıdır. Böyle standartlar ve araçlar ulaşılabilir olmadan bir çok şirke ölçümleri kullanmaya hazırlanmayacaktır.

 

Bir yazılım ölçütü, yazılım sistemi, süreci yada ilgili belgeler ile ilgili bir ölçüm tipidir. Bir ürünün kod satırı cinsinden büyüklüğü, yazılı belgenin okunabilirliğinin ölçüsü, dağıtılan bir yazılım ürünündeki rapor edilen hatalar ve bir sistem elemanını geliştirmek için gereken insan-gün oranı, ölçümlere örneklerdir.

 

Ölçütler, kontrol ölçütleri yada tahminleyici ölçütler olabilir. Kontrol ölçütleri genellikle yazılım süreçleri ile; tahminleyici ölçütler ise yazılım ürünleri ile ilgilidir. Kontrol yada süreç ölçütlerinin örnekleri ortalama çaba ve rapor edilmiş hataları düzeltmek için gereken süre olabilir. Tahminleyici ölçütlerin örnekleri ise bir birimin döngü karmaşıklığı, bir programdaki ayraçların ortalama uzunluğu ve bir tasarımdaki nesnelerle ilişkilendirilmiş özellik ve işlemlerin sayısı olabilir.

Tahminleyici ve kontrol ölçütleri

 

Genelde yazılım kalite özelliklerini doğrudan ölçmek imkansızdır. Bakım yapılabilirlik, karmaşıklık ve anlaşılabilirlik gibi özellikler bir çok değişik etkenden etkilenir ve bunlar için doğrudan ölçütler yoktur. Bunu yerine yazılımın baçı içsel özellikleri (büyüklüğü gibi) ölçülmekte ve ölçtüğümüz ile bilmek istediğimiz arasında bir ilişki olduğunu kabul ederiz. İdeal olarak iç ve dış yazılım özellikleri arasında açık ve doğrulanmış bir ilişki olmalıdır.

 

Aşağıdaki şekil ilgilenilebilecek bazı dış kalite özelliklerini ve bu özelliklerle ilişkilendirilebilecek ve ölçülebilir iç özellikleri göstermektedir. Şekil, iç ve dış özellikler arasında bir ilişki olması gerektiğini önermekte fakat bunu ne olduğunu söylememektedir.

 

 

İç ve dış yazılım özelliklerinin ilişkileri

 

Eğer iç özelliğin ölçütü, dış yazılım özelliğine yararlı bir tahminci is, üç koşula dikkat edilmelidir (Kitchenham, 1990):

1.       İç özellik tam olarak ölçülmelidir.

2.       Ölçebildiğimiz ile dış davranış özelliği arasında bir ilişki olmalıdır.

3.       Bu ilişki, anlaşılmış, doğrulanmış ve bir formül veya model olarak ifade edilebilir olmalıdır.

Model formülasyonu, modelin fonksiyonel formunun toplanan verilerin analizi ile tanımlanmasını (doğrusal, üstel, vb.), modele dahil olan parametrelerin tanımlanmasını ve mevcut verinin ince ayarlama gerektirir. Böyle bir model geliştirme istatistiksel tekniklerde belirli bir deneyim gerektirir. Süreç içinde profesyonel bir istatistikçi bulunmalıdır.

 

Ölçüm Süreci

Sistemdeki bileşenlerden her biri ayrı ayrı analiz edilmeli ve ölçütlerin farklı değerleri birbirleriyle ve önceki projelerden toplanan veri ölçümleri ile karşılaştırılmalıdır. Anormal ölçümler, kalite güvence çalışmasındaki kalite problemi bulunan bileşenler üzerine yoğunlaşmak için kullanılabilir.

Ürün ölçüm süreci

 

Bu süreçteki anahtar evreler:

1.       Yapılacak ölçümleri seç: Ölçümün neye cevap vereceği konusundaki sorular formüle edilmelidir ve bu soruları cevaplandırmak için gereken ölçümler tanımlanmalıdır. Bu sorularla doğrudan uyumlu olmayan ölçümlerin toplanması gerekli değildir. Bir sonraki bölümde tartışılacak Basili’nin HSÖ (Hedef-Soru, Ölçüt) paradigması hangi verinin toplanacağına karar vermede kullanmak iyi bir yaklaşımdır.

2.       Değerlendirilecek bileşenleri seç: Bir yazılım sistemindeki bütün bileşenlere ölçütler değerlendirmek gerekli veya istenen bir şey olmayabilir. Bazı durumlarda bileşenleri örnekleyen bir seçimi ölçüm için seçilebilir. Diğerlerinde, neredeyse sabit kullanımda olan çekirdek bileşenleri gibi bileşenler de değerlendirilebilir.

3.       Bileşen karakteristiklerini ölç: Seçilen bileşenler ölçülmeli ve ölçütler hesaplanmalıdır. Bu normalde otomatik bir veri toplama aracı kullanarak bileşen sunumunu (tasarım, kod, vb.) gerektirir.bu özel olarak yazılabilir yada kuruluş tarafından kullanılan CASE araçları arasında bulunabilir.

4.       Anormal ölçümleri ayırt et: Bileşen ölçümleri yapıldıktan sonra bunlar birbirleriyle ve ölçüm veritabanında kayıtlanan önceki ölçümlerle karşılaştırılmalıdır. Her ölçütteki olağandışı yüksek veya alçak değerlere bakılmalıdır. Çünkü bunlar bu bileşenlerde bir problem olduğunu gösterebilir.

5.       Anormal bileşenleri analiz et: Daha önce bazı ölçütlerde anormal değerlere sahip bileşenler ayırt edilmişti. Bu bileşenler, anormal ölçüt değerlerinin bileşenin kalitesini tehdit edip etmediğine karar vermek için incelenmelidir. Karmaşıklıktaki anormal bir ölçüt değeri kötü kaliteli bir bileşen olmayı gerektirmez. Yüksek değer için başka sebepler olabilir ve bu bileşende kalite problemleri olduğu anlamına gelmez.

 

Toplanan veri bir kurumsal kaynak gibi değerlendirilmeli ve bütün projelerin önceki kayıtları da özel bir projede kullanılmıyorsa bile değerlendirilmelidir. Büyük bir ölçüm veritabanı kurulursa projeler arası karşılaştırmalar yapılabilir ve kurumsal ihtiyaçlara göre özel ölçütler geliştirilebilir.

 

Ürün Ölçütleri

Ürün ölçütleri yazılımın karakteristikleri ile ilgilidir. Büyüklük ve dairesel karmaşıklık gibi kolayca ölçülebilen yazılım karakteristiklerinin anlaşılabilirlik ve bakım yapılabilirlik gibi kalite özellikleri ile açık ve evrensel bir ilişkisi yoktur. İlişkiler, geliştirme süreçleri ve teknolojisi, geliştirilecek sistemin tipine bağlı olarak değişir. Ölçümle ilgilenen kuruluşlar  bir geçmiş veritabanı oluşturmalıdır. Bu yazılım ürün özelliklerinin kuruluşun ilgi alanındaki kalitelerle nasıl ilişkili olduğunu keşfetmekte kullanılır.

 

Ürün ölçütleri iki sınıfa ayrılır:

1.       Çalışan bir programdan toplanan ölçümlerdeki hareketli ölçütler.

2.       Tasarım, program veya belgeleme gibi sistem işaretlerinin ölçümlerinden toplanan durağan ölçütler.

 

Farklı tiplerdeki ölçütler farklı kalite özellikleri ile ilgilidir. Hareketli ölçütler bir programın verimlilik ve güvenilirliğini değerlendirmeye yardımcı olurken, durağan ölçütler bir yazılım sisteminin karmaşıklık, anlaşılabilirlik ve bakım yapılabilirliğini değerlendirmeye yardımcı olur.

 

Hareketli ölçütler genellikle yazılım kalite özellikleri ile yakın ilgilidir. Bazı fonksiyonlar için gerekli çalışma zamanını ölçmek ve bir sistemi başlatmak için gerekli zamanı değerlendirmek göreceli olarak kolaydır. Bu doğrudan sistemin verimliliği ile ilgilidir. Ayrıca benzer olarak sistem hata sayıları ve hata tipi kayıtlanabilir ve doğrudan Bölüm 16’da anlatıldığı gibi yazılımın güvenilirliği ile ilgilidir.

 

Diğer taraftan durağan ölçütlerin kalite özellikleri ile doğrudan olmayan bir ilişkisi vardır. Bu ölçütlerin büyük bir bölümü önerilmiş ve bu ölçütler ile sistem karmaşıklığı, anlaşılabilirliği ve bakım yapılabilirliği ile ilişkileri çıkarılmaya ve doğrulanmaya çalışmak için deneyler yapılmıştır. Bunlardan program veya bileşen uzunluğu ve kontrol karmaşıklığı anlaşılabilirlik, sistem karmaşıklığı ve bakım yapılabilirlik ile en uygun tahminleyicilerdir.

Yazılım ölçütü                          Tanım

 
 

Çağrılan/Çağıran                                       Çağrılan diğer bir fonksiyonu (örneğin X) çağıran fonksiyon sayısının ölçümüdür. Çağıran bir X fonksiyonu tarafından çağrılan fonksiyon sayısıdır. Yüksek bir çağrılan değeri X’in tasarımın geri kalanı ile yakın bir birleşmeye sahip olduğunu ve X’teki değişikliklerin büyük etkileri olduğunu gösterir. Yüksek bir çağıran değeri X’in genel karmaşıklığının bileşenleri koordine eden kontrol mantığının karmaşıklığından dolayı yüksek olabileceğini gösterir.

Kod uzunluğu                                            Bu programın büyüklüğünün bir ölçüsüdür. Genel olarak, bir program bileşeninin büyüklüğü bu bileşenin ne kadar çok karmaşık ve hataya eğilimli olduğunu gösterir.

Döngü karmaşıklığı                                   Bu bir programın kontrol karmaşıklığının ölçütüdür. Bu kontrol karmaşıklığı programın anlaşılabilirliği ile ilgili olabilir.

Tanımlayıcıların uzunluğu                       Bu bir programdaki ayrı tanımlayıcıların ortalama uzunluğunun ölçütüdür. Tanımlayıcılar ne kadar uzunsa o kadar anlamlı olurlar ve böylece program daha anlaşılır olur.

Koşullu yuvalanma derinliği                   Bu bir programdaki if cümlelerinin derinliğinin ölçüsüdür. Derin olarak iç içe geçmiş if cümleleri zor anlaşılırdır ve hatalara açıktır.

Sis endeksi                                                Bu dokümanlardaki kelime ve cümlelerin ortalama ölçüsüdür. Sis endeksi ne kadar yüksekse belge o kadar zor anlaşılırdır.

 

Yazılım ürün ölçütleri


Kalıtım ağacı derinliği                                              Bu, altsınıfların üst sınıftaki özellik ve metotlarını içerdiği kalıtım ağacındaki ayrı seviyelerin sayısıdır. Kalıtım ağacı ne kadar derinse tasarım o kadar karmaşık olur ve nesne sınıflarının dallarındaki nesnelerin anlaşılması gerekir.

Metot çağrılan/çağıran                                           Bu daha önce anlatılan çağrılan ve çağıran ile tamamen aynıdır. Buna rağmen, nesne içindeki diğer metotlar arasındaki çağrılar ve dış metotların  çağrıları arasındaki bir ayrım yapmak uygundur.

Sınıf başına ağırlıklı metotlar                                  Bu bir sınıftaki her metottaki karmaşıklığın ağırlıklandırılmasının içerildiği metotların sayısıdır. Bu yüzden, basit bir metot 1 karmaşıklığına sahiptir ve daha büyük ve karmaşık bir metot daha yüksek değer almaktadır. Bu ölçütün değerinin artması nesne sınıfının daha karmaşık olduğunu gösterir. Karmaşık nesnelerin anlaşılması da daha zordur. Bunlar mantıksal olarak yapışık olmayabilirler ve bir kalıtım ağacındaki üstsınıflar etkili olarak yeniden kullanılamaz.

Üstün gelen işlerin sayısı                                        Bunlar bir üstsınıftaki bir altsınıfta üstün gelinmiş işlemlerin sayısıdır. Bu ölçütün yüksek olması kullanılan üstsınıfın altsınıf için uygun bir kök olmayacağını gösterir.

 

Nesne tabanlı ölçütler

Uygun olan ölçütler projeye, kalite yönetim takımının hedefine ve geliştirilecek yazılımın tipine göre değişir. Kuruluşlar, yazılım ölçümlerini kalite yönetim sürecinin bir parçası olarak kullanırken hangi ölçütlerin ihtiyaçlarına uygun olduğunu bulmak zorundadırlar.

 

Ölçümlerin Analizi

Yazılım ve yazılım projeleri hakkında nicel veri toplamada ki problemlerden biri de verinin gerçekte ne anlama geldiğinin anlamaktır. Veriyi yanlış yorumlamak ve yanlış çıkarımlar yapmak kolaydır. Gerçekte ne anlama geldiklerini anlamak için ölçümler dikkatli analiz edilmelidir.

Toplanan verinin nasıl yorumlanabileceğini göstermek için aşağıdaki senaryoyu düşünelim:

Bir yönetici, bir müşteri tarafından yapılan değişiklik istekleri sayılarını izlemek için değişiklik istekleri ve ürün kullanılabilirlik ve uyumluluğu arasındaki ilişki olduğu varsayımını kullanmaya karar veriyor. Değişiklik isteği sayısı arttıkça yazılımın müşteri isteklerine uyumluluğu azalmaktadır.

Değişiklik isteklerini işlemek ve yazılımı değiştirmek pahalıdır. Bu yüzden kuruluş müşteri memnuniyetini artırmak için sürecini değiştirmiştir ve aynı zamanda değişiklik maliyetlerini azaltmıştır. Süreç değişikliklerinin daha iyi süreçlere ve daha az değişiklik isteğine yol açacağı düşünülmüştür.

Süreç değişiklikleri, yazılım tasarım sürecinde  daha çok müşteri katılımı gerektirecek şekilde başlatılmıştır. Bütün ürünlerde deneme testleri yapılmış ve istenen müşteri değişiklikleri dağıtılan ürüne eklenmiştir. Bu değiştirilmiş süreç ile geliştirilen yeni yazılım versiyonları dağıtılmıştır. Bazı durumlarda değişiklik isteği sayısı düşmüş, diğerlerinde artmıştır. Yönetici şaşırmış ve süreç değişikliklerinin ürün kalitesine etkisini değerlendirememiştir.

Böyle bir şeyin neden olduğunu anlamak için değişiklik isteklerinin neden yapıldığını anlamak gereklidir. Bir sebep dağıtılan yazılımın müşterinin yapmasını istediği şeyleri yapmaması. Diğer olasılık ise yazılımın aslında tasarım amaçları içinde yer almayan nedenler için çok iyi ve geniş olarak kullanılması. Programın bir çok kişi tarafından kullanılmasından dolayı daha çok daha çok değişiklik isteği yaratılması doğaldır.

Üçüncü olasılık ise yazılımı geliştiren şirketin müşterilerin değişiklik isteklerine karşılık vermesidir. Bu yüzden müşteriler aldıkları hizmetten memnundurlar. Bir çok değişiklik isteği yaratılırlar çünkü bunların ciddiye alınacağını bilirler. Önerileri büyük olasılıkla yazılımın sonraki versiyonlarında yer alacaktır.

Değişiklik istek sayıları azalabilir çünkü süreç değişiklikleri etkili olmuştur ve yazılımı daha kullanılabilir ve uyumlu hale getirmiştir. Sayı düşebilir çünkü ürün rakip bir ürüne karşı pazar payı kaybetmiştir. Sonuçta daha az ürün kullanıcısı kalmıştır. Değişiklik isteği sayısı artabilir çünkü daha çok kullanıcı vardır, çünkü deneme test süreci kullanıcıları şirketin değişiklik yapmaya istekli olduğuna inandırmıştır.

Değişiklik istek verisini analiz etmek için değişiklik isteği sayısını bilmemiz gerekmez. Değişikliği kimin istediğini, yazılımı nasıl kullanacağını ve isteğin neden yapıldığını bilmemiz gerekir. Ayrıca istek yordamına veya etkisi olabilecek pazar değişiklikleri gibi dış etkenleri bilmeliyiz. Bu bilgi ile süreç değişikliklerinin ürün kalitesini artırmada etkili olup olmayacağını bulmak mümkündür.

Bu, bir ürün veya süreç hakkındaki nicel verinin yorumlanmasının kesin olmayan bir süreç olduğunu gösterir. Ölçülecek süreç ve ürünler ortamlarından ayrılmamıştır ve ortamdaki değişiklikler verinin kıyaslanmasını değersiz yapar.