Günümüzde yazılım sistemleri, bankacılıktan otomotiv sanayisine, sağlık bilgi sistemlerinden şirket yönetimine, telekomünikasyon sistemlerinden hava taşımacılığına, çok geniş alanlarda kullanılan bilgisayar sistemlerinin çok önemli ve kritik bir parçasını oluşturuyor. Yazılım Mühendisliği 1968 yılında NATO tarafından gerçekleştirilen bir konferans esnasında ortaya çıkan yeni bir kavram ve yeni bir mühendislik alanı olup, yazılım sistemlerinin mühendislik prensipleri çerçevesinde tasarımı, üretimi ve işletilmesini hedeflemektedir. Bilgisayar sistemleri artık günlük hayatın her alanında yoğun ve etkin bir şekilde kullanılmakta olduğundan, Yazılım Mühendisliği tüm disiplinlerde uygulamaları olan bir alan.
Yazılımın günümüzde hızla artan önemi, tüm dünyada yazılım mühendisliği disiplinindeki çalışmaların yoğunlaşmasına neden olmuştur. Yazılım mühendisliği disiplini 1968 yıllarından bu yana oldukça gelişme kaydetmiş; yazılım geliştirme metodolojileri, programlama paradigmaları, programlama dilleri ve çeşitli araçların geliştirilmesiyle hayli ilerleme sarfetmiştir. Bu gelişime , IEEE (IEEE Computer Society) ve ACM (Association for Computing Machinery) gibi mesleki kuruluşların önemli etkisi olmuştur. Ayrıca bu kuruluşlar son yıllarda, yazılım mühendisliği çekirdek bilgisinin tanımlanması ve bu bilgilerle uyumlu yazılım mühendisliği eğitim programlarının geliştirilmesine yönelik çalışmalar da yapmaktadır. Bu bağlamda, diğer mühendislik dallarında olduğu gibi yazılım mühendisliği için de ayrı eğitim programlarının oluşturulması gündeme gelmiştir. Yazılım mühendisliği disiplinin olgunlaşma sürecinde yazılım mühendisliği eğitimi özel bir önem kazanmıştır. Özel bir önem kazanan bu eğitim programı için özel projelere başlanmıştır. Genelde kısaltılmış adlarıyla karşımıza çıkabilecek olan bu projeler;
SWEBOK(Software Engineering Body of Knowledge) : Yazılım mühendisliği çekirdek bilgisinin tanımlanması.
SWCEPP(Software Engineering Code of Ethics and Professional Practice) : Yazılım mühendisliği etiklerinin tanımlanması.
SWEEP (Software Engineering Education Project) : SWEBOK ile uyumlu olarak örnek bir eğitim programı tanımlanması, olarak sıralanmaktadır.
Bu projeler sıralandıktan sonra birlikte çalışan IEEE ve ACM yazılım mühendisliği eğitimlerinin mufredatını tanımlamaya yönelik bir dizi çalımalar yapmış ve bu konu için araştırmalar yapması, gereklilikleri belirlemesi için bir kurul kurmuştur. Bu kurulun yaptığı araştırmalar ve ulaştığı bulgular neticesinde bir yazılım mühendisliği eğitminin müfredat açısından amaçları dolayısıyla bir bireye kazandırması amaçlanan yetenekler;
- Kullanıcı ihtiyaçlarını analiz ederek, uygun çözümlere tasarlayabilmek,
- Kullanıcının belirlediği fakat genelde sürtüşmelere yol açan zaman, maliyet, kullanılabilirlik noktalarında uzlaşma sağlayabilmek,
- Mühendislik yaklaşımlarını kullanarken etik, sosyal, yasal ve ekonomik ilgileri bütünleştirecek uygun çözümler tasarlamak.
- Yazılım tasarımı, geliştirilmesi, gerçekleştirimi ve doğrulanması için bir temel sağlayan mevcut teorileri, modelleri ve teknikleri anlamak ve uygulayabilmek.
- Yazılım geliştirme ortamında etkin olarak çalışmak, gerekli olduğunda liderlik yapabilmek ve kullanıcılarla iyi iletişim kurabilmek bir diğer deyişle proje yönetimi becerisi.
- İlgili alanlardaki gelişmeleri takip edip, uygulayabilmek
şeklinde sıralanmıştır. Sonuç olarak, amaçlardan da anlaşılacağı üzere Yazılım Mühendisliği eğitiminde
teknik bilgi ve beceriler yanında hukuki kavramlar, etik değerler, takım çalışması,proje yönetimi gibi soyut fakat önemli olan kavramların da kişiye kazandırılması amaçlanmıştır.
Kurulun belirledği amaçlar doğrultusunda belirlenen Yazılım Mühendisliği Eğitimi Bilgi Alanlarını geniş bir çeerçevede inceleyelim;
Temel Bilgiler
Yazılım mühendisliğinin temelleri, yazılım mühendisliğinin ürettiği ürünlerin niteliklerini anlatan teorik ve bilimsel , matematiksel temellerden ve öngörülebilir sonuçlar üreten ana ilkelerden oluşur. Buradaki ana nokta, kaynakları belirlenmiş bir amaca dönüştürmek için mühendislik tasarımı ve mühendislik biliminin uygulanarak en uygun modellemenin yapılabilmesidir.
Profesyonel Uygulama
Teknik beceri gelişiminden çok düşünce gelişimini hedefleyen profesyonel uygulama, yazılım mühendislerinin, profesyonel ve etiğe uygun olarak uygulamam yapabilmeleri için sahip olmaları gereken bilgi, beceri ve davranışlarla ilgilidir.
İhtiyaçları Belirleme
Kullanıcı ihtiyaçlarını mevcut teknolojilerle en uyumlu biçimde bağdaştırarak çözüm tasarlayabilme.
Yazılım Tasarım
Adından da anlaşılacağı üzere teknikler, stratejiler, gösterimler ve desenlerle ilgilidir. Tasarım, kaynaklar, performans, güvenilirlik ve güvenlik gibi kısıtlamalar gözönüne alınarak işlevsel gereksinimlere uygun olmalıdır. Ayrıca, yazılım bileşenleri arasındaki içsel arayüzler, mimari tasarım, veri tasarımı, kullanıcı arayüzü tasarımı, tasarım araçları ve tasarımın değerlendirilmesi de bu alanın kapsamındadır.
Yazılım Oluşturma
Tasarımı belirlenmiş yazılımın dökümantasyonu aşamasıdır. İşleyiş, teknik vs. açısından bilgileri içerir.
Yazılım Gelişimi
Yazılımın kullanıma başlanmasından sonra yazılımın desteklenmesi sürecini kapsar. Yazılımın eksiklerinin giderilmesi, test edilmesi,iyileştirilmesi gibi aşamaları içeren bu aşama maliyet gerektiren önemli bir aşamadır.
Yazılım Kalitesi
Yazılımın kalite nitelikleri, kullanılabilirlik, güvenilebilirlik, güvenlik, bakıma uygunluk, esneklik, etkinlik ve performans gibi kriterleri kapsamaktadır.
Yazılım Yönetimi
Yazılımın kullanımından sonra etkin bir şekilde devam edebilmesi, varlığını sürdürebilmesi için uygulama alanındaki tüm aşamaların izlenmesi ve kontrol edilmesini kapsar. Yazılım geliştirme projelerinin başarısı, farklı kollardaki işlerin koordinasyonu, yazılım versiyonlarının bakımı, kaynakların gerekli oldukları zaman var olabilmesi, projedeki işlerin uygun olarak bölünebilmesi, iletişimin kolaylaşması için kritik önemdedir.
Yazılım mühendisliğinin gerektirdiği nitelikler olarak belirtebileceğimiz bu tanımlar ülkemizde de yer alan lisans ve yüksek lisans yazılım mühendisliği eğitimlerinde müfredatın belirlenmesinde önemli bir rol oynamaktadır.
Makale:
Yazılım Mühendisliği Nedir ? Yazılım Mühendisliği Mustafa Alkan
|