BM208- Nesneye Dayalı Analiz ve Tasarım Öğr. Grv. Aybike ŞİMŞEK
Sistem Analizi ve Tasarımı Sistem analizi ve tasarımının aşağıdaki temel aşamalarla gerçekleştiği söylenebilir. Sistemin planlanması Sistemin analizi Sistem tasarımı Sistemin uygulanması Sistemin bakımı 2
Sistem Kavramı 3
Sistem Kavramı (dvm) 4
5
Sistem Bileşenleri 6
Öğeler 7
İlişkiler 8
Amaçlar 9
Sistemin Temel Bileşenleri 10
Okul Sistem Şeması 11
Okul Sistem Şeması (dvm) 12
Sistemin Temel Bileşenleri 13
Sistemin Temel Bileşenleri (dvm) 14
Sistemin Temel Bileşenleri (dvm) 15
Sistemin Temel Bileşenleri (dvm) 16
Sistem Hiyerarşisi 17
Bir Sistem Örneği Üretim-Kontrol-Planlama 18
Sistemlerin Sınıflandırması 19
Açık ve Kapalı Sistemler 20
Canlı ve Cansız Sistemler 21
Doğal ve İnsan Yapısı Sistemler 22
Statik ve Dinamik Sistemler Örneğin tüplü veya LCD televizyon ile akıllı televizyonlar 23
Soyut ve Somut Sistemler 24
Basit ve Karmaşık Sistemler 25
Sistem Modelleri 26
Sistem Modelleri (dvm) 27
28
Sistem Modelleri (dvm) 29
Gannt Şeması 30
31
Sistem Modelleri (dvm) 32
33
Sistem Modelleri (dvm) 34
35
36
Temel Kavramlar Yazılım Toplumdaki herkes tarafından kullanılabilir Ticaret, kültür ve günlük yaşantılarımızda yaygın olarak kullanılmaktadır. Program Bilgisayar programları bilgisayara komut veren ve belli durumlarda belli şekilde çalışmasını düzenleyen, işlemleri sıraya koyan, belli yapılar oluşturabilen komut dizilimleridir. Programcılar Sabırlı Yaratıcı ve araştırmacı Yeniliklere açık Teknolojiyi takip eden Analitik düşünebilen Analiz yapabilen, sonuçlar çıkarabilen Mantık kurabilen Yazılım kullanıcıları Sadece yazılım ürünlerinin ihtiyaçlarını karşılamaları ve görevlerini kolaylaştırmaları ile ilgilenirler. 37
Programcılar İçin Önemli Sorular Yazılımların bitmesi neden bu kadar uzun sürüyor? Geliştirme maliyetleri neden çok yüksek? Yazılımı müşteriye vermeden önce neden tüm hataları bulamıyoruz? Yazılım geliştirilirken ilerlemenin ölçülmesinde neden zorluk yaşıyoruz? 38
Yazılım Nedir? Bir sistemin donanım bileşenleri dışında kalan her şey Yazılım yalnızca bilgisayar programı ya da programlar kümesi değildir Yazılım bileşenleri: Mantık Veri Belge İnsan (müşteri, geliştirici vs.) Program Yazılım; bileşenlerinin bir amaca yönelik olarak bir araya getirilmesi, yönetilmesi için kullanılacak yöntem, araç, bilgi ve belgelerin tümünü içerir. 39
Yazılım - Günümüz Yazılımlar Oldukça büyük ve karmaşık Uzun süreler zarfında birbirleriyle işbirliği içinde çalışan takımlar tarafından geliştiriliyorlar. Geliştiriciler artık geliştirilen yazılımın son kullanıcısı değiller. Sistemin asıl kullanıcıların alanla ilgili uzman bilgileri yok. 40
Bilgisayar Programı Nedir? Bilgisayarların veri işlemek, bir işlemi gerçekleştirme ya da mantıksal bir problemi çözmek için takip ettikleri; bir programlama dilinde (C, C++, Java, ) yazılmış komutlar grubu 41
Yazılım ve Program Arasındaki Fark Nedir? Program kendi içinde bir bütün olan ve belirli bir işi yerine getiren algoritmik bir ifadedir. Yazılım bir veya birden çok programın, verinin, dökümanın belirli bir amaca yönelik olarak bir araya gelmesinden oluşan yapıdır. 42
Yazılım Üretiminde Hataların Dağılımı Alanı Yüzdesi Mantıksal Tasarım %20 İşlevsel Tasarım %15 Kodlama %30 Belgeleme ve diğerleri %35 43
Yazılım Üretiminde Hata Düzeltme Maliyetleri Alanı Maliyetleri Çözümleme 1 Tasarım 5 Kodlama 10 Test 25 Kabul Testi 50 İşletim 100 44
Yazılım Çeşitleri Genel Pek çok farklı müşteriye satılmak üzere üretilmiş hazır ticari ürünler (CommercialOffTheShelf COTS) Ismarlama/İsteğe özelleştirilmiş Tek bir müşteri için onun belirtimleri (ihtiyaçları) doğrultusunda hazırlanmış 45
Yazılım Uygulama Alanları Sistem yazılımları Uygulama yazılımları Mühendislik ya da bilimsel yazılımlar Gömülü yazılımlar Ürün hattı yazılımları (eğlence yazılımları da dahil) Web-uygulamaları Yapay zeka yazılımları Kablosuz Ağ Yazılımları Açık Kaynak Yazılımlar Veri Madenciliği 46
Çözümleyici Kimdir? Sahadaki problemi anlar (Analiz) Modeller (Tasarım) Bir başka ifade ile sahadaki problemi kodlanmaya hazır hale getirir. Programcı programı kodlar. 47
Kavramlar arasındaki ilişki Aşağıdaki kavramları tipik bir sistem içerisinde öneme ve boyuta göre sıraya koyunuz: Donanım Yazılım BS (Bilgi Sistemi/ InformationSystem) BT (Bilgi Teknolojileri / InformationTechnology) 48
BS Nedir? insan, veri, süreçler, bilginin sunumu ve iş ortamındaki günlük işlemlerin yöneticiler ve kullanıcıların karar verme ihtiyaçlarını ve problem çözmelerini destekleyen bilgi teknolojilerinin düzenlenmesidir. 49
BT Nedir? Bilgisayar teknolojisinin (donanım ve yazılım) telekomünikasyon/iletişim teknolojisi ile birleşimini tanımlayan güncel bir terimdir. 50
Kavramlar arasındaki ilişki (dvm) Aşağıdaki kavramları tipik bir sistem içerisinde öneme ve boyuta göre tekrar sıraya koyunuz: Donanım Yazılım BS (Bilgi Sistemi/ InformationSystem) BT (Bilgi Teknolojileri / InformationTechnology) 51
Kavramlar arasındaki ilişki (dvm) BS>> BT BT = Donanım + Yazılım BS = İnsan + Veri + Süreçler + Bilginin Sunumu + Donanım + Yazılım BT 52
Korku Hikayeleri Denver Havaalanı otomatik bagaj sistemi Hava Trafik Kontrol Amerikan Donanma Finans Sistemi Comanche Helikopterleri Açılış 2 yıl gecikti 27 milyon $ maliyet aşımı 360 milyon $ geç hizmete girme maliyeti 8 yıl gecikme 5.6 milyon $ maliyet aşımı 4 sistemden 2 si ve isterlerin % 48 i iptal edildi. 9 yıl sonunda iptal edildi 230 milyon $ maliyet aşımı 10 yıl gecikme 34.4 milyon $ maliyet aşımı İsterlerin % 74 ü iptal edildi. 53
Korku Hikayeleri (dvm) 54
Nedenleri? Para ya da teknoloji esikliğinden değil pek çoğu başarısız proje yönetimi ve yetersiz sistem analizine dayanıyor. Günümüzde büyük ölçekli yazlım geliştirme işleri daha çok karmaşık ve dağıtık ortamlarda gerçekleştiriliyor. Uygulamalar, kullanıcılar, müşteri istekleri, kanunlar, iç politikalar, bütçe, kurum bağımlılıkları sürekli olarak değişmekte. 55
Yazılım Mitleri -1 Yöneticiler ya da teknik kişiler için ciddi problemler oluşturan yanıltıcı yaklaşımlar Yönetici Mitleri Yazılım geliştirme ile ilgili pek çok standart ve prosedür içeren kılavuzlarımız var. Bu takımıma gerekli her şeyi sağlamıyor mu? Eğer planda geri kalırsak, yetişmek için daha fazla programcı ekleyebiliriz Eğer işi başkasına yaptıracaksam (outsource), rahat edip diğer şirketin yapmasını beklerim 56
Yazılım Mitleri -2 Müşteri Mitleri Programı yazmayı başlamak için hedefleri belirleyen genel bir tanım yapmak yeterli olacaktır. Yazılım gereksinimleri sürekli değişir ama yazılımlar esnek olduğundan bu değişikliği yapmak kolay olacaktır. 57
Yazılım Mitleri - 3 Geliştirici Mitleri Programı yazıp çalışmasını sağladıktan sonra işimiz biter. Programın çalışmasını sağlayana kadar kalitesini değerlendirme için bir şey yapamayız. Başarılı bir projedeki teslim edilebilir tek ürün, çalışan programdır. Dökümantasyon bizi yavaşlatan fazla ve gereksiz belgelendirme yapmamıza yol açar. 58
Yazılım Özellikleri (dvm) Yazılım aşınmaz/yıpranmaz, fakat yapılan değişiklikler nedeniyle geriler. Pek çok değişiklikten sonra baştan tasarlanması gerekebilir. DONANIM YAZILIM 59
İyi Yazılımın Özellikleri Yazılım kullanıcısına istenen işlevleri ve performansı sunmalı ve buna ek olarak: Sürdürülebilirlik Yazılım değişen ihtiyaçlara göre gelişebilmelidir. Güvenilebilirlik Yazılım güvenilir olmalıdır. Verimlilik Yazılım sistem kaynaklarını boşa harcamamalıdır. Kullanılabilirlik Sistem tasarlandığı kullanıcıları için kolay kullanılabilir olmalıdır. 60
Genel Yazılım Süreci Çerçevesi İletişim Müşteri işbirliği ve gereksinim toplama Analiz Sistem gereksinimlerinin ve görevlerinin belirlendiği aşamadır. Yazılımın çözüm sunacağı gerçek problem incelenir ve sorunlar ortaya çıkarılır. Planlama İş planını oluşturulur, teknik riskler tanımlanır, gerekli kaynakları listelenir, iş ürünleri üretilir ve iş zaman planı tanımlanır. Kısacası yazılım süreci için gerekli olan bütün kaynakların belirlendiği aşamadır. Tasarım Belirlenen gereksinimleri karşılayacak yazılım sisteminin oluşturulduğu aşamadır. Gerçek problemin yazılım modeli oluşturulur. Gerçekleştirim Kodlama-test-hata ayıklama ve kurulum işlemlerinin yapıldığı adımdır. Kurulum Yazılımın değerlendirme ve geri bildirim için müşteriye teslimatı Bakım Hata ayıklama ve yeni eklentiler yapma aşamasıdır. Bu aşama yazılımın tesliminden sonra gerçekleştirilir. 61
Yazılım Süreci Görevler arasındaki genel akış ve bağımlılık seviyeleri Problemi anlama (iletişim ve analiz) Çözüm planlama (yazılım tasarımı) Planı yürütme (kod üretme) Doğruluk için sonuçları inceleme (test ve kalite güvencesi) 62
Problemin Anlaşılması Bu problemi çözmek için hangi fonksiyon ve özellikler gerekli? Anlaşılması daha kolay daha küçük problemler yaratmak mümkün mü? Grafiksel bir çözümleme modeli oluşturulabilir mi? 63
Çözümün Planlanması Daha önce benzer problemler görüldü mü? Daha önce benzer bir problem çözüldü mü? Halihazırda çözülebilir alt-problemler tanımlanabilir mi? Tasarım modeli oluşturulabilir mi? 64
Planın Yürütülmesi Çözüm plana uygun mu? Her çözüm bileşeni kanıtlanabilir şekilde doğru mu? 65
Sonucun İncelenmesi Çözümün her bir bileşen parçasını test etmek mümkün mü? Üretilen çözüm veri, fonksiyonlar ve gerekli özelliklere uygun sonuçlar üretiyor mu? 66
Yazılımda Pratik Prensipler Yazılım kullanıcılarına değer sağlamak için vardır Keep it simple stupid(kiss) Açık bir vizyon herhangi bir yazılım projesi için gereklidir Her zaman başka birinin işlerini ona göre yürüteceğini düşünerek tanımla, tasarla ve uygula Gelecekteki değişikliklere açık ol 67