Mühendislik Pratikleri
Agile kavramı, yönetimsel yaklaşımları ile birlikte mühendislik pratiklerini de
içeren bir bütündür. Yazılım sektörüne yön vermiş olan önemli projelerde uygulanmış
ve olgunlaşmış Test Driven Development (TDD), Continuous Integration, Refactoring
ve Test Automation gibi mühendislik pratikleri, Agile yaklaşımlar uygulanan projelerde
verimliliğin ve sürekliliğin sağlanması açısından büyük önem taşımaktadır.
Test Driven Development
TDD, kod yazılmadan önce test senaryolarının yazılması, bu senaryolara bağlı olarak
kodun yazılması ve refactor edilmesi tekniğidir. TDD yaklaşımıyla, yazılması planlanan
kodun test senaryoları, sürekli olarak koşturulabilir ve bu sayede programın daha
az hata ile geliştirilmesi sağlanabilir. Ayrıca, alışıla gelmiş yazılım geliştirme
yöntemlerindeki yazılım tasarımı problemi de, isteği karşılayacak sınıfların yazılması
zorunluluğu ile büyük ölçüde aşılmaktadır. Bu da geliştirilen yazılımın kalitesini
arttırmakla kalmaz, değişim yönetimini ve tutarlılığı maksimize ederek yazılım maliyetlerini
düşünüldüğünden çok daha aşağıya çeker.
Kısaca TDD’nin getirileri şöyle sıralanabilir;
- kod güvenilirliği artar,
- kod kalitesi yükselir,
- kod anlaşılabilirliği artar,
- hata oranları düşer,
- kod her an sürüme hazır hale gelir,
- değişikliklerin yönetimi kolaylaşır.
- kod kalitesi yükselir,
- kod anlaşılabilirliği artar,
- hata oranları düşer,
- kod her an sürüme hazır hale gelir,
- değişikliklerin yönetimi kolaylaşır.
Continuous Integration
Continuous Integration (Sürekli Entegrasyon), bir yazılım takımının ürettiği kodun
sürekli ve sorunsuz olarak sisteme entegre edilmesini amaçlayan bir sistemdir. Bu
entegrasyon süreci, çeşitli araçlar ile otomatik hale getirilmekte ve belirlenen
sürelerde çeşitli scriptler ve işlemler çalıştırılarak kodun sürüme uygunluğu sürekli
olarak test edilmektedir. Böylece entegrasyon hataları mümkün olan en kısa sürede
bulanabilmektedir. Ayrıca, repository de bulunan kodların belirli aralıklarla test
senaryolarının koşturulması ile sistem tutarlılığı sağlanmakta, geliştirilen deployment
otomasyonu ile deployment süreçlerinde, insan faktöründen kaynaklanabilecek hatalar
en aza indirgenmektedir.Sürekli Entegrasyonun bazı yararları şu şekilde de sıralanabilir:
- hatalar hızlı bir şekilde bulunur ve çözüm süreci başlar,
- yazılım ürününün durumunun metriklerle ölçülmesi kolaylaşır,
- varsayımlar üzerinden değil, somut yazılım üzerinden test yapılması sağlanır,
- kişiler tarafından tekrarlanmak zorunda olan süreçleri kısaltır ve otomatik hale getirir,
- her an deploy edilebilen yazılım çıkarılabilinmesine olanak verir,
- projelerde saydamlık artar,
- yazılımcılara ve ürüne güven aşılanmış olur.
- yazılım ürününün durumunun metriklerle ölçülmesi kolaylaşır,
- varsayımlar üzerinden değil, somut yazılım üzerinden test yapılması sağlanır,
- kişiler tarafından tekrarlanmak zorunda olan süreçleri kısaltır ve otomatik hale getirir,
- her an deploy edilebilen yazılım çıkarılabilinmesine olanak verir,
- projelerde saydamlık artar,
- yazılımcılara ve ürüne güven aşılanmış olur.




