Kaynak Kodları GitHub Üzerinden Yönetilen ve Debian Depolarında Bulunan Yazılımların Geliştirme İstatistikleri

Benzer belgeler
Kaynak Kodları GitHub Üzerinden Yönetilen ve Debian Depolarında Bulunan Yazılımların Geliştirme İstatistikleri. Dilara Koca

Versiyon Kontrol Sistemleri

TC KİMLİK NO SMS GÖNDERİM SOAP API

Kaynak Kod Güvenliği Bir Güvensiz API Örneği

SUBVERSION VE TRAC A GİRİŞ

TC KİMLİK NO SMS GÖNDERİM XML API

Pardus. A. Murat Eren, 25 Mart Pardus Geliştiricisi. Pardus Yenilikleri Sık Sorulan Sorular

COM API v.1.1 BELGE SÜRÜMÜ : 1.1

Pardus. S.Çağlar Onur, 21 Aralık Pardus Projesi [TÜBİTAK / UEKAE] Linux Kullanıcıları Derneği

UZAKTAN EĞİTİM MERKEZİ

AJANS İLETİŞİM API XML API v İçindekiler. 1. AMAÇ - Sayfa 2

Veri Tabanı Yönetim Sistemleri Bölüm - 3

T.C. Başbakanlık Gümrük Müsteşarlığı Muhabere ve Elektronik Dairesi Başkanlığı

Wikipedia'nın Kardeş Projeleri. Özlem Özgöbek

XML API. İçindekiler. Toplu SMS Sistemlerinde Güvenilir Çözüm Ortağınız 1. AMAÇ KULLANIM ŞEKLİ Genel Hata Kodları.

Necdet Yücel - necdetyucel@gmail.com, Engin Manap - enginmanap@gmail.com, Öğrenciler Özgür Mesutcan Yazılıma Kurt Nasıl - mesutcank@gmail.

Ağ Yönetiminin Fonksiyonel Mimarisi

1.Debian. 2.Ubuntu. Şekil 1. Güncel logosu

XML API v2.0 Belge sürümü : 2.0.2

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

OPERATÖR SERVİSLERİ. Kullanıcı Kılavuzu

Bilgi Servisleri (IS)

Google Hacking. Gelişmiş Google Operatörleri

PROGRAMLAMA TEMELLERİ

Gitlab ile Web Tabanlı Git Deposu Yönetimi

Subversion. KimTutarBizi bilgi takımı adına, Ahmet KAKICI

1.1. Yazılım Geliştirme Süreci

COM API v2.0 Belge sürümü : 2.0.3

BİLGİ GÜVENLİĞİ BİLİNÇLENDİRME EĞİTİMİ

Bilgi güvenliği konusunda farkındalık yaratmak. Mobil cihazlardaki riskleri anlatmak. Mobil uygulamaların bilgi güvenliği açısından incelemek 2

Fırat Üniversitesi Personel Otomasyonu

Ecat 8. Hakbim Bilgi İşlem A.Ş. Versiyon

System Storage DS3200, DS3300 ve DS3400 Hızlı Kuruluş Kılavuzu

HACETTEPE ÜNİVERSİTESİ ELEKTRİK ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ. 2.Prototip Test Sonuçları Raporu. Tez Danışmanı: Prof.Dr.

Bulanık Mantık Tabanlı Uçak Modeli Tespiti

UHeM ve Bulut Bilişim

IEEE Online Mühendislikte Günümüz Araştırmacılarının Temel Bilgi Kaynağı. UASL Eğitim Programı. 10 Mayıs, 2006

PERSONEL BANKA IBAN BİLGİSİ DEĞİŞİKLİĞİ UYGULAMA KILAVUZU

Sayı : 02 Konu : STONEX Format Çevirici ilepoligon ve Detay Alım Çıktılarının Alınması

JAVA API v2.0 Belge sürümü: 2.0.2

USE IMPROVE EVANGELIZE. OpenSolaris. Afşin TAŞKIRAN EnderUNIX Yazılım Geliştirme Ekibi Türkiye OpenSolaris Kullanıcıları Grubu afsin ~ enderunix.

MOBILEPAX XML PRODUCT API KULLANIM ŞEKLİ

