İnsan Bilgisayar Etkileşimi Yazılım Sürecinde İnsan Bilgisayar Etkileşimi Hasan Türksoy Tanımlar Yazılım Mühendisliği :Yazılım sistemlerinin geliştirilmesi için gerekli teknik ve yönetimsel aktivitelerle ilgilidir. Yazılım Yaşamdöngüsü : Yazılımın başlangıçtaki kavramsal oluşumundan, son fazına ve kurulumuna kadar gerçekleşen aktiviteler... Müşteri (Customer) : Ürünle ilgili isterleri belirleyen kişi/grup. Tasarımcı (Designer) : Ürünü geliştirmekle sorumlu kişi/grup. Yazılım Yaşam Döngüsü Gereksinim Belirleme Mimari Tasarım Detaylı Tasarım Kodlama ve Birim Testi Entegrasyon ve Test Kurulum ve Bakım Şelale Modeli Aktiviteleri Gereksinim Belirleme Son ürünün “ne” yapması bekleniyor. “Nasıl” yapacağının detaylarına girilmiyor. Müşteriden temin edilecek bilgiler: Çalışma ortamı Uygulamadan beklenen fonksiyonlar Çalışma alanı (domain) Etkilenebilecek insanlar/sistemler Varolan sistemlerle etkileşimi Müşteriden alınan bilginin, işletilebilir uygulama diline en az kayıpla aktarımı başarım oranını artırır. Mimari Tasarım Hedeflenen sistemin bileşenlere ayrılması. Bu bileşenler arasındaki etkileşim ve kaynak paylaşımı da tanımlanır. Fonksiyonel gereksinimler – Fonksiyonel olmayan gereksinimler Detaylı Tasarım Bileşenlerin mimari tasarımda tanımlanan davranışların detaylandırılması Bu detaylandırma işlemi birden fazla şekilde sonuçlanabilir. En çok fonksiyonel olmayan gereksinimi karşılayabilen detay tasarım en iyisi... Önerilen tasarım seçenekleri, nihai olarak karar verilen seçenekler ve nedenleri kaydedilmeli Kodlama ve Birim Testi Bileşenlerin kodlanması ve belirlenen test kriterlerine göre doğru çalışıp çalışmadığının testi. İki tür yaklaşım: Detaylı tasarımdan, gerçekleştirime (kodlamaya) geçiş tamamen otomatize edilebilir. (teoride) Belirlenen kodların doğru çalışıp çalışmadığını kontrol edecek testlerin otomatik üretilmesi. Entegrasyon ve Test Bileşenlerin mimari tasarımda belirtildiği şekilde entegre edilmesinden sonra oluşan sistemin testi. Kabul testleri müşteri ile de yapılabilir Son sistemin bazı otoritelerce sertifikasyonu gerekebilir ISO9241: ofis ortamlarındaki iş istasyonlarının kullanışlılık sertifikası Kurulum ve Bakım Sistemin kabul testlerini geçişinden sonra gerçek ortama kurulumu ve anlaşmalar çerçevesinde bakım aşamasına geçişi başlar... Yaşam döngüsünün büyük bölümü bakımdan oluşur. Bakım aşamasında daha önceki adımlara geri dönüşler sağlar. Geçerlilik Denetimi ve Doğrulama Geçerlilik Denetimi (Validation) Müşteri ile anlaşılan gereksinimler gerçekleştirilmiş mi? “doğru şey” mi tasarlanmış? HCI gereksinimleri için değerlendirme şeklinde yapılır. [Ch9] Doğrulama (Verification) Gereksinimler doğru, tam ve tutarlı olarak karşılanmış mı? Tasarlanan şey “doğru mu”? Tasarımcının sorumluluğu: 1 – isterlerin iç tutarlılığını kontrol etmek 2 – gereken tüm davranışların tanımlandığından emin olmak Geçerlilik Denetimi ve Doğrulama (2) Geçerlilik Denetimi (Validation) Doğal dilde ifade edilen gereksinimlerin karşılanması kontrol edileceği için, çok sıkı ve objektif olarak gerçekleştirilmesi imkansız. = “formality gap” Doğrulama (Verification) Zaman ve maliyet etkenleri nedeniyle, tüm isterlerin tam olarak doğrulanması mümkün olamıyor. Hangilerinin tam olarak doğrulanacağı, hangilerinin de belirli şartları sağlayınca olmuş kabul edileceği belirleniyor daha çok. Bu aşama ne kadar otomatize edilirse, doğrulama maliyeti o kadar düşecektir. Yönetim ve Sözleşme Sorunları Yeni bir uçağın geliştirilmesi 4-5/50yıl yazılım yaşam döngüsü En başta tüm gereksinimleri görebilmek imkansız! Etkileşimli Sistemler ve Yazılım Yaşamdöngüsü Geleneksel yazılım yaşamdöngüsü, HCI’ın önemli olmadığı zamanlarda geliştirildi. Sutton ve Sprague’nin araştırması (1978): tasarımcının zamanının yarısı kullanıcı arayüzü tasarlamakla geçiyor. Etkileşimli Sistemler ve Yazılım Yaşamdöngüsü (2) Tasarımların kullanışlılığının artırılması için; Sistem geliştirilmeli ve kullanıcıların etkileşimi gözlemlenip değerlendirilmeli. Bu deneme ortamları gerçek ortama olabildiğince yakın olmalı. John Carroll: sistemin çok ince bir detayı kullanışlılığını etkileyebilir. Bu yüzden, kaba tahminlerin gerçek ortamda çalışacak sistemin kullanışlılığına katkısı olmayacaktır. Etkileşimli Sistemler ve Yazılım Yaşamdöngüsü (3) Etkileşimli sistem tasarımı yaklaşımı; Kullanıcının sistemde gerçekleştireceği görevlerin önceden anlaşılabilmesi. Fakat bu ancak, kullanıcı, sistemin tamamını kullandığı zaman ortaya çıkacak = tavuk – yumurta problemi... Üstelik; kullanıcının sistemde yaptığı kimi işlemler, tasarımcının aslında planlamadığı şekilde gerçekleştiriliyor da olabilir... Etkileşimli Sistemler ve Yazılım Yaşamdöngüsü (4) Geleneksel yazılım yaşamdöngüsü, etkileşimli sistemlerle ilgili kullanıcı gereksinimlerini yansıtacak notasyon ve teknikleri içermiyor. Eğer tasarım gereksinimlerinde kullanıcı etkileşimi ile ilgili bilgiler bulunmuyorsa, bilişsel gereksinimlerin belirlenmesi çok zordur. Kullanılabilirlik Mühendisliği Bir ürünün kullanılabilirliğini değerlendirebilmek için hangi kriterler kullanılacak? Fiziksel aktivitelerin ötesini (sistemin geri kalan kısmını yada kullanıcının bilişsel kapasitesini) ölçmek zor olduğu için, kullanılabilirlik mühendisliğinin uygulama alanı da sınırlıdır. Kullanılabilirlik Mühendisliği (2) Geliştirilecek sistemin kullanılabilirliğini ölçebilmek için, kullanıcı-sistem etkileşimine yoğunlaşan “Kullanılabilirlik Şartnamesi” oluşturulur. Özellik: Geriye dönük hata kurtarımı Ölçülen davranış: Hatalı bir program akışını geri alma Ölçüm metodu: Hatalı program durumunu geri alabilmek için gerekli kullanıcı eylemi sayısı Şu anki düzey: Şu anda bu işleve sahip bir ürün yok En kötü durum: Hatadan kurtulabilmek için kaç adım gerekiyorsa Planlanan düzey: En fazla 2 eylem En iyi düzey: Tek bir vazgeçme işlemi Kullanılabilirlik Mühendisliği (3) Bu metrikler; Deneyimler sonucu oluşan ve tasarım sürecinin başında belirlenen metrikler. Gerçek ortamda uygulandığında farklı sonuçlar çıkabilir. Çok kısıtlı durumlar için çok kısıtlı kullanıcı davranışlarına dayanır. Kullanılabilirlik değil, geliştirilen bazı metrikler karşılanıyor aslında. Yinelemeli Tasarım ve Prototiplendirme Her geçişte son ürünün biraz daha olgunlaşması... Prototiplendirme türleri: Atılacak (throw away); Geliştirilen bir prototip sonucu elde edilen tasarım bilgilerinden faydalanılır fakat geliştirilen prototip ilerki safhalarda kullanılmaz. Artırımlı (Incremental); Son ürünle ilgili genel bir bakış açısı var. Her yinelemede ayrı bir alt bileşen geliştirilir. Yinelemeli Tasarım ve Prototiplendirme (2) Prototiplendirme türleri: Evrimsel (Evolutionary); Prototip atılmaz, sonraki iterasyon bunun üzerine inşa edilir. Son ürün, her iterasyonda biraz daha olgunlaşarak oluşur. Artırımlı (Incremental); Son ürünle ilgili genel bir bakış açısı var. Her yinelemede ayrı bir alt bileşen geliştirilir. Prototiplendirme etkileşimli sistemlerde de gerçek kullanıcının yaklaşımlarını görebilmek açısından önemlidir. Yinelemeli Tasarım ve Prototiplendirme (3) Prototiplendirme problemleri: Yönetici açısından; Zaman kısıtı Planlama güçlüğü Fonksiyonel olmayan özellikler prototiplendirmede genelde göz ardı edilir. Sözleşmeler; prototipleme legal bir sözleşme için temel olamaz. Prototiplendirme sonuçlarının bağlayıcılığı olabilmesi için dökümante edilip anlaşılması gerekir. Prototiplendirme Teknikleri Hikaye Kartları Limitli işleve sahip simülasyonlar Bilgisayar sisteminde olmayabilir. Sistemin akışının yada etkileşim noktalarının hikaye edilmesi. Uygulamanın çalışmasını daha iyi gösterebilir. Etkileşim fazladır. Üst düzey programlama desteği UIMS(UserInterfaceManagementSystem), arka tarafta işleyecek sistem işlevlerinden bağımsız ve sunum tarafının geliştirilmesi. Tasarım Mantığı Sistem neden böyle tasarlandı? (yapısal, mimarisel, fonksiyonel ve davranış olarak) Faydaları; Tasarım ekibinin verilen tasarım kararlarından, sebeplerinden, alternatiflerinden haberi olur. Bilgi birikimi sağlanır. Bir proje ekibinin karşılaştığı durumlar karşısında aldığı kararlar, bir başka ekibe yol gösterebilir. Bir tasarımın gerekçeleri ortaya konurken, üzerinde biraz daha düşünülmüş ve irdelenmiş olur. Tasarım Mantığı (2) HCI açısından faydaları; Tasarım alternatiflerinin karşılaştırılması ve seçim kriterlerinin paylaşılması. Tasarımcının herhangi bir şekilde göremediği çözüm alternatiflerinin ortaya çıkması sağlanabilir. Etkileşimli sistemlerin kullanılabilirliği, bulundukları bağlama çok bağlı. Bir tasarım kararı alınırken bağlamın iyi anlaşılması çok önemli. Tasarım Mantığı Türleri Sürece odaklanan; Rittel’in IBIS (issue-based information system) stili temel (tasarım gösterimi & diyalog planlaması) Tasarım toplantılarında, üzerinde durulan konular ve alınan kararların kaydedilmesinde kullanılıyor. Farklı ürünler için kullanılabilecek şekilde tasarım bilgisinin genelleştirilmesinden ziyade, o ürüne özel karar sürecini kaydeder. Tasarım Mantığı Türleri (2) Yapıya odaklanan; Bir tasarım projesindeki tasarım alternatiflerinin yapısallaştırılmasına vurgu yapar Yapıya odaklandığı için tasarım toplantısında sorulan soruların aynısı kullanılmak zorunda değil Anahtar; doğru soruların oluşturulması ve seçenekleri değerlendirebilmek için gereken doğru kriterlere karar verilmesi.(QOC notasyonu) Tasarım Mantığı Türleri (3) Psikolojik; Tasarımcıların sistemin desteklemesi gerektiğine inandıkları görevleri kaydedip, daha sonra bu görevleri yerine getirecek sistemi geliştirmeleri ile işler. Tasarımcılar sistem kullanıcılarının gözlemlenmesinde kullanılacak görevler için bir takım senaryolar önerirler. Kullanıcı gözlemleri, sistemin o versiyonunun gerçek tasarımı için gereken bilgiyi sağlar. Tasarımcının önemli görevlerle ilgili varsayımlarının sonuçları, gerçek kullanıma karşı değerlendirilerek, tasarımı şekillendirme ve geliştirme önerilerinde kullanılır. -- SON --