Maltepe Üniversitesi Mühendislik Fakültesi

Slides:



Advertisements
Benzer bir sunumlar
TS EN ISO 9001:2008 KALİTE YÖNETİM SİSTEMİ
Advertisements

Sistem Analizi ve Planlama
Kurumsal Kaynak Planlama ( Enterprise Resource Plannning)
Kalite Kavramı.
KALİTE KONTROL VE STANDARDİZASYON
Proje yönetiminde başarının yeni formülü. Daha başarılı projeler Daha ekonomik çözümler Daha özelleşmiş hizmetler için… Neden ?
ZEYNEP ALPTEKİN GÖLCÜK ASKER HASTANESİ
END3061 SİSTEM ANALİZİ VE MÜHENDİSLİĞİ
Maltepe Üniversitesi Mühendislik Fakültesi
Prof. Dr. M. Erdal GÜZELDEMİR
Sistem Geliştirme Sistemin tanımı. Sistemin Temel özellikleri
Yazılım Proje Yönetimi
ÇANKIRI KARATEKİN ÜNİVERSİTESİ İÇ DENETİM BİRİMİ
 BÜTÜNLEŞME Çevrenin taleplerinin karşılanması için gerekli bölümler arasındaki birliğin kalitesini ifade etmektedir. Bu tanım, bağımsız birimler arasındaki.
TEDARİK ZİNCİRİ YÖNETİMİ
ELEKTRONİK ORTAMDA DENETİME GENEL BAKIŞ Prof. Dr
24 Kalite yönetimi.
AKDENİZ ÜNİVERSİTESİ TOPLAM KALİTE YÖNETİMİ ÜST DÜZEY YÖNETİCİ SEMİNERİ 1-2 MART 2003 ANTALYA.
ISO 9001 standardı Maddelerinin Tanıtımı ve Yorumlanması, Kalite Yönetim Sistemlerinde Dokümantasyon 4. Hafta.
T.C. OKAN ÜNİVERSİTESİ SOSYAL BİLİMLER ENSTİTÜSÜ SAĞLIK YÖNETİMİ YÜKSEKLİSANS 1.PROGRAM SAĞLIK HUKUKU ÖDEVİ-II HAZIRLAYAN Dr Beytullah ŞAHİN AKADEMİK DANIŞMAN.
ÜÇÜNCÜ BÖLÜM İÇ DENETİM VE İÇ KONTROL SİSTEMİ
AKDENİZ ÜNİVERSİTESİ İİBF TOPLAM KALİTE YÖNETİMİ DERS NOTLARI
ISO- 9001:2008 Standardı - 8. Maddenin Tanıtımı ve Yorumlanması, Kalite İyileştirme Araçlarına Bakış 7. Hafta.
END3061 SİSTEM ANALİZİ VE MÜHENDİSLİĞİ
İŞ KALİTESİ ve MALİYET İLİŞKİLERİ
Kalite Yönetim Prensipleri (Devam)
DENEME.
Kalite Nedir? Furkan LEVENTOĞLU.
Kalite Kavramı ve Toplam Kalite Yönetimi - Kalite Yönetim Sistemi ilişkisi 1. Hafta.
PERFORMANS KAVRAMI PERFORMANSIN BOYUTLARI
AYDIN ÇEVRE VE ŞEHİRCİLİK İL MÜDÜRLÜĞÜ
ISO ÇEVRE YÖNETİM SİSTEMİ TEMEL EĞİTİMİ
ISO 9001:2015 KALİTE YÖNETİM SİSTEMİ ŞARTLAR
Maltepe Üniversitesi Mühendislik Fakültesi
Kalite Yönetimi Genel Tanımlar.
KALİTE YÖNETİM SİSTEMİ
YENİKENT AHMET ÇİÇEK TEKNİK VE ENDÜSTRİ MESLEK LİSESİ TOPLAM KALİTE YÖNETİMİ ÜST DÜZEY YÖNETİCİ SEMİNERİ 2010 ANKARA Nihat BÜLBÜL.
(Proje Yönetimi ve Danışmanlık Metodları)
Yenilik ve Yeni Ürün Altunışık-Özdemir-Torlak.
SİSTEM VE YAZILIM Bilgisayar sistemleri donanım, yazılım ve bunları işletmek üzere gerekli işlemlerden oluşur. Yazılım, bilgisayar sistemlerinin bir bileşeni.
YÖNETİM SÜRECİ VE ÖZELLİKLERİ
“Satış ve pazarlamada her şeyi doğru yapmış
KAL İ TE VE VER İ ML İ L İ K. Kaliteli ve daha verimli üretim ancak standardizasyon ve sürekli kaynak iyileştirilmesi (Makina,Teçhizat,İnsan, vb.)ile.
KALİTE GÜVENCESİ VE STANDARTLARI
 Kalite en basit tanımıyla, müşteri isteklerine cevap verebilmektir.
Bilgisayar Mühendisliğindeki Yeri
Yazılım Mühendisliğine Giriş YYurtaY. Ders İçeriği o Yazılım mühendisliğine giriş, o Yazılım mühendisliği ve etik, o Yazılım mühendisli ğ inin önemi ve.
Yazılım Mühendisliği YYurtaY. Ekip çalışması
PAZARLAMA ARAŞTIRMALARI
Sistem Analizi ve Tasarımı
HAZIRLAYAN: YUSUF KÜRŞAT KOCA
KALİTE YÖNETİM SİSTEMİ
ISO 9001:2015 standardı – Maddelerinin Tanıtımı
Tedarik ziNCİRLERİ yÖNETİmi
KAMU KURUMLARINDA SÜREÇ YÖNETİMİ ve
Kalite Kavramı ve Toplam Kalite Yönetimi - Kalite Yönetim Sistemi ilişkisi 1. Hafta.
Kalite Yönetimi Yrd.Doç.Dr. Murat Tanık.
KİTAP: PROF.DR. BÜLENT KOBU
Yazılım Mühendisliği Standartları
ISO 9001:2015 standardı – 8. Maddenin Tanıtımı
TKY UYGULAMASI.
İNSAN KAYNAKLARI YÖNETİMİ
ISO 9001:2015 standardı – Maddelerinin Tanıtımı
Kalite Yönetim Prensipleri (Devam)
Yazılım Bakımı Yazılım Mühendisliği.
6. HAFTA KALİTE MALİYETLERİ.
SELÇUK ÜNİVERSİTESİ REKTÖRLÜK VE BAĞLI BİRİMLERİN KALİTE YOLCULUĞU
Bölüm 14 Stratejik Değerleme ve Kontrol
PERFORMANS KAVRAMI PERFORMANSIN BOYUTLARI
KALİTE GÜVENCESİ VE STANDARTLARI
Sunum transkripti:

Maltepe Üniversitesi Mühendislik Fakültesi YAZILIM KALİTE GÜVENCESİ (SOFTWARE QUALITY ASSURANCE) Yrd. Doç. Dr. Fatih YÜCALAR fatihy@maltepe.edu.tr YZM 410 Maltepe Üniversitesi Mühendislik Fakültesi

YAZILIM KALİTESİ ve GÜVENCESİNE GİRİŞ 1. BÖLÜM YAZILIM KALİTESİ ve GÜVENCESİNE GİRİŞ YZM 410 - Yazılım Kalite Güvencesi

Genel Bakış… Yazılım Nedir? Yazılım Hatası, Kusuru ve Başarısızlığı Yazılım Hata Nedenlerinin Sınıflandırılması Yazılım Kalitesi Nedir? Yazılım Kalitesini Belirleyen Özellikler Yazılımda Kalite Güvencesi ve Amaçları Yazılımda Kalite Sorunları Kalite Sistemi, Yönetimi Kalitenin Maliyeti En İyi Pratikler Yaklaşımı SWEBOK (Software Engineering Body of Knowledge) Bu bölüm kapsamında, Yazılım Kalitesi ve Güvencesi ile ilgili temel kavramları inceleyeceğiz. Bu bağlamda, önce bir çok derste sıkça duyduğunuz temel bir kavram olan yazılım ile ilgili konuları göreceğiz. Yazılım hatası (eror), kusuru (fault) ve başarısızlığı (failure) kavramlarını öğrenip, yazılım hatalarına nelerin neden olduğunu sınıflandıracağız. Ardından dersin ana teması olan yazılım kalitesi kavramından bahsedeceğiz, burada yazılım kalitesini belirleyen özellikler neler, kalite güvencesi nedir?, kalite güvence sistemi nasıl oluşturulur, kalite güvence sisteminin amaçları nelerdir gibi konuları göreceğiz. Daha sonra, Yazılım Projelerinde sıkça karşılaşılan kalite sorularını ve yazılım kalitesinin maliyetini tartışacağız, yazılım kalitesi kavramının ortaya çıkışında rol oynayan en iyi pratikler yaklaşımını ve SWEBOK kavramını inceleyeceğiz. YZM 410 - Yazılım Kalite Güvencesi

Yazılım Nedir? Hem bilgisayar sistemini oluşturan donanım birimlerinin yönetimi, hem de kullanıcı işlemlerini gerçekleştirmek için gerekli olan programlara “yazılım” diyoruz. IEEE yazılımı: “Bir bilgisayar sisteminin işleyişi ile ilgili kodların, prosedürlerin, verilerin ve dokümanların oluşturduğu bütün” olarak tanımlar. Bilgisayar yazılımları genel olarak 2 ana grupta incelenebilir; Sistem Yazılımları (System Software) Uygulama Yazılımları (Application Software) İKİNCİ MADDENİN DEVAMI: Başka bir ifade ile yazılımı, programlama dili komutları ve ifadelerinin oluşturduğu bütün olarak ifade edebiliriz. Yazılım olmaksızın bir bilgisayar sistemi sadece donanımdan ibarettir. Bir bilgisayar sistemi, üzerine işletim sistemi ve onun üzerine de diğer yazılımların yüklenmesi ve çalıştırılmasından sonra gerekli işlevleri yerine getirebilmektedir. Sistem Yazılımları; Bilgisayarda kullanılan giriş-çıkış işlerini düzenlemek için geliştirilmiş ve aynı zamanda bilgisayarın işletilmesini sağlayan yazılımlardır. İşletim sistemleri, derleyiciler (compilers) gibi yazılımlardır. Uygulama Yazılımları; kullanıcıların işlerine çözüm sağlamak için geliştirilmiş yazılımlardır. Örneğin; çek, senet, stok kontrol, bordro, kütüphane kayıtlarını tutan programlar, bankalardaki müşterilerin para hesaplarını tutan programlar vs. gibi yazılımlardır. YZM 410 - Yazılım Kalite Güvencesi

Yazılım – Temel Kavramlar Error: : Programcının kod yazarken yaptığı hata. Fault: Bu error sonucu kod içinde oluşan hata. Failure: Yazılım ürününü çalıştırdığımızda, fault un bir sonucu olarak ürünün gözlenen yanlış davranışına “failure” diyoruz. GİRİŞ: Yazılım başarısızlıklarının temelinde programcılar tarafından yapılan yazılım hataları yatar. Bir hata, bir veya birden çok müşteri gereksiniminin gerçekleştirilmesi sırasında karşılaşılan bir mantıksal hata yada bir veya birden çok kod satırında yapılan bir gramer hatası olabilir. SONUÇ: Yazılım hatası genelde yazılımın yanlış işlemesine neden olabilir. Hata (Error) - Kusur (Fault) – Arıza/Başarısızlığı (Failure) YZM 410 - Yazılım Kalite Güvencesi

