17 Aralık 2010 Cuma

PPS (Paralel Programlama Sistemleri)'lerde Kullanılabilirlik

Kullanılabilirlik nedir?
Öncelikle konuya buradan başlamak gerekiyor. Kullanılabilirliği tanımladıktan sonra PPS'de kullanılabilirlik ne anlam ifade ediyor ona bakıyor olacağız.

Kullanılabilirlik;
Programın öğrenilmesi, çalıştırılması, girdi ve çıktı işlemleri için gerekli çaba miktarı [2],
ISO9126'ya göre uygulamanın kolay öğrebilebilme, anlaşılabilme ve kullanılabilme kabilyetidir.
Anlaşılabilirlik
Uygulamanın belirli koşullar ve özel durumlarda kullanıcının ilgilifonksiyonu ne sadelikte uygulayabileceğini ve ne rahatlıktaanlayabileceğini belirleyen uygulama özellikleridir.
Öğrenilebilirlik
Kullanıcıların uygulamayı ne zorlukta öğreneceğini belirleyen uygulamaözellikleridir.
İşlerlik
Kullanıcıların uygulamayı kontrol etmede ve işletmede kullandıkları uygulama özellikleridir.

ISO9241 ve ANSI 2001'e göre ise kullanılabilirlik;
Bir ürünün belli bir kullanım bağlamında etkililik, verimlilik ve memnuniyet ile belirlenen ölçülerde, hedeflere ulaşmak için belirlenen kullanıcılar tarafından kullanılabilme kapsamıdır. Burada 3 tane tanım daha gelmektedir.
Etkililik: Kullanıcılar görevleri tamamlıyor mu, ilgili ürünle amaçlara ulaşabiliyorlar mı, yapmak istedikleri şeyi yapabiliyorlar mı?
Verimlilik: Kullanıcılar istedikleri işi yapmak için ne kadar çaba sarfediyorlar? (Genellikle zamanla ölçülür)
Memnuniyet: Kullanıcılar, ürünün kolay kullanımı ile ilgili ne düşünüyorlar? (Genellikle anket yapılır)

ve [3]'de belirtilen diğer tanımlar vardır.

Tanımların ve kapsamların farklılığından bile bu konuda üzerinde anlaşılmış ortak tanımın olmadığı açıktır. Kullanılabilirlik bu anlamda kullanıldığı alana göre çeşitli kapsam değişikliklerine açıktır.
Ayrıca, kullanılabilirliğe iki farklı yönden bakmak gerekmektedir. Bunlardan bir tanesi ilgili ürünü kullanacak olan kullanıcılar, diğeri ise o ürünü geliştiren programcılar. Bizim konumuz ikincisi olacaktır. Paralel programlama yapan kullanıcıların kullanılabilirliği.

PPS'de kullanılabilirliği nasıl anlayacağız? Kullanılabilirlik neleri kapsayacak şimdi buna bakalım.

PPS'de kullanılabilirsik ise çeşitli şekillerde tarif edilmiştir.
[1]'e göre PPS'de kullanılabilirlik ölçütleri
1. Öğrenme eğrisi
2. Programlama hataları
3. Deterministik performans
4. Mevcut programlarla uyumluluk
5. Diğer araçlarla entegrasyon olarak belirlenmiştir.

[1]'de Enterprise ve NMP PPS'leri yukardaki kriterler açısından değerlendirilmiştir. Değerlendirme için transitive closure problem incelenmiştir. Bu problemin çözümü bir deney yapılmıştır ve problem çözülükren yukardaki iki PPS sistemi için yine yukarda belirtilen ölçütlerin hesaplanması amaçlanmıştır. 15 tane üniversite öğrencisi bu deneyde yer almıştır.Deney genel bir yaklaşımdan ziyade Enterprise ve NMP arasında bir karşılaştırmaya yöneliktir. Çalışma sonuçlarında, daha geniş bir kullanıcı kitlesi ve yeterli donanım kullanılması gerektiği belirtilmiştir.

