Yazılım Yaşam Döngüsü

Kullanıcı Merkezli Tasarım Üzerine

Bir uygulamanın ya da sistemin temel vazifesi, bir ihtiyacı ya da ihtiyaç kümesini yerine getirmektir. İhtiyacın karşılanması da, yapının özelliklerine göre, farklı arabirimlerle sağlanır. Yazılım ürünlerinde arabirimler, kullanılan programlar ve bu programların önyüzleridir ki bunlar aynı zamanda arayüz olarak da geçmektedir. Web sayfaları, mobil uygulamalar ya da Windows tabanlı uygulamalar, kullanıcıdan ihtiyaç duyulan girdileri alır ve uygulama içerisinde ilgili aksiyonları gerçekleştirdikten sonra uygun bir yapıda çıktıları sunar.

Yazılım uygulamalarında girdi araçları farklılık arz etse de, yaygın olan, klavye ve mouse yardımıyla programla etkileşime geçmektir. Programın sahip olduğu ön yüzdeki birtakım unsurlar (buton, link, liste, menü vb) kullanıcıyı yönlendirmekte, program akışları için başlangıç ve diğer aşamaların gerçekleştirilmesini sağlamaktadır. Text alanları, mesajlar, resimler, uyarı-bildirimler vb unsurlar da akış aşamalarının neticesini sunmaktadır.

Yazılımı kullanacak kişilerin, bu araçlarla istedikleri çıktıları sağlamak ve gerekli durumlarda akış yönlendirme, hata kontrolü, tekrarlatılabilir düzen ve farkedilebilir çıktılar üretmek, kullanılabilirlik kavramı altında irdelenmektedir. Tanım olarak kullanılabilirlik, bir ürün/sistemin kolay ve hızlı olarak kullanılabilmesi şeklinde basitleştirilebilir. Kolay olması kavramı, temelde kullanıcıların beklentilerini karşılaması ve doğru şekilde cevap vermesi şeklinde ifade edilebilir. Hızlı olması da kabul edilebilir cevap/aksiyon sürelerinde istenilenin gerçekleştirilmesi olarak düşünülebilir.

human and computerKullanılabilirlik kavramında 2 temel unsur yer almaktadır: insan-bilgisayar etkileşimi ve kullanıcı merkezli tasarım. İnsan-bilgisayar etkileşimi (İBE), teknolojik arayüz/arabirimlerle kullanıcı- daha doğrusu insan- faktörü arasındaki iletişimi/etkileşimi ifade etmektedir. İBE, farklı birçok disiplinle beraber çalışan, teknolojik arkaplanla beraber, bilişsel psikoloji temellerine dayanan kapsamlı bir alandır. Kullanıcı merkezli tasarım ise, kullanılabilir ürün ve sistemlerin geliştirilebilmesi için, süreçlere birincil unsur olarak kullanıcının konulması ve geliştirme safhalarında kullanıcı geribildirimini ön planda tutarak, doğrudan doğruda hedef kitlenin beklentilerine göre arayüzler ve akışlar üretilmesi süreci olarak değerlendirilebilir. Bu yazıda kullanıcı merkezli tasarım konusu üzerinde durulacaktır.

Kullanıcı merkezli tasarım, yaklaşım itibariyle kullanıcıyı ön planla çıkarmaktadır. Peki, herhangi bir yazılımda hedef kullanıcıyı düşünerek geliştirme yapmak değil midir? Elbette, ancak burada temel fark, tasarımın ve akışların nasıl üretildiğindedir. Kullanıcı merkezli demek, kullanıcı kitlesini temsil edecek kişilerin sürece dahil edilmesi, analiz ve tasarımda doğrudan ilgili kişilerin görüşlerini değerlendirmeye almak demektir. Geliştirme ekiplerinin, ihtiyaçları analiz ederken sunulacak arayüzler, akışlar ve diğer önemli aşamalar için kendi yetkinlik ve tecrübelerine göre birtakım kararlar alması ve bu kararlara göre de yazılımın geliştirmesi seçeneğinde de kullanıcı ön planda tutulabilir ancak sürekli geri bildirim alınmadığı için çıktılar beklentiyi karşılamayabilir.

