İçeriğe atla

Gereksinim çözümleme

İhtiyaç analizi için geliştirilen bir sistemin perspektifi.

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.[1]

Gereksinim analizi; bir sistem veya yazılım projesinin başarısı veya başarısızlığı açısından kritik önem taşır. İhtiyaçların belgelenmesi, uygulanabilir olması, ölçülebilir olması, test edilebilir formda olması, izlenebilir olması ve belirlenen işletmenin ihtiyaçlarına uygun olması gerekir.

Genel bakış

Kavramsal olarak, gereksinim analizi üç tür etkinlik içermektedir:

  1. İhtiyaçların ortaya çıkarılması: İş süreci dokümantasyonu ve grup görüşmeleri sağlanarak ihtiyaçları belirlemektir. Buna bazen ihtiyaç toplama veya gereksinim keşfi de denir.
  2. İhtiyaç analizi: Belirtilen gerekliliklerin açık, eksiksiz, tutarlı, net olup olmadığını belirleme ve belirlenen çelişkileri çözme.
  3. Kayıt gereksinimleri: Gereksinimler, genellikle bir özet listesi içeren çeşitli formlarda belgelenebilir.Doğal dil belgeleri, kullanım örnekleri, kullanıcı hikâyeleri, süreç özellikleri ve veri modelleri de dahil olmak üzere çeşitli modeller oluşturulabilir.

Gereksinim analizi, pek çok hassas psikolojik becerinin katıldığı uzun ve yorucu bir süreç olabilir. Büyük sistemler, yüzlerce veya binlerce sistem gereksinimi açığa çıkararak analistlerin iş yükünü artırabilir.[2] Yeni sistemler, ortamları ve insanlar arasındaki ilişkileri değiştirir, bu nedenle geliştiricilerin tüm ortamları tanımlamalarını, tüm ihtiyaçları göz önünde bulundurmalarını ve yeni sistemlerin etkilerini anlamalarını sağlamak önemlidir.Analistler, müşterinin gereksinimlerini ortaya çıkarmak için çeşitli teknikler kullanabilirler. Bunlar, senaryoların geliştirilmesi, kullanım durumlarının belirlenmesi, işyeri gözlemi, etnografi kullanılması, röportajlar düzenlenmesi veya gözden geçirme oturumları yapmak gibi yöntemleri içermektedir.Ve böylelikle gereksinim listeleri oluşturulabilir.Prototip belirleme yöntemi, proje sunulacak şahıs ya da kuruma örnek olarak gösterilebilecek bir sistem maksadıyla kullanılabilir. Analist, gerekirse, şahıs ya da kurumların kesin gereksinimlerini belirlemek için bu yöntemlerin bir kombinasyonunu kullanır ve böylece işletme ihtiyaçlarını karşılayan bir sistem üretilir.Gereksinim kalitesi aşağıdaki bazı yöntemlerle iyileştirilebilir:

  • Görselleştirme: Görselleştirme ve simülasyon gibi teknikler kullanılarak arzu edilen nihai ürünün daha iyi anlaşılmasını teşvik etmek.
  • Şablonların tutarlı kullanımı: Gereksinimleri belgeleyen tutarlı bir dizi model ve şablon üretmek.
  • Bağımlılıkları belgelemek: Gereksinimler arasındaki bağımlılıkları ve ilişkileri belgelemek.Ayrıca ek olarak bu bağımlılıklara ilişkin varsayımlar üretmek de sayılabilir.

Gereksinim çözümleme başlıkları

Gereksinim analizi konuları kabaca şöyle listelenebilir:

Kitlenin kimliği

Yazılım geliştirilecek kitlenin belirlenmesidir.Bununla beraber kitlenin niteliksel ya da niceliksel özelliklerinin belirlenmesi konusu da oldukça önemlidir.Bu kitle şunları kapsayabilir:

  • Sistemi işletmecisi olan herkes.
  • Sistemden yararlanan herkes.(işlevsellik açısından ya da politik, finansal ve sosyal yönlerden)
  • Sistemi satın alan ya da satın almak üzere ilgilenen herkes.
  • Sistemin özelliklerini düzenleyen kuruluşlar. (finansal, güvenlik vb. kurumları)
  • Sisteme karşı görüşlü insanlar veya kuruluşlar. (olumsuz düşünen kitle)

Kitle ile görüşmeler

