Portakal Teknoloji

advertisement
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
Download