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



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ş

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

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

Sistem ve Yazılım Nedir?

YAZILIM MÜHENDİSLİĞİNİN TEMELLERİ 9.Hafta. Bakım

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

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

5. PROGRAMLA DİLLERİ. 5.1 Giriş

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İĞİ

Bitirme Projesi (COMPE 494) Ders Detayları

Yazılım Mühendisliği 1

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

VERİ TABANI YÖNETİMİ. Yrd.Doç.Dr. Füsun BALIK ŞANLI YTÜ

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

Yazılım Mühendisliğine Giriş (SE 112) Ders Detayları

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

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

Bilgisayar Programlama Dilleri

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

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

EĞİTİM ÖĞRETİM MÜNEVVER ÖZTÜRK ORTAOKULU II. DÖNEM BİLİŞİM TEKNOLOJİLERİ VE YAZILIM DERSİ DERS NOTLARI

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

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Yazılım Mühendisliği II (BIL 306)

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

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

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

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

YAZILIM MİMARİLERİ DERSİ BİLGİSAYAR PROGRAMCILIĞI

Yazılım Mühendisliğinde İleri Konular (SE 650) Ders Detayları

SAĞLIK BİLGİ SİSTEMLERİNİN TARİHSEL GELİŞİMİ

Yazılım Gereksinimleri Mühendisliği (SE 221) Ders Detayları

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

Sistem Geliştirme Yaşam Döngüsü (The Systems Development Life Cycle) (SDLC)

Mühendislik ve Bilgisayar Bilimleri Fakültesi Yazýlým Mühendisliði

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

TEMEL BİLGİ TEKNOLOJİLERİ KULLANIMI

Gereksinim Mühendisliği (SE 560) Ders Detayları

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

TEKNİK ÇÖZÜMLERİ HAZIRLAMA REHBERİ

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

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

BİLGİ SİSTEMLERİNİN GELİŞTİRİLMESİ

1) Programlama dillerinin temel kavramlarını öğrenir. 1,2,4 1

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

PROGRAMLAMA TEMELLERİ

ALGORİTMA VE PROGRAMLAMA I

İleri Yazılım Proje Yönetimi (SE 552) Ders Detayları

Yazılım Çeşitleri. Uygulama Yazılımları. İşletim Sistemleri. Donanım

EGE Üniversitesi Mühendislik Fakültesi Bilgisayar Müh. Bölümü Öğretim Yılı Lisans Tezi Önerileri

Hafta 7 C Programlama Diline Giriş ve C Derleyicisi

PROJE YAZMAK BiGG SEA

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

Yapay Zeka (MECE 441) Ders Detayları

Bilgisayar Programlama (COMPE 102) Ders Detayları

NovaFortis Yazılım Danışmanlık. E-dönüşüm adaptörü

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

Bilgisayarlara ve Programlamaya Giriş (COMPE 101) Ders Detayları

Bilgisayarda Programlama. Temel Kavramlar

Bilgisayar Programlama (COMPE 102) Ders Detayları

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

BİLGİSAYAR ORGANİZASYONU

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

10.DERS Yazılım Gerçekleştirme

IOT NEDİR? Bölüm 1. Internet of Things ekosistemi altında donanım, programlama, veri tabanı, veri analizi gibi alt yapılar yer almaktadır.

Bilindiği üzere Bilgi Güvenliği Yönetim Sistemi, bilgi ve bilgi varlıklarının

BİT PROJELERİNDE KARŞILAŞILABİLEN OLASI RİSKLER

Yıldız Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü. 13 Kasım 2010

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

Bilgisayar Programlama. Giriş

5.DERS PROJEDE YÜRÜTMENİN PLANLANMASI

İleri Yazılım Proje Yönetimi (SE 552) Ders Detayları

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

Yazılım Kalite Yönetimi (SE 554) Ders Detayları

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

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

BİL1002 Bilgisayar Programlama PROF.DR.TOLGA ELBİR

Sistem Analizi ve Tasarımı (IE 503) Ders Detayları

Yazılım Mühendisliğinin Temelleri (SE 100) Ders Detayları

Mobil Uygulama Geliştirmeye Giriş (ISE 407) Ders Detayları

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

MAK 1005 Bilgisayar Programlamaya Giriş. BİLGİSAYARA GİRİŞ ve ALGORİTMA KAVRAMI

Yazılım İnşası ve Evrimi (SE 556) Ders Detayları

ELEKTRONİK NÜSHA. BASILMIŞ HALİ KONTROLSUZ KOPYADIR

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

YAZILIM MÜHENDİSLİĞİNİN TEMELLERİ. 7.Hafta GERÇEKLEŞTİRME

