Yazılım mühendisliği -Software engineering

Yazılım mühendisliği , yazılım geliştirmeye yönelik sistematik bir mühendislik yaklaşımıdır .

Yazılım mühendisi , bilgisayar yazılımını tasarlamak, geliştirmek, sürdürmek, test etmek ve değerlendirmek için yazılım mühendisliği ilkelerini uygulayan kişidir . Programcı terimi bazen eşanlamlı olarak kullanılır, ancak mühendislik eğitimi veya becerilerinin çağrışımlarından da yoksun olabilir.

Mühendislik teknikleri , yazılım yaşam döngüsü sürecinin tanımlanması, uygulanması, değerlendirilmesi, ölçülmesi, yönetilmesi, değiştirilmesi ve iyileştirilmesini içeren yazılım geliştirme sürecini bilgilendirmek için kullanılır . Konfigürasyondaki değişiklikleri sistematik olarak kontrol etmek ve sistem yaşam döngüsü boyunca konfigürasyon ve kodun bütünlüğünü ve izlenebilirliğini korumakla ilgili yazılım konfigürasyon yönetimini yoğun bir şekilde kullanır . Modern süreçler yazılım sürümü oluşturmayı kullanır .

Tarih

1960'lardan başlayarak, yazılım mühendisliği kendi mühendislik türü olarak görülüyordu . Ek olarak, yazılım mühendisliğinin gelişimi bir mücadele olarak görülüyordu. Yazılım mühendisleri için birçok soruna neden olan donanıma ayak uydurmak zordu. Sorunlar arasında bütçeyi aşan, son teslim tarihlerini aşan, kapsamlı hata ayıklama ve bakım gerektiren ve tüketicilerin ihtiyaçlarını başarısız bir şekilde karşılayan veya hiç tamamlanmayan yazılımlar vardı. 1968'de NATO , yazılımla ilgili konuların ele alındığı ilk Yazılım Mühendisliği konferansını düzenledi: yazılımın geliştirilmesi için kılavuzlar ve en iyi uygulamalar belirlendi.

"Yazılım mühendisliği" teriminin kökenleri çeşitli kaynaklara atfedilmiştir. "Yazılım mühendisliği" terimi, COMPUTERS and OTOMATION'ın Haziran 1965 sayısında şirketler tarafından sunulan hizmetler listesinde yer aldı ve daha resmi olarak ACM Communications of the ACM'nin (Cilt 9, sayı 8) Ağustos 1966 sayısında kullanıldı. ACM üyeliği”, ACM Başkanı Anthony A. Oettinger tarafından, aynı zamanda yazılım mühendisliği üzerine ilk konferans olan Profesör Friedrich L. Bauer tarafından 1968'de bir NATO konferansı başlığı ile ilişkilendirilmiştir . Margaret Hamilton , Apollo misyonları sırasında yaptıklarına meşruiyet kazandırmak için disiplini "yazılım mühendisliği" olarak tanımladı. O zamanlar bir " yazılım krizi " olarak algılanıyordu . 40. Uluslararası Yazılım Mühendisliği Konferansı (ICSE 2018), Genel Kurul'un Frederick Brooks ve Margaret Hamilton'ın açılış konuşmaları ile 50 yıllık "Yazılım Mühendisliği"ni kutluyor .

1984 yılında, Yazılım Mühendisliği Enstitüsü (SEI) federal olarak finanse edilen bir araştırma ve geliştirme merkezi olarak, Pittsburgh, Pennsylvania, Amerika Birleşik Devletleri'ndeki Carnegie Mellon Üniversitesi kampüsünde kuruldu. Watts Humphrey , yazılım mühendisliği sürecini anlama ve yönetmeyi amaçlayan SEI Yazılım Süreç Programını kurdu. Tanıtılan Süreç Olgunluk Düzeyleri, ABD Hükümetinin bir yazılım geliştirme ekibinin yeteneklerini nasıl değerlendirdiğini tanımlayan Geliştirme için Yetenek Olgunluk Modeli Entegrasyonu (CMMI-DEV) olacaktır.