Diğer bir  çalışmada[4], Orca incelenmiştir.Deneyde, Vrije Üniversite'sinden 6 öğrenci yer almıştır. Öğrenciler, Cowichan Problemlerini implemente etmek için 3 ila 7 ay zaman harcamışlardır.
Deneyde Orca'nın öğrenme kolaylığı açısından incelemeler yapılmıştır. [1]'de belirtilen diğer kriterler çok fazla incelenmemiş ve sayısal bir sonuç ortaya konmamıştır. Sadece öğrencilerin görüşlerine yer verilmiştir.

Diğer bir çalışmada[5] iseyine Cowichan problemleri kullanılarak PPS'ler arasında kullanılabilirliği ölçmek ve birbirleriyle karşılaştırmaya çalışılmıştır. Bu çalışmada ise deneye katılanlar,
  - geliştirme zamanı,
  - kod büyüklüğü ve anlaşılabilirliği,
  - çalışma zamanı verimliliği konularında görüşlerini paylaşmışlardır.
Çalışmanın amaçlarından biride kötü kullanılabilirliğin bir program içindeki paralelizmi negatif yönde kısıtlayabileceğini göstermektir. Çalışma ile beraber PPS'lerin karşılaştırılması için bir anket sunulmasına rağmen, bu anket sonuçlarının nasıl yorumlanacağı ve hangi soruların sonuca etksinin ne kadar olacağı ile ilgili bir bilgi verilmemiştir.

Kaynaklar
1-An Experiment to measure the usability of parallel programming systems, D. Szafron and J. Schaffer
2-Yazılım Mühendisliği, A.Arifoğlu, A.Doğru,2001
3-Current practice in measuring usability: Challenges to usability studies and research, Kasper Hornbæk
4-Using the Cowichan problems  to assess the Usability of Orca, Gregory V. Wilson
5-Assesing and Comparing the Usability of Parallel Programming Systems, Gregory V. Wilson, R. Bruce Irvin

Tekrar Merhaba

Askerlik vs. derken uzunca bir süredir ara verdiğimiz blog'umuza geri dönmüş bulunuyoruz.

3 Kasım 2009 Salı

ManyCorre Zirvesi ...

Sunumları incelemeyi yeni bitirdim. Anlaşılan o ki çok çekirdekli sistemler ve paralelizm konusunda oldukça fazla yapılacak iş var. Bu işlerden en önemlisi ise bütün uygulamalarda kullanılabilecek bir paralelizm metodunun bulunmasıdır.
Yine şu an itibariyle paralel programlama, klasik programlamaya göre daha zor.
Donanım dünyasında yaşanan gelişmelerden tam anlamıyla istifade edilebilmesi için daha fazla paralelizme ihtiyacımız bulunmaktadır.

1 Kasım 2009 Pazar

Çok Çekirdekli Sistemler'e Devam ...

Çok Çekirdekli Sistemlerin Uygulamalar Üzerindeki Etkileri
Olumlu Etkileri

- Alan başına düşen hesaplamayı artırır Increases the areal density of computation
  • Örn: Saniyede birim alan başına düşen işlem sayısı
  • Daha düşük fiziksel yapı, yönetim maliyetleri
- Enerji Kullanımındaki Verimi Artırır
  • Enerji tüketimini azaltır
  • Aynı enerji ve soğutma imkanı ile daha fazla kapasite
  • Yeni uygulamalara imkan verme
  • Digital media işleme
  • Çok sayıda veriyi control etme
  • Karmaşık iş analizleri
Olumsuz Etkileri
- Hafıza Performansında Düşüş
  • Çekirdek başına düşen efektif cache’de azalma
  • Artan chip bantgenişliği
- Tekil thread performans büyümesinde yavaşlama
  • Karmaşık işlemlerin cevap süresi üzerinde etki
  • Amdahl’s Law, düşük optimize edilmiş yazılımlarla yarışmada
-Eşzamanlı programlama konusunda kabiliyet eksikliği
  • Programlama deyimleri, kütüphaneleri, araçları ve eğitimi konularında zayıflık
-İzleme hataları ve performans darboğazları konusundaki güçlükler
  • Uygulamalar arasında artan paralelizm ve fiziksel kaynakların paylaşılması