BLG 1306 Temel Bilgisayar Programlama

Bilgisayarlara ve Programlamaya Giriş (COMPE 101) Ders Detayları

Bilindiği üzere Bilgi Güvenliği Yönetim Sistemi, bilgi ve bilgi varlıklarının

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.

Uluslararası İktisat I (IKT 313) Ders Detayları

YAZILIM MÜHENDİSLİĞİNİN TEMELLERİ 8.Hafta. Yazılım Doğrulama ve Geçerleme

SİSTEM ANALİZİ VE TASARIMI

Yazılım Mimarisi (SE 322) Ders Detayları

Pardus Temel Seviye Kullanıcı Eğitimi. Sürüm Ağustos 2012 Pardus K Fatih Akıllı Tahta sürümüne göre hazırlanmıştır.

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

Günümüz bilgi toplumunda bilgisayar, her alanda kendine yer edinmiş ve insana, bir çok işlemde yardımcı olarak büyük kolaylık sağlamaktadır.

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

IDE4DB Veritabanı Geliştirme Platformu Bitirme Projesi Sunumu

Sistem Analizi ve Tasarımı

Transkript:

BIL 304 YAZILIM MÜHENDİSLİĞİ 2012-2013 Yrd Doç. Dr. Turgay İBRİKÇİ Ders Kitapları: Ian Sommerville, Software Engineering, 9th Ed., Pearson Addison Wesley, 2011, ISBN:0-321-21026-3 Roger S. Pressman, Software Engineering A Practitioner s Approach, 4th Ed., McGraw Hill, European International Edition, 2004 Diğer Kaynaklar: M. Erhan Sarıdoğan, PhD. Yazılım Mühendisliği, Papatya Yayıncılık, 2004 Başarı Değerlendirme Ara Sınavı %15 Sınav gününe kadarki konuları kapsar. Test olabilir Sadece beyinler açık, diğer her şey (kitap, not, telefon, ) kapalı. Araştırma ve Proje %20 Araştırma: Gereksinim, Tasarım, Programlama (Kodlama/Hata Ayıklayıcı) (Kullanıcı Önyüz), Test, Proje Yönetimi, Düzenleşim (Konfigürasyon)/Değişim Yönetimi konularında kullanılan araç ve gereçleri, - Araçlar hakkında bir rapor hazırla Rapor içeriği: Kullanılan araçların açıklaması (Ne), Kullanım alanları ve zamanları (Nerede ve Ne zaman), Kimler Tarafından ve Nasıl kullanılır, Fayda/Maliyet Analizi, Karşılaştırma Çeviri %25 Software Engineering, Sommerville, 9th Kitabından verilecek bir bölümün(chapter) Türkçeleştirilmesi Bu bölüm için Türkçe sunum dosyasının (ppt veya pptx) hazırlanması - http://www.softwareengineering-9.com/ Genel Sınav %50 Tüm konuları ve yaptığınız çeviri bölümünün sorularını da kapsar. Sadece beyinler açık, diğer her şey (kitap, not, telefon, ) kapalı. (TOPLAM %110) YAZILIM Yazılım Nedir? Yazılım Mühendisliği Nedir? Yazılım Mühendisliğine neden ihtiyaç duyulmuştur? Yazılım Nedir? Yazılım Tanımlanmış bir işlevi yerine getiren, Girdi ve Çıktıları olan, Herhangi bir donanım üzerinde çalışan, Bilgisayar programı ve programlarından oluşan Kullanım ve bakım kılavuzları gibi Dokumantasyona ihtiyacı olan bir ÜRÜNDÜR Mühendisliğe Temel Bir Bakış Mühendislik, teknik (veya sosyal) nesnelerin analizi, düzeni, yapısı, doğrulaması ve yönetimidir. 1