Özgür Yazılım Lisansları

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

FAN SELECTOR FAN SELECTOR FAN SEÇİM YAZILIMI.

FIRAT ÜNİVERSİTESİ PERSONEL OTOMASYONU


AÇIKLAMALARI SEBEP ÇÖZÜM

PAKET TRANSFER SİSTEMİ

Zirve e-fatura Portal Paketi V. 1.0.xx

SPSS-Tarihsel Gelişimi

Ant + Ivy + SVN + CruiseControl ile Yazılım Geliştirme Yaşam Döngüsü. Kenan SEVİNDİK

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

FUTBOL TAKIM ANALİZİ. YZM5510 İş Zekası Ders Projesi. Melih ATASOYLU ( )

SOAP API. Mobildev Toplu Mesajlaşma API

Sanal Makineler ve Linux Konteynerlerin Performans Karşılaştırması

Bölüm 4: DDL Veri Tanımlama Dili

Gelişen Bilgi Dünyası: Neden EBSCO? Cem Karamehmetoglu EBSCO Antalya

Özgür Yazılım Proje Yönetimi

PAROLA GÜVENLİĞİ. İlker Korkmaz. homes.ieu.edu.tr/ikorkmaz 08/06 UBE

Yazılım Mühendisliği 1

dcc.com Nedir? Neler yapabilir? Nasıl Kullanılır?

Nasıl Pardus Geliştiricisi Olunur?

VIDEOCELL API. Versiyon 1.0.0

MOBILEPAX SOAP PRODUCT API KULLANIM ŞEKLİ

TÜİK e-vt. Web Servis Kılavuzu

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

(OKS)

STANDART HAZIR TASARIM YAZILIMLARI & KURUMLARA ÖZEL YAZILIM GELİŞTİRME HİZMETİ

TÜRKİYE İLAÇ VE TIBBİ CİHAZ KURUMU (TİTCK) ELEKTRONİK BAŞVURU YÖNETİMİ (EBS) TALEP BİLDİRİM KULLANICI KILAVUZU

Koordinat Dönüşümleri (V )

Ziyaret Kaydı Görüntüleme-Revizyon Ekranı Kullanım Kılavuzu

20 Dakikada Kimlik Doğrulama Sistemi

Akademik Veri ve Performans Yönetim Sistemi. Kısa Tanıtım Kılavuzu

Açık Kaynak Kodlu Yazılım

Netsis 3 SMS Uygulaması

UYGULAMA KULLANIM KILAVUZU

Efe Çiftci Çankaya Üniversitesi Bilgisayar Mühendisliği Bölümü Kasım 2012 CENG 191 Computer Engineering Orientation Özel Sunumu

Google Play Zararlısı İnceleme Raporu

Gezgin Etmen Sistemlerinin Başarım Ölçümü: Benzetim Tekniği

Bilecik Üniversitesi Mühendislik Fakültesi Moodle Uzaktan Öğretim Sistemi

Kemalettin YıldY KADIR HAS UNIVERSITY. UNIX SYSTEM ADMINISTRATOR

JETSMS XML Mesaj İşlemleri Yardım Dokümanı Tarih Sürüm XML ile Mesaj İşlemleri

BSOFTefat E-FATURA ÇÖZÜMÜ

2. Use Dns lookup, Use relay server aralarında seçim yapınız. Biz Dns lookup ile SMTP-mizi çalıştırdık. DNS lookup kısmında domain adınızı yazınız.

IBM CLM Çözümleriyle Çevik Yazılım Süreçleri. Canberk Akduygu & Koray Okşar

Doküman JETSMS XML Mesaj Đşlemleri Yardım Dokümanı Tarih Sürüm 1.1.0

Şekil 1- CryptoLocker Tarafından Kullanıcılara Gönderilen Eposta

MODSECURITY DENETİM KAYITLARINI ANLAMAK. Gökhan Alkan,

Tel : 0(532) Web : E-Posta : info@kayikcioglugrup.com. İLETİ PAKETİ API (Entegrason) Dökümanı

Uludağ Projesi, İlk Adımlar (Kalite Takımı)

David s Advanced Revision Control System

SMSEXPLORER XML API. XML API KILAVUZU v.1.0

