Yazılım Mühendisliği Nedir? Tanım, Temel Bilgiler, Özellikler
Yazılım Mühendisliği Nedir?
Yazılım mühendisliği, kullanıcı gereksinimlerini analiz etme ve daha sonra bu gereksinimleri karşılayacak yazılım uygulaması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 sistematik, disiplinli, hesaplanabilir bir yaklaşımın uygulanması olarak tanımlamaktadır.
- Fritz Bauer bunu 'standart mühendislik ilkelerinin kurulması ve kullanılması' olarak tanımladı. Güvenilir ve gerçek makinelerde verimli çalışan yazılımları ekonomik olarak elde etmenize yardımcı olur.
- Boehm, yazılım mühendisliğini 'bilimsel bilginin yaratıcı tasarım ve bilgisayar programlarının oluşturulmasına pratik olarak uygulanmasını' içeren bir tanımla tanımlıyor. Ayrıca bunları geliştirmek, işletmek ve sürdürmek için gereken ilgili belgeleri de içerir.'
Neden Yazılım Mühendisliği? Yazılım Krizi ve Çözümü
Yazılım Krizi neydi?
- Birçok yazılım projesinin başarısız olduğu dönem 1960'ların sonlarındaydı.
- Birçok yazılım bütçeyi aştı. Çıktı, bakımı pahalı olan güvenilmez bir yazılımdı.
- Daha büyük yazılımların bakımı zor ve oldukça pahalıydı.
- Müşterilerin artan ihtiyaçlarını karşılayamayan çok sayıda yazılım var.
- Donanım kapasitesi arttıkça yazılım projelerinin karmaşıklığı da artmıştır.
- Yeni yazılıma olan talep, yeni yazılım üretme becerisine kıyasla daha hızlı arttı.
Yukarıdaki sorunların tümü 'Yazılım Krizine' yol açmaktadır.
Çözüm
Sorunun çözümü, düzensiz kodlama çabasını bir yazılım mühendisliği disiplinine dönüştürmekti. Bu mühendislik modelleri, şirketlerin operasyonlarını kolaylaştırmasına ve müşteri gereksinimlerini karşılayan yazılımlar sunmalarına yardımcı oldu.
- 1970'lerin sonlarında yazılım mühendisliği ilkelerinin yaygın şekilde kullanıldığı görüldü.
- 1980'lerde yazılım mühendisliği sürecinin otomasyonu ve (CASE) Bilgisayar Destekli Yazılım Mühendisliğinin büyümesi görüldü.
- 1990'larda, tıpkı ISO 9001 gibi projelerin kalite standardı ve süreçlerinin 'yönetim' yönlerine vurgunun arttığı görüldü.
Yazılım Mühendisliği Neden Popüler?
Yazılım mühendisliğinin popülaritesinin ardındaki önemli nedenler şunlardır:
- Büyük yazılım – Gerçek hayatımızda duvar örmek ev veya bina yapmaktan ç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 geliştirmenize yardımcı olur.
- ölçeklenebilirlik- Yazılım geliştirme süreci bilimsel ve mühendislik kavramlarına dayalıysa, mevcut yazılımı ölçeklendirecek şekilde yeni yazılımı yeniden oluşturmak daha kolaydır.
- Adapte olabilirlik: Yazılım süreci bilime ve mühendisliğe dayalı olduğunda, yazılım mühendisliğinin yardımıyla yeni yazılımı yeniden oluşturmak kolaydır.
- Maliyet- Donanım endüstrisi yeteneklerini gösterdi ve büyük üretim, bilgisayar ve elektronik donanımın maliyetini düşürdü.
- Dinamik Doğa– Yazılımın sürekli büyüyen ve adapte olan doğası. 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 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 şöyle:
- Bilgisayar Bilimi: Elektrik mühendisliği temel olarak fiziğe bağlı olduğundan yazılımın bilimsel temelini sağlar.
- Yönetim Bilimi: Yazılım mühendisliği, hem teknik hem de yönetimsel kontrol gerektiren, emek yoğun bir iştir. Bu nedenle yönetim biliminde yaygın olarak kullanılmaktadır.
- Ekonomi: Bu sektörde yazılım mühendisliği kaynak tahmini ve maliyet kontrolünde size 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 incelenmesinde 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üvenliğin kritik olduğu alanlarda, hayatlar risk altında olduğundan yazılım arızasının maliyeti çok yüksek olabilir.
- Hızlı geri dönüş süresine yönelik artan pazar talepleri.
- Yazılımların artan karmaşıklığıyla başa çıkmak için yeni uygulamalara ihtiyaç duyulmaktadır.
- Yazılım sistemlerinin çeşitliliği birbiriyle iletişim halinde olmalıdır.
Yazılım Ürünlerinin Nitelikleri
Herhangi bir yazılım ürününün özellikleri, ürün kurulduğunda ve kullanıma alındığında görüntülenen özellikleri içerir.
Bunlar ürünün sağladığı hizmetler değildir. Bunun yerine ürünün dinamik davranışı ve ürünün kullanımıyla ilişkilendirildiler.
Bu niteliklerin örnekleri şunlardır:
Efficiency, reliability, robustness, maintainability, etc.
Ancak bu özelliklerin göreceli önemi bir yazılım sisteminden diğerine farklılık gösterir.
Ürün Özellikleri | Açıklama |
---|---|
İdame | Yazılım, müşterilerin değişen taleplerini karşılayacak şekilde gelişmelidir. |
Güvenilebilirlik | Güvenilirlik çeşitli özellikleri içerir. Güvenilir yazılım, sistem arızası anında asla fiziksel veya ekonomik hasara neden olmamalıdır. |
verim | 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 dokümantasyonu 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:
- Operational
- Geçici
- Bakım
Yazılım profesyonelleri tarafından geliştirilen iyi bir yazılımın bazı önemli özellikleri şunlardır:
Operational
Bu özellik, yazılımın aşağıdakilerle ölçülebilen işlemlerde ne kadar iyi çalıştığı hakkında bize bilgi verir:
- bütçe
- verim
- Kullanılabilirlik
- Güvenilebilirlik
- doğruluk
- İşlevsellik
- Güvenlik
- Güvenlik
Geçici
Yazılım bir platformdan diğerine taşınırken bu önemli bir husustur:
- Birlikte çalışabilirlik
- Reus yeteneği
- Taşınabilirlik
- Adapte olabilirlik
Bakım
Bu husus, yazılımın hızla değişen ortama uyum sağlama yeteneklerine ne kadar iyi sahip olduğundan bahsediyor:
- Esneklik
- İdame
- Modülarite
- ölçeklenebilirlik
ÖZET
- Yazılım mühendisliği, kullanıcı gereksinimlerini analiz etme ve daha sonra 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şıyor. Bu nedenle bakımı pahalı olan güvenilmez bir yazılım sunar.
- 1970'lerin sonlarında yazılım mühendisliği ilkelerinin yaygın şekilde kullanıldığı 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üresine yönelik 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 şunlardır: 1) OperaGeçici 2)Geçici 3)Bakım.