Eğitim kapsamında, yazılım kalitesi, yazılım süreç iyileştirme modelleri, test teknikleri ve yardımcı test ve kalite araçları gibi konulara değinilmiştir.
YAZILIM MÜHENDİSLİĞİ etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
YAZILIM MÜHENDİSLİĞİ etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
15 Ağustos 2013 Perşembe
Yazılım Kalitesi ve Test Teknikleri Sunumu
Yıldız Teknik Üniversitesinde aldığım "Yazılım Kalitesi ve Test Teknikleri" dersinde öğrendiklerimi paylaştığım eğitim sunumunu paylaşmak istedim.
Eğitim kapsamında, yazılım kalitesi, yazılım süreç iyileştirme modelleri, test teknikleri ve yardımcı test ve kalite araçları gibi konulara değinilmiştir.
Eğitim kapsamında, yazılım kalitesi, yazılım süreç iyileştirme modelleri, test teknikleri ve yardımcı test ve kalite araçları gibi konulara değinilmiştir.
Etiketler:
Test,
Yazılım Kalitesi,
YAZILIM MÜHENDİSLİĞİ
5 Temmuz 2013 Cuma
İleri Algoritma Analizi Sunumu
Çalıştığım şirkette verdiğim "İleri Algortima Analizi" konulu sunumumu paylaşmak istedim. Sunum kapsamında, karmaşıklık analizi, Greedy Algoritmaları, Dinamik Programlama, Çizge Algoritmaları gibi konulara değinilmiştir.
12 Haziran 2013 Çarşamba
Yazılım Proje Yönetimi Hakkında
Çalıştığım firmada verdiğim Yazılım Proje Yönetimi eğitiminin sunumu:
6 Haziran 2013 Perşembe
Yazılımcının Suçu ne? - Yaşar Safkan
Yaşar Safkan’ın Özgür Yazılım Günleri 2013′teki konuşması
Kaynak: http://www.safkanyazilim.com/yasar-safkanin-ozgur-yazilim-gunleri-2013teki-konusmasi/
İlgili Yazılar:
1-) http://www.teknikodu.com/yazilimcinin-sucu-ne/
2-) http://www.teknikodu.com/yazilimcinin-sucu-ne-buraya-nasil-geldik/
3-) http://www.teknikodu.com/adam-gun-hangi-adam-hangi-gun/
Kaynak: http://www.safkanyazilim.com/yasar-safkanin-ozgur-yazilim-gunleri-2013teki-konusmasi/
İlgili Yazılar:
1-) http://www.teknikodu.com/yazilimcinin-sucu-ne/
2-) http://www.teknikodu.com/yazilimcinin-sucu-ne-buraya-nasil-geldik/
3-) http://www.teknikodu.com/adam-gun-hangi-adam-hangi-gun/
Etiketler:
BİLİŞİM SEKTÖRÜ,
YAZILIM MÜHENDİSLİĞİ,
YAZILIM YÖNETİMİ
6 Ekim 2008 Pazartesi
Yazılım Ölçümü (Software Metric) Nedir?
İnternette gezinirken Portakal Teknoloji'den Bora Bey'in bloguna rastladım. 'Yazılım Ölçümü'yle ile ilgili faydalı bulduğum bir makale yazmış. Kısaca bahsetmek istedim.
Özetlediğim makalenin tamamını buradan okuyabilirsiniz.
Ayrıntılı Bilgi İçin: http://en.wikipedia.org/wiki/Software_metric
Yazılım ölçümü (İng. software metric) bir yazılımın yada yazılım projesinin ölçebildiğimiz herhangi bir özelliği olarak tanımlayabiliriz.
Peki insanlar ne gibi şeyleri ölçmeyi anlamlı bulmuşlar?Böyle bir çok ölçüm üretmek mümkün.
- Yazılan satır sayısı
- Kodun karmaşıklığı (İng. cyclomatic complexity)
- Her bin satır (KLOC) başına düşen hata (bug) sayısı
- Bir hata tespit edildiğinde onu düzeltmenin ne kadar zaman aldığı
- Testler toplam geliştirme zamanının ne kadarını alıyor?
Özetlediğim makalenin tamamını buradan okuyabilirsiniz.
Ayrıntılı Bilgi İçin: http://en.wikipedia.org/wiki/Software_metric
12 Eylül 2008 Cuma
Yeniden Kullanım: Software Reuse
Yeniden kullanım tüm mühendislik dallarında kendine önemli yerler edinmiştir. Bu sayede daha kısa zamanda daha çok üretim yapıp, daha verimli çalışabilmek mümkün olmaktadır. Yazılımın yeniden kullanılabilirliği, YK (Software Reuse), varolan yazılım varlıklarının - kod, gereksinimler, tasarımlar, test durumları vs. - yeni yazılımların üretilmesinde kullanılması olarak tanımlanmaktadır. YK, bir çok faydayı da beraberinde getirmektedir. Bunlar şu şeklide sıralanabilir:
Yazılım mühendisliğindeki tüm güncel yaklaşımlar, YK’nın artırılmasını hedeflemektedir. Yeniden kullanım tarihine baktığımızda, ilk olarak fonksiyonlar bazında yeniden kullanım göze çarpmaktadır. Bu YK’nın en basit tekniğidir. Bu tip YK’da mühendislerin bilgisine bağımlılık fazla olduğundan çok verimlilik sağlanamamaktadır. Bir sonraki YK aşaması kütüphanelerdir. Kütüphaneler, kullanıcılarına bir tür arayüz sunabilmektedirler ve bu sayede YK’da kolaylık sağlarlar. Ancak kütüphanelerin yapılandırılabilirlikleri düşüktür ve kütüphane kullanarak geliştirilen uygulamalar, bu kütüphanelere çok bağımlı kalmaktadırlar. İskeletle (Çatı, Framework), YK konusunda bir adım öndedirler. İskeletlerde, kütüphanelerdekinin aksine kontrolün terse dönmesi kavramı mevcuttur. Kütüphaneler kullanılırken, yazılımcı hakimiyeti elinde tutmaktadır. İskeletlerde ise durum farklıdır. İskeleti kullanan, ondan bir istekte bulunur ve iskelet kendi içinde çesitli mekanizmaları - olaylar (events) - tetikleyerek bu istekleri gerçekleştirir.
Yukarıda bahsettiğimiz üç tip YK da esasen kodun yeniden kullanımıdır. Bu kod nesne yönelimli (object oriented), bileşen yönelimli (component oriented) veya sadece yordamsal (procedural) olabilmektedir. Burada, tahmin edilebileceği gibi yordamsal kod çok alt seviye ve YK adına kullanışsız kalmaktadır. Nesne yönelimli YK, devrim niteliği taşımaktadır. Miras (inheritance) sayesinde çok yoğun YK sağlanabilmektedir.
Şekilde görülen miras ilişkisinde Sınıf2 Sınıf1’in özelliklerine sahip olmaktadır. Bu sayede Sınıf1’in tüm özellikleri Sınıf2 için kullanılabilir olacaktır. Ancak bu yaklaşımın da hataya ve YK’nın
esnekliğine zarar verecek gelişmelere açıklığı vardır. Sınıf1’de yapılan bir değişiklik Sınıf2’ye doğrudan yansıyacağından istenmeyen sonuçlara sebep olabilir. Nesne tabanlı iskeletlerde (Object oriented framework) bu sıkıntıya sıkça rastlanmaktadır ve bu sorun kırılgan miras yapılı sınıf problemi olarak bilinmektedir (Fragile base class problem). İskeletlerin değişen versiyonları ile birlikte iskelete bağımlı uygulamaların çalışmasında ciddi sorunlar olabilmektedir. Nesneye yönelim paradigmasından sonra bileşen yönelimli yaklaşımların literatürde yer edinmesi ile bileşen tabanlı iskeletler ortaya çıkmaya başlamıştır. Bileşen teknolojisi YK için büyük öneme sahiptir. Bileşenler tanımlı arayüzleri, ki bu arayüzler sadece bileşenlerin sağladığı veya sunduğu servisleri tanımlamakla kalmayıp; performans, zamanlama, servis kalitesi (Quality of Service, QoS) gibi farklı gerekleri barındırabilme özelliğine sahiplerdir.
Buradaki en önemli nokta, yeniden kullanım için miras değil bileşim (composition) kullanılmasıdır. Bilindiği üzere miras, derleme zamanında sabitlenmektedir. Ancak bileşim, çalışma zamanında da değiştirilebilir. Bu sayede bileşen tabanlı iskeletler nesne tabanlı iskeletlere göre çok büyük esneklik kazanabilmektedir.
YK’da kod seviyesinden daha yukarıda kavramsal seviyede YK bulunmaktadır. Bu tip YK 1994 yılında GoF (Gang of Four) olarak adlandırılan dört mühendisin yazdığı klasik bir yapıtla dünyaya tanıtılmıştır. Yazılım tasarım kalıpları olarak adlandırılan bu YK yönetimi, bir problem hakkındaki soyut çözüm bilgisini yeniden kullanmayı hedeflemektedir. Tasarım kalıpları tasarımlarda tekrar kullanılabilecek kod bilgisi içermemektedir; ancak tasarımların daha temiz, daha yeniden kullanılabilir olmasını sağlayacak bilgi içeriği barındırmaktadırlar. Tasarım kalıplarının bir üst seviyesinde ise mimari tasarım kalıpları bulunmaktadır ve bunlar büyük sistemlerin genel hatlarını belirleyen kalıplardır. Örneğin alışıldığı üzere iletişim altyapılarını destekleyen yazılımların katmanlı mimariye, derleyici tarzı yazılımların ise borular ve filtreler (pipes and filters) mimarisine sahip olması beklenir.
2000’li yıllardan sonra YK adına en farklı fikir, yazılım ürün hatları kavramı ile gelmiştir. Bu yaklaşım ile yazılımda sadece kod veya mimarinin yeniden kullanılması değil; bunlarla birlikte, gereksinimlerin, bileşenlerin, özelliklerin, test durumlarının da yeniden kullanılması ve yazılım geliştirme süreçlerinin bu yaklaşıma göre modifiye edilmesi öğütlenmektedir. Ürün hattı kavramında esas olan, ortak özellikleri fark edilebilen bir ürün ailesi seçmek ve bu ailenin ortak ve değişken özelliklerini modellemektir. Bu sayede ürün geliştirenlerin önünde ortak referans bir mimari ve bu mimaride değişiklik yaparak yeni ürünler ortaya çıkartma potansiyeline sahip bir değişkenlik modeli bulunmaktadır. Bunun mümkün olabilmesi için bu ailenin hangi alana yayılacağı belirlenmelidir. Alan kapsamının belirlenmesi ürün hattının başarılı sonuç vermesi açısından kritik öneme sahiptir. İnsanların git gite kişiye özel olmalarını bekledikleri, yoğun ürün talepleri her geçen gün artmaktadır. Bu istekleri zamanında ve az maliyetli olarak karşılamak ancak tüm yazılım varlıklarının yeniden kullanabilirliğini savunan yazılım ürün hattı yaklaşımları ile mümkün olabilecektir.
- Artan güvenilirlik: Sürekli test edilen bileşenlerin kullanılması sayesinde yazılımlar hatalardan arınmaktadır.
- Düşük süreç riski: Bilindik bileşenler tekrar kullanıldıkları için, projeler zamanında teslim edilebilmektedir.
- Kaynakların verimli kullanılması: Yeniden kullanılan yazılım varlıkları olduğunda, insanları yeniden kullanma oranı düşmektedir. Bu sayede yetişmiş insan gücü daha verimli ve yaratıcı bir şekilde kullanılabilmektedir.
Yazılım mühendisliğindeki tüm güncel yaklaşımlar, YK’nın artırılmasını hedeflemektedir. Yeniden kullanım tarihine baktığımızda, ilk olarak fonksiyonlar bazında yeniden kullanım göze çarpmaktadır. Bu YK’nın en basit tekniğidir. Bu tip YK’da mühendislerin bilgisine bağımlılık fazla olduğundan çok verimlilik sağlanamamaktadır. Bir sonraki YK aşaması kütüphanelerdir. Kütüphaneler, kullanıcılarına bir tür arayüz sunabilmektedirler ve bu sayede YK’da kolaylık sağlarlar. Ancak kütüphanelerin yapılandırılabilirlikleri düşüktür ve kütüphane kullanarak geliştirilen uygulamalar, bu kütüphanelere çok bağımlı kalmaktadırlar. İskeletle (Çatı, Framework), YK konusunda bir adım öndedirler. İskeletlerde, kütüphanelerdekinin aksine kontrolün terse dönmesi kavramı mevcuttur. Kütüphaneler kullanılırken, yazılımcı hakimiyeti elinde tutmaktadır. İskeletlerde ise durum farklıdır. İskeleti kullanan, ondan bir istekte bulunur ve iskelet kendi içinde çesitli mekanizmaları - olaylar (events) - tetikleyerek bu istekleri gerçekleştirir.
Yukarıda bahsettiğimiz üç tip YK da esasen kodun yeniden kullanımıdır. Bu kod nesne yönelimli (object oriented), bileşen yönelimli (component oriented) veya sadece yordamsal (procedural) olabilmektedir. Burada, tahmin edilebileceği gibi yordamsal kod çok alt seviye ve YK adına kullanışsız kalmaktadır. Nesne yönelimli YK, devrim niteliği taşımaktadır. Miras (inheritance) sayesinde çok yoğun YK sağlanabilmektedir.
Şekilde görülen miras ilişkisinde Sınıf2 Sınıf1’in özelliklerine sahip olmaktadır. Bu sayede Sınıf1’in tüm özellikleri Sınıf2 için kullanılabilir olacaktır. Ancak bu yaklaşımın da hataya ve YK’nın

