hendisliği Ders Notları



Benzer belgeler
YMT 505-Yazılım Proje Yönetimi Giriş- Temel Kavramlar

YMT 312-Yazılım Tasarım ve Mimarisi Yazılım Mühendisliği ne Giriş

Yazılım Mühendisliği 1

Başarı Değerlendirme YAZILIM. Mühendisliğe Temel Bir Bakış. Yazılım Nedir? BIL 304 YAZILIM MÜHENDİSLİĞİ

Yazılım Nedir? Yazılım Mühendisi. Yazılım Mühendisliği. ACM/IEEE Etik Kodu. Etik Kural için Önsöz BIL 304 YAZILIM MÜHENDİSLİĞİ

Yazılım Mühendisliği Bölüm - 3 Planlama

BİT in Temel Bileşenleri (Yazılım-1)

Sistem ve Yazılım Nedir?

YZM 2108 Yazılım Mimarisi ve Tasarımı

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

MESLEKİ TERMİNOLOJİ I 1. HAFTA YAZILIM MÜH. TEMEL KAVRAMLAR

SİSTEM VE YAZILIM. o Bilgisayar sistemleri donanım, yazılım ve bunları işletmek üzere gerekli işlemlerden oluşur.

9.DERS Yazılım Geliştirme Modelleri

Elbistan Meslek Yüksek Okulu Güz Yarıyılı

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

EYLÜL 2012 İŞLETİM SİSTEMLERİ. Enformatik Bölümü

İşletim Sistemleri; İÇERİK. Yazılım BİLGİ TEKNOLOJİLERİ VE UYGULAMALARI Yazılım Türleri

Bilgisayar Mühendisliği. Bilgisayar Mühendisliğine Giriş 1

YMH 114 YAZILIM MÜHENDİSLİĞİNİN TEMELLERİ

Y I L D I Z T E K N I K Ü N İ V E R S İ T E S İ MÜHENDİSLİĞİ

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ Yazılım Mühendisliği Bölümü

Sağlık Bilgi Teknolojileri ve Yazılım Süreç Yönetimi

Bilgisayar Sistemleri; donanım, yazılım ve kullanıcılardan oluşur. Yazılım sadece belirli bir işlemi yapan bir program değildir. Yazılım belirli bir

Veri ve Dosya Yapıları. Kütük Organizasyonu 1

BLM 426 YAZILIM MÜHENDİSLİĞİ BAHAR Yrd. Doç. Dr. Nesrin AYDIN ATASOY GENEL BİLGİLER

Yazılım Mühendisliği Bölüm - 2 Yazılım Geliştirme Yaşam Döngüsü. Cengiz GÖK

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

YAZILIM KAVRAMINA BİR BAKIŞ. Gürcan Banger Elektrik Yük. Müh. ESOGÜ - 9 Nisan 2007

Öğr.Gör. Gökhan TURAN Gölhisar Meslek Yüksekokulu

1.Yazılım Geliştirme Metotları 1

Yaz.Müh.Ders Notları #6 1

BİLİŞİM SİSTEMLERİ GÜVENLİĞİNDE YENİ EĞİLİMLER

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Yazılım Mühendisliğine Giriş

T.C. MARDİN ARTUKLU ÜNİVERSİTESİ MİDYAT MESLEK YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI (UZAKTAN ÖĞRETİM) ÖNLİSANS PROGRAMI Eğitim Öğretim Yılı

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

ALGORİTMA VE PROGRAMLAMA I

CENG 302 Yazılım Mühendisliği Yazılım Mimarisi - Devam. Alper UĞUR

Yazılım Mühendisliği Bölüm - 3 Planlama. Cengiz GÖK

Ders Adı : Nesne Tabanlı Programlama-I Ders No : Teorik : 3 Pratik : 1 Kredi : 3.5 ECTS : 4. Ders Bilgileri.

08225 AĞ TEMELLERĠ. Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. 20 EKi Salı, Çarşamba

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

28 Aralık Yıldız Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü

Akdeniz Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölüm Tanıtımı

İŞLETİM SİSTEMLERİ. Enformatik Bölümü

DERS SEÇİM KILAVUZU. Sınıf Dönemi Kodu Adı Sınıf Dönemi Kodu Adı. Nesne Yönelimli Programlama. Yazılım Tasarımı ve Mimarisi

SAYISAL ÇÖZÜMLEME. Yrd.Doç.Dr.Esra Tunç Görmüş. 1.Hafta

BENZERSİZ SORUNLARA BENZERSİZ ÇÖZÜMLER