Yazılım Hata Nedenlerinin Sınıflandırılması Yazılım geliştirme sürecinin adımlarına uygun olarak, yazılım hata nedenlerini aşağıdaki gibi sınıflandırabiliriz: Gereksinimlerin hatalı tanımlanması, Müşteri-geliştirici arasındaki iletişim başarısızlığı, Yazılım gereksinimlerinden kasıtlı sapmalar, Mantıksal tasarım hataları, Kodlama hataları, Kodlama standartları ve dokümantasyona uymama, Test sürecinin eksiklikleri, Kullanıcı arayüzü ve prosedür hataları, Dokümantasyon hataları. GİRİŞ: Yazılım hataları, yazılımların düşük kalitede olmasına neden olmaktadır. Bunları önlemek için, bu hataların nedenlerini araştırmak önemlidir. Bir yazılım hatası; bir "kod hatası", bir "prosedür hatası", bir "dokümantasyon hatası" veya bir "veri hatası" olabilir. Yazılım hatalarının nedenlerine indiğimizde, genellikle bu hatalar; sistem analistleri, programcılar, yazılımı test edenler, dokümantasyon uzmanları, yöneticiler ve zaman zaman da müşteriler tarafından yapılan hatalar olduğu ortaya çıkmıştır. YZM 410 - Yazılım Kalite Güvencesi

Yazılım Üretiminde Sorunlar 1970lerin sonları ve 1980’lerin başlarında ABD’de yapılan ve yüzlerce büyük yazılım projesini değerlendiren çeşitli araştırma ve anketlere göre: Başarılı sonuçlanan projelerin oranı: % 4 - % 5 Kısmen başarılı projelerin oranı: % 40 - % 45 Tamamen başarısız projelerin oranı: % 50 - % 55 Kısmen başarılı projeler  maliyet artışı, zaman artışı, performans eksikliği veya bazı özelliklerinden taviz verilerek kullanılan projeler. Tamamen başarısız projeler  kullanılamayan, çöpe atılan projeler. YZM 410 - Yazılım Kalite Güvencesi

Yazılım Üretiminde Sorunlar (devam…) 1990’lar boyunca çok yavaş bir düzelme gözlendi. 21. yüzyıl başında, 20 yıl öncesine göre iyileşme var. Ancak sistematik sorunlar halen devam etmektedir. 2001’de, ABD’deki projelerin %53’ü başlangıçtaki tahminlerden %189 oranında sapma gösterdi. Yazılım projelerinin bütçe gerçekleşme performansları iç karartıcı olmaya devam ediyor. BİRİNCİ MADDEDE SÖYLE: 1990’lar boyunca yazılım projelerinde çok yavaş bir düzelme gözlendi. İKİNCİ MADDEDE SÖYLE: 2000’li yılların başından itibaren, yazılım sektöründe 20 yıl öncesine göre iyileşme olduğu gözlenmektedir. Ancak sistematik sorunlar halen devam etmektedir. YZM 410 - Yazılım Kalite Güvencesi

Yazılım Üretiminde Sorunlar (devam…) The Standish Group’un 2000 yılında yapmış olduğu araştırmaya göre yazılım projelerinin; % 90’ında gecikme var. % 50’sinde bütçe aşımı gerçekleşmiş. % 50’sinde müşteri isterleri tam karşılanamamış. % 20’si sonuçlanmadan iptal edilmiş. YZM 410 - Yazılım Kalite Güvencesi

Yazılım Üretiminde Sorunlar (devam…) The Standish Group’un 2004 yılında yapmış olduğu araştırmaya göre yazılım projelerinin; Başarılı oldu (Succeeded – 29%): zamanında, bütçesi içinde, istenenleri sağlayan projeler. Kısmen başarılı (Challenged -53%): süreyi veya bütçeyi aşarak, istenenlerden taviz vererek, ama sonunda kullanıma giren projeler. Tam Başarısız (Failed – 18%): Bitmeden önce iptal edilen, teslim edilemeyen, veya hiç kullanılamayan projeler. Bir yazılım projesinde, zaman ve bütçeyi aşma oranı %15’e kadar hoşgörüyle karşılanmaktadır. YZM 410 - Yazılım Kalite Güvencesi

Gerçek Proje Başarısızlık Örnekleri Yıl Şirket Sonuç (Maliyetler ($)) 2005 Hudson Bay Co. (Kanada) Envanter sistemi ile ilgili problemler, 33.3 milyon $ kayba neden oldu. 2004-05 Inland Revenue (İngiltere) Yazılım hataları, 3.45 milyar $ fazla vergi-kredi ödemesine neden oldu. 2004 Avis Europe PLC (İngiltere) ERP sistemi, 54.5 milyon $ ödendikten sonra iptal edildi. Ford Motor Co. Satın alma sistemi, 400 milyon $’lık dağıtım maliyetine neden olması yüzünden iptal edildi. J Sainsbury PLC (İngiltere) Tedarik-zinciri yönetim sisteminden, 527 milyon $’lık dağıtım maliyeti nedeniyle vazgeçildi. Hewlett-Packard Co. ERP sistemi ile ilgili problemler, 160 milyon $ kayba neden oldu. 2003-04 AT&T Wireless CRM güncelleme problemleri, 100 milyon $ gelir kaybına yol açtı. 2002 McDonald’s Corp. Bilgi-satın alma sistemi, 170 milyon $ ödendikten sonra iptal edildi. Sydney Water Co. (Avustralya) Faturalama sistemi, 33.2 milyon $ ödendikten sonra iptal edildi. CIGNA Corp. CRM sistemi ile ilgili problemler, 445 milyon $ gelir kaybına yol açtı. 2001 Nike Inc. Tedarik-zinciri yönetim sistemi, 100 milyon $ harcama sonrası iptal edildi. Kmart Corp. Tedarik-zinciri yönetim sistemi, 130 milyon $ harcama sonrası iptal edildi. YZM 410 - Yazılım Kalite Güvencesi

Yazılım Projelerindeki Başarısızlık Nedenleri Gerçekçi olmayan ya da açıkça belirtilmemiş proje hedefleri, Gerekli kaynaklar ile ilgili hatalı tahminler, Kötü bir şekilde tanımlanmış sistem gereksinimleri, Proje durumunun kötü raporlanması, Yönetilmeyen riskler, Müşteriler, geliştiriciler ve kullanıcılar arasındaki zayıf iletişim, Olgunlaşmamış teknoloji kullanımı, Proje karmaşıklığının dikkate alınmaması, Özensiz geliştirme uygulamaları, Kötü proje yönetimi, Kurumsal paydaşlara ilişkin siyaset, Ticari baskılar. YZM 410 - Yazılım Kalite Güvencesi