Buradaki en önemli nokta, yeniden kullanım için miras değil bileşim (composition) kullanılmasıdır. Bilindiği üzere miras, derleme zamanında sabitlenmektedir. Ancak bileşim, çalışma zamanında da değiştirilebilir. Bu sayede bileşen tabanlı iskeletler nesne tabanlı iskeletlere göre çok büyük esneklik kazanabilmektedir.
YK’da kod seviyesinden daha yukarıda kavramsal seviyede YK bulunmaktadır. Bu tip YK 1994 yılında GoF (Gang of Four) olarak adlandırılan dört mühendisin yazdığı klasik bir yapıtla dünyaya tanıtılmıştır. Yazılım tasarım kalıpları olarak adlandırılan bu YK yönetimi, bir problem hakkındaki soyut çözüm bilgisini yeniden kullanmayı hedeflemektedir. Tasarım kalıpları tasarımlarda tekrar kullanılabilecek kod bilgisi içermemektedir; ancak tasarımların daha temiz, daha yeniden kullanılabilir olmasını sağlayacak bilgi içeriği barındırmaktadırlar. Tasarım kalıplarının bir üst seviyesinde ise mimari tasarım kalıpları bulunmaktadır ve bunlar büyük sistemlerin genel hatlarını belirleyen kalıplardır. Örneğin alışıldığı üzere iletişim altyapılarını destekleyen yazılımların katmanlı mimariye, derleyici tarzı yazılımların ise borular ve filtreler (pipes and filters) mimarisine sahip olması beklenir.
2000’li yıllardan sonra YK adına en farklı fikir, yazılım ürün hatları kavramı ile gelmiştir. Bu yaklaşım ile yazılımda sadece kod veya mimarinin yeniden kullanılması değil; bunlarla birlikte, gereksinimlerin, bileşenlerin, özelliklerin, test durumlarının da yeniden kullanılması ve yazılım geliştirme süreçlerinin bu yaklaşıma göre modifiye edilmesi öğütlenmektedir. Ürün hattı kavramında esas olan, ortak özellikleri fark edilebilen bir ürün ailesi seçmek ve bu ailenin ortak ve değişken özelliklerini modellemektir. Bu sayede ürün geliştirenlerin önünde ortak referans bir mimari ve bu mimaride değişiklik yaparak yeni ürünler ortaya çıkartma potansiyeline sahip bir değişkenlik modeli bulunmaktadır. Bunun mümkün olabilmesi için bu ailenin hangi alana yayılacağı belirlenmelidir. Alan kapsamının belirlenmesi ürün hattının başarılı sonuç vermesi açısından kritik öneme sahiptir. İnsanların git gite kişiye özel olmalarını bekledikleri, yoğun ürün talepleri her geçen gün artmaktadır. Bu istekleri zamanında ve az maliyetli olarak karşılamak ancak tüm yazılım varlıklarının yeniden kullanabilirliğini savunan yazılım ürün hattı yaklaşımları ile mümkün olabilecektir.
Yazan: Barış Can Kaşıkçı (E-Bergi ODTÜ)
Kaydol:
Kayıtlar (Atom)