Bilkent Üniversitesi Bilgisayar Mühendisliği Bölümü. Bilgisayar Mühendisliği

BMH-405 YAZILIM MÜHENDİSLİĞİ

5. PROGRAMLA DİLLERİ. 5.1 Giriş

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Akdeniz Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölüm Tanıtımı

YAZILIM MÜHENDİSLİĞİ Şubat 2012 Yrd.Doç.Dr. Yunus Emre SELÇUK GENEL BİLGİLER

BM208- Nesneye Dayalı Analiz ve Tasarım. Öğr. Grv. Aybike ŞİMŞEK

YAZILIM MÜHENDİSLİĞİ TEKNOLOJİ FAKÜLTESİ / BİLGİSAYAR MÜHENDİSLİĞİ

VERİ TABANI YÖNETİM SİSTEMLERİ

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

3. Bölüm Algoritmalar

BMH-405 YAZILIM MÜHENDİSLİĞİ

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

YAŞAR ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 4 YILLIK EĞİTİM PLANI ( AKADEMİK YILINDAN İTİBAREN GEÇERLİDİR)

Akdeniz Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölüm Tanıtımı

PROGRAMLAMA TEMELLERİ

Bilişim Sistemleri. Modelleme, Analiz ve Tasarım. Yrd. Doç. Dr. Alper GÖKSU

Merkez Ofis : Up Hill Towers A1 B Blok No:146 TR Ataşehir / Istanbul

IENG 227 Modern Üretim Yaklaşımları

1.1. Yazılım Geliştirme Süreci

aselsan Açık Pozisyonlar Bilgi Teknolojileri (BT) Denetçisi İç Denetçi

Yazılım Süreçleri Software Processes

BİLİŞİM SİSTEMLERİNİN PRENSİPLERİ

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

BM526 YAZILIM PROJE YÖNETİMİ. Yrd.Doç.Dr.Hacer KARACAN

Okut. Yüksel YURTAY. İletişim : (264) Sayısal Analiz. Giriş.

Yazılım Mühendisliğine Giriş 2018 GÜZ

Bilgisayar Mimarisi Nedir?

BENZERSİZ SORUNLARA BENZERSİZ ÇÖZÜMLER

SİSTEM ANALİZİ VE TASARIMI

3.DERS YAZILIMDA KALİTENİN ANLAMI

Bilgisayarda Programlama. Temel Kavramlar

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Yrd. Doç. Dr. Ayça Tarhan. Hacettepe Üniversitesi Bilgisayar Mühendisliği Bölümü

Ad Soyad : Fahri Dönmez Şube No : TBIL Öğrenci No : Bölüm : Bilgisayar Mühendisliği. Yazılım Mühendisliğine Giriş Dr.

Kurumsal Mimari. (Enterprise Architecture) MUSTAFA ULUS, 2015