Yazılımda Kalite - Giriş Kalite konusu… Yazılımda kalite güvencesinin önemi; değişen teknolojik farklılıklar, kıtalararası ticaret sınırlamaları, ürün güvenilirliğinde artan riskler, şartname hükümleri, artan maliyetler, BİRİNCİ MADDEDE SÖYLE: Kalite; hız, maliyet ve rekabetin kilit kelimeleri olarak sektörler arası yarışta sürekli öne çıkan öncelikli konulardandır. İKİNCİ MADDEDE SÖYLE: Yazılımda kalite güvencesine büyük önem verilmesinin birçok nedeni vardır. Yazılım sektörü, değişen teknolojik farklılıklar, kıtalararası ticaret sınırlamaları, ürün güvenilirliğinde artan riskler, şartname hükümleri (Askeri projeler, nükleer enerji vb.), artan maliyetler, gibi global birçok olaydan etkilenmektedir. Bu olayların üstesinden gelmek için “Yazılımda Kalite ve Yazılım Kalite Güvencesi” kaçınılmaz konular olarak karşımıza çıkmaktadır. Yazılım sektöründe, kalite ve kalite güvencesi gibi konular ülkemiz için yeni kavramlardır. Yazılımda kalite uygulamaları olan firma sayısı ise parmakla gösterilebilecek kadar az sayıdadır. YZM 410 - Yazılım Kalite Güvencesi

Kalite Kavramı Kalite, “ihtiyaçları karşılayabilme yeteneği” (Edwards Deming, 1968). Kalite, “sıfır hata ile müşteri gereksinimlerinin karşılanması” (Crosby, 1979). Kalite, “ilk seferde doğrusunu yapmaktır” (Price, 1985). Kalite, “amaca uygunluk” (Juran, 1988). Kalite, “tanımı zor, tanıması kolay, ölçülmesi imkansız” (Kitchenham, 1996). GİRİŞ: Bilgisayar tabanlı sistemlerin istendiği gibi çalışabilmesi, kullanıcılara yardım edebilmesi için tüm öğelerin uygun kalitede olması gerekir.   Kalite kavramı, Japonya’nın 1950’li yılların sonundan itibaren sanayi kollarında elde ettikleri önemli başarılar ve hızlı gelişmeler, 1970’li yılların ortalarına doğru batılı ülkeleri önemli ölçüde geride bırakmaları sonucunda sürekli olarak gündemde kalmış ve tüm dünyaya yayılmıştır. Kalite tanımı, geçmişten günümüze kadar bu konuda çalışmalar yapmış kalite uzmanları tarafından çeşitli şekillerde yorumlanmış ve tanımlanmıştır. Buna göre; YZM 410 - Yazılım Kalite Güvencesi

Kalite Kavramı (devam…) Kalite, “ürün ya da hizmeti ekonomik bir yoldan üreten ve tüketici isterlerine cevap veren bir üretim sistemidir” (JIS- Japon Standartları Enstitüsü). Kalite, “tabiatinda var olan özelliklerin gereksinimleri karsilama derecesidir” (ISO 9001:2000). Kalite, “bir ürünün veya hizmetin, belirlenen ihtiyaçları karşılayabilme yeteneğine yönelik özelliklerin bütünüdür.” (IEEE). ÜÇÜNCÜ MADDEDE SÖYLE: Bu tanımlar içerisinde, en genel anlamda kalite kavramını IEEE veriyor. YZM 410 - Yazılım Kalite Güvencesi

Kalite Kavramı (devam…) Bir ürünün kalitesi denildiğinde akla gelecek önemli kalite kriterleri; kullanıcı isterlerine cevap verebilme, hata sayısını en aza indirme, arızaları çabuk giderme, satış sonrası destek, ürün geliştirme sürekliliğini sağlama. BİRİNCİ MADDEDE SÖYLE: Tüm bu kalite kavramlarından da anlaşılacağı üzere bir ürünün kalitesi denildiğinde akla gelecek önemli kalite kriterleri olarak; kullanıcı isterlerine cevap verebilme, hata sayısının en aza indirilmesi, arızalar arası zaman miktarının kısa olması, satış sonrası yapılan destek ve ürün geliştirme sürekliliğinin sağlanması gibi faktörlerin ön plana çıktığını görmekteyiz. YZM 410 - Yazılım Kalite Güvencesi

"Kalite" Mitleri “Kalite soyut bir kavramdır ve ölçülemez.” Kalite, uygunsuzluğun maliyeti (hata maliyeti) ile ölçülebilir. “Bizim işimiz diğerlerinden farklı”, “Daha iyisini yapmanın maliyetini şu an için karşılayamayız.” Kaliteyi bastan sağlamanın (hata önleme) maliyeti, sonradan sağlamaya çalışmanın (hata bulma ve düzeltme) maliyetinden daha azdır. YZM 410 - Yazılım Kalite Güvencesi

"Kalite" Mitleri “Kalite problemlerine en alt kademede çalışanlar sebep olur” En alt kademede çalışanlar, daha üst kademede çalışanlardan daha az hata maliyetine sebep olur. “Kaliteyi, kurumların Kalite Bölümleri başlatır.” Kalite anlayışı üst yönetim seviyesinde başlar ve tüm çalışanlar tarafından benimsenmelidir. YZM 410 - Yazılım Kalite Güvencesi

Kalite Kavramları Kalite kontrol; kalite isteklerini sağlamak için kullanılan uygulama teknikleri ve faaliyetleri, Kalite güvencesi; ürün veya hizmetin kalitesi için, belirlenen istekleri karşılamak maksadıyla yeterli güvenin sağlamasına yönelik planlı ve sistematik faaliyetlerin toplamı, Kalite yönetimi; genel yönetim fonksiyonunun kalite politikasını tespit eden ve uygulayan bölümü, Kalite sistemi; kalite yönetiminin uygulanması için gerekli olan kuruluş yapısı, sorumluluklar, prosedürler, işlemler ve kaynakların oluşturduğu bütün, Kalite kontrol, geliştirilmiş veya üretilmiş bir ürünün kalitesini değerlendirmek için planlanmış faaliyetlerin bir kümesi olarak tanımlanır. Kalite güvencesi’ nin temel amacı ise; geliştirme ve üretim süreçleri/adımları boyunca yapılan çeşitli faaliyetlerle kalite maliyetini en aza indirmektir. Kalite kontrol ve kalite güvence faaliyetleri farklı amaçlara hizmet eder. Kalite kontrol faaliyetleri, kalite güvence faaliyetleri toplamının sadece bir parçasıdır. YZM 410 - Yazılım Kalite Güvencesi

