Yazılım mühendisliği, yazılım geliştirme ile ilgilenen mühendislik dalıdır. Yazılım mühendisliği tanımı ilk olarak 1968 yılında Friedrich L. Bauer tarafından Almanya'da gerçekleştirilen NATO toplantısında gündeme gelmiştir. Ayrıca, matematikçi ve bilgisayar bilimcisi Margaret Hamilton "yazılım mühendisliği" terimini ortaya atan kişilerden biri olarak kabul edilmektedir. Yazılım mühendisliği tanım olarak "karmaşık yazılım sistemlerinin belirli bir hedefe ve sisteme dayalı olarak ve iş bölümü yapılarak, belirli prensipler, yöntemler ve araçlar kullanılarak geliştirilmesidir."
Nesne Yönelimli Çözümleme ve Tasarım, bir sistemin/sistem modülleri setinin/organizasyonun/işletme biriminin gereksinimlerinin çözümlenmesinde ve uygun bir çözümün tasarımında nesne ile modelleme tekniklerini kullanır. Modern nesne yönelimli çözümleme ve tasarım yöntemlerinin çoğu, gereksinim, tasarım, uygulama, test ve dağıtım süreçleri boyunca kullanım senaryoları üzerine kuruludur. Kullanım Senaryoları, nesne yönelimli programlama ile birlikte ortaya çıkmış olmasına rağmen yordamsal programlanan sistemlerde de işe yaramaktadır.
Gereksinim Yönetimi ; tanımlama, sağlama, belgeleme, analiz etme, takip etme, öncelik verme, gereksinimlere karar verme ve daha sonra değişimi kontrol etme ve ilgili taraflarla iletişim kurma işlemlerini kapsar. Bu proje boyunca süregelen bir süreçtir.
Proje yönetimi, belirli bir projenin hedef ve amaçlarına ulaşıp bitirilmesi için kaynakların planlanması, organize edilmesi, tedarik edilmesi ve yönetilmesi disiplinidir.
Güvenilirlik mühendisliği, güvenilirlik öğrenimi, gelişimi ve Ömür Devri Yönetimi ile ilgilenen bir mühendislik dalıdır. Güvenilirlik, bir sistem veya parçanın, belirlenen süre ve şartlar altında, istenen fonksiyonları gerçekleştirebilme yeteneği olarak tanımlanır. Kavram çoğu zaman, sistemin hata verme olasılığı şeklinde algılanır. Güvenilirlik, ayrıca belirli bir zaman aralığında işlevsellik yeteneğini tanımlama için de kullanılabilir. Güvenilirlik mühendisliği Sistem Mühendisliği alt-disiplini olarak kabul edilir ve Entegre Lojistik Destek disiplinine sürekli girdi teşkil eder. Güvenilirlik mühendisliği, hatalar arasındaki ortalama sürenin hesaplanması ile sistem güvenilirliğini ve sürekliliğini sağlar.
Gömülü sistem, bilgisayarın kendisini kontrol eden cihaz tarafından içerildiği özel amaçlı bir sistemdir. Genel maksatlı, örneğin kişisel bilgisayar gibi bir bilgisayardan farklı olarak, gömülü bir sistem kendisi için önceden özel olarak tanımlanmış görevleri yerine getirir. Sistem belirli bir amaca yönelik olduğu için tasarım mühendisleri ürünün boyutunu ve maliyetini azaltarak sistemi uygunlaştırabilirler. Gömülü sistemler genellikle büyük miktarlarda üretildiği için maliyetin düşürülmesinden elde edilecek kazanç, milyonlarca ürünün katları olarak elde edilebilir.
Şelale yönteminde yazılım geliştirme süreci analiz, tasarım, kodlama, test, sürüm ve bakım gibi safhalardan oluşur. Geleneksel yazılım metotlarında bu safhalar şelale modelinde olduğu gibi doğrusal olarak işler. Her safha, başlangıç noktasında bir önceki safhanın ürettiklerini bulur. Kendi bünyesindeki değişikler doğrultusunda teslim aldıklarını bir sonraki safhanın kullanabileceği şekilde değiştirir.
Yazılım yaşam döngüsü, bilgisayar yazılımlarının ilk geliştirme aşamalarından başlayarak; yayındaki mevcut sürümün hatalarının giderilmesi, iyileştirme odaklı yeni ara sürümlerin yayınlarak yazılımın güncellenmesi de dâhil olmak üzere nihai (kararlı) sürüme ulaşana dek geçen geliştirme ve olgunlaştırma aşamalarının tamamını ifade etmek için kullanılan terimdir.
Kullanılabilirlik kavramı incelenmesi gereken çok boyutlu bir kavramdır. Arayüz bu kavramlardan biridir; kullanılan sistemle olan etkileşim ve iletişimi sağlayan araç olması nedeniyle önemli bir ögesidir. Kullanılabilirlik, sistem ve kullanılanların arayüz aracılığı ile açık ve hızlı bir biçimde iletişim kurabilmektir. Geniş anlamıyla kullanılabilirlik; herhangi bir ürünün belirli bir kullanım çerçevesinde, belirli kullanıcılar için, belirli amaçları gerçekleştirmek üzere etkin, verimli ve tatmin edici bir şekilde kullanılmasıdır. Yani kullanılabilirlik kavramı etkililik, etkinlik, performans ve kullanıcı memnuniyeti gibi kavramları içermektedir. Etkinlik; kullanılan amaçlarını ve görevlerini doğru ve tam bir biçimde tamamlama düzeyleridir. Verimlilik; amaçları gerçekleştirirken gösterilen çabayı ve zamanı aynı zamanda da kullanılan kaynakları ifade eder. Memnuniyet ise kullanıcıların sistem kullanımı ile ilgili pozitif tutumları inceler ve kullanıcıların rahatlıklarını ölçer.
Test planı hedefleri, hedef pazarı, beta testi takımını ve yazılım ve donanımın test akışlarını tanımlayan doküman ya da dokümanlar bütünüdür. Test planı, genelde, ürünün çalışma akışının detaylarını içerir.
Yazılım testi, test altında hizmetlerin veya ürünlerin kalitesi hakkında paydaşlara bilgi sağlamak için yürütülen bir araştırmadır. Yazılım testi aynı zamanda, yazılım uygulamalarının risklerini anlamak için yazılımı bağımsız ve nesnel olarak incelemektir. Test teknikleri yazılım böceklerini bulma niyetiyle uygulama veya bir programı çalıştırma süreçlerini kapsar.
V-model şelale (waterfall) modelinin gelişmiş hali olarak düşünülebilecek bir yazılım geliştirme süreci sunar. Doğrusal bir yönde ilerlemek yerine, süreç adımları kodlama evresinden sonra yukarıya doğru eğim alır ve tipik V şeklini oluşturur. V-Model geliştirme yaşam çevriminin her bir evresi arasındaki ilişkileri gösterir. Yatay ve dikey açılar zaman veya projenin tamamlanabilirliğini ve soyut seviyeyi gösterir.
Yazılım test etmede, test otomasyonu önceden tahmin edilmiş sonuçlarla gerçek sonuçların karşılaştırılması ve testlerin koşulmasını kontrol etmek için(test edilmiş yazılımdan farklı olan) belirli yazılımın kullanılmasıdır. Test otomasyonu tekrar eden fakat çoktan test etme süreçlerinde yer almış gerekli testlerin otomatikleştirebilir veya manuel olarak koşulmasının zor olacağı testleri de içerebilir. Test otomasyonları sürekli paket dağıtımı veya sürekli test etme için kritik öneme sahiptir.
Sistem ve yazılım mühendisliğindeki işlev modeli modellenen sistem veya konu alanının işlevlerinin yapısal temsilidir.
Kavramsal model bir sistemin temsilidir ve modelin temsil ettiği sistemin insanların daha rahat bir şekilde anlamalarına yardımcı olur. Örneğin, montajı yapılarak oluşturulan bir oyuncak model temsil ettiği objenin çalışmasını modelini oluşturacak bir şekilde çalışabilir.
Bir sistem mimarisi veya çoklu sistemlerin mimarisi; sistemin yapısını, davranışını ve biçimselliğini tanımlayan kavramsal modeldir. Bir mimari tanımı; sistemin yapıları ve davranışları hakkında mantıksallığı destekleyecek şekilde organize edilen ilişkiselliğin standart bir açıklaması veya temsilidir.
Bilgisayar bilimlerinde, gereksinim analizi ya da gereksinim çözümleme; çeşitli sistemlerin gerekliliklerini ve olası çelişkili durumlarını göz önüne alarak, yazılımı analiz etmek, belgelemek, doğrulamak ve yönetmek için yeni veya değiştirilmiş bir ürün üzerinde projenin ihtiyaçlarını, sistem gereksinimlerini ve koşullarını belirleyen görevleri kapsamaktadır.
Sistem analisti veya İş teknolojisi analisti, analist ve bilgi teknolojisi (BT) uzmanıdır. Sistemlerin küçük değişiklikler yoluyla etkin hale getirilmesi veya yeniden planlanmasını sağlamak amacıyla analiz edilmesiyle ilgilenen kişidir ". Bir sistem analisti tipik olarak atanmış veya verilen bir sistemle sınırlıdır ve genellikle bir iş analisti ile birlikte çalışır. "Sistem analist; insanların, metotların ve bilgisayar teknolojisinin işleri en iyi şekilde yerine getirebilmeleri için, organizasyonun problem ve gereksinimleri üzerinde çalışır".Bir sistem analistin, deneyimi ve bilgisi dışındaki en önemli aracı, öncelikle sistemin bir üyesi olan insandır. Ardından gözlem gücü ve dokümanlar gelir.
İş analisti, bir organizasyonu veya işletme alanını analiz eden bir analist mesleğidir. İş modelini veya teknolojiyle entegrasyonunu değerlendirerek işini, süreçlerini veya sistemlerini belgeler. İş analisti, veri analizi yoluyla süreçleri, ürünleri, hizmetleri ve yazılımları iyileştirmede işletmelere rehberlik etmeye yardımcı olur. Analistler finans, bankacılık, sigorta, telekom, kamu hizmetleri, yazılım hizmetleri, hükûmet vb. gibi farklı sektörlerde çalışır. BA'ların çalışabileceği iş alanları arasında iş akışı, faturalandırma, arabuluculuk, sağlama, raporlama ve müşteri ilişkileri yönetimi yer alır. Son olarak, iş analistleri, operasyon ölçeklendirme, satış planlama, strateji geliştirme, geliştirme sürecinde yer alabilecekleri veya bir atik yazılım geliştirme ürün ekibinin parçası olabilir.
Süreç mühendisliği, insanların hammaddeleri ve enerjiyi endüstriyel düzeyde toplum için yararlı ürünlere dönüştürmesini sağlayan temel ilkelerin ve doğa kanunlarının anlaşılması ve uygulanmasıdır. Süreç mühendisleri, basınç, sıcaklık ve derişim gradyanları gibi doğadaki itici güçlerden ve kütlenin korunumu yasasından yararlanarak, istenilen kimyasal ürünleri büyük miktarlarda sentezlemek ve saflaştırmak için yöntemler geliştirebilirler. Süreç mühendisliği, kimyasal, fiziksel ve biyolojik süreçlerin tasarımı, işletimi, kontrolü, optimizasyonu ve yoğunlaştırılmasına odaklanır. Süreç mühendisliği, tarım, otomotiv, biyoteknik, kimya, gıda, malzeme geliştirme, madencilik, nükleer, petrokimya, ilaç ve yazılım geliştirme gibi çok çeşitli endüstrileri kapsamaktadır. Sistematik bilgisayar tabanlı yöntemlerin süreç mühendisliğine uygulanmasına "süreç sistemleri mühendisliği" adı verilir.