MÜHENDİSLİK FAKÜLTESİ / ENSTİTÜSÜ / YÜKSEKOKULU BİLİŞİM SİSTEMLERİ MÜHENDİSLİĞİ BÖLÜMÜ /ABD LİSANS PROGRAMI - 1 ( yılı ve sonrasında birinci

Elbistan Meslek Yüksek Okulu Güz Yarıyılı

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

TEMEL BİLGİ TEKNOLOJİLERİ KULLANIMI

Bilişim Teknolojileri Temelleri Dijital Dünyada Yaşamak

BÖLÜM 1 YAZILIM TASARIMINA GİRİŞ YZM211 YAZILIM TASARIMI. Yrd. Doç. Dr. Volkan TUNALI Mühendislik ve Doğa Bilimleri Fakültesi / Maltepe Üniversitesi

YRD. DOÇ. DR. AGÂH TUĞRUL KORUCU Kernel çeşitleri

2 Temel Kavramlar (Devam) Veritabanı 1

Temel Bilgisayar (Basic Computer) Yazılım (Software)

Su endüstrisinde yaşam döngüsü

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

MÜHENDİSLİK VE TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2016/2017 ÖĞRETİM YILI 1. YARIYIL FİNAL SINAVI PROGRAMI 1. SINIF

ENF 100 Temel Bilgi Teknolojileri Kullanımı Ders Notları 2. Hafta. Öğr. Gör. Dr. Barış Doğru

Elbistan Meslek Yüksek Okulu Güz Yarıyılı EKi Salı, Perşembe Öğr. Gör. Murat KEÇECĠOĞLU

BİLİŞİM SİSTEMLERİNİN PRENSİPLERİ

Transkript:

1 Yazılım m MühendisliM hendisliği Ders Notları Prof. Dr. Şeref Sağıroğlu Bilgisayar Mühendisliği Bölümü Ders İçeriği g Yazılım Nedir? g Yazılım Mühendisliğine Bakış? g Yazılım Mühendisi Kimdir? g Yazılım Mühendisliği Kavramları? g Tarihsel gelişim g Yazılım-Donanım Karşılaştırma g Yazılım Mühendisliği Tanımı? g Yazılım Mühendisliğinin Amacı g Yazılım Hataları g Yazılım Maliyetleri g Yazılım Sistemlerinin Sınıflandırılması g Yazılımda Kalite Sağlama g Karşılaşılan problemler, Yanlışlıklar, Sıkıntılar g Ürün mü? g Bilim mi? g Endüstri mi? g Sanat mı? g Mühendislik mi? YAZILIM? YAZILIM TANIMI (WİKİPEDİA) g Değişik ve çeşitli görevler yapma amaçlı tasarlanmış elektronik araçların, birbirleriyle haberleşebilmesini ve uyumunu sağlayarak, görevlerini ya da kullanılabilirliklerini geliştirmeye yarayan makina komutlarıdır. g Elektronik cihazların belirli bir işi yapmasını sağlayan programların tümüne verilen isimdir. g Var olan bir problemi çözmek amacıyla bilgisayar dili kullanılarak oluşturulmuş anlamlı ifadeler bütünüdür. YAZILIM TANIMI (TDK) g Bir bilgisayarda donanıma hayat veren ve bilgi işlemde kullanılan programlar, yordamlar, programlama dilleri ve belgelemelerin tümü. (WİKİPEDİA) Bilgisayar programlarının tasarımı, geliştirilmesi, test edilmesi ve bakımı konularını ele alan mühendislik dalıdır. Diğer mühendislik dallarıyla karşılaştırıldığında çok yeni olan bu alanda sürekli yeni yöntemler geliştirilmekte ve konu yavaş yavaş belli bir olgunluğa ulaşmaktadır. Temel mühendislik prensiplerinin bu dalda da uygulanması, önceden tahmin edilebilir ve tekrarlanabilir sonuçların daha çok elde edilmesiyle yazılım mühendisliği gerçek bir mühendislik dalı olma yolunda ilerlemektedir. Şimdilik pek gelişmemiş olmasına karşın ülkemizdeki yazılım mühendisi açığı çok büyük olduğundan geleceğin mesleklerinden birisi olarak gösterilmektedir.

Yazılım Mühendisliğine Giriş (Genel bakış) Analiz Tasarım Kodlama Şelale Modeli (Waterfall Model) g Yazılım üretiminin, mühendislik yöntemleriyle yapılmasını öngören ve bu yönden yöntem, araç, teknik ve metodolojiler üreten bir disiplindir. g Yöntemler Kümesi g Teknikler Kümesi g Araçlar Kümesi Sistem testi Bakım g Yazılım üretiminde YYD de belirtilen aşamaların sistematik olarak izlenmesi ve gerçekleştirilebilmesi YM için ön şarttır. (Amaç) g Yazılım üretimindeki karmaşıklıkları gidermeyi hedefler g YM ile Mühendislik yazılımı terimleri karıştırılmamalıdır. g Mühendislik yazılımı daha çok donanım bileşeni ile ilgisi olan yazılımlardır. g YM, yazılım mühendisi yetiştirmeyi amaçlayan bir disiplindir. (Temel Kavramlar) Yazılım: Bir sistemin donanım bileşenleri dışında kalan her şey olarak tanımlanır. Yazılım; bilgisayar programı yada programlar kümesi olarak algılanmamalıdır. Yazılımı oluşturan bileşenler: Yazılım = Mantık+Veri+Belge+İnsan+Program (Temel Kavramlar) Yazılım = Mantık (algoritma) + Veri (test verisi, bilgi?) + Belge (dokümanlar) + İnsan (kullanıcı, geliştirici) + Program (kod) (bileşenler) Bütün bu bileşenlerin; g belirli bir üretim amacına yönelik olarak bir araya getirilmesi, g yönetilebilmesi için kullanılabilecek üretilen yöntem, g amaç, g bilgi ve g belgelerin tümünü içerir.

(Mantık) gher şeyden önce bir işin bilgisayar aracılığı ile yapılması amacına yöneliktir. gbilgisayarlaştırılmak istenen işin mevcut mantığı yazlıma da yansıtılmak durumundadır. gmantık bileşeni yazılımın en önemli bileşenlerinden birisidir. (Veri) g Her tür yazılım mutlaka bir veri üzerinde çalışma durumundadır. g Veri dış ortamdan alınabilir yada yazılım içerisinde üretilebilir. 'veri' yi 'bilgi' ye dönüştürme en önemli amaçtır. g Yazılım üretimi, bir mühendislik disiplini gerektirir. g Yazılım Yaşam Döngüsü (YYD) mühendisler tarafından üretim sırasında kullanılan yaşam döngüsünden esinlenerek oluşturulmuştur. (Belge) (İnsan) g Yazılım üretimi sırasında, birçok aşamada yapılan ara üretimler, bilgi belge üretimidir. Planlama bilgileri, çözümleme bilgileri, tasarım bilgileri, gerçekleştirim bilgileri gyazılımın insan bileşeni iki boyutludur. g Yazılımı geliştirenler g Yazılımı kullananlar gçok kişili ekiplerle geliştirilmektedir. gtemel nedeni yazılımın yaygınlaşması ve boyutlarının büyümesidir. (Program) g Yazılımın ana çıktısı sonuçta bir bilgisayar programıdır. g İşletime alındıktan sonra bakım çalışmaları sürekli olarak gündeme gelir. g Hiçbir program bütünüyle her olasılık göz önüne alınarak sınanamaz. Hata olasılığı vardır. g İşletmeler doğaları gereği dinamik bir yapıya sahiptir. Süreç içerisinde sürekli olarak yeni istek ve gereksinimler ortaya çıkabilir. g Bu tür değişiklikler yazılıma aktarılmalıdır. YAZILIM MÜHENDİSİ (tanım) g YM işini yapan kişidir. g Değişik bilgisayar bilimi teknolojilerinin ve kişilerin bir bilgi yada yazılım sistemi oluşturmak amacıyla bir araya getirilmesinde bir bütünleştirici gibi çalışır. g YM, bir programcı değildir. Ancak Programcının tüm yeteneklerine sahiptir. Programcı;ağırlıklı olarak kodlama, sınama işi ile ilgilenir. Temel hedefi g söz konusu üretimin az maliyet, yüksek nitelikte yapılmasıdır.

gym işi; YAZILIM MÜHENDİSİ (tanım) insanlarla ilişkiyi gerektirir. daha çok mantıksal boyutuyla ilgilenir. gym ile Sistem Çözümleyici arasındaki belirgin fark ise sistem çözümleyicinin üretimin yalnızca çözümleme aşamasında, YM ise tüm aşamalarında yer almasıdır. İlk yıllar *deste kökenli *Sınırlı dağıtım *Müşteri yazılımı (tarihçe) İkinci zaman *çoklu kullanıcı *gerçek-zaman *veritabanı *ürün yazılımı üçüncü zaman *dağıtık sistemler *gömülü akıllılık *düşük maliyetli donanım *tüketici etkisi dördüncü zaman *güçlü sistemler *nesneye yönelik teknolojiler *uzman sistemler *yapay sinir ağları *paralel işleme 1950 1960 1970 1980 1990 2000 1950-1965 (Gelişimi -1) g Yığınsal kökenli (kullanıcı ile birebir iletişimde bulunmayan, işlerin toplu olarak verilip yalnızca yazıcı çıktılarının alındığı) g Kuruluşa özel 1965-1975 g Bugünün ana çatı bilgisayarları, çok kullanıcılı sistemler ortaya çıkmıştır. g Çok kullanıcılı g Gerçek zamanlı g VTYS'nin ilkleri (kütük sistemleri) 1975-1990 (Gelişimi -2) g Dijital bilgisayarlar yaygınlaşmıştır g Açık sistem mimarisi g Ürün bazlı yazılımlar yaygınlaşmıştır g Bilgisayarlar evlere girmiştir g Dağıtık yazılım sistemleri geliştirilmeye başlanmıştır g Zeki uygulama yazılımları geliştirilmeye başlanmıştır. (Gelişimi -3) 1990 ve sonrası g Yapay zeka donanımları g Paralel donanım mimarileri geliştirilmiştir. g Uzman sistem yazılımları oldukça geliştirilmiştir. g Mikrobilgisayarlar oldukça yaygınlaşmıştır. g Yazılım kalite sağlama olgusu önem kazanmıştır. g Yazılım standartları oluşturulmuştur. g Yazılım evleri veya kurumları yaygınlaşmıştır. g Yazılım üretimi artmıştır. (Tarihsel Gelişmeler) g Yazılım yeni bir konudur : 50 yıl önce yoktu. g 1950ler 1960larda Yazılım Mühendisliği=Programcılık. g Yazılım Krizi, ilk olarak 1968, yoğun kullanım 1980ler. g 1990lara kadar büyük projelerde başarı oranı çok düşük. g ABD de 1970lerde kamu tarafından sipariş yolu ile satın alınan yazılım ürünlerinin ancak % 5 i kabul edilip kullanılabilmiştir. g % 40 ı hiç kullanılamamış, geri kalanı ise maliyet artışı, zaman artışı, performans eksikliği veya özelliklerden taviz verilerek kullanılabilmiştir.

(Tarihsel Gelişmeler -1) Yazılımda ilk yaklaşımlar diğer mühendislik dallarından örnek almıştır. g Yapısallaştırma (parçalara ayırma) g Metodolojiler (SSADM, OOM vb.) g CASE ve ICASE (Tarihsel Gelişmeler -2) g 1984 ABD DoD girişimi ve SEI kuruluşu (Carnegie Mellon Univ. Software Engineering Institute) g Watts Humphrey ve Yetenek Olgunluk Modeli (Capability Maturity Model, CMM ) g ISO 9001, ISO 9000-3, TickIT modelleri g Diğer modeller : Bootstrap (AK), Trillium (Kanada) vb. g SPICE modeli (ISO 15504 taslak standardı) ve ESI Yazılım geliştirme aktiviteleri Yazılım mühendisliği? g Gereksinim analizi (requirements analysis) Fonksiyonel ve fonksiyonel-olmayan gereksinimler (functional & non-func. reqs.) g Tasarım (design) Sistem tasarımı (system design): subsystems Detaylı tasarım (detailed design) g Kodlama ve birim testi (unit testing) Birleşenlerin ayrı ayrı gerçekleştirilmesi ve birim testi g Bütünleme testi ve sistem testi (integration & system testing) g Bakım ve güncelleme (maintenance) Hataların giderilmesi, performans iyileştirme, servislerin geliştirilmesi, değişikliklere uyum, vs. g Tartışmalı bir terim g Yazılım mühendisliği ile kastedilen: Proje yönetim işlemleri Yazılım geliştirme araçlarının(tools) kullanımı Tasarım aktiviteleri g Klasik mühendislik pratiğinden oldukça farklı... Yazılım mühendisliği? (devam) Yazılım mühendisliği? (devam) Yazılım mühendisliği ile klasik mühendislik arasında farklar: g Tasarımların analizi Modern mühendislik projeleri, yapımdan önce projenin başarısını bilimsel ve simulasyon yöntemleriyle ölçebilir, ve garantileyebilir. Ustalık ise deneme yanılma yoluyla iyi sonuçlara ulaşır ve her problem yeni bir çözüm gerektirebilir. Garantisi yoktur. Yazılım geliştirme, bir gökdelenin ustalar tarafından yapılması gibidir; test etme, düzeltme / deneme, yanılma (testing, debugging / trial, error) Yazılım projelerinin başarısı önceden garanti edilemez. g Hataların hep farklı olması Oturmuş mühendislik alanlarında, aynı türden hatalar tekrar etmezler. Yazılım geliştirmede, aynı türden hatalar sıklıkla tekrar eder.... farklar : (devam) g Bilginin kodlanması Önceden edinilen bilgi ve tecrübenin kodlanması ve yeni problemlerin çözümünde tekrar tekrar kullanılması (reuse) Çözümlerin sürekli iyileştirilmesi Sürekli yeni çözümler üretmek gerekmez Klasik mühendislik alanların başarısı bunlara bağlıdır Yazılım geliştirmede, her proje tasarımı yeni bir çözüm olarak üretilir; önceden hazır çözümler genelde yoktur. Bu sebeple, yazılım tasarımı, zor, zaman alıcıdır, güvenilir (reliable) değildir.

Yazılım mühendisliği? (devam) g Bu sebeplerle, yazılım geliştirme, klasik mühendislik alanların oldukça farklıdır. g Henüz oturmamış bir mühendislik alanıdır. g Yazılım geliştirmenin bir mühendislik alanı olarak kabul edilmesi için: Tasarımların analizi için mekanizmalar olmalı, Bilinen hataların tekrarı önlenebilmeli, Tasarım bilgisinin kodlanması gereklidir.. gstandish Grubun Araştırması (2004); 9,236 yazılım projesi (%58 ABD firması, %27 Avrupa firması, %15 diğer) %45 Fortune 1000 tipi firmalar, %35 orta büyüklükte firmalar, %20 küçük firmalar Projelerin %55 i sıfırdan yazıldı g %36 geleneksel diller ve metotlarla, g %19 nesne yönelimli metotlarla, g %16 bazı bileşenler geliştirildi, bazıları hazır, g %13 hazır alındı ve değiştirildi, g %16 diğer (hazır, bileşenler hazır, entegre edilen) g Başarılı projeler: zamanında, bütçe dahilinde, gereken özelliklerle g Uğraştıran projeler: zamanından sonra, bütçeyi aşarak, gerekenden az özelliklerle g Başarısız olanlar: Bitimden önce iptal edildi, teslim edilmedi, hiç kullanılmadı g Diğer sonuçlar; Yazılım projelerinin bütçe gerçekleşme performansları iç karartıcı olmaya devam ediyor g Örnekler: 2001 de, ABD deki projelerin %53 ü başlangıçtaki tahminlerden %189 oranında sapma gösterdi NASA da, maliyet aşımına en yüksek katkıyı (%35 oranında) sağlayan nedenlerden en yaygın olanı (%75); planlama, kestirim ve kontroldeki basit hatalar olarak belirlendi g 1981 de, yazılım yaşam döngüsü üzerinde erken yapılan kestirimlerde %400 e varan sapmalar oluşmakta idi g Ocak 15, 1990: AT&T telefon şirketinin şehirdışı arama servisi 8 saat boyunca devre dışı kalır; sebebi C ile yazılmış arama programında yanlış konulmuş bir break komutu. g Haziran 4, 1996: Ariane 5 uydusu fırlatma esnasında patlar; sebebi yazılımda 64-bitlik bir sayıyı, 16-bite çevirme sırasında hatanın doğru yakalanamaması. g 21. yy. da sistematik problemler halen devam etmekte g 8 Haziran 2001: NYSE Borsasında elektronik hisse senedi alım-satım yazılımında yapılan bir değişiklik, seansın 1 saatten fazla kapanmasına neden olur. g 18 Ocak 2004: Mars a yollanan robotlar (rowers), flash diske yazılan resim dosyalarının sayısı kontrol edilmediği için, bir süre sonra dolar ve kullanılamaz hale gelir (milyar dolarlık proje)

g Microsoft Windows NT ~6 milyon satır kod 200 programcı/test uzmanı/teknik yazar 5 yıl Pek çok hatayı veya eksiği içerisinde barındırmıştır. g Siz biliyorsunuz! Yıl İşletim Sistemi Kod satır sayısı (milyon) 1990 Windows 3.1 3 1995 Windows NT 4 1997 Windows 95 15 1998 Windows NT 4.0 16 1999 Windows 98 18 2000 Windows NT 5.0 20 2001 Windows 2000 35 2002 Windows XP 40 Kaynak: Gary McGraw Yazılım Maliyetleri ve Kalitesi Kalite Maliyetler Donanım Kabiliyetleri Yazılım Maliyetleri ve Kalitesi Kalite Donanım Maliyetleri Maliyetler Zaman Zaman g Büyük yazılım uygulamaları hiçbir zaman %100 hatadan arındırılamaz! g Yazılım geliştirme (çoğunlukla) Proje temelli İş yoğun (bilgi yoğun) Bütçelerini aşar Öngörülen zamandan uzun süren zor, zaman alıcı, masraflı Sürekli devam eden süreç g Değişik yetenekte bir çok personel (belgeleme uzmanı, sınayıcı, programcı, çözümleyici) g Yalnızca yazılımın çıktısı ile ilgi olan ve bilgi teknolojileri konusunda ilgili olmayan kullanıcılar g Yeniliğe tepki gösteren kullanıcı ve yöneticiler g Yeterince tanımlanmamış,oldukça karmaşık kullanıcı beklentileri g Personel değişim oranının yüksekliği g Yüksek eğitim maliyetleri g Dışsal ve İçsel kısıtlar (zaman,maliyet, işgücü) g Standart ve yöntem eksiklikleri g Verimsiz kaynak kullanımı g Mevcut yazılımlardaki kalitesizlik g Yüksek üretim maliyetleri Bunun için yazılım mühendisliği disiplini geliştirilmiştir.

g Karmaşıklık (complexity) Büyük ve karmaşık Tek kişi tarafından anlaşılıp, takip edilemez Küçük parçalara bölünmeli, yazılım grubu tarafından paylaşılmalı g Uzun süreli kullanım ve değişim gereksinimi 20 yıl ve daha fazla süre kullanılmakta.. Kullanıcı gereksinimleri ve şartlar değişmekte, yazılım da buna uyarlanmak zorunda Yazılımın kullanımı boyunca yapılan bakım ve değişiklik harcamaları, ilk yatırımdan çok daha fazladır. g Yüksek kullanıcı beklentileri Bilgisayarlar artık herkes tarafından kullanılıyor, Yazılım, güvenilir ve kolay kullanılır olmak zorunda g Yazılım hataları; yazılım yaşam döngüsünde çok önemli bir yer tutar g Teorik olarak bir program tüm ayrıntıları ile sınanabilir. Ancak bu mümkün değildir. g Örnek:Dışardan girdi olarak A ve B gerçel sayı değerini alıp bu sayıların toplamını C değişkenine aktararak ekranda görüntüleyen bir bilgisayar yazılımı düşünelim g Gerçel sayı değeri 2 64 ise ve her işlemin 10 sn olduğunu varsayalım Yazılım üretiminde Hataların Dağılımı gmantıksal Tasarım %20 gişlevsel Tasarım %15 gkodlama %30 gbelgeleme ve Diğerleri %35 g Yazılım üretiminde hatalar yayılma özelliğini içerir. g Yazılım üretimi aşamalı bir üretim ve bir aşamanın çıktısı bir sonraki aşamaya girdi olduğundan dolayı herhangi bir aşamada yapılan yanlış, izleyen aşamalara otomatik olarak yansır. g Bu nedenle hata düzeltme maliyetleri ilerleyen aşamalarda giderek artar. Yazılım Üretiminde Hata Düzeltme Maliyetleri g Çözümleme 1 g Tasarım 5 g Kodlama 10 g Test 25 g Kabul Testi 50 g İşletim 100 g Yazılım maliyetleri artmaktadır. g Yazılımımızı alırsanız yanında donanımı ücretsiz olarak sağlayacağız. g Yazılım maliyeti donanım maliyetine oranla oldukça yüksektir.

(Çözümler) g Karmaşık yazılım sistemlerinin geliştirilmesinde etkin çözümler getirmeli g Yazılım sistemlerinin uzun süreli kullanım ve değişken yapısına uygun olmalı g Kullanımı kolay ve güvenilir yazılımlar üretmelidir Yazılımın mühendislik olması için 1. Standartlara dayanması gerekir. 2. Ölçülebilmesi gerekir. g Kalite standartları, g kalitenin ölçülebilmesi g Verimin standartları, g Verimin ölçülebilmesi (Kalite Olgusu) g tanımı zor, tanıması kolay, ölçmesi imkansız (Kitchenham) g amaca uygunluk (Juran) g sıfır hata (Crosby) g müşteri isteklerini karşılama g spesifikasyonlara uyum g Bir ürünün veya hizmetin, belirlenen ihtiyaçları karşılayabilme yeteneğine yönelik özelliklerin bütünü. (IEEE: the totality of features and characteristics of a product or service that bears on its ability to satisfy given needs) (Yazılımda Kalite Olgusu) g Hata sayısında düşük düzey (sıfıra yaklaşma) g Kullanıcı isterlerine cevap (tamamını yapabilme) g Arızalar arası zamanın uzunluğu (uzun MTBF) g Destek ve gelişme. (Yazılımda Kalite Olgusu) Yazılımda Kalite Sağlama g Üretim süreci boyunca, g ara ürünlere ilişkin kalite standartları geliştirmek ve g geliştirmenin bu standartlara uygunluğunun denetlenmesi olarak tanımlanır. g Sonuç ürününde belirlenen kalite kriterlerine uygunluğunun sağlanması amacını da taşır. (Yazılımda Kalite Olgusu) Yazılımda Kalite Sağlamada Başlıca Amaç g Yazılım maliyetinin düşürülmesi g Yazılım üretim yönteminin kolaylaştırılması g Belgeleme ve standart sorunlarının giderilmesi g Üretim ortamına bir düzen getirmeyi hedefler.

(Yazılımda Kalite Olgusu) Yazılımda Kalite Sağlamada Başlıca Amaç g Yazılım maliyetinin düşürülmesi g Yazılım üretim yönteminin kolaylaştırılması g Belgeleme ve standart sorunlarının giderilmesi g Üretim ortamına bir düzen getirmeyi hedefler. (Yazılım Sistem Kalitesi) g İşe yararlılık (usefullness) g Zamanlı geliştirilmiş (timeliness) g Güvenilir (reliability) g Güncellenebilir (maintainability) g Yeniden kullanılabilir (reusability) g Kolay kullanılır (user friendliness) g Etkin (efficiency) MİB, bellek, disk, ve diğer kaynakların kullanımı... (Yazılım Sistem Kalitesi:Güncellenebilirlik) g Yazılım sistemlerinin güncellebilirliğini etkileyen faktörler Esneklik (flexibility) Basitlik (simplicity) Okunulurluk (readability) g Anlaşılırlık g Tasarım ve kodlamanın, ayrıca sistem eşlik eden belgelerin temiz ve basit olmasına bağlı YAZILIMLAR g Sistem yazılımı g Gerçek-zamanlı yazılım g İş yazılımı g Mühendislik ve bilimsel yazılım g Gömülü yazılım g Kişisel bilgisayar g Yapay zeka yazılımı Yazılım Sistemlerinin Sınıflandırılması İşleve Göre Sınıflandırma g İşlevlerine göre g Zamana dayalı özelliklerine göre g Boyuta göre g Hesaplama > Sayısal Çözümleme g Veri işleme > Bankacılık g Süreç temelli > Gömülü sistemler g Kural Temelli > Robotik, Yapay Zeka g CAD > Sinyal işleme

g Küçük ss<=2000 Boyutlarına göre PC Oyunları, Öğrenci Projeleri g Orta 2000<ss<=10000 CAD, BDE Yazılımları g Büyük 100000<ss<=1 Milyon İşletim sistemleri, Benzetim Sistemleri g Çok Büyük ss>1 Milyon Komuta Kontrol Sistemleri, Hava Tahmin sistemleri, Yıldız savaşları sistemleri Zamansal özelliklerine göre sınıflandırma g Toplu (çevrim-dışı) çevrim dışı g Gerçek zamanlı Yazılım Mühendisliği Yazılım Mühendisliği Bilgisayar Temelleri Algoritmalar Veri Yapıları Bilgisayar mimarisi D e s i g n Matematik İşletim Sistemleri Programlama Dilleri Yazılım Mühendisliği Mühendislik Gerekleri Yazılım Tasarımı a r e Kodlama Yazılım Testi Bakım Yazılım Projeİşleyiş Risk Kalite Biçim Geliştirme Kazanç Yazılım Alanları Yapay Zeka Veri Tabanı S o f t w İnsan-Bilgisayar İlişkileri Nümerik Sembolik Yazılım Bilgisayarlı Simülasyon Gerçek Zamanlı Sistemler Üretimi ve işlemleri içine alan mühendislik disiplini Yazılım Mühendisliği Yazılım İhtiyaç Analizi Yazılım Yazılım Tasarımı Yazılım Yapılandırılması Yazılım Testi Yazılım Mühendisliği Altyapısı Yazılım Mühendisliği İşlemi Yazılım Değerlendirme ve Bakımı Yazılım Kalite Analizi Yazılım Mühendisliği Temelli İşler Ülkemizde YM Sistem Analisti Yazılım Mimarı Yazılım Ağ Uzmanı Yazılım Programcısı Yazılım Sistem Admin Yazılım Veri Tabanı Admin Webmaster Yazılım Güvenlik Mühendisi Yazılım Testcisi Yazılım Proje Yöneticisi Yazılım Kofigürasyon Yöneticisi Yazılım Kalite Yöneticisi

Yazılım Mühendisliğinin Geleceği (Güncel Yaklaşımlar) Maintenance 67% Requirement 2% Specification 4% Planning 1% Design 6% Module Coding 5% Module Testing 7% Integration 8% Maintenance 76% Approximate relative costs of the phases of the software life cycle. g Klasik yazılım mühendisliği yöntemleri geliştirme sürecinin her aşamasına eşit önem verir. g Değer bazlı yaklaşım, yazılım geliştirme sürecindeki her aşamanın şirketlere ekonomik değer olarak getirisini tahmin eder. Örnek: g Bir ürün piyasaya sürülmeden önce ne kadar test edilmeli? g Kalite seviyesi nereye kadar yükseltilmeli ya da düşürülmeli? Kullanılabilecek Veri Kaynakları gaçık Kaynaklar PROMISE (Software Engineering Repository) NASA (IV&V Facility, Metrics Program) Açık kaynak kodlu projeler (Sourceforge, Linux vb.) Internet kaynaklı diğer küçük veri setleri gyerel Kaynaklar Endüstri projeleri Destek Projeleri Bölüm Projeleri ÖDEVLER: 1. Yazılım Mühendisliği tanımları araştırılmalıdır. 2. Yazılım geliştirme teknikleri araştırılmalıdır. 3. Yazılım geliştirmede karşılaşılan gerçek problemler araştırılmalıdır. 4. Yazılım geliştirme güncel yaklaşımlar araştırmalıdır. 5. Ülkemizdeki Yazılım Mühendisliği araştırılmalı ve değerlendirilmelidir.