Alt sınıfı | Sistem Mühendisi |
---|---|
Parçası | Bilgi teknolojisi , sistem mühendisliği |
Tarafından uygulandı | Yazılım mühendisi , Mühendis Araştırma Yazılımı ( d ) |
Yazılım mühendisliği , yazılım mühendisliği veya yazılım mühendisliği (in English : yazılım mühendisliği ) bir bilimdir endüstri mühendisliği olduğunu araştırmalar çalışma yöntemleri ve mühendislerin en iyi uygulamaları yazılım geliştirmek . Yazılım mühendisliği özellikle, büyük yazılımların müşteri beklentilerini karşılamasını, güvenilir olmasını, bakım maliyetini düşürmesini ve son teslim tarihlerine ve yapım maliyetlerine uyurken iyi performansa sahip olmasını mümkün kılan sistematik prosedürlerle ilgilenir.
Bakanlık kararnamesine göre 30 Aralık 1983bilgisayar sözlüğünün zenginleştirilmesi üzerine [ Official Journal of19 Şubat 1984], yazılım mühendisliği "yazılım üretimini ve izlenmesini rasyonelleştirmeyi amaçlayan ürün ve prosedürlerin tasarımı ve uygulanmasına yönelik faaliyetler bütünüdür".
Mühendislik bilgisayar programı olduğu uygulanan da yazılım olarak adlandırılan mühendislik olduğunu, hangi aktivite kaynak kodu içinde yazılım belirtilen ve daha sonra üretilen ve dağıtılmış. Yazılım mühendisliği , yazılımın yaşam döngüsüne dokunur . Bir bilgisayar yazılımının yaratılmasının tüm aşamaları burada öğretilir: ihtiyacın analizi , şartnamelerin detaylandırılması , yazılımın iç mekanizmasının kavramsallaştırılması ve ayrıca programlama teknikleri, geliştirme , test aşaması ve son olarak hizmet .
Kılavuz SWEBOK IEEE olarak, yazılım mühendisliği bilginin alanlarını tanımlayan Proje Yönetimi Bilgi Tabanı dan (PMBOK) Proje Yönetim Enstitüsü (PMI) yapar için, proje yönetimi .
İngilizce " Yazılım " terimi ilk olarak 1958'de istatistikçi John Tukey tarafından kullanıldı . İlk bazlar yazılım mühendisliği İngiliz "in, yazılım mühendisliği" , atfedilir bilgisayar bilim adamı ve matematikçi Margaret Hamilton , tasarımcı gömülü sistemin içinde Apollo Programı :
"Bu terimi ilk önerdiğimde, daha önce hiç kimse duymamıştı, en azından bizim dünyamızda [ Çevirmenin notu: NASA ]. Uzun bir süre benim radikal fikirlerim konusunda alay etmekten hoşlanıyorlardı. Donanım alanında en saygın gurulardan birinin, bir toplantıda benimle hemfikir olduğunu, yazılım geliştirme sürecinin de elektronik cihazlar gibi bir mühendislik disiplini olarak değerlendirilmesi gerektiğini açıkladığını hatırlamak için bir gündü. Yeni terimi kabul ettiği için değil, kendi başına bir mühendislik alanında çalışan onun ve odadaki diğerlerinin onayını kazandığımız için. "
" Yazılım mühendisliği " terimi ilk kez 1968'de NATO'nun bu konuda düzenlediği bir konferansta kamuoyuna duyuruldu. Ertesi yıl yazılım kriziyle ilgili bir konferansta tekrarlandı . Yazılım krizi, bilgisayarlarda entegre devrelerin kullanımının başlamasıyla aynı zamana denk gelen yazılım kalitesinde önemli bir düşüştür : bilgisayarların hesaplama gücündeki artış, çok daha karmaşık yazılımlar üretmeyi mümkün kılmıştır. önce. 1972 yılında, IEEE ilk periyodik yayını olan “ Yazılım Mühendisliği İşlemleri ” ni çıkardı ve böylece ortaya çıkan bu mühendislik disiplinini adadı.
Büyük ölçekli yazılım oluşturmaya yönelik ilk girişimler, gayri resmi yazılım mühendislerinin çalışmalarının sınırlarını çabucak gösterdi: üretilen ürünler zamanında tamamlanmadı, beklenenden daha pahalıydı, güvenilmezdi ve düşük performansa sahipti ve bakımı pahalıydı. Bilgisayar donanımının maliyeti düştükçe, yazılımın maliyeti de düştü. Çalışmalar, çağdaş yazılımın doğasında bulunan karmaşıklığa uyarlanmış çalışma yöntemleri arayışına odaklandı ve yazılım mühendisliğini doğurdu .
Bugün (2004'te), yazılım mühendisliği yöntemlerinin kullanımı, yazılım endüstrisinde nispeten nadirdir. Programcı genellikle yetenek, deneyim ve teorik bilgilerinin yönlendirdiği bir zanaatkar gibi çalışır ve yazılım krizi, yazılım endüstrisinin kronik bir hastalığına benzer.
1985 yılına kadar bilgisayarlar şirketlere veya kurumlara aitti. 1950-1960 yıllarında, yazılım üye kurumlar tarafından kendi ihtiyaçları için geliştirildi, yazılım dağıtımı çok sınırlıydı ve bunlar esas olarak toplu işlem (İngiliz toplu işi ) gerçekleştirmek için kullanıldı .
1970 yılında, çoklu kullanıcı , grafik arayüzler , eşzamanlı programlama , veritabanları ve gerçek zamanlı gibi yeni kavramlar ortaya çıktı . Yazılım, bu yeni özellikleri uyguladığı ve bunlardan yararlandığı için eskisinden çok daha karmaşık hale geldi. Aynı zamanda ilk yazılım yayıncıları ortaya çıktı ve bu yazılım bir meta haline geldi .
1973 ve yana daha ziyade gelişinden beri kişisel bilgisayarlar 1980 yılında, yazılım gelmesiyle birlikte, tüketiciye yönelik, kitlesel dağıtım iyi olmuştur yazılım paketleri - hazır giyim yazılımı . Bilgisayar donanımının fiyatı da önemli ölçüde düştü, bu da yazılım maliyetinin bilgisayarın toplam maliyetine oranını artırdı.
1985 ve gelişine 2000'li yılların başında, Arasında dağıtılmış sistemlerde , internet , istemci-sunucu mimarisi ve bulut bilişim , yazılım, bir statüsüne taşındı bağımsız tek başına bir ürün kümesi bir unsuru, o birkaç hangi bilgisayarlar ve çeşitli yazılım programları birlikte çalışır. Nesneye yönelik programlamanın ve tasarım odaklı nesnenin ortaya çıkışı, mühendislerin ve yazılımların çalışmalarını dönüştürür ve ardından örüntü tanıma , otomatik kesinti , otomatik çeviri ve veri madenciliği gibi yapay zeka biçimlerini içerir .
Yazılım mühendisliği aşağıdaki çeşitli mesleklerle uygulanmaktadır:
Yazılım mühendisliği profesyonellerinin, yazılım geliştirmenin gerekli olduğu tüm alanlarda, örneğin aşağıdaki sektörlerde çalışması gerekir:
Yazılım mühendisliği, bilgi ve uygulama alanını tanımlamayı mümkün kılan bir dizi uluslararası standartlara dayanmaktadır.
Ayrıca, ISO 15504 , bir bilgisayar mühendisliği şirketinin ürünlerinin kalitesini anlamak, ölçmek ve iyileştirmek için yapılandırılmış bir dizi en iyi uygulama sağlar.
Yazılım mühendisliği bilgi alanı, özellikle bir yazılımın yaşam döngüsünü, yaşam döngüsünün temel faaliyetlerini - bir proje sahibinin talebinden ürünün nihai hizmetten çıkarılmasına kadar - ve bu faaliyetlerin hangi sırayla gerçekleştirildiğini kapsar. gerçekleştirildi. Aynı zamanda dahil olan farklı kişileri de kapsar: satış teknisyeni , mühendisler, alıcılar, kullanıcılar ve bilgi sistemleri müdürü .
SWEBOK'a göre yazılım yaşam döngüsünün temel faaliyetleri şunlardır: fonksiyonel analiz , mimari , programlama , test , doğrulama , bakım ve proje yönetimi .
İhtiyaç analizi Yazılımın sunması gereken işlevlerin çeşitliliğinin yanı sıra vermesi gereken sonuçlara ilişkin ayrıntılı bilgilerin toplanmasından oluşur. Yazılımın faaliyet alanı bilgisi (örnek: bankacılık, endüstri, idare) mühendisin işini kolaylaştırır. Tasarım (değiştir | kaynağı değiştir) Yazılımın sunması gereken işlevlerin her birini elde etmek için programlanması gereken mekanizmaların geniş ana hatlarının belirlenmesi ve şematize edilmesinden oluşur. Modelleme formalizmlerine ( örneğin UML ) göre yazılımın kavramsal planları daha sonra üretilecektir. Bazı yaygın tasarım problemlerini çözmek için yazılım tasarım kalıplarının kullanımı da bu aşamada uygulanmaktadır. Yazılım mimarisi de kullanılabilir. İnşaat Kaynak kodu , beklenen işlevleri sağlayacak program talimatları ve yazılımın gövdesini yazmaktan oluşur . Daha sonra tasarım sırasında başlangıçta oluşturulan planlar takip edilerek programlama gerçekleştirilir. Seçilen metodolojiye (örn. Yinelemeli) bağlı olarak, mühendisler tasarımı yapının gerçekliğine göre ayarlamak için çizim tahtalarına dönebilirler. Testler Mümkün olduğunca çok hatayı tespit etmeye yarayan , arızalara veya yanlış sonuçlara neden olan hataları programlayan mühendisler tarafından yapılan bir dizi kontrol . Doğrulama o yazılım tarafından sunulan işlevler onların beklenti ve ihtiyaçlarına uygun olduğunu kontrol eder sırasında istemci tarafından gözden geçirilmesidir. Bakım Yazılım kullanıcılara sunulduktan sonra ve yazılımda dönüşümler, düzeltmeler veya iyileştirmelerden geçtikten sonra gerçekleştirilen analiz, programlama ve test işlemleri. Bu bakımın kolaylığı, tasarım aşamasında kendisine verilen öneme bağlı olacaktır. Proje Yönetimi Bir mühendis ekibinin organize edilmesi, görevlerin dağıtılması ve zamanında bitirilmesi için işin ilerlemesinin sağlanmasından oluşan yazılım üzerinde yapılan çalışma boyunca gerçekleştirilen bir etkinlik. Diğer mühendislik alanlarında da yürütülen bir yönetim faaliyetidir . Araçlar ve yöntemler Yazılım mühendisliği temalar özellikle kapak araçları ve yöntemleri için belirtilerek yazılım işlevleri , biçimsel yöntemler ( Yöntem B örneğin), yazılım tasarımı araçları ve yöntemleri, tasarım araçları, yazılım atölyesi, yazılım mühendisliği. Kermeta modelleri , örneğin kod optimizasyonu otomatik hale. Diğer alanlar, ortak araçları paylaştıkları ölçüde yazılım mühendisliğiyle ilgilidir: kodun resmi açıklaması, kullanılan dillerin gramerleri . Bu alanlar örneğin:Yöntemlerin bilgi alanı, çeşitli yazılım geliştirme çalışmalarının gerçekleştirildiği sırayla ilgilidir - kademeli, V, yinelemeli, sprintlerde veya paralel olarak:
Çağlayan Klasik mühendislik yöntemi , kademeli olarak işlevsel analiz, ardından tasarım, programlama ve test çalışmalarını ardışık olarak yürütmekten oluşur . V döngüsü V döngü ile ortak bir geleneksel yöntem, bir mühendislik sistemleri . Sistem bir bütün olarak monte edilip test edilmeden önce, daha basit parçalardan oluşan bir sistemin tasarlanmasından oluşur. Yinelemeli Bir başka yöntem daha sonra yeni bir yazılım fonksiyonları, bir kısıtlı grubu ilk analizi, programlama, deney ve doğrulama işi gerçekleştirmek için olan yineleme : a, böylece bir fonksiyon daha rafine grubu bu işlemleri tekrarlamak için kullanılacak, ve spiral döngü . Çevik Çevik çeşitli gelişimi için eleme miras klasik mühendislik süreçleri ile bu mola işler olduğunu mühendisliği . Bu süreçler, yazılım özelliklerinde ve kaynak kodunda sürekli değişiklikleri, yakın işbirliğini ve güçlü son kullanıcı katılımını ve birçok kısa yinelemeli sarmal bir geliştirme döngüsünü vurgular. Scrum , Extreme programlama ve Rational Unified Process çevik yöntemlerdir.Yazılım mühendisliği çalışmaları, mühendislik camiasının çalışma şekillerini doğrudan etkileyen çeşitli yanlış inançlarını da belirledi. örnekler:
Ampirik yazılım mühendisliği doğrulayarak veya bu inançların çürütme ilgilenen yazılım mühendisliği dalıdır.