Kalite Kavramları (devam…) Kalite denetimi; kalite ile ilgili faaliyetlerin ve sonuçların, planlanan düzenlemelere uyup uymadığını ve bu düzenlemelerin etkili olarak uygulanıp uygulanmadığını sistematik ve tarafsız olarak incelenmesidir. YZM 410 - Yazılım Kalite Güvencesi

Kalite Nasıl Sağlanır? Geleneksel Anlayış: Hata Ayıklama "Kalite Kontrol" Bir ürün veya hizmetin tanımlanmış gereksinimleri karşılayıp karşılamadığının tespitinde kullanılan teknikler ve uygulanan faaliyetler. Ürün/hizmet üzerinden kaliteyi sağlama anlayışı. Gelişmiş Anlayış: Hata Önleme "Kalite Güvence" Bir ürün veya hizmetin tanımlanmış gereksinimleri karşılanmasını yeterli derecede güvence altına almak için gerekli olan, tüm planlanmış ve sistematik faaliyetler Ürünü/hizmeti oluşturan sistem üzerinden kaliteyi sağlama anlayışı. YZM 410 - Yazılım Kalite Güvencesi

Kaliteli Yazılım Ne Demektir? Kabullenilebilir hata seviyesinde, Gereksinimleri karşılayan, Amaçlanan kullanıma uygun, Zamanında tamamlanmış, Belirlenen bütçe sınırları içinde gerçekleştirilmiş, Standartlara uyumlu, Bakımı sağlanabilen yazılımdır. GİRİŞ: Yazılım mühendisliğinin temel amacı yüksek kaliteli yazılım üretmektir. EN SON SÖYLE: Bu tanımı desteklemek üzere şunu söyleyebiliriz: gereksinimler ya da kullanıcı isterleri kalitenin ölçülmesine temel oluştururlar. Onlardan uzaklaşmak aslında işlevsel kaliteden uzaklaşmak demektir. Belirlenmiş standartlara uyularak geliştirilen yazılım, belirli bir teknik kalite taşır; ancak, işlevsel olarak işini görmeyen yazılım kaliteli olarak kabul edilemez. Yazılım geliştirme standartlarının dışına çıkılması durumunda ise teknik kaliteden ödün verilmiş olur. Yazılımın sahip olması gereken doğruluk, sağlamlık, modülerlik, anlaşılabilirlik, bakım kolaylığı gibi özelliklerin eksikliği, işlevsel olarak çok iyi olan bir yazılımın kalitesinin de eksikliği anlamına gelir. YZM 410 - Yazılım Kalite Güvencesi

Yazılım Kalitesini Belirleyen Özellikler Yazılım kalitesini belirleyen özellikleri 3 ana başlık altında toplayabiliriz; Yazılımın çalışmasına ilişkin özellikler, Yazılımın gelişmesine ilişkin özellikler, Yazılımın uyumluluğuna ilişkin özellikler YZM 410 - Yazılım Kalite Güvencesi

Yazılımın Çalışmasına İlişkin Özellikler Doğruluk (Correctness): Yazılımın öngörülen tüm işlevleri istenilen şekilde, doğru ve yeterli hassaslıkla yerine getirebilmesidir. Güvenilirlik (Reliability): Sistemin işlevlerinde bir kesintiye uğramadan çalışmaya devam edebilme özelliğidir. Verimlilik (Efficiency): Yazılım işlevlerini yerine getirirken sistem donanımı uygun şekilde kullanmalıdır. Korunmuşluk (Immunity): Yazılım, yetkisiz kişilerin yapabilecekleri değişikliklere ve verebilecekleri zararlara karşı sistemi koruma altına alabilmelidir. Kullanılabilirlik (Usability): Üretilen yazılımda kullanıcıların rahatlıkla kullanabilmesi için gerekli kolaylıklar sağlanmalı, özellikle kullanıcı arayüzü düzenli, estetik ve kullanımı kolay olmalıdır. Güvenilirlik: Yazılım sürekli ve hatasız çalışabilmeli, tüm işlevleri doğru yapmalı, hatalı girdilere ve kullanıcı yanlışlıklarına karşı korumalı olmalıdır. Verimlilik: Donanım kaynaklarının etkin ve hızlı kullanılmasını sağlamalıdır. YZM 410 - Yazılım Kalite Güvencesi

Yazılımın Gelişmesine İlişkin Özellikler Bakım Kolaylığı (Maintainability): Başka bir yazılım geliştirici kişi ya da grup tarafından yazılımın bakımının yapılabilmesi için kaynak kodun anlaşılabilir şekilde yazılmış olması, iyi belgelendirilmesi, sorun çözümlemesinin ve testinin kolay olması gerekir. Esneklik (Flexibility): Bir yazılım her zaman için kullanıcı isterlerine göre yeniden uyarlanabilir özelliğe sahip olmalıdır. Sistemde gerekli değişiklikler uygun bir şekilde ve kolayca yapabilmelidir. Sınanabilirlik (Testability): Geliştirici için doğrudan önem taşıyan bu özellik, sistemin veya bir bölümün test edilebilir olma özelliğini açıklar. Esneklik: Sistemde gerekli değişiklikleri uygun bir şekilde ve kolayca yapabilmek, ona yeni işlevler ekleyebilmek için tasarım ve gerçekleştirimin uygun şekilde yapılması gerekir. Sınanabilirlik: Örneğin, isterler belgesi yeteri derecede açık olmayan bir sistemin test edilmesinde problemlerle karşılaşılması kaçınılmaz olacaktır. YZM 410 - Yazılım Kalite Güvencesi