31 Ekim 2009 Cumartesi

Çok Çekirdekli Sistemler

Çok Çekirdekli Sistemler
Aşağıdaki linkten ManyCore Computing Workshop'un detaylarına erişebilirsiniz. Çok Çekirdekli sistemlerin geleceği ve uygulamalar ile ilgili çeşitli bilgiler / sunumlar yer almaktadır.

Link: http://science.officeisp.net/ManycoreComputingWorkshop07/default.aspx

Notlar:

* İntel'e göre Moore Yasası güncelliğini devam ettirmektedir...
* Aynı büyüklükteki tek çekirdekli işlemci performansı ile çok çekirdekli işlemci performansı arasındaki fark çok çekirdekli sistemlerden yana artmaktadır.
* Çok çekirdekli sistemler oldukça yaygın bir haldedir ...
* Önceye göre çekirdek artış hızı da artmıştır, bir tahmine göre çekirdek sayısı 2015'te 128 ve 2020 ise 1024 olacaktır.
* Çekirdek sayısının artması ile performansda aynı oranda artacak mıdır? Bu kadar çekirdeği verimli bir şekilde kullanabilecek miyiz?
* Çok Çekirdekli sistemler ile ilgili temel sorular/konular şunlardır

Cores
Kaç tane? Hangi Büyüklükte
Homojen, heterojen
Programlanabilir, Ayarlanabilir, Sabit fonksiyonlu

Chip-level
Arabağlantı: Topoloji, bandgenişliği
Koordinasyon
Yönetim

Memory Hierarchy
Seviye sayısı, paylaşım, içerme
Bandgenişliği, yeni teknoloji
Entegrasyon/Paketleme

I/O Bandwidth
Silikon tabanlı photonics (ışık bilimi)
Terabit bağlantılar

Yazılım Konuları
Bu kadar geniş bir yapıda paralelizmi nasıl programlayacağız?

Performans, verim, güvenlik gibi bir sürü anahtar yazılım geliştirme konusu mevcuttur. Paralelizim, diğer ihtiyaçlarla birlikte ele alınmalıdır.

Paralel Yaklaşımlar için aşağıdakiler gereklidir.
Daha düşük programlama verimi
Yazılım mimarilerinde köklü değişiklikler
Her taraftaki kod yapılarında önemli değişiklikler
Karmaşık debug ve test
Çok versiyon bakım ihtiyacı
Farklı geliştirme ihtiyaçları (yüksek destek maliyeti)
Modüler olmayan etkileşim
>Kod üzerindeki değişiklikler yüksek koordinasyon gerektirir
>Bağımlılıklar arasındaki uygunluğu artırır


Paralelizmde Aşlağıdaki Gibi Çarpıcı Buluşlara İhtiyaç Bulunmaktadır.

- Sıralı programlamaya göre daha az efort
- Paralel programlamanın programlama karmaşıklığını artırmaması
- Paralel programlama ileriye doğru ölçeklenebilirliğe sahip olması
  • Sürekli yenilenen donanım platformları üzerinde daha hızlı uygulama geliştirme.
  • Ölçekli veri setleri, ölçeklenen çıkış kalitesi- tekrar programlama olmadan daha fazla paralelizm.
- Paralel programlama teknikleri yüksek ve kararlı paralel performans sağlamalı.
  • Yüksek seviyede programlamaya izin vermeli
  • İş yükünü, algoritmayı ve veri düzensizliğini yönetebilmeli
  • Donanım farklılıklarını ve düzensizliklerini yönetebilmeli
- Paralel programlamayı destekleyen donanım mimari geliştirmeleri

Paralelizmin Yazılım Kararlılığını Artırılmasında Kullanılması
Programlar genellikle yanlış davranışlar: buglar, güvenlik açıkları, donanım hataları gibi.
Run-time araçları çok yavaş
Çok çekirdekli sistemler ile ilgili debugging konularındaki güçlükler artmakta

