Yazılım Üretimi için Özgür Araçlar Kursu

Eğitmen:  Hakan Uygun, hakan.uygun@ozguryazilim.com.tr
          Ömer Özkan   omer@ozkan.info

Aamaç:
"Yazılım üretimi ve proje yönetimi sürecinde yaşanılan zorluklar, 
bunları aşmak için geliştirilen yöntem ve araçların işleneceği bu 
eğitimde, farklı programlama dil ve teknolojilerinde ne tür özgür 
yazılım araçları ile bu işlerin yapılabileceği anlatılacaktır. Genel 
olarak dil ve teknolojiden bağımsız olarak işlenecek olmasına rağmen 
örneklerde java teknolojileri kullanılacaktır."

Gereklilik:
- Katılımcıların yazılım dilleriden birini, tercihan Java, bilmesi 
 - Kendi Bilgisayarını getirmesi
 - Linuxa aşina olması ve makinasında linux kurulu olması  

 Kursun İçerik ve Planı:

1. Gün
Giriş

Yazılım proje yönetiminde amaçlar
Yazılım geliştirme metodolojileri
Doğru teknoloji seçimi
Araç seçimi
Teknoloji bağımlığı
IDE mi UDE mi?
Ekip içi eğitim
Açık Standartlar

Belgeleme

Belgeleme neden önemli?
Belgeleme yöntemleri
Araçlar
Wiki
Blog
DITA / DocBook / Latex v.b.
JavaDoc / PyDoc / Doxygen v.b.

İş / Hata takip Sistemleri

İş takibi nedir?
Hata takibi nedir?
Araçlar : Bugzilla, RedMine ...
RedMine

2. Gün
Sürüm Takip Sistemleri

Sürüm takibi nedir?
Ekip içi kullanım
Araçlar : cvs, svn, git, hg ...
Subversion
Genel kullanım kuralları
En iyi kullanım biçimleri
Yanlış kullanım biçimleri
Git
Genel kullanım kuralları
En iyi kullanım biçimleri
Yanlış kullanım biçimleri

3. Gün
Derleme Sistemleri

Derleme sistemi nedir?
Araçlar : Make, AutoTools, CMake, SCons, Ant, Maven, Gradle, Rake
Derleme Yük dağıtıcıları : distcc, icecream
Ant
Maven
Rake

Düzenli Derleme Sistemleri

Düzenli derleme nedir?
Araçlar : CruiseControl, Hudson, Jenkins ...
Jenkins

Kod Kalite Ölçüm Sistemleri

Kod kalite ölçümü nedir?
Kalite metrikleri nelerdir?
Araçlar : Sonar, ...
Sonar

4. Gün
Test Sistemleri

Test nedir?
Test çeşitleri ( Birim Test, Fonksiyonel Test, Yük Testi, Kullanıcı 
Kabul Testi )
Test Araçları : JUnit, DbUnit, JSFUnit, Cucumber, Arquillian, 
JMeter, Selenium, rSpec

Sürüm Çıkarma Döngüsü

Sürüm çıkarma genel geçer kuralları
Sürüm numaralandırma
Günlük, Haftalık derlemeler

Paket sistemleri

Paket sistemi nedir?
Paket deposu nedir?
Araçlar : RPM, DEB, Maven(jar), Gem, Egg, Pear ...