YAZILIM MODELLEME VE TASARIM



Benzer belgeler
Yazılım Projelerinde Başarısızlık

Yazılım Mühendisliği 1

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

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

Yazılım Örüntüleri (SE 461) Ders Detayları

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

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

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

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

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

Sistem ve Yazılım Nedir?

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

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

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

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

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

Akış. Atik Yazılım Geliştirme Tanımı ve Kavramlar Tarihi Metotları Dünyada Atik Yazılım Geliştirme Örnekleri Sonuç BİL 588 2

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

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

Nesneye Dayalı Analiz ve Tasarım (SE 321) Ders Detayları

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

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

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

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

PROJE İZLEME VE DEĞERLENDİRME RAPORLARI ŞABLONU REHBERİ

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

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

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

SİSTEM ANALİZİ VE TASARIMI

Bilgisayarda Programlama. Temel Kavramlar

Giriş: Temel Adımlar YAZILIM GELİŞTİRME YAŞAM DÖNGÜSÜ. Belirtim Yöntemleri. Belirtim Yöntemleri

MerSis. Bilgi Teknolojileri Yönetimi Danışmanlık Hizmetleri

YAPIM YÖNETİMİ - EKONOMİSİ 03. İşler veya eylemler olası olan zaman ve mekanının tamamını kullanacaktır.

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

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

Öğretim planındaki AKTS Ulusal Kredi

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

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

Hızlı Uygulama Geliştirme (SE 340) Ders Detayları

Başarılar Dilerim. SORULAR

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

Yazılım Testine Bakış. Defne Şarlıoğlu

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