Yazılım mühendisliği için modern, genel kabul görmüş en iyi uygulamalar, ISO/IEC JTC 1/SC 7 alt komitesi tarafından toplanmış ve Yazılım Mühendisliği Bilgi Grubu (SWEBOK) olarak yayınlanmıştır. Yazılım mühendisliği, ana bilgisayar disiplinlerinden biri olarak kabul edilir .

Tanımlar ve terminoloji tartışmaları

Yazılım mühendisliğinin dikkate değer tanımları şunları içerir:

  • "Yazılımın tasarımına, uygulanmasına, test edilmesine ve belgelenmesine bilimsel ve teknolojik bilgi, yöntem ve deneyimin sistematik uygulaması"—İşgücü İstatistikleri Bürosu— IEEE Sistemleri ve yazılım mühendisliği—Kelime bilgisi
  • "Yazılımın geliştirilmesi, çalıştırılması ve bakımına yönelik sistematik, disiplinli, ölçülebilir bir yaklaşımın uygulanması " — IEEE Standart Yazılım Mühendisliği Terminolojisi Sözlüğü
  • "yazılım üretiminin tüm yönleriyle ilgilenen bir mühendislik disiplini" - Ian Sommerville
  • "Gerçek makinelerde güvenilir ve verimli çalışan yazılımları ekonomik olarak elde etmek için sağlam mühendislik ilkelerinin oluşturulması ve kullanılması" - Fritz Bauer
  • "Karmaşık bilgisayar programlarının tasarımı, uygulanması ve bakımı ile ilgilenen bir bilgisayar bilimi dalı " - Merriam-Webster
  • "'yazılım mühendisliği' yalnızca kod yazma eylemini değil, bir kuruluşun bu kodu zaman içinde oluşturmak ve sürdürmek için kullandığı tüm araçları ve süreçleri kapsar. [...] Yazılım mühendisliği, 'zaman içinde entegre edilmiş programlama' olarak düşünülebilir. .'"—Google'da Yazılım Mühendisliği

Terim ayrıca daha az resmi olarak kullanılmıştır:

  • eskiden bilgisayar programlama ve sistem analizi olarak adlandırılan çok çeşitli faaliyetler için gayri resmi çağdaş bir terim olarak ;
  • resmen bilgisayar biliminin bir alt disiplini olarak incelenen bilgisayar programlama teorisinin aksine, bilgisayar programlama pratiğinin tüm yönleri için geniş bir terim olarak ;
  • bilgisayar programlamaya özel bir yaklaşımın savunuculuğunu somutlaştıran, bir sanat veya zanaattan ziyade bir mühendislik disiplini olarak ele alınmasını isteyen ve önerilen uygulamaların kodlanmasını savunan bir terim olarak.

"Yazılım mühendisi" kelimesinin etimolojisi

Margaret Hamilton , Apollo programı üzerindeki çalışmaları sırasında "yazılım mühendisliği" terimini destekledi . "Mühendislik" terimi, işin teknolojinin ilerlemesine yönelik diğer katkılar kadar ciddiye alınması gerektiğini kabul etmek için kullanıldı. Hamilton, terimin kullanımını detaylandırıyor:

Terimi ilk bulduğumda, daha önce hiç kimse, en azından bizim dünyamızda duymamıştı. Uzun zamandır devam eden bir şakaydı. Radikal fikirlerim hakkında benimle dalga geçmeyi seviyorlardı. En saygın donanım gurularından birinin, bir toplantıda herkese, yazılım geliştirme sürecinin de tıpkı donanımda olduğu gibi bir mühendislik disiplini olarak kabul edilmesi gerektiğini benimle hemfikir olduğunu açıkladığı unutulmaz bir gündü. Kendi başına yeni "terimi" kabul ettiği için değil, onun ve odadaki diğerlerinin kabulünü başlı başına bir mühendislik alanı olarak kabul ettiğimiz için.

Terimin uygunluğu

Bireysel yorumcular, yazılım mühendisliğinin veya bir mühendislik disiplini olarak meşruiyetinin nasıl tanımlanacağı konusunda keskin bir şekilde anlaşamadılar. David Parnas , yazılım mühendisliğinin aslında bir mühendislik biçimi olduğunu söyledi. Steve McConnell öyle olmadığını ama olması gerektiğini söyledi. Donald Knuth , programlamanın bir sanat ve bir bilim olduğunu söyledi. Edsger W. Dijkstra , yazılım mühendisliği ve yazılım mühendisi terimlerinin kötüye kullanıldığını ve özellikle Amerika Birleşik Devletleri'nde zararlı olarak değerlendirilmesi gerektiğini iddia etti .