Yazılımın Uyumluluğuna İlişkin Özellikler Taşınabilirlik (Portability): Yazılımın bir yazılım/donanım ortamından diğerine kolay taşınabilir olması özelliğidir. Tekrar kullanılabilirlik (Reusability): Geliştirici açısından giderek büyük önem taşıyan bu özellik, bazı yazılım parçalarının başka sistemlerde ne ölçüde kullanılabilir olduğunu gösterir. Uyumluluk (Congeniality): Bir yazılım ürünü daha önce üretilmiş olan veya beraber çalışan diğer ürünlerle tam uyumlu olmalıdır. Birbiriyle etkileşen sistemler ortak özelliklere sahip olarak yaratılmalıdır. Taşınabilirlik: Bu özellik kullanıcı için önemliyse, isterler belgesinde ayrıntılı olarak yer almalıdır. Uyumluluk: Bunun için dosya biçimleri, veri yapıları, kullanıcı arayüzleri üzerinde belirli bir standart oluşturulmalı, tüm yazılımlar bunlara uygun olarak tasarlanıp geliştirilmelidir. YZM 410 - Yazılım Kalite Güvencesi

Yazılım Kalite Güvencesi Yazılım yaşam döngüsünün tüm süreçlerinde, zaman, hizmet veya ürünün tanımlı teknik şartlara ve gereksinimlere uygunluğunu, yeterli güvencede sağlamaya yönelik uygulanması gereken planlı ve sistematik faaliyetlerin toplamına “yazılım kalite güvencesi” denir. KISACA: Yazılım yaşam döngüsü ürünleri ve süreçlerinin, belirlenen gereksinimlere ve planlara uygunluğunu sağlama sürecine “yazılım kalite güvence süreci” diyebiliriz. Yazılım Kalite Güvencesi;  yazılım geliştirme süresinin her adımında uygulanan bir dizi şemsiye etkinliktir. EN SON SÖYLE: Yazılım Mühendisliğinde kalite güvencesi konusunda yapılan bir çok yayında kalitenin tanımı yapılırken, ‘ürünün amaca uygunluğu’ olgusu ön plana çıkmaktadır. YZM 410 - Yazılım Kalite Güvencesi

Yazılım Kalite Güvencesinin Amaçları Yazılım geliştirme sürecini kontrol ederek yazılım kalitesinde ilerleme sağlamak, Yazılım süreci için geliştirilmiş tüm standart ve yöntemlere uyum sağladığının güvencesini vermek, Üründe, süreçte veya standartlardaki herhangi bir yetersizlik durumunda yönetimin dikkatini çekmek, böylece bu yetersizliklerin düzeltilmesini sağlamak. GİRİŞ: Her yazılım geliştirici grup, kurum yada firma kaliteyi arttırmaya ve korumaya yönelik bir takım düzenler kurmaktadır. Her türlü düzenin en alt seviyesinde, mühendislik işlerini yürüten bireyin kalite anlayışı; en üst seviyesinde ise, kaliteli yazılım geliştirebilmek üzere standartları koyan, yöntemleri belirleyen ve uygulanmasını sağlayan yazılım kalite güvence ekibi bulunmaktadır. EN SON SÖYLE: Yazılım kalite güvence organizasyonu kaliteli ürünler çıkarmaktan sorumlu değildir, bunlar geliştirmeyi yapanların işidir. Yazılım kalite güvencesinin sorumluluğu kalite faaliyetlerini denetlemek ve sapmalardan yönetimi haberdar etmektir. YZM 410 - Yazılım Kalite Güvencesi

Yazılımda Kalite Sorunları Kalite özelliklerinden hangilerinin hangi durumda daha öncelikli olacağı, piyasada sürekli artan rekabet koşullarında yazılım üreticisi firmaların ayakta kalabilmeleri için kalite uğruna kısa vadeli kârlarından fedakarlık ederek uzun vadeli yatırımlar yapmak zorunda kalmaları, hızla değişen teknolojiye uyum, bu sonu gelmez çabaların personel motivasyonu üzerindeki psikolojik baskısı gibi faktörler yazılımda kaliteye ulaşmada karşılaşılan sorunların birkaçıdır. GİRİŞ: Kaliteli yazılımlar, kabul edilebilir düzeyde hatasız, planlanan bütçe ile zamanında bitirilip dağıtılabilen, gereksinimleri veya beklentileri karşılayabilen ve sürdürülebilir özelliklere sahip yazılımlardır. Yazılım kalitesini tanımlamış olmak, hemen yazılımda kalite sorunlarının neler olabileceği konusunda ipuçları verir. Her gün birçok yeniliğin meydana geldiği günümüzde, kullanıcıların artan isteklerini karşılamak zorlaşmakta ve hangi isteklerin daha öncelikli olacağı sorunu devam etmektedir, örneğin hız ve güvenilirlik çoğu zaman çatışan özelliklerdir. YZM 410 - Yazılım Kalite Güvencesi

Yazılımda Kalite Neden Gerekli? Tecrübeli bir mühendis her 7-10 satırda bir hata üretmektedir. Orta ölçekli bir projede binlerce satıra karşılık gelir. Hataların çoğunun test aşamasında düzeltilmesi gerekmektedir. Testler uzadıkça maliyet artmakta, teslimat gecikmekte, ürün kalitesi düşmekte ve bakım maliyeti geliştirme maliyetini aşmaktadır. YZM 410 - Yazılım Kalite Güvencesi

Kalite Sistemi Kalite sisteminin içersinde mutlaka bir kalite kılavuzu bulunmalıdır. Kalite kılavuzunda, aşağıdaki kavramlar yer alır; standartlar (standarts), yöntemler (procedures), kurallar (guidelines). Kalite kılavuzunun içersinde yer alan bu kavramlar, yazılım geliştirme sürecinin tüm faaliyetlerini bir disiplin içine sokmaktadır. Kalite kılavuzunun önemli bir özelliği, bir projeye uygulanabilecek bir dizi kalite faktörünü içermesidir. Bir kalite sistemi proje yöneticisine, kullanabileceği kalite kontrollerinin neler olduğunu eksiksiz anlatmalıdır. Bu kontroller standartlar, yöntemler ve sistem dokümantasyonuyla ilgilidir. YZM 410 - Yazılım Kalite Güvencesi