TÜRKİYE İSTATİSTİK KURUMU VERİTABANI VE UYGULAMA ALANLARI

PiSi ile Paket Yapımı. S.Çağlar Onur

Görme Engelliler için Web Sayfalarında Erişilebilirliğin Sağlanması

SAKLI YORDAM (Stored Procedure) Sibel Somyürek

Açık Kaynak Öğrenme Yönetim Sistemleri (Learning Management Systems) Ceren Çalıcı

Transkript:

Kaynak Kodları GitHub Üzerinden Yönetilen ve Debian Depolarında Bulunan Yazılımların Geliştirme İstatistikleri Aliye Dilara Koca 1, Recai Oktaş 2 1 Ondokuz Mayıs Üniversitesi, Fen Bilimleri Enstitüsü, Bilgisayar Mühendisliği Anabilim Dalı, Samsun 2 Ondokuz Mayıs Üniversitesi, Bilgisayar Mühendisliği Bölümü, Samsun dilara@bil.omu.edu.tr, roktas@bil.omu.edu.tr Özet: Günümüzde sürüm kontrolü ve kaynak kodlarının yönetimi amacıyla birçok yazılım çözümü bulunmakta ve kullanılmaktadır. Bunların en yaygını olan Github, Debian başta olmak üzere birçok açık kaynak kodlu yazılım projesinde sıklıkla kullanılmaktadır. Bu çalışma kapsamında kaynak kodları Github üzerinden yönetilmekte olan Debian paketlerinin geliştirme süreçlerine ait istatistiksel tespit ve değerlendirmeler yapılmıştır. Bu çalışma sayesinde Debian kaynaklarında bulunan yazılımların geliştirme evreleri hakkında yorumlanabilir ve anlamlı istatistiksel veriler üretilmiş olacaktır. Anahtar Sözcükler: Sürüm kontrolü, Github, Geliştirme Süreci. Development Statistics of Softwares, Source Code is Managed Through Github and Hosted on Debian Repositories Abstract: Today, many software solutions are used for version control and management of source code. Github is most commonly used one. Often used in many open source projects, including Debian. In this study, there is statistical analyzes of the development of Debian packages source code, which is controlled via Github. Through this study, data were collected about Debian packages on the development stage and interpretable and meaningful statistical data was produced. Keywords: Version Control, Github, Development Process. 1. Giriş Bir yazılımın geliştirilmesi süreci yazılımın ölçeğine göre değişiklik arz etmekle beraber kalabalık bir ekip tarafından sürdürülür. Bu yazılım geliştirici ekibin görev ve sorumluluklarının farklılığı, yazılımın modüler bir yapıda geliştirilmesi ihtiyacı, tüm yazılım geliştiricilerin aynı anda, aynı yazılımın geliştirilmesi üzerinde çalışması gibi zorunluluklar yazılım sektöründe bir sürüm kontrolü ve kaynak kodların yönetimi ihtiyacı doğurmuştur. Bu amaçla birbirine benzer yöntemleri kullanan birçok sürüm kontrolü ve kaynak kodu yönetimi yapan yazılım geliştirilmiştir. Github, internet üzerinden servis veren, tüm dünyadan geliştiricilerin bir arada çalışmasına imkan tanıyan, açık kaynak kodlu yazılımlara olduğu kadar özel yazılım projelerine imkan tanıyan bir kaynak kod/yazılımcı sosyal ağıdır. Github 10 milyonu aşkın üyesi, 25 milyonu aşkın kaynak deposu ile bu bağlamda en yaygın kullanıma sahip ağdır. Debian paketleri açık kaynak kodlu olarak geliştirilmektedir. Gönüllü geliştiriciler tarafından sağlanan desteğin verimli şekilde yönetilebilmesi için çeşitli sürüm takip sistemleri kullanılmaktadır. Git ise bu sürüm takip sistemlerinden biridir.