Büyük ölçekli projelerde görevler

Yazılım gereksinimleri

Gereksinim mühendisliği , yazılım gereksinimlerinin ortaya çıkarılması, analizi, özellikleri ve doğrulanması ile ilgilidir . Yazılım gereksinimleri üç farklı türde olabilir. İşlevsel gereksinimler , işlevsel olmayan gereksinimler ve etki alanı gereksinimleri vardır. Yazılımın çalışması yapılmalı ve kullanıcının kullanması için uygun çıktı beklenmelidir. İşlevsel olmayan gereksinimler, taşınabilirlik, güvenlik, sürdürülebilirlik, güvenilirlik, ölçeklenebilirlik, performans, yeniden kullanılabilirlik ve esneklik gibi konularla ilgilenir. Bunlar aşağıdaki türlere ayrılır: arayüz kısıtlamaları, performans kısıtlamaları (tepki süresi, güvenlik, depolama alanı vb. gibi), işletim kısıtlamaları, yaşam döngüsü kısıtlamaları (sürdürülebilirlik, taşınabilirlik, vb.) ve ekonomik kısıtlamalar. İşlevsel olmayan gereksinimlerin belirlenmesi söz konusu olduğunda , sistemin veya yazılımın nasıl çalıştığına dair bilgi gereklidir. Etki alanı gereksinimleri, belirli bir proje kategorisinin veya etki alanının özelliği ile ilgilidir.

Yazılım Tasarımı

Yazılım tasarımı , bir sistemin veya bileşenin mimarisini, bileşenlerini, arayüzlerini ve diğer özelliklerini tanımlama süreci ile ilgilidir. Buna yazılım mimarisi de denir . Yazılım tasarımı, tasarımın üç farklı düzeyine ayrılmıştır . Üç seviye, arayüz tasarımı , mimari tasarım ve detaylı tasarımdır . Arayüz tasarımı, bir sistem ve çevresi arasındaki etkileşimdir. Bu, sistemin iç işleyişiyle birlikte yüksek bir soyutlama düzeyinde gerçekleşir. Mimari tasarım, bir sistemin ana bileşenleri ve bunların sorumlulukları, özellikleri, arayüzleri ve bunlar arasındaki ilişkiler ve etkileşimlerle ilgilidir. Ayrıntılı tasarım, tüm ana sistem bileşenlerinin, özelliklerinin, ilişkilerinin, işlenmesinin ve genellikle algoritmalarının ve veri yapılarının iç öğeleridir .

Yazılım yapımı

Yazılım geliştirmenin ana faaliyeti olan yazılım yapımı, programlama , birim testi , entegrasyon testi ve hata ayıklamanın birleşimidir . Bu aşamadaki testler genellikle programcı tarafından yazılım yapım aşamasındayken, az önce ne yazıldığını doğrulamak ve kodun bir sonraki adıma ne zaman gönderilmeye hazır olduğuna karar vermek için gerçekleştirilir.

Yazılım testi

Yazılım testi , paydaşlara test edilen ürün veya hizmetin kalitesi hakkında bilgi sağlamak için birim testi ve entegrasyon testi gibi farklı yaklaşımlarla yürütülen ampirik, teknik bir araştırmadır . Bu, yazılım kalitesinin bir yönüdür . Yazılım geliştirmede ayrı bir aşama olarak, genellikle kalite güvence personeli veya kodu yazan dışında bir geliştirici tarafından gerçekleştirilir.

Yazılım bakımı

Yazılım bakımı , yazılım ürününü sevk ettikten sonra uygun maliyetli destek sağlamak için gereken faaliyetleri ifade eder. Yazılım bakımı, hataları düzeltmek ve performansını artırmak için dağıtımdan sonra yazılım uygulamalarını değiştirmek ve güncellemektir. Yazılımın gerçek dünyayla çok ilgisi vardır ve gerçek dünya değiştiğinde yazılım bakımı gerekir. Yazılım bakımı şunları içerir: hata düzeltme , optimizasyon, kullanılmayan ve atılan özelliklerin silinmesi ve zaten var olan özelliklerin geliştirilmesi. Genellikle bakım, proje maliyetinin yaklaşık %40 ila %80'ini oluşturur, bu nedenle bakıma odaklanmak maliyetleri düşürür.