Kalite Yönetimi Yazılım kalite güvencesi, süreç geliştirme, standartların kullanımı ve uygunluğu, gereksinimlerin yönetimi, test etme ve değerlendirme, doğrulama, güvenilirlik, sürdürülebilirlik, süreçlerin izlenmesi ve denetimleri ile ilişki içindedir. Bu ilişkinin sağlanması ve sürdürülmesi, organizasyonun her kademesinde özen ve dikkat gerektiren bir Kalite Yönetimi ile mümkündür. Yazılım kalitesinin geliştirilmesi süresince yönetimin tam desteği alınmış olmalıdır. Yönetim başta olmak üzere organizasyonun tüm birimlerinde kalitenin geliştirilmesi bir kültür olarak benimsenmeli ve sürekli iyileştirme çalışmaları yönetimin tüm bireylerinin desteği alınarak devam ettirilmelidir. YZM 410 - Yazılım Kalite Güvencesi

Kalitenin Maliyeti Yazılım ürünü üzerindeki kalite maliyetini düşük seviyede tutabilmek için aşama aşama bazı kontrollerin yapılması gereklidir. Bu kontrol aşamaları ve her aşamada yapılması gerekli olan faaliyetler şunlardır: Önlem : Planlama, eğitim, süreç iyileştirme faaliyetleri, Denetleme/değerlendirme : tasarım ve kod kontrolü, testler, vb., Hata düzeltme (iç): kod düzeltme, tekrar test, iç denetleme, Hata düzeltme (dış): müşteri garantisi, alanda destek, vb., GİRİŞ: Bir ürün veya hizmetin; müşteri istekleri doğrultusunda ekonomik bir şekilde üretilmesi, pazardaki rekabet ortamına ayak uydurabilmesi, tüketici ihtiyaçlarını karşılayabilmesi için gerekli olan kalitenin bir ürün üzerinde ilk başta bir maliyet getireceği bir gerçektir. Hata düzeltme (iç): Firma içinde bulunan hataların düzeltilmesi. Hata düzeltme (dış): Müşteri tarafından bulunan hataların düzeltilmesi. YZM 410 - Yazılım Kalite Güvencesi

Kalitenin Maliyeti (devam…) Aşamalar arasında optimum denge önemlidir. Ancak; Hatanın maliyeti iş ilerledikçe artar. Genelde bir hatayı oluşmadan önlemek en ucuz yoldur. GİRİŞ: Bir önceki slaytta gördüğümüz üzere maliyet kalemleri, hem hata önlemeye ve hem de hata düzeltmeye yöneliktir. Gerek kullanıcı ihtiyaçları arasında, gerek ihtiyaçlarla maliyet kalemleri arasında optimum bir denge sağlamak önemlidir. Hatanın maliyeti giderek artacağından genelde bir hatayı oluşmadan önlemek en ekonomik yoldur. YZM 410 - Yazılım Kalite Güvencesi

Kalitenin Maliyeti (devam…) Yazılım ürünleri, diğer ürünlerden farklı bir kalite anlayışına sahiptir. Piyasaya bile bile hatalı bir yazılım sürülebilir; Pazara çıkış zamanını azaltmak için, Başka nedenlerle (söz verilmiş, rekabet için vb.) Yazılımda kaliteyi fiziksel ölçmenin zorlukları var. Sanal bir ürün olması, Karmaşıklığı. YZM 410 - Yazılım Kalite Güvencesi

En İyi Pratikler Yaklaşımı Yazılımda kalite ilkeleri, geçmişteki tecrübelerden oluşan en iyi pratiklerle (Best Practices, BP’s) ortaya çıkmıştır. En iyi pratikler birer rehberdir, mutlak koşul değildir. Ancak kabul görmüş kalite modellerinin temellerini en iyi pratikler oluşturmaktadır. YZM 410 - Yazılım Kalite Güvencesi

En İyi Pratikler Yaklaşımı (devam…) En iyi pratikler şu şekilde verilebilir; Erken tanı, erken çözüm maliyeti düşürür. Ürün değil, süreç önemlidir. Süreç iyileştirilmelidir. Sürekli iyileşme, gelişme yolu açık olmalıdır. Standartlar ve ölçütler kullanılmalı. (ölç, referanslı çalış) Müşteri tatmin araştırması yap. Kaliteli yazılım üretenler bu işi nasıl yapıyor? YZM 410 - Yazılım Kalite Güvencesi

En İyi Pratikler Yaklaşımı (devam…) Proje kestirim araçları kullan. Süreçlerini iyi belgele. Metodoloji kullan ve iyi belgele. Kritik tasarım değerlendirmesi (CDR) yap. Kod denetlemesi (walkthrough, inspection) yap. YZM 410 - Yazılım Kalite Güvencesi

En İyi Pratikler Yaklaşımı (devam…) Konfigürasyon yönetimi aracı kullan. Hataları ve güvenilirliği ölç, kaydet, analiz yap, Tahmin modelleri kullan. Temel nedenlere (root cause) in. Proje sonrası değerlendirme yap. YZM 410 - Yazılım Kalite Güvencesi

SWEBOK (Software Engineering Body of Knowledge) SWEBOK, IEEE Computer Society çatısı altında uluslararası uzman bir grubun, yazılım mühendisliği bilgilerini toplama ve sınıflandırma girişiminin ürünüdür. 2001’de ilk versiyon (deneme), 2004 yılında ikinci versiyon, 2010 yılında son versiyon. SWEBOK, IEEE Bilgisayar Topluluğu çatısı altında bir araya getirilen uluslararası uzman bir grubun, yazılım mühendisliği bilgilerini toplama ve sınıflandırma girişiminin ürünü olarak yayınlanmış bir dokümandır. Bu dokümanın ilk versiyonu, çalışmaların ilk aşamasının tamamlanmasıyla, 2001 yılında hazırlanmıştır. 2004 yılında ise son versiyonu yayınlanmıştır. www.swebok.org web adresinden bu dokümana erişebilirsiniz. YZM 410 - Yazılım Kalite Güvencesi

