Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Maltepe Üniversitesi Mühendislik Fakültesi

Benzer bir sunumlar


... konulu sunumlar: "Maltepe Üniversitesi Mühendislik Fakültesi"— Sunum transkripti:

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

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

3 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 Yazılım Kalite Güvencesi

4 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 Yazılım Kalite Güvencesi

5 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 Yazılım Kalite Güvencesi

6 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 Yazılım Kalite Güvencesi

7 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 Yazılım Kalite Güvencesi

8 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 Yazılım Kalite Güvencesi

9 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 Yazılım Kalite Güvencesi

10 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 Yazılım Kalite Güvencesi

11 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. 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. 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 Yazılım Kalite Güvencesi

12 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 Yazılım Kalite Güvencesi

13 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 Yazılım Kalite Güvencesi

14 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 Yazılım Kalite Güvencesi

15 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 Yazılım Kalite Güvencesi

16 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 Yazılım Kalite Güvencesi

17 "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 Yazılım Kalite Güvencesi

18 "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 Yazılım Kalite Güvencesi

19 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 Yazılım Kalite Güvencesi

20 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 Yazılım Kalite Güvencesi

21 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 Yazılım Kalite Güvencesi

22 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 Yazılım Kalite Güvencesi

23 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 Yazılım Kalite Güvencesi

24 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 Yazılım Kalite Güvencesi

25 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 Yazılım Kalite Güvencesi

26 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 Yazılım Kalite Güvencesi

27 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 Yazılım Kalite Güvencesi

28 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 Yazılım Kalite Güvencesi

29 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 Yazılım Kalite Güvencesi

30 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 Yazılım Kalite Güvencesi

31 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 Yazılım Kalite Güvencesi

32 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 Yazılım Kalite Güvencesi

33 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 Yazılım Kalite Güvencesi

34 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 Yazılım Kalite Güvencesi

35 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 Yazılım Kalite Güvencesi

36 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 Yazılım Kalite Güvencesi

37 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 Yazılım Kalite Güvencesi

38 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 Yazılım Kalite Güvencesi

39 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 Yazılım Kalite Güvencesi

40 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 yılında ise son versiyonu yayınlanmıştır. web adresinden bu dokümana erişebilirsiniz. YZM Yazılım Kalite Güvencesi

41 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 Yazılım Kalite Güvencesi

42 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 Yazılım Kalite Güvencesi

43 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 Yazılım Kalite Güvencesi

44 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 Yazılım Kalite Güvencesi

45 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 Yazılım Kalite Güvencesi

46 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 Yazılım Kalite Güvencesi

47 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 Yazılım Kalite Güvencesi

48 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 Yazılım Kalite Güvencesi

49 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 Yazılım Kalite Güvencesi

50 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 Yazılım Kalite Güvencesi

51 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 Yazılım Kalite Güvencesi

52 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 Yazılım Kalite Güvencesi

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

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


"Maltepe Üniversitesi Mühendislik Fakültesi" indir ppt

Benzer bir sunumlar


Google Reklamları