Yapılan bu çalışma ile üst geliştirici kaynak kodları Github üzerinde geliştirilen ve barındırılan Debian paketlerinin geliştirme süreci incelenmiştir. Yapılan çalışmada 26444 adet paketten elde edilen veriler ile 6 adet kriter üzerinden incelemeler yapılmıştır. 2. Sürüm Konrol Sistemi Sürüm kontrol sistemi, dosyalar üzerinde yapılan tüm değişiklikleri kaydedip versiyonlar oluşturan ve daha sonra istenilen versiyona geri dönebilmeye olanak sağlayan bir sistemdir. Bu sistem neredeyse tüm dosya türlerinde kullanılabilir. Merkezi sürüm yönetim sistemlerinde tüm kullanıcılar bütün değişikliklerini direkt olarak uzaktaki depo üzerinde yaparlar. Merkezi versiyon yönetim sistemlerinde tüm kullanıcılar bütün değişikliklerini direkt olarak uzaktaki depo (repository) üzerinde yaparlar. Merkezi olmayan sistemlerde ise birçok yerel depo (local repository) ve birçok kullanıcı ile birlikte bir adet de uzak depo (remote repository) bulunmaktadır. Bu sistemlerde, commit yapısı yapılan değişikliklerin bir mesaj ile birlikte versiyon olarak kaydedilmesini sağlar. push eylemi ise, daha önce yerel makinede commit edilmiş bütün revizyonları sırayla uzak depoya uygular. Merkezi olmayan versiyon kontrol sistemlerinin bir örneği Git'tir. Git, yerel depolar ile de çalıştığından internete bağlı olunmadığında da değişikliklerin versiyonlanması mümkündür. Github ise, Git sürüm kontrol sistemini kullanan yazılım geliştirme projeleri için web tabanlı bir depolama servisidir. 3. Depo Adreslerinin Elde Edilmesi Güncel Debian paket listesi Debian'ın kaynağından [1] alınmıştır. Listede 26444 adet paket bulunmaktadır. Bir debian paketinin.dsc uzantılı dosyası kaynak paketi tanımlayan bilgiler içerir. Bu dosya ayrılmış alanlardan oluşan bir dizi içerir. Paket listesi üzerinden üst geliştirici kaynak kodlarının bulunduğu depoların elde edilmesi için, Debian paketlerin kaynak kod bilgilerinin tutulduğu.dsc dosyalarının elde edilmesi yöntem olarak seçilmiştir. Dsc dosyaları paket listesi kullanılarak aptget komutu ile aşağıdaki şekilde (1) elde edilmiştir. $ apt-get source dsc-only paket (1) Dsc dosyasının formatı genel olarak Şekil 1 de gösterildiği formattadır. Bu formatta bazı alanların açıklamaları aşağıdaki gibidir. Source alanı, kaynak paketin adı Maintainer alanı, Deb paketi geliştiricisi bilgileri Uploader alanı, Deb paketini Debian paket havuzuna gönderen geliştiricinin bilgileri Homepage alanı, üst geliştirici kaynak paketinin paket ile ilgili bilgi veren sayfası Vsc-* alanı, paket kaynak kodunun geliştirildiği sürüm takip sistemine bağlı olarak verilen geliştirme bilgileri

Sürüm kontrol sistemi olarak Git ve depolama servisi olarak Github kullanan paketlerin seçilmesi istenilmiştir. Dsc dosyasının Homepage alanında üzerindeki adres bilgisini veren paketler, düzenli ifadeler kullanan otomatize bir yapı ile süzülmüştür. 26444 adet paket içinden süzme işlemi sonucu elde edilen paket sayısı 1137 dir. * Count(distinct(repo)) as repo_count"). * order( repo_count desc ) (3) 4. Verilerin Üretilmesi Dsc dosyalarından alınan Homepage alanlarından elde edilen Github depo sahibi kullanıcı adı ve depo adı bilgileri kullanılarak, Github API'si aracılığıyla depolara ait son 2 yıllık Commit'ler çekilmiş ve formatlanarak kaydedilmiştir. Bu sorgu işlemi için istek gönderilen adres aşağıda (2) gösterilmektedir. https://api.github.com/repos /depo-sahibi/depo/commits? Since=2013-08-20 (2) Tespit edilemeyen sebeplerden dolayı 1137 adet paket içinden 942 adet paketin Commit verilerine ulaşılabilinmiş, 195 adet paket için Github API'sinden Not found yanıtı alınmıştır. Şekil 2. Depo Sahiplerinin Depo Sayıları 6. Depolar Hakkında İncelemeler Seçilen depoların geliştirici sayıları sorgusu (4); aşağıdaki (Şekil 3) gibi sonuç Bir kayıtlı veri için, commit'in içeriğindeki değişiklikleri açıklayan yazı (message), depo sahibi (owner), depo (repo), değişiklikleri hazırlayan kişi (author), değişiklikleri gönderen kişi (committer), değişikliklerin gönderilme tarihi (date) alanları tutulmaktadır. 5. Depo Sahipleri Hakkında İncelemeler Veriseti içerisindeki hangi Github kullanıcılarının, seçilen depolardan kaçına sahip olduğu sorgusu (3); aşağıdaki (Şekil 2) gibi sonuç > Commit.group(:owner). * select( * "owner, Şekil 3. Depoların Commit Gönderen Kullanıcı Sayıları