SWEBOK (devam…) Software Engineering tanımı: “Yazılım geliştirme, işletme ve bakımı için, sistematik, disiplinli, nicel mühendislik yaklaşımlarıdır.” Bir konunun “mühendislik” olarak tanınması için o konuda çalışan uzmanların üstünde görüş birliği oluşturduğu bir bilgi topluluğuna ihtiyaç vardır. SWEBOK çalışması bu boşluğu doldurma amacıyla yapılmıştır. YZM 410 - Yazılım Kalite Güvencesi

SWEBOK (devam…) Yazılım Mühendisliği, 10 temel bilgi alanına (Knowledge Area veya KA) ayrılır: İsterler (Software Requirements) Tasarım (Software Design) İnşa, kodlama, programlama (Software Construction) Sınama (Software Testing) Bakım (Software Maintenance) Konfigürasyon Yönetimi (Software Configuration Management) Mühendislik Yönetimi (Software Enginering Management) Süreçler (Software Process) Araç ve Metotlar (Software Tools and Methods) Kalite (Software Quality) SWEBOK dokümanı içinde Yazılım Mühendisliği 10 temel bilgi alanına ayrılır. YZM 410 - Yazılım Kalite Güvencesi

SWEBOK (devam…) İlgili Alanlar: Bilgisayar Mühendisliği Bilgisayar Bilimleri Matematik Yönetim Bilimi Kalite Yönetimi Proje Yönetimi Yazılım Ergonomisi (HCI) Sistem Mühendisliği YZM 410 - Yazılım Kalite Güvencesi

KA 1: Yazılım İsterleri İster: Yazılımın yerine getirmesi gereken özellik. İsterler Mühendisliği Süreci (Requirements Engineering Process), İsterlerin Toplanması (Requirements Elicitation), Analiz (Analysis), Belirtim (Specification), Sağlama (Validation), İsterlerin Yönetimi (Requirements Management). İsterler Mühendisliği Süreci: Süreç tanımı, süreç modelleri, süreç aktörleri, süreç desteği, süreç kalitesi, süreç geliştirilmesi. İsterlerin Toplanması: Kaynaklar ve ister toplama teknikleri. Analiz: İsterlerin sınıflandırılması, tutarsızlıkların giderilmesi, önceliklerin belirlenmesi. Belirtim: İsterleri tanımlama belgesi, yazılım belirtim belgesi. Sağlama: Gözden geçirme, müşteri onayı, kabul testleri. İsterlerin Yönetimi: Değişikliklerin yönetimi, izlenebilirlik. YZM 410 - Yazılım Kalite Güvencesi

KA 2: Yazılım Tasarımı Tasarım: Mimari yapı, modüller, arayüzler ve diğer özellikleri tanımlama; ortaya çıkan ürün. Yazılım Tasarımı Temel Kavramlar (Basic Concepts), Yazılım Tasarımında Anahtar Sorunlar (Key Issues), Yazılım Yapısı ve Mimarisi, Yazılım Kalitesi Değerlendirme, Yazılım Tasarım Gösterimleri (Notations), Yazılım Tasarım Stratejileri ve Metotları. YZM 410 - Yazılım Kalite Güvencesi

KA 3: Yazılım İnşası Çalışan, iş gören anlamlı bir yazılımın yaratılması (program yazma, var olan modülleri birleştirme, başka programları modifiye etme vb.) amaçlanır. Karmaşıklığın Azaltılması (Reduction of Complexity), Çeşitlilik Beklentisi (Anticipation of Diversity), Sağlama için Yapılandırma (Structuring for Validation), Dış Standartların Kullanımı. YZM 410 - Yazılım Kalite Güvencesi

KA 4: Yazılım Sınama Programın tanımlanmış kontrollü verilerle istendiği gibi çalıştığının dinamik olarak doğrulanması amaçlanır. Temeller, Düzeyler (Levels), Teknikler, Ölçütler (Measures), Pratik Noktalar. 'Yazılım testi', bir sistem veya uygulamanın denetlenebilir koşullar altında çalıştırılması veya işletilmesi ve elde edilen sonuçların değerlendirilmesidir. YZM 410 - Yazılım Kalite Güvencesi

KA 5: Yazılım Bakım Yazılımın işletmede, çalışır durumda tutulması ve yeni durumlara uyarlanmasıdır. Temeller, Anahtar Konular, Süreç, Bakım Teknikleri. YZM 410 - Yazılım Kalite Güvencesi

KA 6: Konfigürasyon Yönetimi Yazılım yapısının (konfigürasyon) her durumda tam bilinmesi, değişikliklerin kontrollü yapılması, yazılımın bütünlüğünün daima korunması amaçlanır. Sürecin Yönetimi, Nesne Belirleme (Item Identification), Değişiklik Kontrolü, Statü Hesap/Raporlama (Accounting), Denetleme (Auditing), Sürüm (versiyon) Kontrolü. YZM 410 - Yazılım Kalite Güvencesi

KA 7: Mühendislik Yönetimi İşin mühendislik (proje) yönetimi, ölçümler vb. Başlatma ve Kapsam Tanımlama (Initiation & Scope), Proje Planlama, Proje Yürütme, Gözden Geçirme ve Değerlendirme, Sonuçlandırma (Closure), Ölçütler (Measures), YZM 410 - Yazılım Kalite Güvencesi

KA 8: Mühendislik Süreci Yazılı süreçlerinin tanımlanması, uygulanması, ölçümü, değerlendirmesi, yönetimi ve iyileştirilmesi amaçlanır. Süreç Tanımı, Süreç Değerlendirmesi, Süreç ve Ürün Ölçütleri. YZM 410 - Yazılım Kalite Güvencesi

KA 9: Araçlar ve Metotlar Yazılım mühendisliğinde kullanılan araçlar ve metotlar. Araçlar (Her KA için), Metotlar; Sezgisel (Heuristic), Biçimsel (Formal), Prototipleme. YZM 410 - Yazılım Kalite Güvencesi

KA 10: Kalite İşin mühendislik (proje) yönetimi, ölçütler vb. Temeller, Yönetim, Pratik noktalar. YZM 410 - Yazılım Kalite Güvencesi

SWEBOK Ödevi… YZM 410 - Yazılım Kalite Güvencesi