YAZILIM GELİŞTİRME 1 1. Hafta BİLGİSAYAR SİSTEMLERİ Sistem Nedir? Bilgi Sistemleri Çevrimiçi Sistemler Gerçek Zamanlı Sistemler Bilgi Tabanlı Sistemler Veritabanı Yönetim Sistemleri Kişisel Bilgisayarlar İletişim Sistemleri Endüstriyel Sistemler Kontrol Sistemleri Sistem Yapıları 2. Hafta PROJE İLE İLGİLİ TEMEL TANIMLAR Proje Nedir? Bilişim Projesi Nedir? Yazılım Dünyasının Sorunu ve Çözüm Platformu Projelerin Ortaya Çıkış Nedenleri Projenin Tanımlanması- Onaylanması Proje Yönetiminin Bileşenleri Proje Yöneticisi, Nitelik, Görev ve Sorumlulukları Proje Ekibi ve Seçiminde Dikkat Edilecek Noktalar 2 3. Hafta YAZILIMDA KALİTENİN ANLAMI Kalite Faktörleri (Doğruluk, Uyarlanabilirlik, Sınanabilirlik, Güvenirlik, Bütünlük, Tekrar Kullanılabilirlik, Taşınabilirlik) Yazılımda Kalite Güvencesinin Amaçları Kalite Sistemi ve Kullanımı Kalite Yönetimi Dökümante Edilmiş Kalite Sistemi Proje Kalite Planı 4. Hafta YAZILIM GELİŞTİRME YÖNTEMBİLİMLERİ (STANDARTLAR) • • • • Tarihsel Gelişimi Standartlar nasıl ve neden ortaya çıkmıştır? ISO/IEC12207 standardının özellikleri IEEE/EIA 12207 3 5. Hafta PROJEDE YÜRÜTMENİN PLANLANMASI Planlamanın Önemi Yürütme Planında Olması Gerekenler İş Paketlerinin Tanımlanması Zaman Planlaması Kaynak ve Maliyet Planlaması Karşı Planlama 6. Hafta PROJENİN YÜRÜTÜLMESİ (PLANIN UYGULANMASI) Proje Yönetimi Araç ve Teknikleri (PERT/ CPM) GANTT ve Ara Hedef (Milestone)Çizgeleri Değerlendirme Toplantıları Risk Yönetimi, Araç ve Teknikleri Proje Dosyası 4 7. Hafta İSTERLER İsterler Belgesi (IEEE 830-1984 Yazılım İsterleri Anlatım Kılavuzu) İsterlerin Takip Edilmesi 8. Hafta TASARIM SÜRECİ Sistem Tasarımı Ayrıntılı Tasarım TASARIM METEDOJİLERİ Yourdan Yapısal Geliştirme Metodu Jackson Sistem Geliştirme Metodu Nesne Yönelimli Tasarım (Object Oriented Design) 9. Hafta YAZILIM GELİŞTİRME MODELLERİ 5 10. Hafta YAZILIM GERÇEKLEŞTİRME 11. Hafta YAZILIM TESTİ Test ve Kalite Güvencesi Test Metedojileri (Saydam ve Kara Kutu Testi) Test Stratejileri (Birim – Entegrasyon – Sistem – Onaylama Testleri ) Test Kontrolü ve Listesi (Plan – Yöntemler - Raporlar) 6 12. Hafta YAZILIM BAKIMI 13. Hafta KONFİGÜRASYON YÖNETİMİ Konfigürasyon Yönetimine Giren Yazılım Elemanları Konfigürasyon Kontrolü Değişiklik Kaydı Sürüm Kontrolü Konfigürasyon Yönetim Dökümanları 7 14. Hafta DEĞERLENDİRME ve DENETLEME Teknik Değerlendirme Yönetim Değerlendirmesi PROJENİN BİTİRİLMESİ ve HAYATA GEÇİRİLMESİ Sınama Kabul Proje Bitirme Raporu Projenin Kullanıcıya Teslimi (Eğitim – Çoğaltma – Yazılım Kurulumu) Projenin Hayata Geçirilmesi (Yazılım Desteği ve Gelişimi) 8 BPY Çalışma Grubu, Bilişim Projeleri Yönetim El Kitabı,TBD -1999 Erçelebi S., Taral S.,Yazılımda Kalite Güvencesi Kitabı,Tübitak MAM-1995 Gül K., Yazılımda Kalite, MÜ. TBMYO.Bitirme Projesi-2003 Hentzen W., The Software Developer’s Guide, Hentzenwerke Publishing-2002 Günesen E., Yazılım Profesyoneli 1, Bilge Adam-2005 Dr. Sarıdoğan E. M., Yazılım Mühendisliği, Papatya- 2008 9 1.DERS BİLGİSAYAR SİSTEMLERİ 10 BİLGİSAYAR SİSTEMLERİ 1. SİSTEM NEDİR? Dış etkilere göre düzenli bir şekilde etkileşen ya da birbirinden bağımsız olarak belirli bir yapı oluşturan, belirli bir hizmeti görmek üzere veri toplayan, işleyen veya üreten bir grup öğedir. Bu tanımı, soyut tanımlamalardan biyolojik yapılara ve örgütsel düzenlemelere kadar genişletmek mümkündür. Hangi alan içeresinde olursa olsun bunlar ya birer sistemdir yada herhangi bir sistemin alt sistemleridir. Günümüzdeki uzmanlık alanları genişlediği için, ihtiyaca göre daraltmak gerekir. Ve her birimi kendi içerisinde değerlendirme ihtiyacı duyulur. 11 BİLGİSAYAR SİSTEMLERİ 1.1. Sistem çeşitleri? Kendi içerisinde iyi ayrılır. Doğal sistemler : Canlı ve cansız olmak üzere ikiye ayrılır. Canlı sistemleri evrende bildiğimiz tüm canlıları içine alır. Örneğin sinir sistemi, dolaşım sitemi gibi. Cansız sistemlerde cansız varlıkların oluşturduğu sitemleri kapsar. Örneğin güneş sistemi, yıldız sistemi gibi İnsan yapısı sistemler: İnsanlar tarafından oluşturulan ve ortaya konulan sistemlerdir. Örneğin iktisat sistemi, eğitim sistemi gibi 12 BİLGİSAYAR SİSTEMLERİ 2. BİLGİ SİSTEMLERİ Var olan veya oluşturulan Bilgiyi işlemeye yönelik olarak kurulan sistemlere Bilgi Sistemi (Information System), bu alanda kullanılan teknolojiye de Bilgi Teknolojisi (Information Technology-IT) denilmektedir. Genel olarak bilgisayar tabanlı oluşturulan otomatik sistemlerin ortak özelliği bilgisayar donanımı, yazılım, veri, kullanım yöntemi ve insanın bir arada olmasıdır. 13 BİLGİSAYAR SİSTEMLERİ 3. ÇEVRİMİÇİ SİSTEMLER Çevrimiçi sistemler, dışarıdan alınan veriler işlenerek sonuçları gerekli yerlere iletilmesi olayıdır. Çevrim içi sistemler insan ile makine arası iletişim söz konusu olduğundan ve insan beyninin hızından dolayı insanmakine ara yüzünün etkinliği ve çalışma hızı oldukça önemlidir. Bankaların otomatik para çekme makineleri çevrimiçi sistemlere örnektir. 14 BİLGİSAYAR SİSTEMLERİ 4. GERÇEK ZAMANLI SİSTEMLER Dış dünya ile etkileşim sağlayan, olayları izleyip anında çözümleyen, karşılığında bir kontrol işlemi yapan ve bu işlemleri zaman kısıtlamalarına bağlı olarak gerçekleştiren sistemler “gerçek zamanlı” olarak adlandırılır. 15 BİLGİSAYAR SİSTEMLERİ Gerçek zamanlı bir sistemde zaman kısıtlaması vardır. Bu zaman kısıtlaması milisaniye yada mikro saniye cinsindendir. Örneğin bir banka sistemini ele alalım. Bu bankanın binlerce şubesinden milyonlarca işlem aynı anda veya mikro saniye aralıklarla meydana gelmektedir. Arada meydana gelen mikro saniyelik bir kopma sistemde ciddi veri kayıplarına sebep olacaktır. Kopmanın uzaması durumunda sistem çökmeyle karşı karşıya kalacaktır. 16 BİLGİSAYAR SİSTEMLERİ Gerçek zamanlı sistemlere örnek olarak şunları verebiliriz: Banka müşteri kontrol sistemi Uçaklarda ve gemilerde bulunan radar sistemleri Bir nükleer reaktörünün kalbindeki ısı algılayıcıları ve işlem kontrol düzeneklerini kontrol eden sistem Bir petrol platformundaki kuyunun basıncını denetleyen güvenlik sistemi Uçaklarda bulunan otomatik pilot sistemi Arabalarda bulunan fren sistemi 17 BİLGİSAYAR SİSTEMLERİ Tepki süresine göre gerçek zamanlı sistemler 3 gruba ayrılabilir: 5.1.Gevşek Gerçek Zamanlı (Soft real-time) Sistemler Belirli bir işi meydana getiren bir sistem, verilen süre içerisinde iş tamamlanmazsa sistemde çökme meydana gelmez yalnızca performansı düşer. Tepki süreleri bir saniyenin altındadır. Trafik kontrol sistemleri, telefon yönlendirme sistemleri ve askeri komuta kontrol merkezlerindeki bilgi sistemleri örnek verilebilir. 18 BİLGİSAYAR SİSTEMLERİ 5.2. Katı Gerçek Zamanlı (Hard real-time) Sistemler: Verilen sürede iş bitirilmek zorundadır. Anlık yük, öz kaynakların meşgul olması ya da arıza gibi nedenler hiçbir şekilde kabul edilemez. Sistemin başarması gereken bir görevi vardır; başaramaması durumunda tüm sistemin çökmesi söz konusudur. Kullanılan sistemlerin yaptığı işe göre de hayati tehlikeler meydana getirebilir. Bunlara örnek olarak uçakların otomatik pilot sistemleri ve Nükleer santral sistemleri, savaş uçaklarının erken uyarı sistemleri böyle sistemlerdir. 19 BİLGİSAYAR SİSTEMLERİ 5.3. Sıkı Gerçek Zamanlı (Firm real-time) Sistemler: Tepki süreleri birkaç milisaniye düzeyindedir. Hassas deniz ve hava trafik kontrol sistemleri, askeri komuta kontrol sistemleri, makine kontrol sistemleri örnek olarak verilebilir. 20 BİLGİSAYAR SİSTEMLERİ KARAR DESTEK SİSTEMLERİ Bilgisayarlar aptal bir makine olduğundan insanoğlu yönlendirmezse kendi başlarına bir işlem yapamaz ve olayın sonuçlarından karar çıkartamaz. Fakat insan durumlar arasında farklılığı ortaya koyup hesaplamalar yaparak karar almalarında yardımcı olurlar. Çalışma tabloları, istatistik çözümleme sistemleri, çeşitli alanlarda ön kestirim yazılımları, askeri strateji ile ilgili sistemler örnekler arasında gösterilebilir. 21 BİLGİSAYAR SİSTEMLERİ Karar destek sistemlerinin ortak özellikleri veri toplama, işleme ve sunmadır. Bu işlemleri yaparken de veriler üzerinde matematiksel ve istatistiksel algoritmalar çalıştırarak çeşitli sonuçlar elde eder. Karar destek sitemlerinin bir başka türü de üst düzey yöneticilerin kullandığı stratejik planlama sistemleridir. 22 BİLGİSAYAR SİSTEMLERİ 6. BİLGİ TABANLI SİSTEMLER Bilgi tabanlı sistemler çok miktarda veriyi kullanarak belirli bir görevi yerine getirirler. Bilgi tabanlı sistemlere uzman sitemlerde denilir. Belirli bir uzmanlık alanında çalışan insanlara yardımcılık yapabilecek kadar yüksek düzeyde veri sağlar. Belirsiz veya eksik verileri de belirli algoritmalara göre tamamlaya bilir. 23 BİLGİSAYAR SİSTEMLERİ Uzman sistemlerde veriler uzmanların önceden kazanmış olduğu verileri yorumlayarak sonuç çıkarabilir. Bir uzman sistem dar bir uygulama alanında gerçekten bir uzman olarak davranır. Örnek uygulama alanları arasında tıbbi tanı koyma, belirli bir cihazın arızasını bulma, meteorolojik tahminler yapma uygulamaları sayılabilir. 24 BİLGİSAYAR SİSTEMLERİ Uzman Sistemler: Geleneksel yöntemlerle sistem kontrolünde, sistemin matematiksel bir modeli çıkarılarak işleme başlanır. Fakat karmaşık sistemlerde matematiksel ifade zorlaşmaktadır bazen de imkânsız hale gelmektedir. Çünkü sistemi kontrol eden binlerce değişkeni sisteme sokmak ve bunların etkilerini sonuca yansıtmak gerekir. 25 BİLGİSAYAR SİSTEMLERİ Buna örnek olarak; füze atış düzeneği kurulmak istenirse ve hedefin tam istenildiği noktaya düşmesini sağlayabilmek için klasik yöntemlerle birçok değişkeni sisteme matematiksel olarak ifade etmemiz gerekir. (Havanın ısısı, rüzgâr yönü, atış yapıldığı yerin denizden yüksekliği, kullanılan maddenin cinsi ve ağırlığı vb.) Bulanık yöntemler sayesinde; uzmanların kurulacak sistem hakkında fikirlerini programa dâhil ederek daha kısa yoldan sonuca ulaşabiliriz. 26 BİLGİSAYAR SİSTEMLERİ Yani uzman sistemler; belirli bir alanda, şimdiye kadar uzman kişiler tarafından üstlenilen zor bir işlemi gerçekleştirebilmek için, sadece o alanla ilgili bilgilerle donatılmış ve problemlere o alanın uzman kişisinin getirdiği şekilde çözümler getirebilen, bilgi ve mantık çıkarımına dayanan bilgisayar programıdır. 27 BİLGİSAYAR SİSTEMLERİ 7. VERİTABANI YÖNETİM SİSTEMLERİ (VTYS) Veritabanı yönetim sistemleri (Database Manager System - DBMS) veritabanlarını oluşturmak, değiştirmek, veri işlemek ve veri çıkarmak için dizayn edilmiş yazılımlardır. Bir veri tabanı yönetim sistemi sayesinde birden fazla veritabanı kontrol edilebilir ve farklı yazılımların sistemle iletişimi sağlanabilir Farklı isimler altında da olsa aynı prensiple çalışan bir çok VTYS yazılımı mevcuttur. VTYS’ler sadece verinin tutulması ve yönetilmesi için kullanılmaz. Kullanıcılar arasındaki koordinasyonu ve kullanıcılara tanımlanan izinleri de kontrol eder. 28 BİLGİSAYAR SİSTEMLERİ Yaygın olarak kullanılan Veritabanı yönetim sistemleri MYSQL, Oracle ,MS SQL, MS Access dir. Uygulama Programları Veritabanı Kullanıcılar VTYS Veritabanı Yönetim Sistemleri 29 BİLGİSAYAR SİSTEMLERİ 7.1.Veritabanı yönetim sistemlerinin sağladığı yararlar: Veri Tekrarı (“Data Redundancy”) : Aynı verinin sürekli tekrarlanmasını önler. Aynı tablo içerisinde, farklı bilgisayarlarda vb..; Veri Tekrarı (“Data Redundancy”) azaltılır ya da yok edilir. Veri Tutarlılığı (“Data Consistency”): Bir yerde güncellenen veri başka yerde güncellenmeden kalabilir ve bu durum veri tutarsızlığına (“Data Inconsistency”) yol açar. VTYS’ler bu durumun önüne geçer. 30 BİLGİSAYAR SİSTEMLERİ Veri Paylaşımı / Eşzamanlılık (“Concurrency”): Veri tabanı yönetim sistemi (VTYS) kullanılmadığı durumlarda veriye sıralı erişim yapılır. Yanı birden çok kullanıcı aynı anda aynı veriye erişemez. Bir VTYS’de programın gücüne göre aynı veritabanlarına farklı kişiler erişim sağlayabilir. Veri Bütünlüğü (“Data Integrity”): Bir tablodan bir kayıt silinirse, ilgili kayıt diğer tüm tablolardan silinmelidir. Bu sağlandığı taktirde veri bütünlüğü sağlanmış olur. 31 BİLGİSAYAR SİSTEMLERİ Veri Güvenliği (“Data Security”): Verinin isteyerek ya da yanlış kullanım sonucu bozulmasını önlemek için çok sıkı mekanizmalar mevcuttur. Veri tabanına girmek için kullanıcı adı ve şifreyle korumanın yanı sıra kişiler sadece kendilerini ilgilendiren tabloları ya da tablo içinde belirli kolonları erişim sağlayabilir. Veri Bağımsızlığı (“Data Independence”): Programcı, kullandığı verilerin yapısı ve organizasyonu ile ilgilenmek durumunda değildir. Kullanıcı, karmaşık veri gösterimleri ve algoritmalarla ilgilenmeden yapmak istediğini kolayca yapabilir. 32 BİLGİSAYAR SİSTEMLERİ 8. KİŞİSEL BİLGİSAYARLAR Kişisel bilgisayarlar daha çok bireysel kullanım amaçlarına hizmet eden paket programları çalıştıran sistemlerdir. Kişisel masaüstü yayıncılık, internet erişimi, kişisel kayıtların tutulması ve eğlence bu bilgisayarların kullanım amaçları arasındadır. Kendi başlarına bir sistem olarak değerlendirmek pek doğru olmaz; ancak, çeşitli paket yazılımlar sayesinde günlük hayatı kolaylaştırıcı çok önemli ve çok yaygın araçlar halindedir. 33 BİLGİSAYAR SİSTEMLERİ 9. İLETİŞİM SİSTEMLERİ İletişim teknolojisinde donanım ve yazılım bir arada kullanılır. İletişim sistemlerinin amaçlarını şu şekilde sıralayabiliriz; Bilgiyi işlemek Bilgiyi dağıtmak Farklı iletişim ortamları üzerinden bilgiyi ulaşılır hale getirmek Verinin ses ve görüntü formatının aktarımında yazılıma ihtiyaç vardır. Ses ve görüntü gerçek zamanlı olarak sayısal hale getirilmekte, sıkıştırılarak uzak mesafelere çeşitli ortamlar üzerinden taşınmakta ve sonra tekrar çözülerek hizmete sunulmaktadır. 34 BİLGİSAYAR SİSTEMLERİ 10. ENDÜSTRİYEL SİSTEMLER Ticari amaçlı iş denetimi, bir sistemin denetimi, fabrika otomasyonu bilgisayar uygulamalarının önemli alanlarındandır. Günümüzde pek çok endüstriyel sistem çeşitli kurallara göre bilgi işleyen ve sonuçlarını çeşitli makinelere uygulayan sistemlerdir. 35 BİLGİSAYAR SİSTEMLERİ 11. KONTROL SİSTEMLERİ Çeşitli sistem ve alt sistemleri bir mantık ile birleştiren ve bir merkezden idare edilmesini sağlayan otomasyon sistemleridir. Sistem içerisinde bulunan algılayıcılarla veriler toplanır ve belirli algoritmalarla bu veriler değerlendirilerek bir sonuç çıkarılır. Çıkarılan sonuçlara göre de sistemin ilgili yeri kontrol altına alınır. 36 BİLGİSAYAR SİSTEMLERİ 12. SİSTEM YAPILARI Bilgisayar sistem yapıları donanım özellikleri ve yazılım açısından üç türe ayrılabilir; Ana(host) sistem, Hedef(target) sistem, Test sistemidir. 37 BİLGİSAYAR SİSTEMLERİ 12.1. Ana Sistem Ana sistemler yazılım geliştirmek üzere hazırlanmış sistemlerdir. Ana sistemlerde aşağıdaki özelliklere sahiptir; Yüksek bellek kapasitesine, Bilgi alışverişinde bulunabilmeleri için birbirlerine bağlanmasını sağlayan network sistemi, Bilgisayar donanımının yönetilebilmesi için uygun bir işletim sistemi, Yazılım kaynak kodunun yazıldığı metin düzenleyiciler, sözcük işlemciler, derleyiciler, hata ayıklayıcılar, kütüphaneler, yazılım geliştirme yardımcıları bulunur. 38 BİLGİSAYAR SİSTEMLERİ 12.2. Hedef Sistem Bilgisayar tabanlı sistemlerin sahada kullanmak üzere hazırlanmış şekline hedef (target) sistem denir. Hedef sistemler gömülü sistem şeklinde veya özel (dedicated) sistem şeklinde de olabilir. Özel sistemler, normal kişisel bilgisayarlar gibi giriş/çıkış üniteleri bulunan (klavye ve monitöre sahip) bir işletmenin yalnızca belirlenen amaç doğrultusunda kullanıldığı sistemlerdir. Bu tür sistemlerde üzerlerine özel olarak yüklenmiş yazılım çalışır. Örneğin bir bankaya ait ATM’de sadece bankacılık işlemleri yapılır. 39 BİLGİSAYAR SİSTEMLERİ 12.3. Test Sistemi Hedef sistem meydana gelmeden önce hedef sisteminin işlevsel olarak tam benzeri olup yazılım geliştirme sırasındaki testlerde kullanılır. Eğer hedef sistem çok özel donanımlar gerektiren ve yüksek maliyete sahip bir sistem ise hedef sistemin bütün özelliklerini taşıyan ve düşük maliyetli bilgisayarlar veya donanımlar kullanılır. Daha sonra sistem oluşturması bittiği zaman ihtiyaca yönelik hedef sistem oluşturulur. 40 BİLGİSAYAR SİSTEMLERİ 13. Sistem Bileşenleri Bir bilgisayarlı sistemi oluşturan ana bileşenler en temel şekliyle, Donanım Altyapı yazılım Uygulama yazılımlarından oluşur. Bu bileşenlerin ayrı ayrı temin edilmesi ya da geliştirilmesi sistemin çalışması anlamına gelmeyecektir. Sistemin çalıştırılabilmesi için mutlaka tümleştirme veya bütünleştirme(integration) yapılması, ek olarak da el ile yapılması gereken işlemlerin(manual operations) tanımlanması gereklidir. 41 BİLGİSAYAR SİSTEMLERİ 42 BİLGİSAYAR SİSTEMLERİ 14. BİLGİ İŞLEMENİN TEMELLERİ En temel bilgi işleme yöntemi tek bir bilgisayar işlemcisi üzerinden bir programın ardışık olarak yürütülmesi temeline dayanır. Günümüzdeki pek çok işletim sisteminde birden fazla programı aynı anda çalıştırabilmektedir. Giriş/çıkış işlerinin yoğun olduğu uygulamalarda, programlar işlemciyi daha az kullanmakta, giriş/çıkış birimlerinden gelen verilerin bitmesini beklemektedir. Bu bekleme süresinin boşa gitmesini önlemek için işlemci üzerinde aynı anda birden fazla program çalıştırmayı sağlayan işletim sistemleri geliştirilmiştir. 43 BİLGİSAYAR SİSTEMLERİ 15. YAZILIM MİMARİLERİ Bilgisayarların ilk ortaya çıktığı yıllarda yazılım yalnızca bir tek işlemci üzerinde çalışmaktaydı. Daha sonraları yapılan bilgisayarlar çok sayıda kişiye aynı anda hizmet verebilmeye özelliğine sahip olmuştur. Üretilen bu bilgisayarlarda birden fazla yazılım tek bir bilgisayarda zaman paylaşımlı olarak çalıştırılmasına olanak sağladı. 44 BİLGİSAYAR SİSTEMLERİ Ancak kullanıcı sayısı gün geçtikçe artması karşısında cevap veremez konuma geldi. Bundan dolayı paylaşılır diskler ve dizinlerden oluşan mimariler kullanılmaya başlandı. Bu mimarilerde yazılımlar kullanıcıların kullandıkları kişisel bilgisayarlarda çalışmakta ve bir ağ üzerinden ortak eriştikleri dosyalar vasıtasıyla paylaşılmaktadır. Günümüze gelindiği zaman daha esnek ve yüksek başarı sağlayan çeşitli mimariler ortaya konulmuştur. 45