design)1980li ve 1990lıyıllar Birleştirilmiş Modelleme Dili (Unified Modeling Language-(UML) yazılım geliştirme araçlarının temelidir.

EKAP Elektronik Kamu Alımları Platformu

belirli bir süre içinde, belirli bir bütçe ile, net olarak tanımlanan hedeflere ulaşmaya yönelik olarak Hafta1 Giriş Serkan Gürsoy

SİSTEM MÜHENDİSLİĞİ TASARIMIN SENTEZLENMESİ II

ISO/IEC BİLGİ TEKNOLOJİSİ - HİZMET YÖNETİMİ BAŞ DENETÇİ EĞİTİMİ. Terimler Ve Tarifler.

WEB PROJESİ YÖNETİMİ. Belli bir süre içerisinde, belli bir bütçe ile belirlenen hedeflere ulaşmak için uygulanan metodolojik süreçtir.

T. C. KAMU İHALE KURUMU

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

SÜRDÜRÜLEBİLİR İNŞAAT CE İngilizce. Lisans. Kısıtlı Seçmeli. Yard. Doç. Dr. Özgür Köylüoğlu DERS BİLGİLERİ

Bilgi Sistemleri Tasarımı (SE 503) Ders Detayları

Karar Analizi (IE 418) Ders Detayları

Öğrenim Kazanımları Bu programı başarı ile tamamlayan öğrenci;

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

1: Anlatım, 2: Soru-Cevap, 3: Lab, 4: Örnek vaka incelemesi

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS. Yazılım Mühendisliği BIL

Dersin Yürütülmesi Hakkında

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

İSTANBUL ÜNİVERSİTESİ İç Denetim Birimi Başkanlığı İÇ DENETİM PROSEDÜRÜ

11.DERS Yazılım Testi

MEHMET ŞİRİN DENETİM STANDARTLARI DAİRESİ BAŞKANI

BIM Building Information Modeling Teknolojilerine Bakış. Tarcan Kiper Şubat 2012

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

KIRMACI ENDÜSTRİ IV.0 DEĞİŞİM SÜRECİ DANIŞMANLIĞI İŞ PLANI. KIRMACI MÜHENDİSLİK DANIŞMANLIK TİC. 1

Doküman No:ITP 16.1 Revizyon No: 01 Tarih: Sayfa No: 1/5 KALİTE SİSTEM PROSEDÜRLERİ PROJE YÖNETİMİ PROSEDÜRÜ

Yazılım Mühendisliği Temelleri

Yazılım Mimari Tasarımından Yazılım Geliştirme Çatısının Üretilmesinde Model Güdümlü Bir Yaklaşım

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

Varlık davranış modeli: Bu aşama her entity ye etki eden durumların tanımlandığı, modellendiği ve dokümante edildiği süreçtir.

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

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

Konfigürasyon Yönetimi

BİLGİSAYAR MÜHENDİSLİĞİNE GİRİŞ

Hizmet Odaklı Mimariye Dayanan İş Süreçleri Yönetimi Sistemi

1-PROJE YÖNETİMİNE GİRİŞ

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

TEKNOLOJĠ PLANLAMASI. Başkent Üniversitesi

3- PROJENIN BAŞLATıLMASı: PROJE KAPSAM YÖNETIMI

Sedona. Eğitim Kataloğu

4. YAZILIM PROJELERİ YARIŞMASI REHBERİ ÖNSÖZ

ALGORİTMA VE PROGRAMLAMA I

2- PROJE YÖNETİMİ BİLGİ ALANLARI Y R D. D O Ç. D R. K E N A N G E N Ç O L

Internet Programlama (ISE 311) Ders Detayları

Yazılım profesyonelleri için önemli olan yetkinlikler anketi Survey

Kullanım Durumu Diyagramları (Use-case Diyagramları)

Uzman Sistemler (IE 416) Ders Detayları

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

İleri Veritabanları (COMPE 502) Ders Detayları

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

Sedona. Nisan 2013 Eğitim Kataloğu

Fırat Üniversitesi Teknoloji Fakültesi Yazılım Mühendisliği. YAZILIM MÜHENDİSLİĞİNİN TEMELLERİ-Hafta 2

ISO 9001:2015 GEÇİŞ KILAVUZU

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

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS. Bilgisayarlı Kontrol Sistemleri II BIL

Chapter 8 Yazılım Testi. Lecture 1. Chapter 8 Software testing

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

Radar Sistemleri (EE 404) Ders Detayları

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

Transkript:

YAZILIM MODELLEME VE TASARIM «Yazılım Projeleri» Özer Çelik Matematik-Bilgisayar Bölümü

Ders Bilgileri Not Değerlendirmesi: Pop-Up Quiz/Ödev : % 10 Ara Sınav : % 20 Final : % 30 Dönem Projesi : % 40 Dönem Projesi: Piyasa kullanılan veya fikir aşamada olan herhangi bir yazılımın modelleme ve tasarımı gerçekleştirilecek. Derse Katılım Derse katılım zorunludur.

Yazılım Nedir? Yazılım, değişik ve çeşitli görevler yapma amaçlı tasarlanmış elektronik aygıtların birbirleriyle haberleşebilmesini ve uyumunu sağlayarak görevlerini ya da kullanılabilirliklerini geliştirmeye yarayan makina komutlarıdır.

Yazılımın Gelişimi 1940 lar: Elle yazılan basit makine kodları 1950 ler: Üretkenlik ve kaliteyi arttırmak için yazılan makro birleştiriciler ve yorumlayıcılar İlk kuşak derleyiciler 1960 lar: Üretkenlik ve kaliteyi arttırmak için yazılan ikinci kuşak derleyiciler Yazılım Mühendisliği NATO Konferansı, 1968: Yazılım mühendisliği kavramının tartışılması İlk büyük yazılım projeleri (1000 programcı) Büyük is alanları için ana-bilgisayarlar ve ticari yazılımlar 1970 ler: UNIX ve kod kütüphaneleri için araçlar Mini-bilgisayarlar ve küçük is alanları için yazılımlar 1980 ler: Kişisel bilgisayarlar ve is istasyonları Ticari yazılımlar 1990 lar: Avuç-içi bilgisayarlar ve web teknolojileri Teknolojideki gelişmeler sebebiyle düsen fiyatlar ve karmaşıklaşan is talepleri 2000 ler: Globalleşme sebebiyle artan talepler Bütünleşik geliştirme ortamları

Yazılım Geliştirme Bir programlama dilini iyi bilmek kaliteli bir yazlım geliştirmek için yeterli değildir. Programlama(kodlama) zevkli bir konudur ama kaliteli bir yazılım sistemi oluşturmak daha karmaşık ve zor bir iştir. (Philippe Kruchten) İyi bir yazılım oluşturabilmek için uygun yazılım geliştirme tekniklerini de bilmek ve uygulamak gerekiyor. Yazılımların sürekli geliştirilmesi gerekiyor. Yazılımda esneklik çok önemli. Yazılımlar takımlar haline yazılıyor. Takım büyüdükçe yazılım karmaşıklık artıyor.

Yazılım Projelerinde Başarısızlık Yazılım projesi Tamamlanmadan iptal edilirse, Tasarlanmış bütçesini aşarsa, Öngörülen tamamlanma süresinden daha uzun sürerse, Önceden belirlenen özellik ve işlevlerin daha azını karşılarsa Başarısız olmuş demektir. Yukarıdaki ilk maddenin gerçekleşmesi mutlak başarısızlık,diğerleri ise göreceli başarısızlık olarak da adlandırılır.

Yazılım Projelerinde Başarısızlık Yazılım dünyasınca kullanılmakta olan diğer terimler şunlardır; Çatırtı Modu : Son derece sıkı programa sahip projeler Ölüm Marşı :Neredeyse olanaksız programa sahip projeler Kaçak Proje : İptal olmuş ya da iptale yakın projeler

Yazılım Projelerinde Başarısızlık Başarı ve başarısızlık örüntüleri cinsinden, yazılım dünyasını ilgilendiren en önemli unsurlar ; Yazılım projelerinin öngörülen teslim tarihleri ve zamanında pazara yetiştirme düşüncesi veya kaygısı, Yazılım uygulamasını geliştirme maliyeti ve gereksinim duyulan kaynaklar, Yazılımın teslimindeki kalite ve güvenirlik düzeyi, Yazılımın işleyişindeki öğrenme ve kullanım kolaylığı, Problem olduğunda müşteri desteği ve hizmet seviyesi, Uygulamanın olgunluk kazanması sırasında değişiklik ve sürdürülebilirlik kolaylıkları

Yazılım Projelerinde Başarısızlık Standish Group tarafından yayınlanan 27 Nisan 2009 tarihli rapora göre; Planlanan zaman ve bütçede, tanımlanmış özellikleri ve işlevleriyle bitirilebilmiş olan projelerin oranının %32, Geç, bütçesini aşmış, tanımlanmış özellikleri ve işlevleri sağlamayacak şekilde tamamlanmış projelerin oranı %44, Tamamlanmadan iptal edilmiş veya tamamlandığı halde uygulamaya dahi alınmamış projelerin oranı ise %24 Başarılı 32% Büyük Miktar Değişiklikten Sonra Kullanılan 44% Başarısız 24%

Yazılım Felaketlerinin Nedenleri Teknik Nedenler Etkili olmayan yazılım teknolojilerinin kullanılması Uygun olmayan yazılım araçlarının seçimi İş süreçlerinin belirlenmemesi Çözümlemenin (analysis) uygun bir şekilde gerçekleştirilmemesi Geçmişe yönelik yazılım ölçüm verilerinin bulunmaması Etkin bir mimarinin seçilmemesi Etkin geliştirme yöntemlerinin kullanılmaması Tasarım gözden geçirmelerinin (design review) yapılmaması Kod denetimlerinin (code inspection) yapılmaması

Yazılım Felaketlerinin Nedenleri Teknik Nedenlerin Devamı Uygun olmayan, disiplinsiz sınama (testing) yöntemlerinin uygulanması Belirtim (specification) ve tasarımın el ile yapılması Düzenleşim (configuration) denetiminin uygulanmaması Kullanıcı gereksinimlerinin belirsizliği veya %30 dan daha fazla değişmesi Uygun programlama dillerinin kullanılmaması Aşırı ve ölçülmemiş karmaşıklık düzeyi Yeniden kullanılabilir bileşenlerin kullanılmaması Uygun veritabanı planlamalarının ve tasarımının yapılmaması Yeni teknolojileri kullanmaya geçişin birdenbire olması, deneyim eksikliği

Yazılım Felaketlerinin Nedenleri Yönetimsel Nedenler Üst yönetim, pazarlama bölümü veya proje yöneticisi tarafından saflıkla verilen sözler ve diğer politik baskılar Gerçekçi olmayan kestirimlere bağlı olarak çok yoğun bir zaman baskısı Büyüklük, işgücü ve maliyet kestirimlerinin üst yönetimce geri çevrilmesi Üst yönetimin bilgisizliği ve ilgisizliği Proje yönetimi uygulamalarındaki yanlışlıklar Proje amacının ve kapsamının açık bir şekilde belirlenmemesi Proje yöneticisinin yetersizliği Niteliksiz teknik personelin çalıştırılması Etkin olmayan geliştirme süreçlerinin bulunması Geliştirme ekibinde deneyimli personelin yer almaması

Yazılım Felaketlerinin Nedenleri Yönetimsel Nedenlerin Devamı Otomatik kestirim ve planlama araçlarının kullanılmaması Otomatik proje gelişim izleme yöntemlerinin kullanılmaması Etkin olmayan proje değişim yönetimi usullerinin kullanılması Kalite kontrol yaklaşımlarının az ya da hiç kullanılmaması İşe uygun personel, personele uygun iş ölçütünün göz ardı edilmesi Yapılan yazılım proje yönetim planına uyulmaması Uygun olmayan metriklerin toplanması veya hiç toplanmaması Bazı kritik görevlerde (kalite güvence, sınama, planlama, kestirim, veritabanı yöneticisi, tasarım, değişim kontrolü, hata ayıklama, v.b.) uzmanlar yerine sıradan teknik personelin kullanılması

Yazılım Felaketlerinin Nedenleri Yönetimsel Nedenlerin Devamı Başarısızlık uyarı imlemlerinin bulunmaması ya da geç fark edilmesi Belgelemenin (documentation) uygun bir şekilde yapılmaması Geliştirme ekibinin iş süreçleri ve sorun sahası üzerine bilgilendirilmemeleri Pazarın küreselleşmesinden kaynaklanan yoğun çekişme ortamı Yeni teknolojilerin üretilmesinden kaynaklanan çekişme ortamı Yazılım/donanım sağlayıcılarının zayıf performans sergilemeleri Beklenmedik ve öngörülemeyen bunalımlar

Yazılım Felaketlerinin Nedenleri Sosyal Nedenler Takım içi iletişim ortamının zayıf olması Geliştirici personelin çalışma ortamının uygunsuz olması Alıcı ile zayıf bağlantı kurulması sonucu girdilerinin alınamaması Alıcıların gerçekçi olmayan beklentileri Alıcı ve diğer paydaşlar arasında şiddetli sürtüşmelerin yaşanması Deneyimsizlikten kaynaklanan iyimserlik Deneyimsiz yönetim ekibi Deneyimsiz teknik ekip Deneyimsiz müşteri ile çalışılması Teknolojik gelişmelerden habersiz olunması

Yazılım Felaketlerinin Nedenleri Sosyal Nedenlerin Devamı Şirket politikalarında ayrımcı uygulamaların bulunması Yönetimin soğukluğundan kaynaklanan mesafeli iletişim Zayıf rapor verme yapısı Teknik personelin sürekli zaman baskısı altında çalışması Bölüm ve birimler arası iletişim ve desteğin olmaması Karmaşık bağımlılıkların mevcut olması Hırsa bağlı yeni yeni hedeflerin ortaya konması İşsiz kalma korkusu Öç alma duygusu ve düşmanca tavır

Yazılım Felaketlerinin Nedenleri Diğer Nedenler Coğrafi olarak birbirinden uzak ve birden fazla şehir/ülke için geliştirilecek projeler Proje sözleşmesinin dağıtık ve birden fazla alt-yüklenicinin sorumlu olduğu projeler Hem yazılım hem de donanımın eşzamanlı olarak birlikte geliştirildiği hibrid projeler Gerçek zamanlılık kısıtlayıcısının en yoğun olduğu projeler (uzay, havacılık, güdümlü mermi, v.b.) Yasal kısıtlayıcılar altında geliştirilen projeler İhaleyi alma kriterinin en düşük fiyat teklifi olduğu sözleşmeli projeler

Yazılım Felaketlerinin Nedenleri Diğer Nedenler Parasal olarak güçsüz, riskli fona sahip şirketlerin projeleri Köklü personel indirimine giden veya kilit personelini işten çıkaran şirketlerin yönettiği projeler Personel aşınma oranı %40 ı aşan projeler Personel artışı ayda %10 dan fazla olan projeler Teknik personelin genel becerilerinin dışındaki alanlarda yürütülen projeler Yönetim ekibinin genel deneyimlerinin dışındaki alanlarda yürütülen projeler Teknik personel değişim hızının yüksek olduğu projeler

Yazılım Felaketlerinin Nedenleri

Maliyetler Yazılım Geliştirme Aşamalarının Maliyetleri İsteklerin Çözümlenmesi : %3 Tasarım: %8 Kodlama (Programlama): %7 Sınama: %15 Bakım: %67 Hataların Giderilme Maliyetleri İsteklerin Çözümlenmesi : 1 Birim Tasarım: 1.5-2 Birim Kodlama : 5 10 Birim Sınama:10 15 Birim Bakım:15 100 Birim

Yazılım Geliştirme Yaşam Döngüsü Yazılımın hem üretim, hem de kullanım süreci boyunca geçirdiği tüm aşamalar yazılım geliştirme yaşam döngüsü olarak tanımlanır. Yazılım işlevleri ile ilgili gereksinimler sürekli olarak değiştiği ve genişlediği için, söz konusu aşamalar sürekli bir döngü biçiminde ele alınır. Döngü içerisinde her hangi bir aşamada geriye dönmek ve tekrar ilerlemek söz konusudur. Yazılım yaşam döngüsü tek yönlü ve doğrusal değildir

Yazılım Geliştirme Temel Aşamaları 1-Planlama Yazılım yaşam döngüsünün başlangıç noktasıdır. Temel ihtiyaçların belirlendiği, proje için fizibilite çalışmalarının yapıldığı ve proje planlamasının oluşturulduğu dönemdir 2-Analiz Yazılım yaşam döngüsünün en önemli aşamalarından biri olan analiz sürecinde projenin tüm işlevleri detaylı olarak belirlenir. Bu belirtimlere bağlı olarak sistem gereksinimleri netleşir ve buna bağlı talepler hazırlanır. Kısaca, analiz sürecinde projenin tüm detayları ortaya çıkartılır.

Yazılım Geliştirme Temel Aşamaları 3.Tasarım Analiz çalışması sonucu ortaya çıkartılan proje detayları baz alınarak proje gerekli durumlarda bileşenlerine ayrılırlar, proje içerisinde yapılacak işlemler adım adım belirlenir ve proje planı oluşturulur. Proje planının yanı sıra tasarım dokümanı da oluşturulmalıdır. Tasarım dokümanında; proje bilgileri (amaç, kapsam vs), sistem tasarım bilgileri, tasarım detayları, veri modeli, kullanıcı ara yüz tasarımları, UML Diagramları, vb. Tasarım dokümanının amacı, yazılım geliştiricinin yazılımını geliştirirken referans alacağı ve proje sürecinde/sonrasında projeye dahil olacak yeni yazılımcıların projeyi daha kolay anlayabilmesini sağlayacak teknik bir dokümantasyona sahip olması gerekliliğidir.

Yazılım Geliştirme Temel Aşamaları 4.Üretim Planlama, analiz ve tasarımı tamamlanıp yapılacak işlemleri detaylı olarak belirlenen projenin geliştirme aşamasıdır. Bu noktadan sonra herhangi bir analiz işlemi yapılmamalı, proje, tasarım aşamasında oluşturulan planlama çerçevesinde ilerlemelidir. Üretim aşamasında yazılımcı alfa testlerini de gerçekleştirmektedir. 5.Test Yazılım geliştirilmesi tamamladıktan sonra müşteriye sunmadan önce, test ekibi tarafından beta testlerinin gerçekleştirilmesi aşamasıdır. Bu aşama tamamlandıktan ve varsa hatalar giderildikten sonra proje yayına alınmaktadır.

Yazılım Geliştirme Temel Aşamaları 6.Bakım Proje yayına alındıktan sonra oluşabilecek hataların giderilmesi, yazılımın iyileştirilmesi ve yeni işlevlerin eklenmesi süreçleridir. Bu süreç zarfında kullanıcılardan gelen bilgiler doğrultusunda bu istekler gerçekleştirilmektedir.

Yazılım Geliştirme Yaşam Döngüsü

SORULARINIZ

Kaynak Craig Larman, Applying UML and Patterns, An Introduction to OOA/D and Iterative Development, 3/e, 2005. Eric & Elisabeth Freeman: Head First Design Patterns, O REILLY, 2004 D.Rehber - Yazılım Projelerinde Başarısızlık F.Buzlucu - Yazılım Modelleme ve Tasarımı ders notları H.Karacam Yazılım Proje Yönetimi ders notları *Ders kapsamında kullanılan kaynaklar