Hedef kitle ile görüşmeler, gereksinim analizinde kullanılan yaygın bir tekniktir.Kitlenin bakış açılarına ve belirlenen ihtiyaçlarına odaklanılır.Yazılım geliştirecek ekibin, kitlenin ait olduğu sistemi önceden etraflıca analiz etmesi gerekmektedir.Çünkü bu görüşmelerde, genellikle geliştiricinin ilgili çalışma sahasının yaşam döngüsü hakkındaki bilgi yetersizliğinden ve buna paralel olarak kitlenin de teknik bilgi yetersizliğinden kaynaklı sorunlar çıkmaktadır.Bunu önleyebilmek için etkili iletişim teknikleri kullanılmalıdır.

Müşterek gereksinim geliştirme oturumları

Bu oturumlarda yazılım geliştirme sürecinde iş analisti(business analyst) kullanılır.Böylelikle kolaylıkla kitlenin gereksinimleri ortaya çıkarılır, ayrıntıları analiz edilir ve işlevler arası etkileri ortaya çıkarmak için tartışmalara girilir.Bu analist tarafından kontrollü bir ortamda yürütülür.Böylelikle müşterek gereksinim geliştirme oturumları sağlanabilir.Tartışmayı belgelemek ve oturumun hedefini karşılayan uygun şartları sağlamak için tartışmayı yönetmek üzere iş analistinin düşüncelerinden bağımsız özel bir yazar bulunmalıdır.

Sözleşme tarzı gereksinim listeleri

İhtiyaçların belgelendirilmesinin geleneksel yolu, sözleşme tarzı gereksinim listeleridir. Karmaşık bir sistemde, bu tür gereksinim listeleri yüzlerce sayfaya kadar sürebilir.

İfade yerindeyse, bu liste adeta uzun bir alışveriş listesi gibidir.Modern analiz yöntemlerinde bu tür listeler çok fazla avantajlı değildir.Çünkü amaçlarına ulaşmada başarısız oldukları görülmüştür.Buna rağmen, bu teknik günümüze kadar gelebilmiştir

Prototipler

Bir prototip, başka bir bilgisayar programının özelliklerinin bir bölümünü sergileyen ve henüz oluşturulmamış bir uygulamayı görselleştiren bilgisayar programıdır. Popüler bir prototip biçimi, gelecekteki kullanıcıların ve diğer kitlenin sistemin nasıl görüneceği konusunda fikir sahibi olmalarına yardımcı olan bir taklit uygulamasıdır. Prototipler, tasarım kararlarını kolaylaştırır, çünkü uygulamanın geleceği, uygulama oluşturulmadan önce görülebilir ve paylaşılabilir. Kullanıcılar ve geliştiriciler arasındaki iletişimde büyük gelişmeler genellikle prototiplerin tanıtımından sonra görülmüştür.Geliştirilme aşamasından önce, uygulamalar hakkında belirtilen hedef kitle görüşleri sayesinde verimlilik artmıştır.Bu ise, daha az değişiklik ve dolayısıyla daha düşük maliyet anlamına gelmektedir.

Kullanım örnekleri

Bir kullanım örneği, ister özgün bir çalışma, ister sonradan değiştirilmiş olsun, genellikle yazılım içeren bir sistemin işlevsel gereksinimlerini belgeleyen bir yapıdır. Her kullanım örneği, belirli bir iş hedefine ulaşmak için sistemin bir insan kullanıcısı veya başka bir sistemle nasıl etkileşim kuracağını anlatan bir dizi senaryo sağlar. Kullanım örnekleri genellikle teknik ifade biçiminden uzaktır ve bunun yerine son kullanıcının veya hedef kitlenin anlayacağı dili tercih eder. Kullanım örnekleri, genellikle sistem analisti ve hedef kitle tarafından birlikte incelenir.

Kullanım örnekleri, yazılım veya sistemlerin davranışlarını açıklamak için suni ve basit araçlardır. Kullanım örneği, kullanıcıların yazılım veya sistemin nasıl çalışacağı ile ilgili metinsel bir açıklama içerir. Kullanım örnekleri, sistemin iç işleyişlerini ya da mekanizmalarını içermemelidir.Ve sistemin nasıl uygulanacağını açıklamamalıdır. Bunun yerine, sıralı varsayımlar olmaksızın bir görevi gerçekleştirmek için gerekli adımları açıkça belirtmelidir. (Örneğin bir muhasebe programında yeni bir ürünün nasıl ekleneceği bilgisi paylaşılabilir.)