slider4Geliştirme süreçlerinde kullanıcıyı odak noktası yapmak, tasarımın farklı aşamalarında sistematik olarak iletişim ve etkileşimde süreklilik sağlamak demektir. Kullanılan yazılım geliştirme yaklaşımı ne olursa olsun, kullanıcıya somut çıktıların her aşamada gösterilmesi, değerlendirmelerin alınması ve geribildirime göre de gerekli düzenlemelerin yapılması esastır. Neticede ortaya çıkacak ürün/hizmeti kullanacak kişilerin beklentileri, arayüz seviyesinde de kendi standartlarına göre olmalıdır. Tasarım/arayüz, sadece görsel öğelerin estetik güzellik sağlaması demek değildir, aynı zamanda fonsiyonel işlev sunması anlamındadır.

Kullanıcı merkezli tasarım, her ne kadar yeni bir kavram olmasa da, son zamanlarda yazılımın çok farklı demografik özellikleri olan insanlarla da iletişime geçmesinden dolayı çok daha fazla gündeme gelir olmuştur. Artık yazılımları kullanan kişiler çok farklı altyapılara sahip, farklı alışkanlıkları ve beklentileri olan grupları ihtiva etmektedir. Dolayısıyla, geliştirme ekiplerinin içselleştirmiş oldukları birtakım standart yapılara göre ürettikleri arayüzler ve arkaplandaki akışlar, ürünün kullanılabilirliğinde eleştiriye sebep olacak sonuçlar doğurabilmektedir. Bunun yerine kullanıcı merkezli tasarım yöntemleri tercih edilerek daha kullanıcı dostu ve bu bağlamda başarılı sonuçlar alınması sağlanabilir. Ancak, birçok durumda olduğu gibi, kullanıcı merkezli tasarımda da dikkat edilmesi gereken unsurlar vardır. Kullanıcının beklentilerini karşılamak, tekdüze bir şekilde istenileni olduğu gibi gerçekleştirmek anlamına gelmemektedir. Kullanıcının hedefi, yazılımda ilgili öğeleri nasıl algıladığı, önceki alışkanlıkları ve benzeri birçok unsuru beraber düşünerek, gerekli olduğu durumlarda yönlendirme yapmak, daha efektif bir düşünme yapısına geçilmesi için gereklidir. Kullanılabilirlik açısından kötü ya da sorunlu olduğu düşünülen alışkanlık ya da beklentilerin yönetilmesi de bu bağlamda kullanıcı merkezli tasarım konusunun kapsamındadır.

Vurgulanması gereken önemli bir nokta da şudur: kullanıcı merkezli olmak, tekdüze, kullanıcıdan geliştirme safhalarında sürekli bildirim almak anlamına gelmez. Yazılımın doğası, geliştirme ortamı, yazılımın konusu vb öğelere göre farklı birçok yöntem kullanılarak kullanıcı değerlendirmeleri, projeye/geliştirmeye özel olarak alınabilmektedir. Örneğin, prototip üzerinde kullanıcı gruplarıyla çalıştay yapılarak değerlendirmelerin alınması bir seçenek iken, bir başka seçenek, kullanıcılarla yapılacak anket çalışmaları olabilir. Dolayısıyla ihtiyaç ve imkan değerlendirilmeli ve en efektif yöntem ya da yöntemler tercih edilmelidir. Neticede önemli olan, üretimin, kullanıcı değerlerinin öncelikli planda alındığı bir tasarım süreciyle beraber işletilmesidir.

Son olarak, kullanıcı merkezli tasarım konusu kullanılabilirlik, İBE ve ergonomiyle beraber işleyen, aynı zamanda yazılım geliştirme süreçlerinden de uzak olmayan bir kapsamı içermektedir. Bu nedenle kullanıcı merkezli tasarım irdelenirken bu kavramlar da değerlendirilmelidir.

while (lifeRepository.GetDailyToken())
{
process.Filter(whatIsuseful)
.Read(availableSources)
.Code(toUnderstand)
.Test(ifThatWorks)
.Share(withOthers)
.Write(ifPossible);
.Publish(someDayAtSomeMedium);
}