Eğitim

Bilgisayar programlama bilgisi , yazılım mühendisi olmak için bir ön koşuldur. 2004 yılında IEEE Computer Society , dört yıllık deneyime sahip lisansüstü bir yazılım mühendisi tarafından öğrenilmesini önerdikleri bilgi birikimini açıklayan ISO/IEC Teknik Raporu 1979:2005 olarak yayınlanan SWEBOK'u üretti . Birçok yazılım mühendisi, bir üniversite diploması alarak veya bir meslek yüksekokulunda eğitim alarak mesleğe girer. Lisans yazılım mühendisliği dereceleri için bir standart uluslararası müfredat, IEEE Computer Society ve Association for Computing Machinery'nin Bilgisayar Müfredatı Ortak Görev Gücü tarafından tanımlanmış ve 2014'te güncellenmiştir. Bazı üniversitelerin Yazılım Mühendisliği lisans programları vardır; 2010 itibariyle, Amerika Birleşik Devletleri'nde 244 Kampüs Yazılım Mühendisliği Lisans programı, 70 Çevrimiçi program, 230 Yüksek Lisans düzeyinde program, 41 Doktora düzeyinde program ve 69 Sertifika düzeyinde program vardı.

Üniversite eğitimine ek olarak, birçok şirket bilgi teknolojisi alanında kariyer yapmak isteyen öğrenciler için stajlara sponsorluk yapmaktadır. Bu stajlar, öğrenciyi tipik yazılım mühendislerinin her gün karşılaştığı ilginç gerçek dünya görevleriyle tanıştırabilir. Benzer bir deneyim, yazılım mühendisliğinde askerlik hizmeti yoluyla kazanılabilir .

Yazılım mühendisliği lisans programları

Bugün tüm uygulayıcıların yarısı bilgisayar bilimi , bilgi sistemleri veya bilgi teknolojisi alanlarında derecelere sahiptir . Küçük ama giderek artan sayıda uygulayıcı yazılım mühendisliği derecelerine sahiptir. 1987'de, Imperial College London'daki Bilgi İşlem Bölümü , Birleşik Krallık'ta ve dünyada ilk üç yıllık yazılım mühendisliği lisans derecesini tanıttı; Ertesi yıl, Sheffield Üniversitesi benzer bir program kurdu. 1996 yılında, Rochester Teknoloji Enstitüsü Amerika Birleşik Devletleri'nde ilk yazılım mühendisliği lisans programını kurdu, ancak 2003 yılına kadar ABET akreditasyonu alamadı , aynı zamanda Rice Üniversitesi , Clarkson Üniversitesi , Milwaukee Mühendislik Okulu ve Mississippi Eyalet Üniversitesi onlarınkini elde etti. 1997 yılında, Hindistan, Coimbatore'deki PSG College of Technology, Yazılım Mühendisliği alanında beş yıllık entegre bir Yüksek Lisans derecesi başlatan ilk kişi oldu.

O zamandan beri birçok üniversitede yazılım mühendisliği lisans dereceleri kurulmuştur. Lisans yazılım mühendisliği dereceleri için standart bir uluslararası müfredat olan SE2004 , Bilgisayar Makineleri Birliği ve IEEE Bilgisayar Topluluğu'nun finansmanıyla 2001 ve 2004 yılları arasında bir yönlendirme komitesi tarafından tanımlandı . 2004 itibariyle, ABD'de yaklaşık 50 üniversite, hem bilgisayar bilimi hem de mühendislik ilkeleri ve uygulamalarını öğreten yazılım mühendisliği dereceleri sunmaktadır. İlk yazılım mühendisliği yüksek lisans derecesi 1979'da Seattle Üniversitesi'nde kuruldu . O zamandan beri lisansüstü yazılım mühendisliği dereceleri daha birçok üniversiteden edinilebilir hale getirildi. Aynı şekilde Kanada'da, Kanada Profesyonel Mühendisler Konseyi'nin Kanada Mühendislik Akreditasyon Kurulu (CEAB) çeşitli yazılım mühendisliği programlarını tanımıştır.