Gereksinim çözümlemede bazı konular

Yazılım geliştirilecek kitlenin sorunları

Steve McConnell, Rapid Development adlı kitabında, kullanıcı gereksinimlerinin karşılanmasını engelleyen bir dizi sorunu ayrıntılarıyla anlatıyor:

  • Kullanıcılar, ne istediklerini bilmiyor veya kullanıcıların gereksinimler hakkında net bir fikri yok.
  • Kullanıcılar bir dizi yazılı gereksinimi önce belirleyip daha sonra iptal edebilmektedir.
  • Kullanıcılar maliyet ve zamanlama belirlendikten sonra ilaveten gereksinim konusunda ısrarcı davranıyor.
  • Kullanıcılarla iletişim yavaş ilerliyor.
  • Kullanıcılar genellikle incelemelere katılmazlar veya bunu yapacak bilgileri yoktur.
  • Kullanıcılar teknik açıdan karışık düşünmektedirler.
  • Kullanıcılar geliştirme sürecini anlamıyorlar.
  • Kullanıcılar mevcut teknoloji hakkında bilgi sahibi değiller.

Bu durum, sistem veya ürün geliştirmeye başladığında bile kullanıcı gereksinimlerinin değişmeye devam etmesine neden olabilir.

Mühendis ya da geliştirici sorunları

Gereksinim analizi sırasında mühendislerden ve geliştiricilerden kaynaklı sorunları şunlardır:

Kod yazmaya yönelik doğal bir eğilim vardır, bu durum gereksinim analizi tamamlanmadan önce yazılım geliştirmenin başlamasına yol açabilir ve bunun sonucu da muhtemelen, gerçek gereksinimleri bilinmeden geliştirilen ve öngörülemeyen ya da yeniden yapılandırılamayan yazılımlar doğurabilir.

Geliştiriciler ve hedef kitlenin anlaşmaları bozulabilir.Sonuç olarak, geliştiriciler projeyi teslim edebilmek için çalışırlar.Tamamlanan bir ürünün, geliştirilinceye kadar olan sürecini yönetirler ama buna karşın hedef kitlenin kanaatleri, başlangıçtaki anlaşmanın doğrultusunda olmayabilir yani anlaşmayı bozabilirler.

Mühendisler ve geliştiriciler, gereksinimleri, müşterinin ihtiyaçlarına özel bir sistem geliştirmek yerine mevcut bir sisteme veya modele uydurmaya çalışabilir.

Analiz, müşterinin ihtiyaçlarını doğru bir şekilde anlamak için farklı istihdam alanlarında bilgisi olan personel yerine, mühendisler veya programcılar tarafından sıklıkla uygulanabilir.Bu ise gerçeklik küresine uygun olmayan çözümler üretilmesine sebebiyet verebilir.

Bazı çözüm denemeleri

İletişim sorunlarına çözüm denemesinde iş veya sistem analizinde uzmanlar çalıştırılması vardı.

1990'larda prototiplendirme, birleşik modelleme dili(UML), şablon kullanma ve çevik yazılım geliştirme gibi teknikler, önceki yöntemlerde sık karşılaşılan sorunların çözümleri olarak düşünülmüş ve buna paralel olarak geliştirilmiştir.

Ayrıca, uygulama simülasyonunun yeni bir sınıfı veya uygulama tanımlama araçları piyasaya girdi. Bu araçlar, işletme kullanıcıları ile yazılım geliştirme organizasyonu arasındaki iletişim boşluğunu gidermek ve herhangi bir kod üretilmeden önce uygulamaların test yoluyla pazarlanmasını sağlamak için tasarlanmıştır. Bu araçların en nitelikli olanları şunlardır:

  • Uygulama akışlarını ve test alternatiflerini çizebilmek için elektronik beyaz tahta.
  • İş mantığını ve veri ihtiyaçlarını yakalama yeteneği.
  • Son başvuruyu yakından taklit eden yüksek kalitede prototip üretme yeteneği.
  • Etkileşim yeteneği.
  • Bağlamsal gereksinimleri ve diğer yorumları ekleme yeteneği.
  • Uzak ve dağıtık kullanıcıların simülasyon ile çalışıp etkileşime girme becerisi.