Mühendisliği yapılacak nesne ne olursa olsun, aşağıdaki sorular sorulmalı ve cevaplandırılmalıdır: Çözülecek problem nedir? Problemi çözmek için kullanılan nesnenin özellikleri nelerdir? Nesne (ve çözüm) nasıl gerçekleştirilecek? Nesne nasıl yapılandırılacaktır? Nesnenin düzenlenmesini ve yapısı esnasında meydana gelen hataları ortaya çıkarmak için hangi yaklaşım kullanılacak? Nesnenin kullanıcısı tarafından düzeltmeler, ayarlamalar ve güç arttırmaları talep edildiğinde, nesne uzun bir müddet için nasıl desteklenecektir? Yazılım ürünleri çok çeşitlidir... Bu nedenle, tüm yazılım mühendisliği projeleri için standart bir süreç yoktur AMA başarılı yazılım geliştirme projeleri tüm benzer sorunları ele alması gerekir. Proses adımları bu tüm yazılım projelerinin bir parçasını oluşturur. Yazılım Geliştirme İstatistikleri Tipik yazılım projesinin geliştirilmesi 1-2 yıl sürüyor ve en azından 500.000 kod satır içeriyor Tüm projelerin yalnız %70-80 i başarıyla tamamlanıyor Tüm geliştirme sürecinde her birey günde ortalama 10 satırdan az kod yazıyor Geliştirme süresince her 1000 kaynak kod satırında 50-60 hata bulunuyor (satışa sunulmuş sistemde hata sayısı 4/1000 e düşüyor) Yazılım Problemleri (Krizleri) Tasarlanan zamanın gerisinde kalma Bütçeyi aşma Düşük Kalite Güvenilir olmayan yazılım Kullanıcı taleplerinin karşılanmasında yetersizlik Sürekliliğinin sağlanmasındaki zorluk Yazılımlar Niye Zamanında Bitmez? Erken Yıllar 1950-1960 ilk bilgisayarlar, makine dili, 3-4 şirket Yazılımlar; kullanıcı ile birebir iletişimde bulunmayan, işlerin toplu olarak verilip, yalnızca yazıcı çıktılarının alındığı biçimde geliştirilmekte idi. Ayrıca, yazılımlar bu günkü gibi ürün tarzında değil, kuruluşa özel olarak geliştirilmekte idi. 2

İlk Bilgisayarlar İlk Bilgisayarlar İkinci Dönem 1960-1975 Ana çatı, çok kullanıcılı sistemler,veri tabanı yönetimi Çok kullanıcılı, gerçek zamanlı yazılımlar üretilmeye başlandı. VTYS önce yapılandırılmış dosya sistemleri ile ortaya çıktı. Yavaş yavaş ürün türü yazılımlar ortaya çıkmaya başladı. Üçüncü Dönem 1975-1990 Süper bilgisayarlar, Kişisel bilgisayarlar Açık sistem mimarisinin tanıtıldığı bu dönemde ürün bazlı yazılımlar oldukça yaygınlaştı. Kişisel bilgisayarlar yaygınlaşarak evlere girmeye başladı. Ağ yapısının gelişmesi ve güçlenmesiyle, dağıtılmış yazılım sistemleri geliştirilmeye başlandı. Yapay zeka teknolojisinin gelişmesiyle akıllı uygulama yazılımları üretilmeye başlandı Dördüncü Dönem 1990 - Yapay Zeka, Gömülü Sistemler, Paralel Sistemler, Yazılım Kaliteleri Uzman sistem yazılımları oldukça gelişmiş ve mikro- bilgisayarlar üzerinde yaygınlaşmıştır. Yazılımda Kalite olgusu önem kazanmış ve yazılım ile ilgili standartlar olgunlaşmaya başlamıştır. Yazılım üretimi ve ürünlerinin değerlendirilmesi amacıyla kurumlar oluşmaya başlamıştır. Programlama Dillerinin Seviyeleri 1.Kuşak Makine Dili 10101110 10010001 2. Kuşak Assembler 8085, Z80, 68000, vs 3.Kuşak Üst Seviye Diller Pascal Coral66 Basic Bildirimsel LISP Hope Prolog Nesneye Yönelik Diller Smalltalk, C++, Java 4. Kuşak Veri Yapısal CICS, SQL 5. Kuşak Yapay Zeka Ve Paralel Programlama CSP, OCCAM 3

100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% Sistem Harcamaları 1980 1982 1984 1986 1988 1990 1992 1994 1996 1998 2000 Yazılım Yazılım = Mantık + (algoritma) Veri + (test verisi, bilgi?) Belge + (dokümanlar) İnsan + (kullanıcı, geliştirici) Program (kod) Bilgisayar sisteminin donanım bileşenleri dışında kalan her şey Donanım Geliştirme Bakım ve İdame Yazılım Mantık, veri, belge, insan ve program bileşenlerinin belirli bir üretim amacına yönelik olarak bir araya getirilmesi, ve yönetilebilmesi için kullanılabilecek ve üretilen, yöntem, araç, bilgi ve belgelerin tümünü içerir. Mantık (algoritma) Bilgisayarlaştırılmak istenen işin mevcut mantığı yazılıma yansıtılmak durumundadır. Bu nedenle mantık (algoritma) bileşeni yazılımın en önemli bileşenlerinden biridir. Veri Her tür yazılım mutlaka bir veri üzerinde çalışmak durumundadır. Veri dış ortamdan alınabileceği gibi, yazılım içerisinde de üretilebilir. Yazılımın temel amacı veri yi bilgi ye dönüştürmektir. Belge (dokümanlar) Yazılım üretimi bir mühendislik disiplini gerektirir. Mühendislik çalışmalarında izlenen yol ya da kullanılan yaklaşımlar yazılım üretimi için de geçerlidir. Yazılım üretimi sırasında, bir çok aşamada yapılan ara üretimlere ait bilgiler (planlama, analiz, tasarım, gerçekleştirim, vb. bilgileri) belli bir düzende belgelenmelidirler. 4