1998 yılında, ABD Deniz Yüksek Lisans Okulu (NPS) , Yazılım Mühendisliği alanında dünyadaki ilk doktora programını kurdu. Ek olarak, California Eyalet Üniversitesi, Fullerton'daki Bilgisayar Bilimi ve Mühendisliği Bölümü aracılığıyla sunulan Yazılım Mühendisliği Yüksek Lisans (MSE) derecesi gibi Yazılım Mühendisliğinde birçok çevrimiçi ileri derece ortaya çıktı . Steve McConnell, çoğu üniversitenin yazılım mühendisliği yerine bilgisayar bilimi öğrettiği için, gerçek yazılım mühendisi sıkıntısı olduğunu düşünüyor. ETS (École de technologie supérieure) Üniversitesi ve UQAM (Université du Québec à Montréal) , bir yazılım mühendisi tarafından kapsanan bilgi birikimini tanımlayan bir ISO standardı haline gelen Yazılım Mühendisliği Bilgi Grubunu ( SWEBOK ) geliştirmek üzere IEEE tarafından yetkilendirilmiştir .

Uzmanlık alanı

Profesyonel yazılım mühendislerinin lisanslanması veya sertifikalandırılması için yasal gereklilikler dünya çapında farklılık göstermektedir. Birleşik Krallık'ta, Yazılım Mühendisi unvanını almak veya kullanmak için herhangi bir lisans veya yasal gereklilik yoktur. Kanada'nın Alberta, British Columbia, Ontario ve Quebec gibi bazı bölgelerinde, yazılım mühendisleri Professional Engineer (P.Eng) unvanına ve/veya Information Systems Professional (ISP) unvanına sahip olabilir. Avrupa'da Yazılım Mühendisleri, Avrupa Mühendisi (EUR ING) profesyonel unvanını alabilirler.

Amerika Birleşik Devletleri, 2013'ten beri Yazılım Mühendisliği için bir NCEES Profesyonel Mühendis sınavı teklif ederek, Yazılım Mühendislerinin lisanslanmasına ve tanınmasına izin verdi. NCEES, katılım eksikliği nedeniyle sınavı Nisan 2019'dan sonra sonlandıracaktır. Zorunlu lisanslama şu anda hala büyük ölçüde tartışılıyor ve tartışmalı olarak algılanıyor. ABD'nin Teksas gibi bazı bölgelerinde, Mühendis teriminin kullanımı kanunla düzenlenir ve yalnızca Profesyonel Mühendis lisansına sahip kişilerin kullanımına mahsustur.

Yazılım mühendisliğinin ABD merkezli iki ana profesyonel kuruluşu olan IEEE Computer Society ve ACM , yazılım mühendisliği mesleğine yönelik kılavuzlar yayınlamaktadır. IEEE'nin Yazılım Mühendisliği Bilgi Grubu Kılavuzu – 2004 Sürümü veya SWEBOK , alanı tanımlar ve IEEE'nin uygulamalı bir yazılım mühendisinin sahip olmasını beklediği bilgileri tanımlar. En güncel SWEBOK v3, güncellenmiş bir versiyondur ve 2014'te yayımlanmıştır. IEEE ayrıca bir "Yazılım Mühendisliği Etik Kuralları" yayınlamaktadır.

İş