Araştırma Konuları:
- Debugging için çok çekirdekli sistemlerin ilave performanslarının kullanılması
- Yazılım hatalarının otomatik tesbiti ve giderilmesi. Bir çekirdek üzerindeki programın davranışlarının dinamik olarak gözlenmesi ve hataların anlaşılması için program tarihçesini kullanma.
- Etkin dinamik program izleme & donanım tarafından tutulan loglara göre yeniden çalıştırma, sistem tarafından yönetim ve yazılımı yönlendirme.

YKGS2008: Yazılım Kalitesi ve Yazılım Gelistirme Araçları 2008 (9-10 ekim 2008, İstanbul)

Sempozyum İle ilgili okunabilecek diğer makaleler şunlardır.
  • Çok Çekirdekli Sistemlerin Yazılım Kalitesi Üzerine Etkileri (Ben bu konuda derinleşmeyi düşünüyorum)
  • Yazılım Fonksiyonel Büyüklüğünün Yazılım Proje Yönetiminde Kullanılması
  • Üç Adımda Yazılım Süreç Dünyasına Giriş
  • Yazılımda Fikri Mülkiyet Haklarının Korunması
  • Yazılım Metriklerini Kullanarak Düşük Kaliteli / Yüksek Kaliteli Modüllerin Otomatik Tespiti
  • Emniyet-Kritik Sistemlerin Yazılım Doğrulama Süreci
  • Yazılım Geliştirme Süreçlerinin Ölçülebilir Şekilde İyileştirilmesine Yönelik Etkin Bir Altyapının Kurulması ve İşletilmesi
  • Yazılım Konfigürasyon Tetkikleri
  • Paralel Yazılım Geliştirme Sürecinde Yarış Durumu Denetimi
  • Doğal Dilde Yazılmış Gereksinimlerin Analiz Yöntemleri ve Bu Yöntemlerin Türçe İçin Uygulanabilirliği
  • Yazılım Projelerinde Gözden Geçirmeleri Başarısız Kılan Faktörler
  • Etkin ve Uygulanabilir Bir Yazılım İnceleme Modeli
  • Yazılım Ürün Gözden Geçirmelerinin Önemi, Hazırlık Süreci ve Bir Uygulama Örneği
  • Mobil Uygulama Yazılımlarında Yazılım Metriklerinin Kullanılması
  • Yazılım Proje Danışmalarının Yazılım Kalitesinin Artırılmasındaki Rolleri
  • Dağıtık Benzetim Sistemleri İçin Entegrasyon ve Test Yaklaşımları
  • Rol Modellerinin Yazılım Kalitesine Katkıları
  • DO-178B Sertikasyonuna Uygun Yazılım Geliştirme

28 Eylül 2009 Pazartesi

YKGS2008: Yazılım Kalitesi ve Yazılım Gelistirme Araçları 2008 (9-10 ekim 2008, İstanbul)

Bu sempozyumda sunulan bildirilerden bazıları
=========================================
CMMI Basamaklı Modeli ile Yazılım Firmalarının Degerlendirilmesi için Bir Yöntem ve Uygulama
CMMI 2. düzey araştırması için bir uygulama ...
http://docs.google.com/fileview?id=0BzONj6n0lWZRYjk0NThmODktNGJiNC00ODkyLWFlNTQtODIxOWFlNzhhNDYx&hl=en


Yazılım Ölçümü: Genel Bir Bakıs
Bu çalısma, yazılım ölçümü konusunu genel bir bakıs açısıyla özetlemektedir ve yöneticileri, yazılım proje yöneticilerini ve gelistiricileri, yazılım ölçümü hakkında bilgilendirmeyi hedeflemektedir.
http://docs.google.com/fileview?id=0BzONj6n0lWZROWFmNmEyNjctMmFiMC00ZDM0LTgzZGEtYmU4YWNjODdlMGQ0&hl=en


Nesneye Dayalı Yazılım Metrikleri ve Yazılım Kalitesi
Nesneye dayalı yazılımlar ile ilgili oluşturulmuş metrikler , bu metrikleri ölçmek için oluşturulmuş çeşitli araçların kısa tanıtımı ...
http://docs.google.com/fileview?id=0BzONj6n0lWZROTllNWNiODUtYjQ1Zi00YTNjLTliNTktOTIzZmExMDQ0N2Zm&hl=en