Portakal Teknoloji Eğitim Danışmanlık Yazılım Ltd. Şti. ODTÜ Teknokent Silikon Blok Kat:1 No:21 Çankaya Ankara Tel: (312) 210 1772 Faks: (312) 210 1773 Eposta: [email protected] Web: http://www.portakalteknoloji.com/ Portakal Teknoloji 2007 – 2008 Dönemi Bitirme Projesi Önerileri Portakal Teknoloji üniversiteler ile olan iyi ilişkilerini açık kaynak kodlu yazılımlar dünyasına yeni yazılım projeleri katmak ve bitirme projesi yapan üniversite öğrencilerimize gerçek dünya projelerine bir giriş yaptırarak destek olmak için bu yıl da bitirme projelerine destek olacaktır. Her bir bitirme projesi açık kaynak kodlu olarak SourceForge sitesinde yayınlanacaktır. Ayrıca proje süresince öğrencilerimize çok çeşitli destekler vereceğiz. Aşağıda gördüğünüz bitirme projesi fikirlerini uygulamak isteyecek öğrencilerin ve öğrencilerine bu ve benzeri fikirleri uygulatmak isteyen akademik danışmanların bizimle temasa geçmesini bekliyoruz. İsterseniz, bu fikirleri üniversitenizde sunmak için kampüsünüzde bir seminer de verebiliriz. Buradaki fikirlerin geliştirilmesi, göremediğimiz konuların ortaya çıkması için akademisyenlerimizin işbirliğine de açığız. Bu konuda bizimle [email protected] adresinden bağlantıya geçebilirsiniz. 1. Xen 3.1 İmaj Yönetim Aracı Xen, işletim sistemi ile donanım arasına girerek işletim sistemlerine sanal bir donanım ortamı sunan bir sanal makine monitörüdür (virtual machine monitor – VMM). Bu sayede aynı bilgisayarda birden fazla sanal makina yaratılarak, birden fazla işletim sistemi bu sanal makinalarda aynı anda çalıştırılabilir. Bu sayede bir işletim sistemi sorun yaşasa (virüs bulaşması, kilitlenme) veya bir nedenden dolayıp kendi sanal makinasını kapatıp açsa bile diğer sanal makinalardaki işletim sistemleri etkilenmez. Xen açık kaynak kodlu bir araçtır ve Linux başta olmak üzere Windows, Netware gibi Intel x86 platformundaki hemen her işletim sistemini sanallaştırabilir. Xen özellikle uygulama geliştiriciler için önemli bir araçtır. Uygulama geliştirici, uygulamasını test etmek için ikinci bir bilgisayar kullanmaz, kendi bilgisayarında yeni bir sanal makinede test eder. Bu projede de özellikle uygulama geliştiricilerin Xen kullanımını kolaylaştıracak bir yapı Sayfa 1/8 Portakal Teknoloji Eğitim Danışmanlık Yazılım Ltd. Şti. ODTÜ Teknokent Silikon Blok Kat:1 No:21 Çankaya Ankara Tel: (312) 210 1772 Faks: (312) 210 1773 Eposta: [email protected] Web: http://www.portakalteknoloji.com/ hedeflenmektedir. Projedeki amaç, hazırda mantıksal bölümler (logical volume) üzerinde yerleşmiş belli sayıda işletim sisteminin Xen üzerinde çalıştığı bir bilgisayarda aşağıdaki işlemleri yapabilecek bir grafik kullanıcı arabirimi uygulamasını yazmak ve Linux yüklü Xen dom0 yönetici sanal makinasında çalıştırmaktır. Var olan sanal makinaları listeleyebilmek Var olan sanal makinaları açmak, kapatmak, dondurmak, yeniden başlatmak, kopyasını (snapshot) almak, kopyayı kaydetmek, başka bir fiziksel makinaye göç ettirmek (migration) Var olan sanal makinalarla ilgili ağ politikalarını değiştirmek, Yerel diskten (ayrıca bir SAMBA payından, NFS dizininden veya LDAP kaynağından) yeni bir işletim sistemi imajı alarak, bu imaj için bir mantıksal bölüm oluşturmak ve bu bölümde yeni bir sanal makina oluşturmak. Var olan sanal makinaların arasından seçilenlerin, sistem açılışında otomatik olarak açılmasını sağlamak, Sistem açılışında otomatik açılacak sanal makinalar için bir açılış sırası uygulatmak, Yazılımın Xen dom0 dışında kendisine ait bir sanal makinadan çalışmasını sağlamak, Sanal makinalar hakkında çeşitli raporlar üretmek bunları Excel ve PDF biçiminde kaydetmek, Uygulama C/C++, Python veya Java ile yazılabilir. Proje 2-3 kişllik bir ekip için düşünülmüştür. Ancak daha büyük bir ekip olarak da yazılabilir. Ekibe 1 adet danışman atanacaktır. Uygulama açık kaynak kodlu olarak geliştirilecek, SourceForge sitesinde bir projesi olacaktır. Uygulama geliştirme sürecinde çevik yöntemler kullanılarak 2-3 haftalık çevrimler ile prototip çıkartılması öngörülmektedir. Bununla birlikte üniversitelerin beklentileri ile uyuşmak için bazı çevrimler, çözümleme belgeleri, yazılım tasarım belgeleri, test yöntemi belgeleri, dönemsel raporlar gibi belge ürünleri için ayrılacaktır. 2. Durağan Kod Analizi İle Java Test Aracı Durağan kod analizi, bir yazılımın kaynak kodları üzerinde otomatik bir araç ile yapılan çeşitli incelemelere verilen addır. Analiz sırasında, kodda bulunan bazı blokların (örneğin işlev/yöntem tanımları) içinde belli kurallara uygunluk test edilir. Her bir testin kendisi, dilin yapısını da göz önüne alan bir teorem ispatı Sayfa 2/8 Portakal Teknoloji Eğitim Danışmanlık Yazılım Ltd. Şti. ODTÜ Teknokent Silikon Blok Kat:1 No:21 Çankaya Ankara Tel: (312) 210 1772 Faks: (312) 210 1773 Eposta: [email protected] Web: http://www.portakalteknoloji.com/ niteliğindedir. Java dilinin nesne tabanlı olması, bu anlamda Java dilindeki durağan analizleri C gibi dillerdekinden daha zor hale getirmektedir. Bununla birlikte, Java Modelleme Dili (JML Bknz- http://www.eecs.ucf.edu/~leavens/JML/ ) sayesinde nesneler üzerinde kontratlar (design by contract) tanımlanarak analizler kolaylaşmaktadır. Projede, Java sınıfları için güvenli kodlama pratiklerine dair analizlerin otomatik olarak yapılması amacı ile JML kullanılarak testler geliştirlecek ve çeşitli açık kaynak kodlu Java uygulamalarında çalıştırılacaktır. Proje içindeki görevler şunları içermektedir. ● ● ● ● Java'da hangi türde güvenlik açıklarının durağan kod analizi ile yakalanabileceğinin araştırılması JML kullanarak Java kodlarının incelenmesi Güvenlik testlerinin otomatik olarak çalıştırılması için birer Junit testi haline getirilmesi veya bağımsız bir test türü olarak Ant'a entegre edilmesi Güvenlik testlerini Ant kullanarak çalıştıran küçük bir grafik uygulama yazılması Uygulama Java kullanılarak yazılacaktır. Proje bireysel olarak geliştirilebileceği gibi 2-3 kişilik bir ekip olarak da yazılabilir. Ekibe 1 adet danışman atanacaktır. Uygulama açık kaynak kodlu olarak geliştirilecek, SourceForge sitesinde bir projesi olacaktır. Uygulama geliştirme sürecinde çevik yöntemler kullanılarak 2-3 haftalık çevrimler ile prototip çıkartılması öngörülmektedir. Bununla birlikte üniversitelerin beklentileri ile uyuşmak için bazı çevrimler, çözümleme belgeleri, yazılım tasarım belgeleri, test yöntemi belgeleri, dönemsel raporlar gibi belge ürünleri için ayrılacaktır. 3. Hatalı Kod Enjeksiyonu ile Java Test Aracı Uygulamaların test edilmesi sırasında, testlerin uygulamadaki özelliklerin veya kod satırlarının tamamını test edebilmesi idealize bir durumdur. Test kapsamını (coverage) geliştirmenin yollarından birisi de hata durumlarında olanların test edilmesidir. Ancak her hata durumunu test etmek mümkün olmaz. Kod enjeksiyonu ile çalışmakta olan bir uygulamanın belleğine müdahale edilerek hata durumları kontrollü biçimde yaratılır ve yazılımın bu hata durumuna olan tepkisi incelenir. Java dilinde bu hata sıklıkla bir hata durumu Sayfa 3/8 Portakal Teknoloji Eğitim Danışmanlık Yazılım Ltd. Şti. ODTÜ Teknokent Silikon Blok Kat:1 No:21 Çankaya Ankara Tel: (312) 210 1772 Faks: (312) 210 1773 Eposta: [email protected] Web: http://www.portakalteknoloji.com/ (exception) nesnesi yaratılması ile olur (ABD Patent No 6477666). Projede, ekran iletişimi az olan (sunucu türü) bir Java uygulamasında çeşitli amaçlı kod bloklarında hata enjeksiyonu ile uygulamanın test edilmesi için bir araç geliştirilecektir. Aşağıdaki türdek testlerin üretilmesi beklenmektedir. ● ● ● ● ● ● ● ● ● ● Metin işleme kodlarının aksatılması Dosya iletişiminin aksatılması Temel veri yapılarında (listeler, ağaçlar) veri yapısının değiştirilmesi XML işlemesinin aksatılması İkili verilerde bütünlüğün (integrity) bozulması Sıkıştırılmış verilerin bozulması Ağ bağlantılarının kopartılması Veri tabanı (JDBC) bağlantılarının kopartılması Veri tabanı sorgu sonuçlarının (ResultSet) bozulması Uzaktan çalıştırma (remoting) mekanizmasının aksatılması Uygulama Java ile yazılacaktır. Proje bireysel olarak geliştirilebileceği gibi 2-3 kişilik bir ekip olarak da yazılabilir. Ekibe 1 adet danışman atanacaktır. Uygulama açık kaynak kodlu olarak geliştirilecek, SourceForge sitesinde bir projesi olacaktır. Uygulama geliştirme sürecinde çevik yöntemler kullanılarak 2-3 haftalık çevrimler ile prototip çıkartılması öngörülmektedir. Bununla birlikte üniversitelerin beklentileri ile uyuşmak için bazı çevrimler, çözümleme belgeleri, yazılım tasarım belgeleri, test yöntemi belgeleri, dönemsel raporlar gibi belge ürünleri için ayrılacaktır. 4. Güvenilir Bilişim Kullanan Radius Sunucusu Güvenilir Bilişim (Trusted Computing), güvenlik modellerinin önemli bazı zaaflarını çözmek için göreceli değil mutlak bazı kuralları uygulamak için kurcalamaya dayanıklı, ancak düşük maliyetli kriptografik donanımların bilgisayarlarda yaygınlaştırılması prensibi üzerine kurulu bir paradigmadır. Radius kullanıcı doğrulama, yetkilendirme ve kayıt altına alma (AAA) amaçlı yaygın kullanılan bir uygulama sözleşmesidir. Özellikle orta ve büyük boyutlu ağlarda ve İSS'lerde kullanılmaktadır. Radius ağa bağlanabilmek için kullanıcı adı ve parola işlemlerini PAP, CHAP gibi bir teknikle yapmanın dışında, kullanıcı bilgilerine göre kullanıcıya verilecek IP adresini, oturum zaman aşımı süresini ve benzeri bir çok ağ parametresini yönetebilir. Radius ayrıca İSS'ler ve VoIP işletmecileri tarafından hesap işlemlerini kayda almak, örneğin CDR'leri oluşturmak için kullanılır. Sayfa 4/8 Portakal Teknoloji Eğitim Danışmanlık Yazılım Ltd. Şti. ODTÜ Teknokent Silikon Blok Kat:1 No:21 Çankaya Ankara Tel: (312) 210 1772 Faks: (312) 210 1773 Eposta: [email protected] Web: http://www.portakalteknoloji.com/ Projede hem Radius sunucularının hem de istemcilerinin güvenilir bilişim kullanarak biribirlerini denetlemesinin sağlanması hedeflenmektedir. Bunun için yapılması öngörülenler şunlardır: ● ● ● ● ● Radius sunucularının Xen üzerinde çalışır duruma getirilmesi, Radius sunucu bağlantılarının güvenilir bilişim tabanlı denetlemeyi gerçekleştirecek bir vekil (proxy) üzerinden akması Radius istemcilerinin Xen üzerinde çalışır duruma getirilmesi, Radius istemci bağlantılarının güvenilir bilişim tabanlı denetlemeyi gerçekleştirecek bir vekil (proxy) üzerinden akması Sunucul vekilinin istemcilerdeki konfigürasyon değişikliklerinden haberdar edilmesi için küçük bir istemci/sunucu aracı yazılması. Bu sayede Radius sunucularında ve istemcilerinde bir kod değişikliği olmadan ve bir ayar yapılmaksızın Radius güvenilir bilişim kullanarak güçlendirilecektir. Projede C/C++ veya Java kullanılabilir. Proje bireysel olarak geliştirilebileceği gibi 2-3 kişilik bir ekip olarak da yazılabilir. Ekibe 1 adet danışman atanacaktır. Uygulama açık kaynak kodlu olarak geliştirilecek, SourceForge sitesinde bir projesi olacaktır. Uygulama geliştirme sürecinde çevik yöntemler kullanılarak 2-3 haftalık çevrimler ile prototip çıkartılması öngörülmektedir. Bununla birlikte üniversitelerin beklentileri ile uyuşmak için bazı çevrimler, çözümleme belgeleri, yazılım tasarım belgeleri, test yöntemi belgeleri, dönemsel raporlar gibi belge ürünleri için ayrılacaktır. 5. Java Sanal Makinesi'nin Güvenilir Bilişim ile Denetlenmesi Güvenilir bilişim kullanarak bir güven zinciri oluşturulması, özellikle uzaktaki bilgisayarlara bağlantı kurulmadan önce onların güvenilir durumdan çıkıp çıkmadığını test etmek açısından zorunludur. Java uygulamaları için bu zincir Java sanal makinesini içermek zorundadır. Ancak Java sanal makinesi son derece karmaşık bir yapıya sahip olduğundan tamamının ikili denetleme (binary attestation) mekanizmasından geçirilmesi kolay değildir. Özellikle diskin değişik yerlerindeki JAR dosyaları da işin içine katıldığından problem boyutu ciddi boyutlara varmaktadır. Projede, Java sanal maklnesinin kurulum dizini ve seçilen belli bir grup dizini Güvenilir Platform Modülü (TPM) kullanarak denetlemek ve doğrulamak için bir araç geliştirilecektir. Sayfa 5/8 Portakal Teknoloji Eğitim Danışmanlık Yazılım Ltd. Şti. ODTÜ Teknokent Silikon Blok Kat:1 No:21 Çankaya Ankara Tel: (312) 210 1772 Faks: (312) 210 1773 Eposta: [email protected] Web: http://www.portakalteknoloji.com/ Bu araç daha sonra var olan zincire entegre edilebilir, ancak bu çalışma proje kapsamında değildir. Projede C/C++ veya Java kullanılabilir. Proje bireysel olarak geliştirilebileceği gibi 2-3 kişilik bir ekip olarak da yazılabilir. Ekibe 1 adet danışman atanacaktır. Uygulama açık kaynak kodlu olarak geliştirilecek, SourceForge sitesinde bir projesi olacaktır. Uygulama geliştirme sürecinde çevik yöntemler kullanılarak 2-3 haftalık çevrimler ile prototip çıkartılması öngörülmektedir. Bununla birlikte üniversitelerin beklentileri ile uyuşmak için bazı çevrimler, çözümleme belgeleri, yazılım tasarım belgeleri, test yöntemi belgeleri, dönemsel raporlar gibi belge ürünleri için ayrılacaktır. 6. Web Tabanlı (Django) İnsan Kaynakları Yönetim Aracı İnsan kaynakları uygulamaları giderek her kurum için yaygın kullanıma girmekte ancak bu konudaki açık kaynak kodlu araçlar yerel koşullara uyum sağlamakta zorluk çekmektedir. Projenin amacı, Türkiye'deki mevzuatlara uygun bir insan kaynakları yönetim aracını açık kaynak kodlu olarak gerçekleştirmektir. Projede yazılması öngörülen özellikler ● ● ● ● ● ● ● ● ● ● İş ilanları, mülakatlar ve değerlendirme süreci İlk işe giriş işlemleri (SSK) Aylık beyanname hazırlanması Bordro basılması İşe geliş gidiş takibi Fazla mesai takibi Yıllık izin Hastalık, doğum, vb. izinler İşten ayrılma işlemleri Tazminat bordroları Uygulama Python/Django ile yazılacaktır. Proje bireysel olarak geliştirilebileceği gibi 2-3 kişilik bir ekip olarak da yazılabilir. Ekibe 1 adet danışman atanacaktır. Uygulama açık kaynak kodlu olarak geliştirilecek, SourceForge sitesinde bir projesi olacaktır. Uygulama geliştirme sürecinde çevik yöntemler kullanılarak 2-3 haftalık çevrimler ile prototip çıkartılması öngörülmektedir. Bununla birlikte Sayfa 6/8 Portakal Teknoloji Eğitim Danışmanlık Yazılım Ltd. Şti. ODTÜ Teknokent Silikon Blok Kat:1 No:21 Çankaya Ankara Tel: (312) 210 1772 Faks: (312) 210 1773 Eposta: [email protected] Web: http://www.portakalteknoloji.com/ üniversitelerin beklentileri ile uyuşmak için bazı çevrimler, çözümleme belgeleri, yazılım tasarım belgeleri, test yöntemi belgeleri, dönemsel raporlar gibi belge ürünleri için ayrılacaktır. 7. Web Tabanlı (Django) Gezegen(ler) Yöneticisi Bir gezegen (planet), birden fazla günlüğün RSS beslemelerini bir araya getiren ve böylece bir temadaki içeriğin kolayca takip edilmesini sağlayan bir web sitesidir. Çoğu kişi bu sitenin kendi RSS beslemesine abone olmayı da tercih edebilir. Ancak bir gezegeni oluşturmak ve yönetmek, veya birden çok gezegeni aynı sunucuda barındırmak giderek artan bir iş yükü olmaktadır. Projede Django (Bknz http://www.djangoproject.com/ ) ile hazırlanmış web sitelerine, çeşitli konfigürasyonlardaki gezegenleri eklemek için web tabanlı bir grafik arayüz geliştirilecektir. Bu arayüzün aşağıdakiler başlta olmak üzere çeşitli becerileri olması beklenmektedir. ● ● ● ● ● Yeni bir gezegen yaratmak ve alan adına dair ayarlarını (alt alan adı, alan adı altında dizin, vs) yaparak web sitesine entegre etmek Gezegene besleme veren günlükler listesini düzenlemek (ekleme/çıkarma, tag ile verilen girdiyi filtreleme, beslemeyi geçici olarak durdurma) Tipik gezegen ayarlarını yapmak (güncelleme sıklığı, rss seçenekleri) Görsel ayarların yapılması (özellikle css'lerin uyulturulması) Yedekleme Django Struts, Hibernate gibi Java alt yapıları ile yazılan web uygulamalarına benzer mimarideki uygulamaların Python dili ile yazılması için geliştirilmiş, son derece aktif ve yüksek nitelikli bir açık kaynak kodlu projedir. PHP'nin sunduğuu altyapıların yetersiz olduğu bir çok projede aktif olarak kullanılmaktadır. Django kullanımı giderek yaygınlaşmakta ve muhafazakar kuruluşlar bile Django kullanmaya başlamaktadır. Uygulama Python/Django ile yazılacaktır. Proje bireysel olarak geliştirilebileceği gibi 2-3 kişilik bir ekip olarak da yazılabilir. Ekibe 1 adet danışman atanacaktır. Uygulama açık kaynak kodlu olarak geliştirilecek, SourceForge sitesinde bir projesi olacaktır. Uygulama geliştirme sürecinde çevik yöntemler kullanılarak 2-3 haftalık çevrimler ile prototip çıkartılması öngörülmektedir. Bununla birlikte üniversitelerin beklentileri ile uyuşmak için bazı çevrimler, çözümleme belgeleri, yazılım tasarım belgeleri, test yöntemi belgeleri, dönemsel raporlar Sayfa 7/8 Portakal Teknoloji Eğitim Danışmanlık Yazılım Ltd. Şti. ODTÜ Teknokent Silikon Blok Kat:1 No:21 Çankaya Ankara Tel: (312) 210 1772 Faks: (312) 210 1773 Eposta: [email protected] Web: http://www.portakalteknoloji.com/ gibi belge ürünleri için ayrılacaktır. 8. Yazılım Kırılganlık Test Aracı Yazılımların çalışma zamanı testlerinde, kırılganlık testleri de önemli bir yer kaplar. Ancak bir yazılımın kırılganlık testi genellikle elle yapılan bir testtir. Çünkü test adımları yazılımın çalışması ile paralel olarak yürür. Projede yazılımların işlevsel testlerin kullanılan (arabirimleri kullanan) otomatik test araçlarını kullanarak çalışma adımlarını takip eden ve çalışma sırasında kırılganlık testlerini otomatik olarak uygulayan bir araç yazılacaktır. Uygulanması düşünülen kırılganlık testleri aşağıdaki türde testler olacaktır: ● ● ● ● ● ● ● ● ● ● Dosya sisteminin doldurulması Kullanılan ortamların (ör. CD, USB disk) erişilemez duruma düşürülmesi Dosya adlarının değiştirilmesi Dosya erişim yetkilerinin değiştirilmesi Dosya içeriklerinin bozulması DLL ve diğer harici kitaplıkların değiştirilmesi Ağ bağlantısının yavaşlatılması Ağ bağlantısının kesilmesi Ağ paketlerinin kaybedilmesi Ağ paketlerinin bütünlüğünün bozulması Projede C/C++, Java veya Pyton kullanılabilir. Proje bireysel olarak geliştirilebileceği gibi 2-3 kişilik bir ekip olarak da yazılabilir. Ekibe 1 adet danışman atanacaktır. Uygulama açık kaynak kodlu olarak geliştirilecek, SourceForge sitesinde bir projesi olacaktır. Uygulama geliştirme sürecinde çevik yöntemler kullanılarak 2-3 haftalık çevrimler ile prototip çıkartılması öngörülmektedir. Bununla birlikte üniversitelerin beklentileri ile uyuşmak için bazı çevrimler, çözümleme belgeleri, yazılım tasarım belgeleri, test yöntemi belgeleri, dönemsel raporlar gibi belge ürünleri için ayrılacaktır. Sayfa 8/8