Yazılım Mühendisliği Nedir ?

ServerErr0r

uid=0(root)
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.




 

WaTcHFuL

EVERYWHERE
Güzel bir yazı olmuş :)
 
Üst