Yazılım Mühendisliği nedir?
Yazılım mühendisliği, kullanıcı gereksinimlerini analiz etme ve ardından bu gereksinimleri karşılayacak yazılım uygulamalarını tasarlama, oluşturma ve test etme süreci olarak tanımlanır.
Yazılım mühendisliğinin çeşitli tanımlarına bakalım:
- IEEE, 610.12-1990 standardında, yazılım mühendisliğini, yazılımın geliştirilmesi, çalıştırılması ve bakımı için hesaplanabilir bir yaklaşım olan sistematik, disiplinli bir uygulama olarak tanımlar.
- Fritz Bauer bunu 'kuruluş olarak tanımladı ve standart mühendislik ilkelerini kullandı. Güvenilir ve gerçek makinelerde verimli çalışan bir yazılımı ekonomik olarak elde etmenize yardımcı olur.
- Boehm, 'bilimsel bilginin bilgisayar programlarının yaratıcı tasarımına ve inşasına pratik uygulamasını içeren yazılım mühendisliğini tanımlar. Ayrıca, bunları geliştirmek, çalıştırmak ve sürdürmek için gereken ilgili belgeleri de içerir. '
Bu yazılım mühendisliği eğitiminde şunları öğreneceksiniz:
- Yazılım Mühendisliği nedir?
- Neden Yazılım Mühendisliği? Yazılım Krizi ve Çözümü
- Yazılım Mühendisliği Neden Popüler?
- Yazılım Mühendisliğinin Diğer Disiplinlerle İlişkisi
- Yazılım Mühendisliğinin Zorlukları
- Yazılım Ürünlerinin Özellikleri
- İyi Yazılımın Özellikleri
Neden Yazılım Mühendisliği? Yazılım Krizi ve Çözümü:
Yazılım Krizi neydi?
- 1960'ların sonunda birçok yazılım projesi başarısız oldu.
- Birçok yazılım bütçeyi aştı. Çıktı, bakımı pahalı ve güvenilmez bir yazılımdı.
- Daha büyük yazılımlar zor ve bakımı oldukça pahalıydı.
- Müşterinin artan gereksinimlerini karşılayamayan birçok yazılım.
- Donanım kapasitesi arttığında yazılım projelerinin karmaşıklığı arttı.
- Yeni yazılım talebi, yeni yazılım üretme becerisine kıyasla daha hızlı arttı.
Yukarıdaki tüm sorunlar 'Yazılım Krizine' yol açar.
Çözüm
Sorunun çözümü, organize olmayan kodlama çabasını bir yazılım mühendisliği disiplinine dönüştürmekti. Bu mühendislik modelleri, şirketlerin operasyonları kolaylaştırmasına ve müşteri gereksinimlerini karşılayan yazılımlar sunmasına yardımcı oldu.
- 1970'lerin sonlarında, yazılım mühendisliği ilkelerinin yaygın kullanımları görüldü.
- 1980'lerde yazılım mühendisliği sürecinin otomasyonunu ve (CASE) Bilgisayar Destekli Yazılım Mühendisliğinin büyümesini gördü.
- 1990'lar, tıpkı ISO 9001 gibi, projelerin kalite standardı ve süreçlerinin 'yönetim' yönlerine artan bir vurgu gördü
Yazılım Mühendisliği Neden Popüler?
Yazılım mühendisliğinin popülerliğinin arkasındaki önemli nedenler şunlardır:
- Büyük yazılım - Gerçek hayatımızda bir duvar inşa etmek bir ev veya binadan çok daha rahattır. Aynı şekilde, yazılımın boyutu büyüdükçe, yazılım mühendisliği yazılım oluşturmanıza yardımcı olur.
- Ölçeklenebilirlik - Yazılım geliştirme süreci bilimsel ve mühendislik kavramlarına dayandıysa, mevcut bir yazılımı ölçeklendirmek için yeni yazılımı yeniden oluşturmak daha kolaydır.
- Uyarlanabilirlik : Yazılım süreci bilimsel ve mühendisliğe dayandığında, yazılım mühendisliği yardımıyla yeni yazılımı yeniden oluşturmak kolaydır.
- Maliyet - Donanım endüstrisi becerilerini göstermiştir ve büyük üretim, bilgisayar ve elektronik donanım maliyetini düşürmüştür.
- Dinamik Doğa - Yazılımın doğası her zaman büyür ve uyarlanır. Kullanıcının çalıştığı ortama bağlıdır.
- Kalite Yönetimi : Kaliteli yazılım ürünleri sağlamak için daha iyi bir yazılım geliştirme yöntemi sunar.
Yazılım Mühendisliğinin Diğer Disiplinlerle İlişkisi
Yazılım mühendisliğinin diğer disiplinlerle ilişkisi şu şekildedir:
- Bilgisayar Bilimi: Elektrik mühendisliği esas olarak fiziğe dayandığından, yazılıma bilimsel bir temel sağlar.
- Yönetim Bilimi: Yazılım mühendisliği, hem teknik hem de yönetimsel kontrol gerektiren emek yoğun bir çalışmadır. Bu nedenle, yönetim biliminde yaygın olarak kullanılmaktadır.
- Ekonomi: Bu sektörde, yazılım mühendisliği size kaynak tahmini ve maliyet kontrolünde yardımcı olur. Bilgi işlem sistemi geliştirilmeli ve veriler belirli bir bütçe dahilinde düzenli olarak muhafaza edilmelidir.
- Sistem Mühendisliği: Çoğu yazılım, çok daha büyük bir sistemin bileşenidir. Örneğin, bir Endüstri izleme sistemindeki yazılım veya bir uçaktaki uçuş yazılımı. Bu tür sistemlerin çalışmasında yazılım mühendisliği yöntemleri uygulanmalıdır.
Yazılım Mühendisliğinin Zorlukları
Yazılım mühendislerinin karşılaştığı bazı kritik zorluklar şunlardır:
- Uzay, havacılık, nükleer santraller vb. Gibi güvenlik açısından kritik alanlarda yazılım arızasının maliyeti çok yüksek olabilir çünkü hayatlar risk altında.
- Hızlı geri dönüş süresi için artan pazar talepleri.
- Yeni uygulamalar için yazılım ihtiyacının artan karmaşıklığı ile başa çıkmak.
- Yazılım sistemlerinin çeşitliliği birbiriyle iletişim halinde olmalıdır.
Yazılım Ürünlerinin Özellikleri
Herhangi bir yazılım ürününün özellikleri, ürün kurulduğunda ve kullanıma girdiğinde tarafından görüntülenen özellikleri içerir.
Ürün tarafından sağlanan hizmetler değildir. Bunun yerine, ürünün dinamik davranışı ve ürünün kullanımıyla ilgilidir.
Bu niteliklerin örnekleri şunlardır:
Efficiency, reliability, robustness, maintainability, etc.
Bununla birlikte, bu özelliklerin göreceli önemi bir yazılım sisteminden diğerine değişir.
Ürün özellikleri | Açıklama |
Sürdürülebilirlik | Yazılım, müşterilerin değişen taleplerini karşılayacak şekilde gelişmelidir. |
Güvenilirlik | Güvenilirlik çeşitli özellikleri içerir. Güvenilir yazılım, sistem arızası anında hiçbir zaman fiziksel veya ekonomik hasara neden olmamalıdır. |
Verimlilik | Yazılım uygulaması, bellek ve işlemci döngüsü gibi sistem kaynaklarını aşırı kullanmalıdır. |
Kullanılabilirlik | Yazılım uygulamasının belirli bir kullanıcı arayüzü ve belgeleri olmalıdır. |
Yukarıdaki özelliği optimize etmek çok zordur. Örneğin, daha iyi bir kullanıcı arayüzü sunmak, sistem verimliliğini azaltabilir.
İyi Yazılımın Özellikleri
Herhangi bir yazılım sunduklarına ve onu kullanmanıza yardımcı olan yöntemlerin neler olduğuna göre değerlendirilmelidir.
Her yazılım aşağıdaki özellikleri karşılamalıdır:
- Operasyonel
- Geçiş
- Bakım
Yazılım uzmanları tarafından geliştirilen iyi bir yazılımın bazı önemli özellikleri şunlardır
Operasyonel
Bu özellik, aşağıdakiler üzerinde ölçülebilen işlemlerde yazılımın ne kadar iyi çalıştığını bize bildirir:
- Bütçe
- Verimlilik
- Kullanılabilirlik
- Güvenilirlik
- Doğruluk
- İşlevsellik
- Emniyet
- Güvenlik
Geçiş
Bu, yazılım bir platformdan diğerine taşındığında önemli bir husustur:
- Birlikte çalışabilirlik
- Tekrar Kullanılabilirlik
- Taşınabilirlik
- Uyarlanabilirlik
Bakım
Bu özellik, yazılımın hızla değişen ortama uyum sağlama yeteneklerine ne kadar sahip olduğundan bahsediyor:
- Esneklik
- Sürdürülebilirlik
- Modülerlik
- Ölçeklenebilirlik
Özet
- Yazılım mühendisliği, kullanıcı gereksinimlerini analiz etme ve ardından bu gereksinimleri karşılayacak yazılım uygulamasını tasarlama, oluşturma ve test etme sürecidir.
- Yazılım mühendisliğini kullanmanın önemli nedenleri şunlardır: 1) Büyük yazılım, 2) Ölçeklenebilirlik 3) Uyarlanabilirlik 4) Maliyet ve 5) Dinamik Doğa.
- 1960'ların sonlarında birçok yazılım bütçeyi aştı. Bu nedenle, bakımı pahalı olan güvenilir olmayan bir yazılım sunar.
- 1970'lerin sonlarında, yazılım mühendisliği ilkelerinin yaygın kullanımları görüldü.
- Yazılım mühendisliği kavramı 1) Bilgisayar Bilimi 2) Yönetim Bilimi 3) Sistem mühendisliği ve 4) Ekonomi
- Hızlı geri dönüş süresi için artan pazar talepleri, yazılım mühendisliği alanının en büyük zorluklarıdır.
- 1) Sürdürülebilirlik, 2) Güvenilirlik, 3) Verimlilik ve 4) Kullanılabilirlik, yazılım ürünlerinin en önemli özellikleridir.
- İyi bir yazılımın en önemli üç özelliği 1) Operasyonel 2) Geçiş 3) Bakımdır.