ABD Çalışma İstatistikleri Bürosu (BLS), 2018'de ABD'de iş sahibi olan 1.365.500 yazılım geliştiriciyi saymıştır . Bir çalışma alanı olarak görece yeni olması nedeniyle, yazılım mühendisliğinde örgün eğitim genellikle bilgisayar bilimi müfredatının bir parçası olarak öğretilir ve pek çoğu yazılım mühendisleri bilgisayar bilimi derecelerine sahiptir. BLS, 2014'ten 2024'e kadar bilgisayar yazılımı mühendisliğinin %17 artacağını tahmin ediyor. Bu, yazılım mühendisliği için 2012'den 2022'ye kadar olan %22'lik BLS tahmininin altındadır. Ayrıca, %30 2010 ila 2020 BLS tahminlerinden daha düşüktür. Bu eğilim nedeniyle, iş büyümesi son on yıldaki kadar hızlı olmayabilir, çünkü Amerika Birleşik Devletleri'nde bilgisayar yazılım mühendislerine gidecek işler bunun yerine Hindistan ve diğer yabancı ülkelerdeki bilgisayar yazılım mühendislerine dış kaynak yaptırılacaktır. Ek olarak, Bilgisayar Programcıları için BLS İş Görünümü, 2014–24, İş Görünümünde -%8'lik bir düşüş (kendi sözleriyle bir düşüş), ardından İş Görünümü'nde -%9'luk bir 2019-29 düşüş ve %10'luk bir düşüş öngörüyor. 2020-2030 bilgisayar programlayanlar için. Ayrıca, birçok yazılım alanındaki kadınlar da diğer mühendislik alanlarına kıyasla yıllar içinde azalmaktadır. Bununla birlikte, ABD pazarındaki birçok mevcut yazılım mühendisi önümüzdeki birkaç on yıl içinde mesleği veya yaşı piyasadan çıkaracağından , bu eğilim gelecekte değişebilir veya yavaşlayabilir .

Birçok yazılım mühendisi, çalışan veya yüklenici olarak çalışır. Yazılım mühendisleri işletmeler, devlet kurumları (sivil veya askeri) ve kar amacı gütmeyen kuruluşlarla çalışır. Bazı yazılım mühendisleri kendileri için serbest çalışan olarak çalışırlar . Bazı kuruluşlar, yazılım geliştirme sürecindeki görevlerin her birini gerçekleştirecek uzmanlara sahiptir . Diğer kuruluşlar, yazılım mühendislerinin bunların çoğunu veya tamamını yapmasını gerektirir. Büyük projelerde insanlar sadece bir rolde uzmanlaşabilirler. Küçük projelerde, insanlar aynı anda birden fazla veya tüm rolü üstlenebilirler. Birçok şirket , yaz tatilinde veya stajlarda genellikle üniversite veya kolej öğrencileri olmak üzere stajyerler işe alır . Uzmanlıklar arasında analistler , mimarlar , geliştiriciler , testçiler , teknik destek , ara katman analistleri , proje yöneticileri , eğitimciler ve araştırmacılar bulunur .

Çoğu yazılım mühendisi ve programcı haftada 40 saat çalışıyor, ancak yazılım mühendislerinin yaklaşık yüzde 15'i ve programcıların yüzde 11'i 2008'de haftada 50 saatten fazla çalıştı. Bu mesleklerde olası yaralanmalar, uzun süre oturarak geçiren diğer işçiler gibi mümkündür . bir bilgisayar terminalinin önünde klavyede yazarak, mühendisler ve programcılar göz yorgunluğuna, sırt rahatsızlığına ve karpal tünel sendromu gibi el ve bilek sorunlarına yatkındır .

sertifika

Yazılım Mühendisliği Enstitüsü , güvenlik , süreç iyileştirme ve yazılım mimarisi gibi belirli konularda sertifikalar sunar . IBM , Microsoft ve diğer şirketler de kendi sertifika sınavlarına sponsorluk yapmaktadır. Birçok BT sertifika programı belirli teknolojilere yöneliktir ve bu teknolojilerin satıcıları tarafından yönetilir. Bu sertifika programları, bu teknolojileri kullanan kişileri istihdam edecek kurumlara göre uyarlanmıştır.

Genel yazılım mühendisliği becerilerinin daha geniş sertifikasyonu, çeşitli profesyonel topluluklar aracılığıyla mevcuttur. 2006 itibariyle, IEEE 575'ten fazla yazılım uzmanına Sertifikalı Yazılım Geliştirme Uzmanı (CSDP) olarak sertifika vermiştir. 2008'de Sertifikalı Yazılım Geliştirme Ortağı (CSDA) olarak bilinen giriş seviyesi bir sertifika eklediler. ACM , 1980'lerin başında, ilgi eksikliği nedeniyle durdurulan profesyonel bir sertifika programına sahipti. ACM, 1990'ların sonlarında yazılım mühendislerinin profesyonel sertifikalandırma olasılığını inceledi, ancak sonunda böyle bir sertifikanın profesyonel endüstriyel yazılım mühendisliği uygulaması için uygun olmadığına karar verdi.