Kaynakça

  1. ^ Kotonya, G. and Sommerville, I. 1998. Requirements Engineering: Processes and Techniques Chichester, UK: John Wiley and Sons.
  2. ^ Beck, A., Boeing, G., & Shannon, D. (2014). "Systems and Methods for Analyzing Requirements. US Patent 8650186 24 Aralık 2016 tarihinde Wayback Machine sitesinde arşivlendi.". Retrieved 2016-03-17.

İlgili Araştırma Makaleleri

Veri modelleme, bir işletmenin, kurumun hatırlamaya değer bulduğu verilerin şekil ve metin olarak ifade edilmesidir. Diğer bir deyişle bir işletmede teknik ve teknik olmayan herkesin bilişim ihtiyaçlarını ifade etmeye çalışırken birbirini anlamada kullanabileceği görsel bir iletişim dilidir. Yazılım geliştirmenin en önemli süreçlerinden biri olan veri modelleme bilişim ihtiyaçlarının keşfedilmesi ve herkesin anlayabileceği bir şekilde belgelenmesi işlemidir. Bilişim ihtiyaçları, veriler ve işletme ihtiyaçlarını destekleyen işletme kurallarıdır. Bir veri modeli herhangi bir işletmenin veya bir yazılımın karmaşık bilişim ihtiyaçlarının tümünü yeterince ifade edebilmek için kullanılabilecek bir araçtır. Bir bilişim sistemi başlıca 3 ihtiyacı karşılar; çeşitli verilerin saklanması, işlenmesi ve görüntülenmesi. Görüldüğü gibi bilişim sistemlerinin temelinde veri yer almaktadır. Veri Tabanı sistemleri ise en basit ifadeyle; verinin saklanması ve işlenmesi ile ilgili olarak geliştirilen genel amaçlı çeşitli yazılımlardır. Kısaca bilginin işlenmemiş hali olarak tanımlanan verinin modellenmesi herhangi bir bilişim sistemi geliştirmede neredeyse işin yarısını oluşturur. Verinin gerçek sahibi kullanıcıdır. Durum böyle olunca bilişim sistemlerinin geliştirilmesi sırasında kullanıcı temelli bir yaklaşım önem kazanmaktadır. Kullanıcı yönelimli bu yaklaşımın bazı yararları aşağıda sıralanmaktadır.

Basın-yayın, günlük dilde radyo, televizyon, gazete, dergi gibi elektronik veya yazılı basın organlarını anlatmak için kullanılan bir terimdir.

Kullanım senaryosu, sistemlerin fonksiyonel ihtiyaçlarını kapsamak için yazılım ve sistem mühendisliğinde kullanılan bir tekniktir. Aktörlerin sistemle etkileşimini tanımlayan senaryolardır.

<span class="mw-page-title-main">İş süreçleri modelleme</span>

İş süreci yönetimi ve sistem mühendisliği'ndeki iş süreci modellemesi (İSM), bir kuruluşun süreçleri temsil etme etkinliğidir. Böylece mevcut iş süreçleri analiz edilebilir, iyileştirilebilir ve otomatikleştirilebilir. İSM genellikle modelleme disiplininde uzmanlık sağlayan iş analistlerince, modellenen süreçler hakkında özel bilgili konu uzmanlarınca veya daha yaygını her ikisinin de olduğu bir ekip tarafından tarafından yapılır. Alternatif şekilde süreç modeli, işlem madenciliği araçları kullanılarak doğrudan olay günlüklerinden türetilebilir.

Atik yazılım geliştirme ya da çevik yazılım geliştirme, basit prensiplere dayanan yazılım geliştirme metotları gruplarının genel adıdır. Bu metotlar genelde alışılmış denetim ve uyum süreçlerini teşvik eden proje yönetim işlemlerine önayak olurlar. Bu yaklaşım; takım çalışmasıyla gelen liderlik psikolojisi, kendi kendini düzene sokma (örgütleme), sorumluluk, yüksek kalitedeki yazılımların hızlı dağıtımını onaylayan en iyi mühendislik örnekleri ve iş yaşamında müşteri ihtiyaçlarıyla şirketlerin temel amaçlarını, vizyonlarını koordine etme işlevi de görmektedir.

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.