> Commit.group(:repo). * select( * "repo, * Count(distinct(committer_login)) as committer_count"). * order( commiter_count desc ) (4) Seçilen depoların toplam commit sayıları sorgusu (5); aşağıdaki (Şekil 4) gibi sonuç > Commit.group(:repo). * select( * "repo, * Count(distinct(message)) as commit_count"). * order( commit_count desc ) (5) Şekil 5. Depoların Saatlere Göre Commit Sayıları Hata (bug) düzeltme amaçıyla gönderilen commit'lerin, genel olarak mesaj alanında fix ve fixed içerikli olarak depoya gönderildiği görülmüştür. Seçilen depoların fix commit sayıları sorgusu (7); aşağıdaki (Şekil 6) gibi sonuç Şekil 4. Depoların Commit Sayıları Seçilen depoların toplam saatlere göre commit sayıları sorgusu (6); aşağıdaki (Şekil 5) gibi sonuç > Commit. * select( "date_format(committer_date, '%H') as hour, Count(distinct(message))"). * group("hour") (6) > Commit.group(:repo). * where("message like '%fix %' or message like '%fixed%'"). * select("repo, Count(message) as mcount"). * order( mcount desc ) (7)

> Commit.group(:repo). * where("message like '% test%'"). * select("repo, Count(message) as mcount"). * order('mcount desc') (8) Şekil 6. Depoların Fix Commit Sayıları Toplam 150049 commit içinde 22096 adet fix commit bulunmaktadır. Yani gönderilen commit'lerin %15 oranında hata düzetlme amaçlı olduğu görülmektedir. Bir yazılımın doğrulanması ve geçerlenmesi süreci olan yazılım testi, yazılım geliştirme aşamaları içerisinde oldukça büyük bir yer kaplamaktadır. Yine de yazılım testine dair farkındalık gerektiği ölçüde gelişememiştir; pek çok yazılımda test edilmeyen özellikler bulunduğu gibi test edilmeyen yazılımlar da bulunmaktadır. Test ile ilgili işlemler için gönderilen commit'lerin genel olarak test dizgisini içerdiği gözlemlenmiştir. Seçilen depoların test ile ilgili olan commit sayıları sorgusu (8); yandaki (Şekil 7) gibi sonuç Şekil 7. Depoların Test ile İlgili Commit Sayıları Yazılıma dair uygulanan geliştirmelerin ne kadaranının test ile ilgili olduğunu kavramak amacıyla bir ölçüm yapılmıştır. Toplam 150049 commit içinde test ile ilgili 14522 adet commit bulunmaktadır. Yani gönderilen commit'lerin %9.2 oranında test ile ilgili olduğu görülmektedir. Ek olarak commit yazarı (author) ve depoya göndereni (committer) aynı kişi olan 148148 commit bulunurken, farklı kişiler tarafından yazılıp, depoya gönderilen 9686 commit bulunmaktadır. Kayıp olan 3 verinin API'den