Birleşik Krallık'ta İngiliz Bilgisayar Topluluğu , tam nitelikli üyelere ( MBCS ) sunulan Chartered IT Professional (CITP) adlı yasal olarak tanınan bir profesyonel sertifika geliştirmiştir . Yazılım mühendisleri , Mühendislik ve Teknoloji Enstitüsü üyeliği için uygun olabilir ve bu nedenle Chartered Engineer statüsüne hak kazanabilir. Kanada'da Kanada Bilgi İşleme Derneği , Bilgi Sistemleri Uzmanı (ISP) adı verilen yasal olarak tanınan bir profesyonel sertifika geliştirmiştir . Kanada, Ontario'da, Kanada Mühendislik Akreditasyon Kurulu (CEAB) tarafından akredite edilmiş bir programdan mezun olan, PEO'nun ( Profesyonel Mühendisler Ontario ) Mesleki Uygulama Sınavını (PPE) başarıyla tamamlayan ve en az 48 aylık kabul edilebilir mühendislik deneyimine sahip Yazılım Mühendisleri lisans almaya hak kazanırlar. Profesyonel Mühendisler Ontario aracılığıyla ve Profesyonel Mühendisler P.Eng olabilir. Ancak PEO herhangi bir çevrimiçi veya uzaktan eğitimi tanımıyor; ve ikisi arasındaki muazzam örtüşmeye rağmen Bilgisayar Bilimi programlarını yazılım mühendisliği programlarına eşdeğer görmez. Bu, tartışmalara ve sertifikasyon savaşına yol açtı. Ayrıca, meslek için P.Eng sahiplerinin sayısını son derece düşük tuttu. Bu alanda çalışan profesyonellerin büyük çoğunluğu, SE değil, CS derecesine sahiptir. SE dışı derece sahipleri için zorlu sertifika yolu göz önüne alındığında, çoğu lisansı almaktan asla rahatsız olmaz.

Küreselleşmenin etkisi

Dış kaynak kullanımının ilk etkisi ve gelişmekte olan üçüncü dünya ülkelerindeki uluslararası insan kaynaklarının nispeten daha düşük maliyeti, yazılım geliştirme faaliyetlerinin Kuzey Amerika ve Avrupa'daki şirketlerden Hindistan'a ve daha sonra Çin, Rusya ve diğer gelişmekte olan ülkelere büyük bir göçüne yol açtı. Bu yaklaşımın, özellikle müşteriler ve geliştiriciler arasındaki insan etkileşimini ve büyük iş transferini engelleyen mesafe / zaman dilimi farkı gibi bazı kusurları vardı. Bunun yazılım mühendisliği mesleğinin birçok yönü üzerinde olumsuz bir etkisi oldu. Örneğin, gelişmiş dünyadaki bazı öğrenciler, offshore dış kaynak kullanımı (diğer ülkelerden yazılım ürünleri veya hizmetleri ithal etme) ve yabancı vizeli işçiler tarafından yerinden edilme korkusu nedeniyle yazılım mühendisliği ile ilgili eğitimden kaçınırlar . İstatistikler şu anda yazılım mühendisliğinin kendisi için bir tehdit oluşturmasa da; ilgili bir kariyer, bilgisayar programlama etkilenmiş gibi görünüyor. Bununla birlikte, güneşi takip eden iş akışı yoluyla açık deniz ve kıyıya yakın kaynaklardan akıllıca yararlanma yeteneği, birçok kuruluşun genel operasyonel kapasitesini geliştirmiştir. Kuzey Amerikalılar işten ayrılırken Asyalılar işe yeni geliyor. Asyalılar işten ayrılırken Avrupalılar işe geliyor. Bu, fazla mesai ücreti ödemeden veya önemli bir insan kaynağı olan uyku düzenini bozmadan, iş açısından kritik süreçler üzerinde günde 24 saat sürekli bir insan gözetimine sahip olma yeteneği sağlar.