Yazılım geliştirme kiti (SDK) belli bir yazılım paketi, yazılım çatısı, donanım platformu, bilgisayar sistemi, oyun konsolu, işletim sistemi veya bunlara benzer bir platform için uygulama üretmeyi sağlayan yazılım geliştirme araçlarından oluşan yazılımdır.

<span class="mw-page-title-main">Scrum</span>

Scrum, yazılım geliştirme ve yazılım Mühendisliği'nde bir uygulama geliştirme çerçevesidir. Proje yönetimi'nde karmaşık bir ortamda ürünleri geliştirmek, sunmak ve sürdürmek için Çevik yazılım geliştirme felsefesini benimseyen bir çerçevedir. "Hamleci yaklaşım" şeklinde bir çeviri önerilmiştir. Bu geliştirme çerçevesinin temel özelliği gözlemci, geliştirmeci ve tekrara dayalı olmasıdır. Birçok modern yazılım projesinin oldukça karmaşık olduğu ve en baştan tümünü planlamanın zor olacağı şeklindeki bir varsayımdan hareket eder. Bu karmaşıklığı üç ilke ile azaltmaya çalışır.

  1. Şeffaflık: Projedeki ilerlemeler ve sorunlar günlük olarak tutulur ve herkes tarafından izlenebilir olması sağlanır.
  2. Gözlem: Ürünün parçaları ya da fonksiyonları düzenli aralıklarla teslim edilir ve değerlendirilir.
  3. Uyumlanma: Ürün için gereksinimler en baştan bir defalığına belirlenmez, bilakis her teslimat tekrar değerlendirilir ve duruma göre uyarlamalar yapılır.
<span class="mw-page-title-main">Yazılım yaşam döngüsü</span>

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.

<span class="mw-page-title-main">Yazılım testi</span>

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, sistem geliştirme sürecinde karmaşıklığı basitleştirmek amacıyla tasarlanmış bir kavramsal modelden, ayrıntılı ve özenli yaşam döngüsü modellerine ve proje yönetimi araçlarına kadar uzanan bir dizi modele uygulanan bir terimdir. İngiltere ve dünya genelindeki test topluluklarında, V-Model'in yazılım geliştirme sürecinde test edilebilmesi için ISTQB kuruluş müfredatı içinde tanımlanması, açıklayıcı ve değişken bir tanım olarak kabul edilir. V-Model'e ilişkin alternatif makalelerde bu modelin tek bir kabul edilmiş tanımının olmadığı görülür. Bu nedenle, farklı varyasyonlara sahip birçok versiyonu bulunmaktadır.

<span class="mw-page-title-main">V-Model (Yazılım geliştirme)</span>

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.

<span class="mw-page-title-main">İşlev modeli</span>

Sistem ve yazılım mühendisliğindeki işlev modeli modellenen sistem veya konu alanının işlevlerinin yapısal temsilidir.

Kalite fonksiyon(işlev) yayılımı (KFY) müşteri ihtiyaçlarını bir ürün veya hizmet için mühendislik özelliklerine dönüştürmeye yardımcı olan bir yöntemdir. İhtiyaçların operasyonel tanımlamaları oluşturulmasına yardımcı olur ve ilk ifade edildiğinde belirsiz olabilir. Ürün veya hizmet için aynı zamanda geliştirme hedefleri belirlerken, her bir ürün veya hizmet karakteristiğini önceliklendirir.

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.

<span class="mw-page-title-main">Yazılım kategorileri</span>

Yazılım kategorileri, yazılım gruplarıdır. Yazılımın bu kategoriler açısından anlaşılmasını sağlamaktadırlar. Farklı sınıflandırma şemaları, yazılımların farklı yönlerini dikkate alır.

İş 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.

Evrensel tasarım, üretilecek bir yapının, ürünlerin, yazılımın veya ortamların; dünyadaki tüm insanların fizyolojik özelliklerine, yaşına, cinsiyetine, ırkına, boyuna, kilosuna, yetersizliğine, ekonomik ve eğitim düzeyine vb bakılmaksızın herkes için eşit kullanılabilir tasarlanması anlamına gelir. Evrensel tasarım terimi, mimar Ronald Mace tarafından farklılığı ne olursa olsun tüm insanların mümkün olan en geniş ölçüde, eşit şekilde faydalanabileceği bir tasarım kavramı olarak ortaya çıkmıştır.