YAZILIM PROJELERNDE BYKLK TAHMN Yrd Do Dr Emin
YAZILIM PROJELERİNDE BÜYÜKLÜK TAHMİNİ Yrd. Doç Dr. Emin BORANDAĞ, Yrd. Doç. Dr. Fatih YÜCALAR, Öğr. Gör. Önder ŞAHİNASLAN eminb@maltepe. edu. tr, fatihy@maltepe. edu. tr, onder@maltepe. edu. tr Yazılım Mühendisliği Bölümü Maltepe Üniversitesi Mühendislik Fakültesi
Genel Bakış… 2 • Yazılım Projelerinde Büyüklük Konusuna Giriş • Yazılım Büyüklük Kestirim Teknikleri - Teknik büyüklük kestirim yöntemleri - İşlevsel büyüklük kestirim yöntemleri • • İşlev Puanı Yöntemi Örnek Bir Proje Üzerinden İşlev Puanı Hesabı Sonuç ve Değerlendirme Kaynaklar
Yazılım Projelerinde Büyüklük Kestirimine Giriş 3 • Yazılım proje yönetiminde çok önemli olan ölçme ve bu kavram çerçevesinde yapılanan kestirim yöntemleri aracılığı ile zaman ve işgücü gibi planlamaların yapılabilme gereği açıktır.
Yazılım Büyüklük Kestirim Yöntemleri 4 • Yazılım büyüklük kestiriminde kullanılan yöntemler; - teknik büyüklük kestirim yöntemleri, - işlevsel büyüklük kestirim yöntemleri olarak sınıflandırılmıştır.
Teknik Büyüklük Kestirim Yöntemleri 5 • Satır Sayısı (Lines of Code - LOC) â Tabi ki 1000 LOC değeri olan bir Java programı, 100 LOC değerine sahip bir Java programından 10 kat daha büyüktür. Fakat bu sayının içinde yorum satırları var mı? Yorum satırlarını dahil etmeli miyiz? (Yorum Satırının Avantajı) â Deneyim ile kod oluşturulması (Aynı özellik farklı kod sayısı) â Programlama dili farkı Assembler <> Visual Basic â Değişkenlerin tanımlanması LOC olarak sayılmalı mıdır?
İşlevsel Büyüklük Kestirim Yöntemleri (devam…) 6 İşlevsel Büyüklük Ölçümü (Functional Size Measurement - FSM), kullanıcıya teslim edilecek yazılımın işlevselliğini temel alır. • İşlev Puanı (Function Points - FP), • IFPUG İşlev Puanı Analizi (IFPUG Function Points Analysis – IFPUG FPA), • Mark II İşlev Puanı (Mark II Function Points – MK II FP), • Nesma İşlev Puanı (Nesma Function Points), • Tam İşlev Puanı (Full Function Points – FFP), • COSMIC Tam İşlev Puanı (COSMIC Full Function Points – COSMIC FFP), • Nesne Puanı (Object Points), • Nesne-Tabanlı İşlev Puanı (Object-Oriented Function Points – OO FP), • Nesne-Tabanlı Yöntem İşlev Puanı (Object-Oriented Method Function Points – OOm. FP),
İşlev Puanı (Function Points) 7 • Bu yaklaşım, verimliliğin üretilen işlev puanına göre adam-ay olarak belirlenmesini öngörür. • Eğer proje ilgili girdi çıktı gibi özellikler tahmin edilebiliyorsa, bunlar kullanılarak geliştirilecek sisteme ait bir İşlev Puanı (Function Points) hesabı yapılabilir ve sonuçlar Satır Sayısına (LOC) çevrilebilir. Bu satır sayısından maliyet, emek ve süre tahmini yapılabilir.
İşlev Puanı (Function Points) (devam…) 8 İşlev Puanı • Dış Girdilerin sayısı • Dış Çıktıların sayısı • Dış Sorguların sayısı • İç Mantıksal dosyaların sayısı • Dış Arayüz Dosyalarının sayısı Ağırlık Faktörleri ile ayarlanma Teknik Karmaşıklık Faktörleriyle ayarlama FP LOC’a dönüştürme İşlev Puanını, LOC’a dönüştürmek için programlama diline göre saptanan faktörler kullanılır. SLOC
İşlev Puanında Sistemin İşlevselliği 9 Bu konu 5 ayrı bileşenle incelenmektedir: Dış Girdiler: Uygulamanın dışından uygulamanın içine doğru olan süreçleri ve işlenebilir verileri gösterir. Veri genellikle uygulamaya içine eklenebilir, silinebilir veya güncellenebilir. Dış girdilere örnek olarak; kullanıcının bilgi girişi yaptığı veri giriş ekranları ve mantıksal dâhili dosyalar verilebilir. Dış Çıktılar: Verinin uygulama sınırları içinden dışarı çıkmasına izin veren süreç veya işlemlerdir. Dış çıktılara örnek olarak; raporlar, doğrulama mesajları ve ekran çıktıları verilebilir. Dış Sorgular: Kullanıcı isteği doğrultusunda alınan hızlı veri çıkışlarıdır Dış sorgular dosyada saklanan veriyi değiştirmez veya güncellemez. Sadece bilgiyi okurlar. İç Mantıksal Dosyalar: Uygulama sınırları ile birlikte verilerin saklandığı mantıksal bir dosyadır. İç mantıksal dosyalara örnek olarak, dâhili kullanıcı verileri, saklanan veriler verilebilir. Dış Arayüz Dosyaları: Başka bir uygulama sistemi ile olan paylaşımı ifade eder.
İşlev Puanı (Function Points) 10 UFP = Dış Girdiler x W(1) + Dış Çıktılar x W(2) + Dış Sorgular x W(3) + İç Dosyalar x W(4) + Dış Arayüz Dosyaları x W(5) Bileşenler Basit Orta Karmaşık (1) Dış Girdiler 3 5 6 (2) Dış Çıktılar 4 6 7 (3) Dış Sorgular 3 5 6 (4) İç Dosyalar 7 13 15 (5) Dış Arayüz Dosyaları 5 9 10 Her bileşenin zorluk derecesi basit, orta ve karmaşık gibi Tablo’da verilen rakamsal değerlere bağlı olarak ölçülebilmektedir. Bu ölçülen değerler toplanarak Düzeltilmemiş İşlev Puanı’nı (Unadjusted Function Points - UFPs) oluşturmaktadır.
İşlev Puanı (Function Points) (devam…) 11 14 Genel Sistem Özelliğine göre sistemin beklenilen uygulama zorluğu için ilave bir teknik karmaşıklık faktörü hesaplanır. • • • 0: hiç yok ya da etkisiz, 1: önemsiz etki, 2: az etkili , 3: orta düzeyde etkili 4: önemli düzeyde etkili, 5: güçlü etki DI = i=1. . 14 Cevapi TCF = 0, 65 + 0, 01 x DI TCF: Technical Complexity Factors DI: Total Degree of Influence Genel Sistem Özellikleri Kısa Açıklama 1 Veri İletişimleri Sistemin uygulaması ile bilgi değişimi veya transferinde yardımcı olmak için kaç tane iletişim aracı vardır? 2 Dağıtılan Veri/İşleme Dağıtılan bilgi ve işleme fonksiyonları nasıl idare edilmektedir? 3 Performans Hedefler, yanıtlama zamanı ve iş çıkarma performansı önemli midir? 4 Çok Kullanılan Konfigürasyon Uygulamanın idare edileceği mevcut donanım platformu ne kadar yoğun kullanılmaktadır? 5 İşlem Oranı İşlem oranı yüksek midir? 6 Çevrimiçi Veri Girişi Hangi oranda bilgi çevrimiçi girilmektedir? 7 Son Kullanıcı Verimliliği Uygulama son kullanıcı verimliliği için mi tasarlanmıştır? 8 Çevrimiçi Güncelleme Kaç veri dosyası çevrimiçi güncellenmektedir? 9 Karmaşık İşlem Yapma Dâhili işlem yapma karmaşık mıdır? 10 Yeniden Kullanılabilirlik Uygulama yeniden kullanılabilir olması için mi tasarlanmıştır? 11 Dönüştürme/Kurulum Kolaylığı Sistemde otomatik dönüşüm ve kurulum da dâhil edilmiş midir? 12 İşlevsel Kolaylık Yedekleme, başlatma ve kurtarma gibi operasyonlar ne kadar otomatiktir? 13 Çoklu Saha Kullanımı Uygulama çoklu örgüte sahip çoklu sahalar için özellikle mi tasarlanmış, geliştirilmiş ve desteklenmiştir? 14 Değişimi Kolaylaştırma Uygulama kullanıcı tarafından kullanım kolaylığı ve değişimi kolaylaştırmak için özel olarak mı tasarlanmış, geliştirilmiş ve desteklenmiştir?
İşlev Puanı (Function Points) (devam…) 12 • İşlev Puanı aşağıdaki formül ile hesaplanır: - FP = UFP x TCF • İşlev Puanı’nı, Satır Sayısına dönüştürmek için aşağıdaki formülden yararlanılır. - LOC = İşlev Puanı x Programlama Dili LOC Katsayısı Programlama Dili LOC/FP C ++ 53 COBOL 107 DELPHI 5 18 JAVA 2 46 VISUAL BASIC 6 24 SQL 13
İşlev Puanı (Function Points) – Örnek Proje 13 Yazılım projesi toplam yedi modülden oluşan bir Windows uygulamasıdır. Programa ilişkin modüller aşağıda verilmektedir. a) Kullanıcı Giriş Ekranı b) Ürün Arama ve Listeleme Ekranı ( ‒ Arama Kriterleri (Ürün Kodu, Ürün Adı, Kategorilere Göre Arama), ‒ Listeleme (Ürün Kodu, Ürün Adı, Kategori Sil, Stok Durumu, Aktiflik) c) Stok Giriş Güncelleme ve Silme Ekran ( ‒ Ürün Adı, Kategori, Adet, Stok Giriş, Tarihi, Hangi Bölüme Gönderilmiş, Aktif) d) Kişisel Bilgiler (‒ Ad, Soyad, Bölüm, Unvan) e) Kategori Bilgileri ve Demirbaş Bilgileri Giriş Ekranı. f) Personel Üzerine Demirbaş Ekranı (‒ Personel unvanına göre, adına, soyadına ve bölümüne göre arama yapabilmektedir. ‒ Personel üzerine demirbaş verme işlemleri yapılabilmektedir. ) g) Listeme Raporlama (‒ Stok ismine göre, stok tipine göre, stok türlerine göre arama yapılabilmektedir. ‒ Personel üzerindeki stokları listeleyebilmektedir.
Örnek Proje – Stok Takip Sistemi 14 Arama Listesi (Orta) Login Bilgileri (Basit) Arama Bilgileri Giriş (Orta) Stok Girişi(Orta) Stok Listesi(Orta) Stok Takip Sistemi Personel Eşleştirme (Karışık) Kategori Bilgisi (Basit) Dış Arayüz İç Dosyalar Personel Verileri (Basit) Listeleme Raporlama(Orta) Personel Demirbaş Dosyası(Orta)
Örnek Proje – Düzeltilmemiş İşlev Puanı 15 Girdiler: 2 Basit 2 Orta 3 Orta 1 Karmaşık 1 Orta Çıktılar: İç Dosyalar : UFP = [Dış Girdiler x W(1)] + [Dış Çıktılar x W(2)] + [Dış Sorgular x W(3)] + [İç Mantıksal Dosyalar x W(4)] + [Dış Arayüz Dosyaları x W(5)] Ø Personel Demirbaş Dosyası Dış Arayüz Dosyaları: 1 Orta UFP = [(2*3) + (2*5)] + [(3*6) + (1*7)] + [1*13] + [1*5] = 59 Ø Personel Listesi Basit Orta Karmaşık (1) Dış Girdiler 3 5 6 (2) Dış Çıktılar 4 6 7 (3) Dış Sorgular 3 5 6 (4) İç Dosyalar 7 13 15 (5) Dış Arayüz Dosyaları 5 9 10
Örnek Proje – Düzeltilmiş İşlev Puanı 16 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Sistem güvenilir yedekleme ve kurtarma gerektiriyor mu? Veri iletişimi gerekiyor mu? Dağıtık fonksiyon var mı? Performans kritik mi? Sistem çok kullanılan bir işletim ortamında mı çalışacak? Sistem on-line veri girişi gerektiriyor mu? On-line veri girişi, giriş işlemlerinin birden fazla ekran ya da işlem üzerinden olmasını mı gerektiriyor? Ana dosyalar on-line mı güncelleniyor? Girdiler, çıktılar, dosyalar ve sorgular karmaşık mı? Kod yeniden kullanabilir olarak mı tasarlanmış? İç süreç karmaşık mı? Dönüşüm ve kurulum tasarım içerisinde mi? Uygulama değişik kuruluşlarda birden fazla kurulum gerektirecek şekilde mi tasarlanmış? Uygulama kullanıcı tarafından kolaylıkla kullanmayı ve değiştirmek üzere mi tasarlanmış? DI = i=1. . 14 Cevapi = 34 FP = UFP x (0, 65 + 0, 01 x DI) = 144 x (0, 65 + 0, 01 x 34) = 58. 41 LOC = 46 x 169. 92 = 1401, 84 2 2 3 4 3 1 3 2 1 1 5
17 Projenin Geliştirilmesi Sonrasında Elde Edilen Ölçütler Aynı yazılım projesi, üç farklı yazılım ekibi tarafından gerçekleştirilmiştir. Bu yazılım ekipleri aynı teknolojik altyapıyı kullanarak bu yazılım projesini geliştirmişlerdir. Yapılan çalışmalar sonucunda projeye ilişkin veriler, “Source. Monitor V 3. 3” kullanılarak elde edilmiştir.
18 Projenin Geliştirilmesi Sonrasında Elde Edilen Ölçütler Proje başında FP yöntemi kullanılarak tahmin edilen proje büyüklüğü 1402 satır olarak elde edilmişti. Aynı yazılım projesi, üç farklı ekip tarafından gerçekleştirildikten sonra, projelerin büyüklüğüne bakıldığında, bu üç yazılım projesinin ortalama olarak 1553 kod satırından oluştuğu görülmektedir.
Sonuç ve Öneriler 19 Burada sunulan çalışmada yazılım projelerinde büyüklük kestirimi konusu ele alınmıştır. Yazılım büyüklük kestirim yöntemi olarak İşlev Puanı (FP) kullanılmıştır. Aynı yazılım projesi üç farklı ekip tarafından gerçekleştirilmiştir. Çalışma sonucunda elde edilen bulgular aşağıda verilmektedir: Büyük ölçekli yazılım projelerinde olduğu gibi; küçük ölçekli yazılım projelerinde, büyüklüğü tahmin etmek için FP yönteminin kullanılabilir olduğu görülmüştür. İleri ki aşamada yapılacak çalışmalarda, nesne-tabanlı diller göz önünde bulundurularak, farklı bir yazılım büyüklük kestirim yönteminin oluşturulması amaçlanmaktadır.
Kaynaklar 20 Fenton, N. E. , “Software Measurement: A Necessary Scientific Basis”, IEEE Transactions on Software Engineering, Vol. 20(No. 3), 199 -206, March, (1994). Fetcke, T. , Abran, A. , & Dumke, R. , “A Generalized Representation for Selected Functional Size Measurement Methods”, 11 th International Workshop on Software Measurement, Montreal, Canada, (2001). Symons, C. R. , “Function Point Analysis: Difficulties and Improvements” IEEE Transactions on Software Engineering, Vol. SE 14, No. 1, Jan. 1988, S. 2 -11. Congress/Conference/Publication (1988) Hughes, B. , & Cotterell, M. , “Software Project Management”, 5 th Edition. Mc. Graw-Hill Education, (2009). Source. Monitor 3. 3 Kurulum Adresi, http: //www. campwoodsw. com/sourcemonitor. html, (2012).
- Slides: 20