Küresel dış kaynak kullanımının çeşitli avantajları olsa da, küresel – ve genellikle dağıtılmış – geliştirme, geliştiriciler arasındaki mesafeden kaynaklanan ciddi zorluklarla karşılaşabilir. Bunun nedeni, coğrafi, zamansal, kültürel ve iletişim (farklı yerlerde farklı dillerin ve İngilizce lehçelerinin kullanımını içeren) olarak tanımlanan bu tür mesafenin temel unsurlarıdır. Son 15 yılda küresel yazılım geliştirme alanında araştırmalar yapıldı ve karmaşık faaliyetlerle ilgili faydaları ve sorunları vurgulayan kapsamlı bir ilgili çalışma yayınlandı. Yazılım mühendisliğinin diğer yönlerinde olduğu gibi, bu ve ilgili alanlarda araştırmalar devam etmektedir.

Ödüller

Yazılım mühendisliği alanında çeşitli ödüller vardır:

  • Codie ödülleri , Yazılım ve Bilgi Endüstrisi Derneği tarafından yazılım endüstrisinde yazılım geliştirmede mükemmellik için verilen yıllık bir ödüldür .
  • Jolt Ödülleri , yazılım endüstrisindeki ödüllerdir.
  • Stevens Ödülü , Wayne Stevens'ın anısına verilen bir yazılım mühendisliği ödülüdür.

eleştiri

Yazılım mühendisliği, uygulayıcılarını problem çözmede iyi tanımlanmış mühendislik yaklaşımlarını takip eden bireyler olarak görür. Bu yaklaşımlar, her zaman öngörülebilirlik, kesinlik, azaltılmış risk ve profesyonellik çağrışımlarıyla çeşitli yazılım mühendisliği kitaplarında ve araştırma makalelerinde belirtilmiştir. Bu bakış açısı, mühendislik bilgisini yaymak ve alanı olgunlaştırmak için mekanizmalar olarak lisanslama, sertifikalandırma ve kodlanmış bilgi yapıları çağrılarına yol açmıştır.

Yazılım mühendisliği mühendisliği genişletir ve mühendislik modelinden, yani mühendislik süreci, mühendislik proje yönetimi, mühendislik gereksinimleri, mühendislik tasarımı, mühendislik inşaatı ve mühendislik doğrulamasından yararlanır. Konsept o kadar yeni ki, nadiren anlaşılıyor ve yazılım mühendisliği ders kitapları, makaleler ve programcılar ve zanaatkar toplulukları da dahil olmak üzere yaygın olarak yanlış yorumlanıyor.

Yazılım mühendisliğindeki temel sorunlardan biri, yaklaşımların yeterince deneysel olmamasıdır, çünkü yaklaşımların gerçek dünya doğrulaması genellikle yoktur veya çok sınırlıdır ve bu nedenle yazılım mühendisliği genellikle yalnızca "teorik bir ortamda" uygulanabilir olarak yanlış yorumlanır.

Bugün yazılım geliştirmede kullanılan birçok kavramın kurucusu olan Edsger Dijkstra , 2002'deki ölümüne kadar "yazılım mühendisliği" fikrini reddetti ve bu terimlerin bilgisayar biliminin "radikal yeniliği" olarak adlandırdığı şey için zayıf analojiler olduğunu savundu. :

Bu fenomenlerin bir kısmı "Yazılım Mühendisliği" adı altında toplanmıştır. Ekonomi "Sefil Bilim" olarak bilindiği için, yazılım mühendisliğinin amacı kendi içinde çelişkili olduğu için hedefine bile yaklaşamadığı için mahkum olan "Kıyametli Disiplin" olarak bilinmelidir. Yazılım mühendisliği elbette kendisini başka bir değerli neden olarak sunar, ancak bu göz yıkamadır: literatürünü dikkatlice okursanız ve adanmışlarının gerçekte ne yaptığını analiz ederseniz, yazılım mühendisliğinin tüzüğü olarak kabul ettiğini keşfedeceksiniz "Yapamazsan nasıl programlanır? "

Ayrıca bakınız

Çalışma ve uygulama

Roller

Profesyonel yönler

Referanslar

alıntılar

Kaynaklar

daha fazla okuma

Dış bağlantılar