Yazılım Mühendisliği Nedir? Özellikleri, Tanımı
⚡ Akıllı Özet
Yazılım mühendisliği, gereksinimleri analiz etme ve ardından bunları karşılayan yazılımları tasarlama, oluşturma ve test etme sürecidir. Bu kaynak, yazılım mühendisliğinin tanımlarını, onu ortaya çıkaran yazılım krizini, popülaritesini, ilgili disiplinleri, zorluklarını ve iyi yazılımın özelliklerini açıklamaktadır.

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 bir 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, işletimi ve bakımı için sistematik, disiplinli ve hesaplanabilir bir yaklaşımın uygulanması olarak tanımlar.
- Fritz Bauer bunu “standart mühendislik prensiplerinin oluşturulması ve kullanılması” olarak tanımlamıştır. Bu, gerçek makinelerde güvenilir ve verimli çalışan yazılımları ekonomik bir şekilde elde etmenize yardımcı olur.
- Boehm, yazılım mühendisliğini "bilimsel bilginin bilgisayar programlarının yaratıcı tasarımına ve yapımına pratik uygulaması" olarak tanımlar. Ayrıca, geliştirme için gerekli olan ilgili dokümantasyonu da içerir.ping"Bunları işletmek ve bakımını yapmak."
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ı.
- Yazılım projelerinin büyük bir kısmı bütçeyi aştı. Sonuç olarak ortaya çıkan yazılımlar güvenilmezdi ve bakımı pahalıydı.
- Daha büyük yazılımların bakımı zor ve oldukça pahalıydı.
- Birçok yazılım, müşterinin artan gereksinimlerini karşılayamadı.
- Yazılım projelerinin karmaşıklığı, donanım kapasiteleri arttıkça artmıştır.
- Yeni yazılıma olan talep, yeni yazılım üretme becerisine kıyasla daha hızlı arttı.
Yukarıda belirtilen tüm sorunlar 'Yazılım Krizi'ne yol açtı.
Çözüm
Sorunun çözümü, düzensiz kodlama çalışmalarını bir yazılım mühendisliği disiplinine dönüştürmek oldu. Bu mühendislik modelleri, şirketlerin operasyonlarını düzene sokmaları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 prensipleri yaygın olarak kullanılmaya başlandı.
- 1980'ler, yazılım mühendisliği sürecinin otomasyonuna ve Bilgisayar Destekli Yazılım Mühendisliğinin (CASE) gelişimine tanık oldu.
- 1990'lı yıllarda, tıpkı ISO 9001'de olduğu gibi, projelerin 'yönetim' yönlerine ve kalite ve süreç standartlarına daha fazla önem verilmeye başlandı.
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 hayatta bir ev veya bina inşa etmekten çok bir duvar inşa etmek daha kolaydı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 dayanıyorsa, mevcut bir yazılımı ölçeklendirmek için yeni bir yazılım oluşturmak daha kolaydır.
- Adapte olabilirlik – Yazılım geliştirme süreci bilimsel ve mühendislik ilkelerine dayandığında, yazılım mühendisliği yardımıyla yeni yazılımlar oluşturmak kolaylaşır.
- Ücret Donanım sektörü yeteneklerini sergiledi ve büyük ölçekli üretim, bilgisayar ve elektronik donanımların maliyetini düşürdü.
- Dinamik Doğa – Yazılımın sürekli gelişen ve uyum sağlayan yapısı. Kullanıcının çalıştığı ortama bağlıdır.
- Kalite Yönetimi – Kaliteli yazılım ürünleri sunmak 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: Tıpkı fiziğin elektrik mühendisliğinin temeli olması gibi, yazılım da bilimsel temellerini oluşturur.
- 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 bilimlerinde 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. Bir bilgi işlem sistemi geliştirilmeli ve veriler belirli bir bütçe dahilinde düzenli olarak güncellenmelidir.
- Sistem Mühendisliği: Çoğu yazılım, çok daha büyük bir sistemin bileşenidir; örneğin, endüstriyel bir 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 ve nükleer santraller gibi güvenlik açısından kritik alanlarda, yazılım arızasının maliyeti çok büyük olabilir çünkü can güvenliği risk altındadır.
- Hızlı geri dönüş süresine yönelik artan pazar talepleri.
- Yeni uygulamalar için gereken yazılımların artan karmaşıklığıyla başa çıkmak.
- Birbirleriyle iletişim kurması gereken yazılım sistemlerinin çeşitliliği.
Yazılım Ürünlerinin Nitelikleri
Herhangi bir yazılım ürününün özellikleri, ürünün kurulumu ve kullanıma alınması sırasında sergilediği özellikleri içerir.
Bunlar ürün tarafından sağlanan hizmetler değil, ürünün dinamik davranışı ve ürünün kullanım şekliyle ilgilidir.
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üleri gibi sistem kaynaklarını aşırı kullanmamalıdır. |
| Kullanılabilirlik | Yazılım uygulamasının uygun bir kullanıcı arayüzüne ve dokümantasyona sahip olması gerekir. |
Yukarıdaki özelliklerin optimize edilmesi oldukça zordur. Örneğin, daha iyi bir kullanıcı arayüzü sunmak sistem verimliliğini düşürebilir.
İyi Yazılımın Özellikleri
Herhangi bir yazılım, sunduğu özellikler ve kullanımına yardımcı olan yöntemler açısından değerlendirilmelidir.
Her yazılım aşağıdaki özellikleri karşılamalıdır:
- Operational
- Geçici
- Bakım
İşte yazılım uzmanları tarafından geliştirilen iyi yazılımların bazı önemli özellikleri.
Operational
Bu özellik, yazılımın operasyonlarda ne kadar iyi çalıştığını anlamamızı sağlar ve bu şu ölçütlerle değerlendirilebilir:
- 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 yön, yazılımın hızla değişen bir ortamda kendini ne kadar iyi uyarlayabildiğini ele almaktadır:
- Esneklik
- İdame
- Modülarite
- ölçeklenebilirlik

