Yazılım Mühendisliğine Giriş Ders Notu I 2016 GÜZ 1 Hesaplamanın Önemi Günlük hayatta her yerde bilgisayarları görmekteyiz Araba motorları Telefonlar Beyaz eşya/üretim sektörü Oyunlar Sosyal yaşamda Kamuda ve endüstride pek çok bilgisayarın birbirine bağlandığı güçlü bilgisayarlar (mainframe computers) Bilim ve teknolojinin öncüleri olan yoğun paralel işlemcilere sahip süper bilgisayarlar 2 ……………………… Hesaplama Alanında Geleceğimizi Planlamanın Zamanı Günümüz ekonomisinde bilgisayar endüstrisi hala en hızlı büyüme gösteren sektördür. Rekabet edilebilirliği sürdürebilmek için, endüstri ve ticaret alanında bilimsel ve mühendislik konularında yaratıcı gelişmelere gereksinim vardır Aynı zamanda yüksek nitelikli ürünlerin üretilmesi de önemlidir. Artan talepler nitelikli işgücü ile karşılanabilir. 3 Yazılım Mühendisliği Disiplini Yazılım da günlük hayatımızın önemli bir parçasıdır. Kamu ve özel sektörde her türlü işlemlerde Bankacılık ve finans piyasasında Eğitimde Taşımacılıkta Eğlence sektöründe Sağlıkta Tarımda Hukuk dünyasında ………………….. 4 Yazılım Mühendisliği Disiplini Bilgisayar programlarının sayısı, büyüklüğü ve uygulama alanları gerçek dünya problemlerini çözebilmek için çok hızlı olarak artmaktadır. Sonuç olarak: Milyarlarca kişi zamanını yazılım geliştirmekle geçirmektedir. Pek çok insanın geçimi geliştirilen bu yazılım ürünlerinin etkinliği ile değerlendirilmektedir.. Yazılım Ürünleri geliştiricilerin daha üretken ve etkin olmalarını teşvik etmelidir. 5 Yazılım Mühendisliği Disiplini Yazılım Ürünleri Daha etkin problem çözücü olmayı mümkün kılar Daha güvenli, daha esnek ve daha az sınırlandırılmış çalışma ortamları sağlar Yazılım ürünlerinin başarılı geliştirme kriterlerine ek olarak gibi pek çok sorunları da olabilir maliyet, süre , nitelik 6 Yazılım Mühendisliği’nin Ortaya Çıkışı “Yazılım Mühendisliği ” terim olarak ilk defa 1968 yılında NATO konferansında Brian Randell tarafından önerilmiş ve F.L. Bauer tarafından popülerleştirilmiştir. 7 Yazılım Mühendisliğinin Kapsamı Yazılım Mühendisliği aşağıdaki süreçleri gerçekleştirmek üzere bir takım bilgi, geliştirme araçları ve metotlardan oluşmaktadır. Yazılım Gereksinimleri, Yazılım Tasarımı Yazılımın İnşaası (Yapılandırılması) Yazılım Testi Yazılımın Sürekliliğinin Sağlanması 8 Yazılım Mühendisliğinin Diğer Disiplinlerle İlişkisi Bilgisayar Bilimi Bilgisayar Mühendisliği Yönetim Management Matematik Proje Yönetimi Nitelik Yönetimi Yazılım Ergonomisi Sistem Mühendisliği 9 Bilgisayar Bilimi (Computer Science) Bilgisayar donanımı ve yazılımının tasarımı ve işlenmesi ile ilgilidir. Bilgisayar teknolojisinin bilim, iş dünyası ve sanata uygulanmasıdır. Bilişsel bilim (cognitive science), ekonomi, matematik, fizik (kuantum hesaplama) ve dilbilim uygulamaları ile ilgilenir. 10 Bilgisayar Bilimi Alanları Teorik bilgisayar bilimi Hesaplama Teorisi (Theory of computation) Algoritmalar ve veri yapıları Programlama metotları ve programlama dilleri Bilgisayar parçaları ve mimarisi Sayısal ve sembolik hesaplama Uygulamalar 11 Teorik Bilgisayar Bilimi Matematik Lojik Otomatlar Teorisi Sayılar Teorisi Graf Teorisi Tip Teorisi Kategori Teorisi Hesaplamalı Geometri Kuantum Hesaplama 12 Bilgisayar Bilimi (wikipedia tanımı) Bilgisayar Bilimi (computer/computing science) bilginin (information) ve hesaplamanın (computation) teorik temellerinin incelenmesidir. İlgili pratik tekniklerin kullanılması ile bilgisayar sistemlerinin implementasyon ve uygulamalarını gerçekleştirir. Genellikle algoritmik proseslerin sistematik incelemeleri kullanılır. Bilginin oluşturulması, betimlenmesi, işlenmesi ve 13 transformasyonudur. Bilgisayar Biliminin Geçmişi Genç bir disiplin olarak 1940’lı yıllarda görülmeye başlamıştır. Teorik çalışmalar, deneysel yöntemler ve mühendislik tasarımları tek bir disiplinde toplanmıştır. Pek çok fiziksel bilim dalından ayrılır. Bilimi anlamak (bilmek) bilimin uygulamalarından ayrılmıştır 14 Bilgisayar Mühendisliği Nedir? Bilgisayar mühendisliği hesaplamanın pek çok yönü ile ilgilenir İlgi alanları mikroişlemcilerden, kişisel bilgisayarlar ve süper bilgisayarlara ve devre tasarımına yayılmıştır. Sadece bilgisayar sistemlerinin nasıl çalıştığına değil, aynı zamanda daha büyük bir sisteme nasıl genişletildiğine de odaklanılır. 15 Bilgisayar Mühendislerinin ilgi alanları Bilgisayar donanımının imalatı ile ilgili tasarım, planlama, geliştirme ve test süreçlerini gerçekleştirir. Donanımın çiplerinden devre kontrollerine kadar her şey bu alana aittir. 16 Bilgisayar Mühendislerinin Çalışma Alanları İşletim sistemleri ve yazılım Veri iletişimi ve multimedya ile ilgili olarak bilgisayar ağlarının kullanımı Lojik tasarım Mikroişlemci sistemlerinin tasarımı Bilgisayar mimarisi Bilgisayar arayüzü tasarımı Sistem gereksinimleri ve tasarımı 17 Sistem Mühendisliği Nedir? Mühendisliğin disiplinler arası bir alanıdır Karmaşık mühendislik problemlerinin tasarlanması ve yönetimi ile ilgilenir. Mekanizmaların ( makineler ve parçalarının) otomatik kontrolü, farklı takımların koordinasyonu ve lojistik büyük ve karmaşık problemlerin incelenmesinde gittikçe güçleşmektedir. 18 Sistem Mühendisliği Nedir? Karmaşık projelerin yürütümü için iş-süreçleri geliştirir ve geliştirme araçları kullanır Kontrol mühendisliği ve proje yönetimi gibi hem teknik hem de insan-odaklı disiplinlerle örtüşmektedir. Modelleme ve simulasyon, gereksinimler analizi, ve karmaşıklığı yönetmek için planlamalar yapan bir dizi yazılım geliştirme araçları kullanır 19 Proje Örnekleri Robotik, uzay aracı tasarımı bilgisayar çipi tasarımı, yazılımın entegrasyonu , köprü yapımı 20 Bilgisayar Bilimi ve Yazılım Mühendisliği İlişkisi David Parnas tanımları Bilgisayar Biliminin temel ilkesi genel olarak hesaplamanın (computation) özelliklerinin incelenmesidir. Yazılım Mühendisliğinin temel ilkesi hedeflenenleri başarabilmek için özel hesaplamaların (specific computations) gerçekleştirilmesidir. 21 Information Technology (IT) Bilgisayar ve İnternet uygulamalarıdır. Verinin (Data veya Information) depolanmasını, alınmasını ve iletilmesi sağlanır. Çoğunlukla ticari uygulamalar ya da çeşitli girişim çalışmalarıdır Bilgi ve iletişim (telekomünikasyon) teknolojisinin alt alanıdır. 22 23 24