Yazılım Mühendisliği Temelleri Sunumu PDF

Document Details

Uploaded by Deleted User

Atatürk Üniversitesi

Prof. Dr. Rabia Meryem YILMAZ

Tags

yazılım mühendisliği yazılım evrimi bilgisayar tarihi

Summary

Bu sunum, Atatürk Üniversitesi Mühendislik Fakültesi'nde verilen "Yazılım Mühendisliğine Giriş" dersine aittir. Sunumda yazılımın evrimi, ilk bilgisayarlar ve programlama dilleri gibi konular ele alınmaktadır. Sunum, yazılım tarihi, gelişimi ve önemli kavramlar hakkında bilgiler sunmaktadır.

Full Transcript

KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication MÜHENDİSLİK FAKÜLTESİ Engineering Faculty Yazılım Mühendisliği Temelleri Dersin Adı: Yazılım Mühendisliğine Giriş Dersin Hocası: Prof. Dr. Rabia Mery...

KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication MÜHENDİSLİK FAKÜLTESİ Engineering Faculty Yazılım Mühendisliği Temelleri Dersin Adı: Yazılım Mühendisliğine Giriş Dersin Hocası: Prof. Dr. Rabia Meryem YILMAZ KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Evrimi Erken Yıllar 1950-1960 İlk bilgisayarlar, makine dili, 3-4 şirket Yazılımlar; kullanıcı ile birebir iletişimde bulunmayacak 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. Yazılım Mühendisliğine Giriş 2 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Evrimi Erken Yıllar 1950-1960 İlk bilgisayarın çıktığı 1950'lerde öncelik, süratle tamamlanması gereken hesaplama işlerinin yapılmasıydı. Hesaplamalar, bilgisayarı kullanan kurum ya da işletmeye ilave yarar sağlamaktaydı. İşler toplu olarak verilir, ekrandan veya yazıcıdan çıktı alınırdı. Özel yöntemler kullanmadan, sadece doğru sonuçlar üreten bir ürün ortaya koymak amaçlanmaktaydı. Bu dönemde en sınırlayıcı etmen donanımdı. Yazılım Mühendisliğine Giriş 3 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication İlk Bilgisayarlar Yazılım Mühendisliğine Giriş 4 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication İlk Bilgisayarlar Yazılım Mühendisliğine Giriş 5 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Evrimi İkinci Dönem 1960-1975 1960'lı yıllarda, bilgi işleme ve depolama maksadıyla geliştirilen bilgisayar sistemlerinin en yüksek maliyet gerektiren bileşeni yine donanımdı. Özellikle askeri amaçlı ve gerçek zamanlı sistemler için yazılımlar geliştirildi. Veri tabanı yönetim sistemlerinin ilk temelleri atıldı. Yazılım Mühendisliğine Giriş 6 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Evrimi İkinci Dönem 1960-1975 Çok kullanıcılı, gerçek zamanlı yazılımlar üretilmeye başlandı. VTYS (Veri Tabanı Yönetim Sistemleri) yapılandırılmış dosya sistemleri ile ortaya çıktı. Yavaş yavaş ürün türü yazılımlar ortaya çıkmaya başladı. Bugün bile bilgisayarlarda kullanılan birçok veri tabanı yönetim sisteminin geçmişi bu yıllara dayanır. Yazılım Mühendisliğine Giriş 7 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Evrimi Üçüncü Dönem 1975-1990 1970 ve 80'lerde, mikro-elektronik alanındaki gelişmelerle donanım üretimi oldukça yaygınlaştı ve ucuzladı. Merkezi işlemci birimleri de gittikçe ucuzlayan bir şekilde çok yüksek hızlara çıkmaya başladı. Ağ altyapısının gelişip hızlanması dağıtık ve etkin bilgi işlemeyi olanaklı kılarken, programlama tekniklerinin ilerlemesi insan gibi düşünebilen sistemler yaratmak üzere yapay zekâ tekniklerinin gerçekleşmesini sağladı. Bu şekilde bilgisayar, özellikle yazılım olarak hayatımızın vazgeçilmez bir parçası haline geldi. Yazılım Mühendisliğine Giriş 8 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Evrimi Üçüncü Dönem 1975-1990 Kişisel bilgisayarların oldukça yaygınlaştığı ve açık sistem mimarisinin tanıtıldığı bu dönemde ürün bazlı yazılımlar oldukça yaygınlaşmış, bilgisayarlar evlere girmiştir. Ağ yapısının gelişmesi ve güçlenmesiyle, dağıtık yazılım sistemleri geliştirilmeye başlandı. Yapay zeka teknolojisinin gelişmesiyle “akıllı uygulama yazılımları” üretilmeye başlandı. Yazılım Mühendisliğine Giriş 9 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Evrimi Dördüncü Dönem 1990+ Yapay zeka donanımlarının, paralel donanım mimarilerinin geliştirildiği bu dönemde, uzman sistem yazılımları oldukça gelişmiş ve mikrobilgisayarlar ü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. Yapay Zeka, Gömülü Sistemler, Paralel Sistemler, Yazılım Kaliteleri Yazılım Mühendisliğine Giriş 10 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Evrimi Günümüzde; Yazılımın işlevinin yanında niteliği de önem kazanmış, yazılımla ilgili standartlar daha da olgunlaştırılmış, geliştiricinin ve yazılım ürünlerinin değerlendirilmesi için çeşitli kuruluşlar ve örgütlenmeler oluşturulmuştur. Gelecekte ise insan hayallerinin birer birer gerçekleştiğini, teknik olarak her hayal edilen şeyin bir gün gerçekleşeceğini göreceğiz. Yazılım Mühendisliğine Giriş 11 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Programlama Dillerinin Seviyeleri 1.Kuşak Makine Dili Makine dili, geliştirilen ilk programlama dilidir, öğrenilmeleri çok zordur. Bu dilde yazılan tüm komutlar 0 ve 1 lerden oluşur. 2. Kuşak Assembly İkinci kuşak dillerdir. Bu dillerde komutlar sembollerle ifade edilir, makine koduna çok yakındırlar. Yüksek seviyeli dillerin yaygın kullanımına karşın, halen hızın ve verimin önemli olduğu noktalarda yazılan çoğu programda assembly dili kullanılmaktadır. 3.Kuşak Orta Seviyeli Diller Orta seviye ve üstündeki dillerde yazılan programlar donanımdan bağımsız çalışırlar.Yani yazılan programlar farklı makinelerdede kullanılabilirler. Oldukça esnek olan bu diller hem üst hem alt seviye programlama yapabilirler. Yüksek seviye dillerine göre kullanımı daha zordur fakat programcıya daha özgür bir program geliştirme imkanı sunarlar. Örneğin: C ,C++, C# , Java ,ADA... 4. Kuşak Yüksek Seviyeli Diller Yüksek seviyeli dilde, Assembly dili veya makine dilindeki birçok satır tek bir komutla gösterilir. Böylece program daha kısa bir sürede yazılır. Bu dillerin komutları İngilizce bir kelimenin tamamından alındığından öğrenmek kolaydır. Örneğin: Pascal ,Basic ,Fortran... 5. Kuşak Yapay Zekaya Yönelik Diller Beşinci nesil programlama dilleridir. Yapay zeka programlama dillerinin çalışma mantığı diğer dillere göre farklıdır. Diğer dillerde bir problemin çözülmesi için gerekenler adım adım yazılır ve programa nasıl yapacağı öğretilirdi. Kısacası bir algoritma oluşturulur ve program buna göre yazılırdı. Yapay zekada ise koşulları ve kısıtlamaları programa verdiğinizde, çözümü programın kendisi bulur. Açıkça kodlamanın yerine bildirimsel yöntemle çalışır. Örneğin: Prolog, OPS5 ve Mercury Yazılım Mühendisliğine Giriş 12 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Evrimi İlk Bilgisayarlar ve Makine ve Assembly Dili İşletim Sistemleri ve Anabilgisayarlar (Mainframe), Kart okuyucuları DOS ve PC’ler Derleyici (Compiler) ve Yorumlayıcılar (Interpreter) ve Yeni nesil yazılım dilleri Windows Yarı İletken teknolojisinin fiyat ve boyutlara etkisi Veri haberleşmesindeki gelişmeler Internet Yazılım Mühendisliğine Giriş 13 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Sistem Harcamaları 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% 1980 1982 1984 1986 1988 1990 1992 1994 1996 1998 2000 Donanım Geliştirme Bakım ve İdame Yazılım Mühendisliğine Giriş 14 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Temel Kavramlar 1. Yazılım 2. Yazılım-Donanım Karşılaştırması 3. Tipik Bir Yazılım Üretim Ortamı 4. Yazılım Mühendisliği 5. Yazılım Mühendisi 6. Yazılım Hataları 7. Yazılım Maliyetleri 8. Yazılım Sistemlerinin Sınıflandırılması 9. Yazılım Kalite Sağlama Yazılım Mühendisliğine Giriş 15 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication 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ı veya programlarından ve – Kullanım ve bakım kılavuzları gibi belgelerden oluşan bir üründür. Yazılım Mühendisliğine Giriş 16 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Nedir? Yazılım(Software): Yazılım sadece bir bilgisayar programı değildir. Basılı veya elektronik ortamdaki her tür dokümanı da içeren ürün. Dokümanlar yazılım mühendislerine ve son kullanıcıya yönelik olabilir. Uygulama(Application) kelimesi de kullanılabilir. Yazılım Mühendisliğine Giriş 17 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Yazılım en yalın biçimiyle "Bir sistemin donanım bileşenleri dışında kalan her şey" olarak tanımlanabilir. Yazılımı oluşturan bileşenler: Mantık Veri Belge İnsan Program Yazılım biçiminde açıklanabilir. Yazılım, bütün bu bileşenlerin, belirli bir üretim amacına yönelik olarak bir araya getirilmesi, yönetilebilmesi için kullanılabilecek ve üretilen, yöntem, araç, bilgi ve belgelerin tümünü içerir. Yazılım Mühendisliğine Giriş 18 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Mantık (Algoritma) Yazılım, her şeyden önce bir işin bilgisayar aracılığı ile yapılması amacına yöneliktir. 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. Yazılım Mühendisliğine Giriş 19 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication 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. Yazılım Mühendisliğine Giriş 20 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication 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 üretimler, bilgi belge üretimidir (planlama bilgileri, çözümleme bilgileri, tasarım bilgileri, gerçekleştirim bilgileri vb). Yazılım Mühendisliğine Giriş 21 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication İnsan (Kullanıcı & Geliştirici) Yazılımın insan bileşeni iki boyutludur; Yazılımı geliştirenler ve yazılımı kullananlar. Günümüzde yazılım çok kişili ekiplerle geliştirilme boyutuna gelmiştir. Günümüzde artık tek kişi ile yazılım geliştirmekten söz edilmemektedir. Bunun temel nedeni yazılımın yaygınlaşması ve boyutlarının büyümesidir. Bu nedenle yazılım üretimi için, takım oluşturma ve takımın uyumlu çalışabilmesi için yöntem kullanımı gerekmektedir. Yazılım Mühendisliğine Giriş 22 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication 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. Programlarda her zaman hata çıkma olasılığı vardır. İşletmeler doğaları gereği dinamik bir yapıya sahiptir ve zaman içerisinde sürekli olarak yeni istek ve gereksinimler ortaya çıkabilmektedir. Bu tür değişikliklerin mevcut yazılıma da yansıtılması gerekir. Yazılım Mühendisliğine Giriş 23 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım ve Donanım Karşılaştırması Yazılım ve Donanım adlandırması: Yazılım: Software(SW) Donanım: Hardware(HW) İngilizce adlandırma, yazılımın kolaylıkla değiştirilebilecek, oyun hamuru gibi yumuşak bir şeyler olduğu kanısına yöneltir. Ancak yazılım daha çok kil ve ya cam gibidir, bir kere tamamlandıktan sonra değiştirmesi zordur. Yazılım Mühendisliğine Giriş 24 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım ve Donanım Karşılaştırması Yazılım geliştirilir, donanım üretilir. (fabrika ortamında seri üretim) Donanımı üreten bileşenler, aynı üretim ortamında çoklu olarak üretilerek ya da dışarıdan edinilerek üretim hattında birleştirilip ortaya çıkarılabilir. Örneğin, otomobil üretiminde olduğu gibi. Boya, lastik, hava yastığı, güvenlik sistemi vb. bir çok bileşen farklı üretim yerlerinde, bazen farklı üreticiler tarafından üretilerek ana fabrikada birleştirme sonucu otomobil üretimi gerçekleşir. Yazılım üretiminde ise durum bundan farklıdır. Yazılım ihtiyaca yönelik tekrar tekrar farklı tüketici grupları tarafından kullanılabilir. Yazılım Mühendisliğine Giriş 25 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım ve Donanım Karşılaştırması Yazılım eskimez. Oysa, her donanımın belli bir ömrü vardır. Ömrünü tamamlayan donanım yenisi ile değiştirilir. Örneğin otomobil fren balatalarının 15 ya da 20 bin kilometre sonra kullanılamaz biçime gelmeleri gibi. Bu durumda ilgili donanım bileşeni, eskisinin aynı işlevi gören yenisiyle değiştirilir. Yazılımda ise bu anlamda bir eskime söz konusu değildir. 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. Yazılım Mühendisliğine Giriş 26 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım ve Donanım Karşılaştırması Daha fazla sayıda personel kullanımı, yazılım üretiminin daha kısa sürede bitirileceği anlamına gelmez. Hatta, bazı durumlarda, bir yazılım üretimi projesinde, fazla personel kullanımı, proje süresini kısaltmaktan çok uzatabilir. Daha çok sayıda personel, daha çok iletişim enerjisi anlamına gelir. Donanım üretiminde ise durum farklıdır. Üretimde daha çok sayıda tezgah ve insan kullanımı, daha fazla sayıda üretim anlamına gelir. Yazılım Mühendisliğine Giriş 27 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım ve Donanım Karşılaştırması 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. Donanım için geçerli olan bu durum, yazılım için geçerli değildir. Yazılımda oluşan bir hata tüm sistemin çökmesine, çalışmamasına neden olabilir. 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). Yazılım Mühendisliğine Giriş 28 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım ve Donanım Karşılaştırması Yazılım en az donanım kadar önemlidir. Diyaliz makinelerinde kullanılan yazılımların 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ı on binlerce abonenin saatlerce telefon konuşması yapamamasına neden olmuştur. Yazılım Mühendisliğine Giriş 29 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım ve Donanım Karşılaştırması Bilgisayar sistemlerinin gelişmesiyle birlikte beklentiler, yani isterler daha da artmıştır. Öyle ki, yazılımdaki gelişmeler donanımdaki gelişmelere ayak uyduramaz hale gelmiştir. Hatta yazılımdan beklenen istekleri karşılamak üzere geliştirme ile geçen sürede daha fazla istek gelmektedir. Hızla gelişen donanım teknolojisi, yazılımların da güncellenmesini ve yeni donanımlara göre uyarlanmasını gerekli kılmaktadır. Yazılım Mühendisliğine Giriş 30 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım ve Donanım Karşılaştırması Giderek büyüyen ve karmaşıklaşan yazılımların tasarlanmaları, gerçekleştirilmeleri ve kontrol altında tutulmaları da güçleşmektedir. Bir de var olan yazılımların bakımlarını yaparak kullanımlarını sürdürmek, düşük nitelik ve işi yapacak kaynak bulunamaması gibi nedenlerle başka büyük sorunlar da oluşturmaktadır. Yazılım Mühendisliğine Giriş 31 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Tipik Bir Yazılım Üretim Ortamı-Olumsuzluklar Değişik yetenekte bir çok personel (analist, programcı, test uzmanı, vs.) Yalnızca yazılımın çıktısı ile ilgilenen ve bilgi teknolojileri konusunda bilgili olmayan kullanıcılar Yeniliğe tepki gösteren kullanıcılar ve yöneticiler ! Yeterince tanımlanmamış, oldukça karmaşık 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ğine Giriş 32 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Tipik Bir Yazılım Üretim Ortamı Bilindiği gibi günümüzde yazılım, büyük kuruluşların bilgi işlem merkezlerinde ve bireysel olarak kişiler tarafından geliştirilmektedir. Tipik bir yazılım üretim ortamı incelendiğinde bazı olumsuzluklar kolayca gözlemlenebilir. Bir bakıma, bu tür olumsuzlukların giderilmesi amacıyla Yazılım Mühendisliği disiplini geliştirilmiştir. Yazılım Mühendisliğine Giriş 33 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Mühendisliği (YM) – Nedir? “Mühendislik eylemlerinin (geliştirme, işletme ve bakım), disiplinli, sistematik ve nicelikli bir şekilde yazılıma uygulanması” Yazılım Mühendisliğine Giriş 34 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication 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. Yazılım Mühendisliğine Giriş 35 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication 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. Diğer bir deyişle mühendisliğin yazılıma uygulanmasıdır. Yazılım Mühendisliğine Giriş 36 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Mühendisliği Yazılım mühendisliği, sistem spesifikasyonunun ilk aşamalarından, kullanıma girdikten sonra sistemin bakımına kadar yazılım üretiminin tüm yönleriyle ilgilenen bir mühendislik disiplinidir. Mühendislik disiplini: Organizasyonel ve finansal kısıtlamaları göz önünde bulundurarak sorunları çözmek için uygun teori ve yöntemleri kullanmak. Yazılım üretiminin tüm yönleri Sadece teknik geliştirme süreci değil. Ayrıca proje yönetimi ve yazılım üretimini desteklemek için araç, yöntem vb. geliştirme. Yazılım Mühendisliğine Giriş 37 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Mühendisliği Günümüzdeki bilgi teknolojileri ile ilgilenen en geniş bilim dalı bilgisayar mühendisliğidir. İçinde, elektronik, veri tabanı yönetimi, yapay zekâ, bilgi yönetimi, grafik, işaret işleme, ağlar gibi alt dallar bulunduran bu bilim dalının bir alt dalı olan yazılım mühendisliği, yazılım geliştirmenin belirli mühendislik yöntemleri kullanılarak yapılmasını öngören teknik bir disiplindir. Bu amaç için yöntemler ve teknikler belirlemek, araç geliştirmek, yöntembilimler ve standartlar oluşturmak bu mühendislik dalının işidir. Yazılım mühendisliğinin hedefi, yazılım geliştirmedeki karmaşıklığı gidererek sağlam, doğru, güvenilir ve isteğe uygun ürünler ortaya çıkarmaktır. Yazılım Mühendisliğine Giriş 38 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Mühendisliği Günümüzde yazılımın yalnızca "program kodu” yazmaktan ibaret olmadığı, hatta donanımdan daha ileri bir önem derecesine ulaştığı artık anlaşılmıştır. Programların karmaşıklık derecesi arttıkça geliştirilmelerini kontrol altına almak da zorlaşır. Dolayısıyla program geliştirme yöntembilimlerine (methodology) gereksinim duyulmaktadır. Yazılım Mühendisliğine Giriş 39 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Mühendisliği Yazılım mühendisliği bir yöntemler, teknikler ve araçlar kümesi olarak değerlendirilebilir. Ayrıca, yazılım üretimi işi tek kişinin başarabileceği boyuttan çıkmış ve bir takım işi biçimine dönüşmüştür. Yazılım Mühendisliğine Giriş 40 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Mühendisliği Giderek küreselleşen ve gereksinimleri ortak hale gelen dünyada yazılım konusu da ortak araştırma konusu olmuştur. Bu nedenle de üniversitelerde "Yazılım Mühendisliği” adı altında bir alt bilim dalı oluşmuş, bu alanda uluslararası kuruluşlar tarafından çeşitli disiplinler ve standartlar tanımlanmış, gelişmeler ortak olarak izlenmeye başlamıştır. Yazılım Mühendisliğine Giriş 41 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Mühendisliği Neyi Hedefler? Yazılım mühendisliği, yazılım üretimindeki karmaşıklıkları gidermeyi hedefler. Mühendislik Yazılımı Arasındaki Farklar Mühendislik yazılımları, daha çok donanım bileşeni ile ilgisi olan (donanım sürücüleri vb.) yazılımlardır. Yazılım mühendisliği ise, yazılım mühendisi yetiştirmeyi amaçlayan bir disiplindir. Yazılım Mühendisliğine Giriş 42 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Mühendisliği Önemi Tüm gelişmiş ülkelerin ekonomileri yazılıma bağımlıdır. Gittikçe daha fazla sistem yazılım kontrollüdür. Yazılım harcamaları, tüm gelişmiş ülkelerde GSMH'nın önemli bir bölümünü temsil etmektedir. Yazılım Mühendisliğine Giriş 43 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Mühendisi Yazılım Mühendisliği işini yapan kişidir. Temel hedefi; üretimin en az maliyet ve en yüksek nitelikte yapılmasını sağlamaktır. Programcı değildir. Ancak programcının tüm yeteneklerine sahiptir. Yazılımın daha çok mantıksal boyutuyla ilgilenir ve işi insanlarla ilişkiyi gerektirir. Sistem analisti de değildir. Farkı; analist sadece sistemin analiz aşaması ile ilgilenirken, yazılım mühendisi tüm aşamaların içindedir. Yazılım Mühendisliğine Giriş 44 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Mühendisi Yazılım mühendisliği eski ve oturmuş bir bilim dalı olmadığı için, bilgi sistem projelerinde orta veya üst düzey proje yöneticisi olarak, çoğu zaman, iş deneyimi önde tutularak yazılım geçmişi olmayan yöneticiler görevlendirilmektedir. Çünkü bir inanışa göre iyi bir yönetici her türlü projeyi yönetebilir. Oysa konu yazılım projesi olduğunda, bu yöneticinin personel ve finans yönetimi yanında, yazılım işini tanımlamak, maliyet, işgücü ve süre kestirimi yapmak, önemli aşama noktalarını belirlemek, karmaşıklık metriklerini kullanarak uygun kişilere paylaştırmak ve etkin kontrol yöntemleri uygulamak gibi görevleri olacaktır. Yazılım Mühendisliğine Giriş 45 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Mühendisi Yönetici olacak kişinin bu işler için gerekli bilgi ve yeteneklere sahip olması ya da bunları çok çabuk öğrenebilmesi gerekir. Ayrıca bu yöneticinin müşteriyle, geliştiricilerle, destek elemanlarıyla ve diğer personelle iyi bir iletişim halinde bulunması da zorunludur. Yazılım Mühendisliğine Giriş 46 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Mühendisi Yazılım uygulayıcıları, yani program kodu yazan kişiler, programlamanın bir sanat olduğunu varsayabilirler. Gerçekten de bazı açılardan bir sanat olabilir; ancak, bugün biliyoruz ki, bilimsellikten uzaklaşmış, çok uzun geçmişe dayanan yanlış bazı programlama tekniklerinin kullanılmaya devam edilmesinde artık yarardan çok zarar vardır. Kimi kodlayıcılar, bir yazılım birimini bir an önce kodlayıp çalıştırdıklarında işlerinin biteceğini sanırlar ve olabildiğince erken kodlamaya başlamak isterler. Oysa kodlamanın bitip ürünün müşteriye ilk tesliminden sonra harcanacak zaman çok daha fazla olmaktadır. Ayrıca bu ürünün niteliği hakkında da fazla bir şey söylenemez. Bu nedenle, yazılım geliştiricilerin de temel mühendislik bilgilerine sahip olmaları ve belirli geliştirme süreçlerine uymaları gereklidir. Yazılım Mühendisliğine Giriş 47 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Hataları Bir programı tüm ayrıntıları ile test etmek teorik olarak mümkün olmakla birlikte, uygulamada bu mümkün değildir. Tablodan da görüldüğü gibi, yazılım üretiminde özellikle belgeleme konusunda yapılan hatalar önemli bir yer Yazılım ancak sınırlı sayıda veri ile sınanabilir. tutmakta ve bunun doğal sonucu olarak yazılım bakımı zorlaşmakta zaman zaman olanaksızlaşmaktadır. Yazılım Üretiminde Hataların Dağılımı Mantıksal Tasarım %20 İşlevsel Tasarım %15 Kodlama %30 Belgeleme ve Diğerleri %35 Yazılım Mühendisliğine Giriş 48 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılımların Sınanması Yazılımın tüm olasılıkların göz önünde bulundurularak test edilmesi olayına denir. Bu amaçla, yazılımın sınanmasına yönelik çeşitli yöntem ve metodolojiler geliştirilmiştir. Yazılım Mühendisliğine Giriş 49 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Hataların "Yayılma" Özelliği Yazılım üretimindeki hatalar yayılma özelliği gösterir. Bu nedenle, hata düzeltme maliyetleri ilerleyen aşamalarda giderek artar. Analiz 1 Yazılım üretimi aşamalı bir üretim olup; Tasarım 5 bir aşamanın çıktısı bir sonraki aşamaya Kodlama 10 girdi olduğundan ötürü herhangi bir aşamada yapılan yanlış izleyen Test 25 aşamalara otomatik olarak yansır. Kabul Testi 50 İşletim 100 Yazılım Mühendisliğine Giriş 50 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Maliyetleri Yazılım maliyetleri genellikle bilgisayar sistemi maliyetlerine hakimdir. Bir PC'deki yazılımın maliyeti genellikle donanım maliyetinden daha fazladır. Yazılımın bakımı, geliştirmekten daha maliyetlidir. Uzun ömürlü sistemler için bakım maliyetleri geliştirme maliyetlerinin birkaç katı olabilir. Yazılım mühendisliği, uygun maliyetli yazılım geliştirme ile ilgilidir. Yazılım Mühendisliğine Giriş 51 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Maliyetleri Yazılım = $ 100.000 Donanım = $ 1000 Yazılım Mühendisliğine Giriş 52 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication 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ım Mühendisliğine Giriş 53 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılımı Etkileyen Genel Sorunlar Heterojenlik Giderek artan bir şekilde, sistemlerin farklı türde bilgisayar ve mobil cihazları içeren ağlar arasında dağıtılmış sistemler olarak çalışması gerekmektedir. İş ve sosyal değişim Gelişmekte olan ekonomiler geliştikçe ve yeni teknolojiler kullanıma sunuldukça, iş dünyası ve toplum inanılmaz derecede hızlı değişiyor. Mevcut yazılımlarını değiştirebilmeleri ve hızla yeni yazılımlar geliştirebilmeleri gerekiyor. Yazılım Mühendisliğine Giriş 54 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılımı Etkileyen Genel Sorunlar Güvenlik ve güven Yazılım hayatımızın her alanı ile iç içe olduğundan, o yazılıma güvenebilmemiz esastır. Ölçek Yazılım, taşınabilir veya giyilebilir cihazlardaki çok küçük gömülü sistemlerden, küresel bir topluluğa hizmet eden İnternet ölçeğinde, bulut tabanlı sistemlere kadar çok geniş bir ölçekte geliştirilmelidir. Yazılım Mühendisliğine Giriş 55 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Projesi Hatası Artan sistem karmaşıklığı Yeni yazılım mühendisliği teknikleri daha büyük, daha karmaşık sistemler inşa etmemize yardımcı olurken, talepler değişiyor. Sistemler daha hızlı kurulmalı ve teslim edilmelidir; daha büyük, hatta daha karmaşık sistemler gereklidir; sistemlerin daha önce imkansız olduğu düşünülen yeni yeteneklere sahip olması gerekir. Yazılım mühendisliği yöntemlerinin kullanılmaması Yazılım mühendisliği yöntem ve tekniklerini kullanmadan bilgisayar programları yazmak oldukça kolaydır. Birçok şirket, ürünleri ve hizmetleri geliştikçe yazılım geliştirmeye yöneldi. Günlük işlerinde yazılım mühendisliği yöntemlerini kullanmazlar. Sonuç olarak, yazılımları genellikle olması gerekenden daha pahalı ve daha az güvenilirdir. Yazılım Mühendisliğine Giriş 56 KURUMSAL İLETİŞİM DİREKTÖRLÜĞÜ Directorate of Corporate Communication Yazılım Sistemlerinin Sınıflandırması İşleve Göre Sınıflandırma Hesaplama, Veri İşleme, Süreç temelli, Kural Sayısal Çözümleme, Bankacılık Gömülü temelli Sistemleri, Sinyal işleme, Robotik, Yapay Zeka Zamansal özelliklere Göre Sınıflandırma Toplu (Çevrim-dışı)) Gerçek Zamanlı Çevrim-içi Boyuta Göre Sınıflandırma (SS: satır sayısı) Küçük (SS

Use Quizgecko on...
Browser
Browser