İnsan (kullanıcı & geliştirici) İki boyutludur; yazılımı geliştirenler ve kullananlar. Günümüzde artık tek kişi ile yazılım geliştirmekten söz edilmemektedir. Yazılım üretimi için bir takım oluşturulmakta ve takımın uyumlu çalışabilmesi için çeşitli yöntemler geliştirilmektedir. Program (kod) Yazılımın ana çıktısı sonuçta bir bilgisayar programıdır. Program işletime alındıktan sonra bakım çalışmaları sürekli olarak gündeme gelir. Bunun iki temel nedeni: hiç bir program bütünüyle her olasılık göz önüne alınarak test edilemez. işletmeler doğaları gereği dinamik bir yapıya sahiptir ve zaman içerisinde sürekli olarak yeni istek ve gereksinimler ortaya çıkabilmektedir. Yazılım geliştirilir vs donanım üretilir. (fabrika ortamında seri üretim) Donanım bileşenleri dışarıdan temin edilebilir, ancak yazılımı oluşturan parçalar için bu çoğu zaman mümkün değildir (günümüzde yeniden kullanılabilir yazılım %15-25). Yazılım eskimez. Oysa, her donanımın belli bir ömrü vardır. Ömrünü tamamlayan donanım yenisi ile değiştirilir. Yazılımın eskimesi ortaya çıkabilecek yeni ihtiyaçları karşılayamaması, kullandığı teknolojinin eskimesi olarak tanımlanabilir. Yeni gereksinimler yazılıma ekler yaparak yansıtılır. Personel Kullanımı Donanım - doğru orantılı Yazılım - ters orantılı!! Yazılım en az donanım kadar önemlidir. Diyaliz makinelerinde kullanılan yazılımların 2000 yılı uyumsuzluğundan ötürü, bir çok diyaliz makinesi çalışamamış ve böbrek hastaları zor durumda kalmıştır. Japonya da telefon yazılımında ortaya çıkan bir yazılım hatası onbinlerce abonenin saatlerce telefon konuşması yapamamasına neden olmuştur. 5

Yazılım kopyalama ve donanım kopyalama farklıdır. Hata toleransı amacıyla, hayati olan bir donanımın sistemde bir kopyası daha bulundurulur ve sistemde biri arızalandığında diğeri çalışmayı devralabilir. Oysa, bir yazılımı sistemde iki ayrı bilgisayar üzerine kopyalamak oluşabilecek hatalara çözüm olmayacaktır. Belki, sisteme aynı işi yapan iki farklı eş yazılım yüklenmesi çözüm olabilir (kritik yazılım sistemleri-uçak avionics). Tipik Bir Yazılım Üretim Ortamı Değişik yetenekte bir çok personel (analist, programcı, test uzmanı, vs.) Yazılım çıktısı ile ilgilenen kullanıcılar Yeniliğe tepki gösteren kullanıcılar ve yöneticiler! Yeterince tanımlanmamış kullanıcı beklentileri Personel değişim oranının yüksekliği Yüksek eğitim maliyetleri Dışsal ve içsel kısıtlar (zaman, maliyet, işgücü, vs) Standart ve yöntem eksiklikleri Verimsiz kaynak kullanımı Mevcut yazılımlardaki kalitesizlik Yüksek üretim maliyeti Yazılım Mühendisliği IEEE Tanımı (1993) Yazılım Mühendisliği: Sistemli, düzenli, ölçülebilir bir yaklaşımın yazılım geliştirmede, yazılımın işlenilmesinde ve bakımında uygulanmasıdır. MÜHENDİSLİK EYLEMLERİNİN, (Geliştirme, işletme ve Bakım) disiplinli sistematik ve nicelikli bir şekilde yazılıma uygulanmasıdır. Yazılım Mühendisliği Yazılım üretiminin mühendislik yöntemleriyle yapılmasını öngören ve bu yönde; yöntem, araç teknik ve metodolojiler üreten bir disiplindir. Kaynakçalar serhatkilicarslan.com/wpcontent/uploads/2012/12/bolum-011.ppt M. Erhan Sarıdoğan, PhD. Yazılım Mühendisliği Roger S. Pressman, Software Engineering A Practitioner s Approach 6