gelen bilgilere göre bu alanları belirsizdir. Burada da %6.1 gibi bir oran görülmektedir. Commit gönderilirken yapılan işlemi açıklayan mesaj alanına anlaşılır açıklama yazmak önerilmektedir. Commit mesajlarının fazla ayrıntı verecek kadar uzun veya bilgi veremeyecek kadar kısa olması anlaşılırlığı olumsuz etkilemektedir. Seçilen depoların commit mesajı uzunlukları dağılımı; aşağıdaki (Şekil 8) gibi sonuç Homepage alanını düzenli doldurulmuş olan paketlerin oranıdır. Depo sahipleri hakkında yapılan inceleme (Bölüm 5., Şekil 2.) göz önüne alındığında ortalama 1 (1.38) olarak hesaplanan kullanıcı başına düşen depo sayılarının 25'e kadar çıkabildiği gözlenmiştir. Depolar hakkında yapılan incelemelere yakından bakıldığında depoya commit gönderen kullanıcı sayılarının ortalama 12 iken bu sayının 930 ile maksimum noktaya docker deposunda ulaştığı tespit edilmiştir (Bölüm 6., Şekil 3.). Depolara yapılan commit sayıları ortalama olarak 159 olarak hesaplanırken 14646 commit sayısı ile docker deposu başı çekmektedir. (Bölüm 6., Şekil 4.) Yapılan bu commitler ağırıklı olarak 15:00-23:00 saatleri arasında yoğunlaşmaktadır (Bölüm 6., Şekil 5.). Bunun yanı sıra depolara yapılan commitlerin ortalama olarak yüzde %15'inin fix commiti olduğu görülmektedir (Bölüm 6., Şekil 6). Şekil 8. Depoların Commit Mesajı Uzunluğu Dağılımı 6. Sonuç Depoların geliştirilme alışkanlıkları ve özellikleri kullanılarak, Debian paketleri için bir kalite metriği oluşturulması hedeflenmiş, bir ön çalışma olması amacıyla geliştirme istatistiklerine ulaşılmaya çalışılmıştır. Bu doğrultuda tüm Debian paketleri incelenerek, sürüm kontrol sistemi olarak Git ve depolama servisi olarak Github kullanan paketlerin geliştirici ve commit istatistikleri elde edilmiştir. Seçilen 26444 adet programdan 1137 tane programın üst geliştirici kaynak kodunun % 4.3'lük bir oranla Git sürüm takip sistemini ile geliştirildiği tespit edilmiştir. Bu yalnızca Yazılım geliştirme sürecinde büyük bir yer tutan test geliştirme süreciyle alakalı yapılan commitler analiz edildiğinde test ile alakalı commitlerin sayısının tüm commitlere oranı %9.2 olarak tespit edilmiştir (Bölüm 6., Şekil 7.). Geliştirme sürecinde geçmişe dönme, gelişim sürecinin takip edilmesi gibi bir çok alanda kolaylık sağlayan commit mesajlarının anlamlı olması gerekmektedir. Çalışmada depolara gönderilen commit mesajlarının ortalama 92 karakter uzunluğunda olup, %70 oranındaki commit'lerin bu ortalamaya eşit veya altında kalırken, %30 oranındaki commit'lerin ise sınırın üstünde olduğu görülmüştür (Bölüm 6., Şekil 8.). Ayrıca commit mesajı uzunluğunun 65535 karaktere kadar artabildiği görülmüştür.

10. Kaynaklar [1] Index of /changelogs, Ağustos 2015 (de indirildi) World Wide Web: http://metadata.ftpmaster.debian.org/changelogs/ [2] Rodin J., Aoki O., Debian New Maintainers' Guide, Ağustos 2015 (de indirildi) World Wide Web: https://www.debian.org/doc/manuals/maintguide/ [3] Github, Github Develeoper, Ağustos 2015 (de indirildi) World Wide Web: https://developer.github.com/v3/ [4] Nussbaum, L., & Zacchiroli, S. (2010). The ultimate debian database: Consolidating bazaar metadata for quality assurance and data mining. Mining Software Repositories (MSR), 2010 7th IEEE Working Conference, 52-61. IEEE. [5] Spinellis, D. (2012). Git. Yazılım, IEEE, 29(3), 100-101. [6] Knott, M. (2014). Version Control with Git. In Beginning Xcode, 371-403. Apress. [7] Shaffer, K. (2013). Push, Pull, Fork: GitHub for Academics. Hybrid Pedagogy. [8] Agrawal, K., Amreen, S., & Mockus, A. (2015). Commit quality in five high performance computing projects. Proceedings of the 2015 International Workshop on Software Engineering for High Performance Computing in Science, 24-29.