Bu çalışma materyali, "Programlamada Yeni Eğilimler" dersine ait bir ders kaydı transkripti ve kopyalanmış metin kaynaklarından derlenmiştir.
Programlamada Yeni Eğilimler: Çevik Yazılım, Scrum ve Nesnelerin İnterneti 📚
Giriş: Yazılım Geliştirmede Yeni Ufuklar 🚀
- yüzyılın ikinci yarısından itibaren bilgisayar ve yazılım dünyasındaki hızlı yükseliş, yazılım geliştirme süreçlerinin sürekli evrim geçirmesine neden olmuştur. Özellikle 1990'lı yıllardan itibaren iş dünyasındaki değişim hızına ayak uydurmakta zorlanan geleneksel yöntemler, "Çevik Yazılım Geliştirme" metotlarının ortaya çıkışını tetiklemiştir. Aynı dönemde, Kevin Ashton tarafından ortaya atılan "Nesnelerin İnterneti" (IoT) kavramı ise gerçek dünyadaki nesneleri radyo frekansları aracılığıyla internete bağlama vizyonunu taşımış, günümüzde akıllı evler ve akıllı şehirler gibi uygulamaların temelini oluşturmuştur. Bu çalışma materyali, yazılım geliştirmedeki bu iki önemli eğilimi, temel prensiplerini, pratiklerini ve bileşenlerini detaylı bir şekilde ele almaktadır.
Bölüm 1: Çevik Yazılım ve Scrum Yöntemi agile
1.1. Çevik Yazılım Manifestosu ve Prensipleri
2001 yılında yazılım sektörünün önde gelen 17 ismi tarafından yayınlanan Çevik Yazılım Geliştirme Manifestosu, yazılım geliştirme süreçlerine yeni bir bakış açısı getirmiştir.
✅ Çevik Bildiri'nin Dört Temel Değeri:
- Bireyler ve Etkileşimler ✅ süreçler ve araçlardan ziyade
- Çalışan Yazılım ✅ kapsamlı dokümantasyondan ziyade
- Müşteri ile İşbirliği ✅ sözleşme pazarlıklarından ziyade
- Değişime Karşılık Verme ✅ bir plana bağlı kalmaktan ziyade
💡 Manifestodan Çıkarımlar:
- Süreçler ve araçlar, değeri artırmalı, bireyler arası etkileşimi desteklemelidir.
- Dokümantasyon, fayda sağlayacak düzeyde ve engelleyici olmayan bir şekilde yapılmalıdır.
- Müşteri, projenin bir parçası olarak görülmeli ve sürekli iletişimde olunmalıdır.
- Planlar değişime adapte olmalı, baştan sona katı planlamadan kaçınılmalıdır.
✅ 12 Çevik Yazılım Prensibi: Manifestoyu destekleyen bu prensipler, müşteri memnuniyeti, değişime açıklık, düzenli çalışan yazılım teslimi, paydaşlarla işbirliği, motive olmuş bireyler, yüz yüze iletişim, sürdürülebilir geliştirme, teknik mükemmeliyet, sadelik, kendi kendini örgütleyen takımlar ve sürekli iyileştirme gibi konuları vurgular.
1.2. Çevik Yazılım Geliştirme Pratikleri
Çevik projelerin başarısında önemli rol oynayan bazı pratikler şunlardır:
- Test Güdümlü Programlama (TDD): Kodu yazmadan önce test kodlarının yazılması ve testler geçene kadar kodun geliştirilmesi.
- Kod Yeniden Yapılandırma (Code Refactoring): Mevcut kodun davranışını değiştirmeden yapısal kalitesini artırma.
- Sürekli Entegrasyon (CI): Yapılan değişikliklerin merkezi bir noktada derlenip test edilmesi, hataların erken tespiti.
- Eşli Programlama (Pair Programming): İki yazılımcının aynı iş üzerinde birlikte çalışarak hata oranını düşürmesi ve bilgi aktarımını sağlaması.
1.3. Scrum Tanımı ve Temel Bileşenleri
📚 Scrum Tanımı: İnsanların karışık ve adaptasyona açık problemleri ele alabilmek için en yüksek değere sahip ürünü, üretken ve yaratıcı bir şekilde geliştirmesini sağlayan bir iskelettir. Öğrenmesi kolay, esnek, şeffaf, gözleme dayalı ve tekrarlamalı (iterative) bir yöntemdir.
✅ Scrum'ın Temel Kavramları:
- Şeffaflık: Süreç boyunca oluşan çıktıların herkes tarafından izlenebilir olması.
- Gözlem: Mevcut iterasyon hedefine göre hareket edilip edilmediğinin belirlenmesi.
- Adaptasyon: Gözlem sonucu fark edilen kabul edilemez durumların düzeltilmesi.
1.4. Scrum Ekibi ve Etkinlikleri
Scrum ekibi, kendi kendini yöneten ve dışarıdan komutlarla yönetilmeyen bir yapıdır.
✅ Scrum Ekibi Rolleri:
- Ürün Sahibi (Product Owner): Ürünün değerinden, geliştirilmesinden, iş listesinin oluşturulmasından ve önceliklendirilmesinden sorumludur.
- Geliştirme Ekibi (Development Team): Her iterasyon sonunda yayınlanabilir bir ürün parçası teslim etmekten sorumludur. Kendi kendine organize olur ve çapraz fonksiyonludur. İdeal ekip büyüklüğü 3-9 kişidir.
- Scrum Uzmanı (Scrum Master): Scrum'ın doğru anlaşılmasını ve uygulanmasını sağlar. Ekibin ilerlemesine engel olan problemleri çözmeye çalışır (hizmetkâr-lider).
✅ Scrum Etkinlikleri: Düzenlilik ve fayda artırımı için yapılan, zaman kısıtlı etkinliklerdir.
- Sprint: Scrum'ın temel yapı taşıdır. En fazla bir ay süren, belirli bir zaman aralığını temsil eder. Her Sprint sonunda kullanılabilir bir ürün parçası ortaya çıkar.
- Sprint Planlama (Sprint Planning): Sprint başında yapılır. Tüm Scrum ekibi, mevcut Sprint içinde yapılacak işi planlar. Ürün İş Listesi temel girdidir. Geliştirme Ekibi kapasitesine göre işleri seçer ve Sprint amacı belirlenir.
- Günlük Scrum (Daily Scrum): Her gün 15 dakika süren, ayakta yapılan bir toplantıdır. Geliştirme Ekibi üyeleri dün ne yaptıklarını, bugün ne yapacaklarını ve engelleri paylaşır.
- Sprint Değerlendirme (Sprint Review): Sprint sonunda yapılır. Ekip, geliştirdiği ürün parçalarını paydaşlara sunar ve geri bildirim alır.
- Sprint Retrospektifi (Sprint Retrospective): Sprint değerlendirmesinden sonra yapılır. Ekip, geçen Sprint'i değerlendirir, iyi giden ve iyileştirilmesi gereken noktaları belirler ve aksiyon planları oluşturur.
1.5. Scrum Çıktıları (Eserleri)
Scrum eserleri, üretilen değeri şeffaf bir biçimde gözlemleme imkanı sunar.
- Ürün İş Listesi (Product Backlog): Üründen beklenen tüm gereksinimlerin önceliğe göre sıralanmış listesidir. Ürün Sahibi sorumludur.
- Sprint İş Listesi (Sprint Backlog): Belirlenen Sprint hedefi doğrultusunda seçilmiş Ürün İş Listesi kalemleri ve bu hedefe ulaşmak için yapılan planı içerir.
- Ürün Parçası (Increment): Bir Sprint sonunda tamamlanan Ürün İş Listesi kalemleri ile daha önce bitirilmiş Sprintlerdeki Ürün Parçalarının toplamıdır.
- Takım Hızı (Team Velocity): Bir Sprint boyunca yapılan işlerin toplam puanıdır. Gelecek Sprint planlamaları için yol göstericidir.
- Bitti Tanımı (Definition of Done - DoD): Ürün İş Listesi kalemlerinin "Bitti" olarak nitelendirilmesi için tüm ekibin üzerinde anlaştığı kriterlerdir.
- Aşağı-Tüketim Grafiği (Burn-down Chart): Sprint boyunca kalan iş miktarını gösteren bir grafiktir, ilerlemenin şeffaf takibini sağlar.
Bölüm 2: Nesnelerin İnterneti (IoT) 🌐
2.1. Veri Toplama Teknolojileri
Nesnelerin İnterneti'nde nesneler, gerçek ve dijital dünya arasında bir arayüz işlevi gören veri üreten cihazlardır.
- Sensörler: Fiziksel ortamdan (ısı, hareket, nem, basınç vb.) gelen girdileri algılayıp elektronik sinyallere çeviren elektronik algılayıcı cihazlardır.
- Çeşitleri: Akustik, çevresel, kimyasal, yaklaşma, elektrik, manyetik, otomotiv, termal, optik, mekanik, biyosensörler.
- Sınıflandırma: Aktif (güç kaynağı gerektiren) ve Pasif (ortamdaki değişimlerden doğrudan veri alan).
- RFID Teknolojisi: Nesnelerin otomatik olarak tanımlanması ve izlenmesi için elektromanyetik alanları kullanır.
- Bileşenler: RFID etiketleri (pasif veya aktif) ve RFID okuyucular.
- Elektronik Ürün Kodu (EPC): Etiketlerde saklanan, ürünün benzersiz takibini sağlayan 96 bitlik bir koddur.
- Gömülü Sistemler: Sensörlerden gelen sinyalleri işlenebilir verilere dönüştürmek ve internet ağına iletmek üzere tasarlanmış mikrodenetleyici veya mikroişlemci tabanlı donanımlardır.
- Temel Bileşenler: Donanım (mikroişlemci, bellek, arabirimler), Uygulama Yazılımı, Gömülü Sistem İşletim Sistemi.
- Gerçek Zamanlı İşletim Sistemleri (RTOS): Hız ve kontrol gerektiren uygulamalarda (örn. hava yastığı sistemleri) kritik zamanlama yetenekleri sunar.
2.2. Nesnelerin İnterneti Veri İletim Teknolojileri
IoT, farklı cihazların ve sistemlerin birbiriyle etkileşimini sağlayan çeşitli iletişim modelleri üzerine kuruludur.
- Nesneden Nesneye İletişim (M2M): İki veya daha fazla nesnenin üçüncü bir uygulama servisine ihtiyaç duymadan doğrudan iletişim kurması.
- Protokoller: Bluetooth, Z-Wave, ZigBee.
- Avantaj: Basit, düşük veri hızı için uygun.
- Dezavantaj: Farklı firmaların cihazları arasında protokol uyumsuzlukları.
- Nesne Bulut İletişimi: Her nesnenin veri alışverişi için doğrudan bir internet bulut hizmetine bağlanması.
- Kullanılan Teknolojiler: Geleneksel kablolu Ethernet veya Wi-Fi.
- Dezavantaj: Genellikle servis sağlayıcısı ve nesne sağlayıcısı aynı olduğunda uyumlu çalışır.
- Nesne-Ağ Geçidi İletişim Modeli: Nesne ile bulut hizmeti arasında bir Uygulama Katmanı Ağ Geçidi (UKA) aracılığıyla iletişim kurulması.
- İşlev: Veri ve protokol çevirisi, güvenlik.
- Avantaj: Esneklik, farklı cihazların ortak bir platforma taşınması. Akıllı telefonlar genellikle ağ geçidi görevi görür.
- Arka Uç Veri Paylaşım Modeli: Kullanıcıların akıllı nesne verilerini farklı bulut hizmetlerinden ve kaynaklardan gelen verilerle birlikte işlemesine ve analiz etmesine olanak tanır.
- Avantaj: Üçüncü taraf servislerle bilgi paylaşımı, büyük ölçekli projeler (akıllı şehir, enerji yönetimi) için ideal.
2.3. Nesnelerin İnterneti Temel Protokolleri
İletişim protokolleri, cihazların birbirleriyle anlamlı bir şekilde iletişim kurabilmesi için kurallar dizisidir.
- IPv6: Nesnelerin İnterneti'nin geleceği için kritik öneme sahiptir.
- Özellikler: 128 bitlik adres alanı (IPv4'ün 32 bitine karşılık), milyarlarca cihazın internete bağlanmasına olanak tanır, IPSec desteği ile güvenlik sağlar, akış kontrolü ile Servis Kalitesi (QoS) temelli yönlendirme.
- Uygulama Katmanı Protokolleri:
- MQTT (Message Queuing Telemetry Transport): Hafif, yayınlama/abone mantığına dayalı, asenkron bir uygulama katmanı protokolüdür. Kaynak tüketiminde ekonomiktir.
- CoAP (Constrained Application Protocol): REST modelini temel alan, düşük kaynak tüketimli, UDP üzerinde çalışan bir web transfer protokolüdür. Düşük maliyetli ve düşük güçlü cihazlar için tasarlanmıştır, düğüm keşif yeteneği vardır.
- XMPP (Extensible Messaging and Presence Protocol): Jabber tabanlı açık kaynak kodlu bir protokol olup anlık mesajlaşma, çoklu sohbet ve görüntülü görüşme için geliştirilmiştir. IoT altyapısına uyarlanmıştır, güvenli iletişim sağlar.
- Veri – Bağlantı Katmanı Protokolleri:
- ZigBee: Düşük maliyetli, düşük güçlü, kablosuz, cihazdan cihaza ağlar için açık bir küresel standarttır. Mesh, ağaç ve yıldız topolojilerini destekler. Akıllı ev ve enerji sistemlerinde yaygın kullanılır.
- Z-Wave: Ev otomasyon sistemlerinde yaygın kullanılan, radyo sinyalleriyle haberleşen bir protokoldür. 900 MHz bandında çalışarak daha az güç tüketimi ve daha iyi sinyal penetrasyonu sunar.
- Bluetooth: Kısa mesafeli kablosuz cihazdan cihaza iletişimde en yaygın kullanılan protokoldür. Bluetooth 5 ile menzil, hız ve yayın mesaj kapasitesi artırılmıştır, pikonet (master-slave) yapısında çalışır.
Sonuç 🎯
Nesnelerin İnterneti, sensörler ve RFID gibi veri toplama teknolojileriyle fiziksel dünyadan dijital verilere ulaşılmasını, gömülü sistemlerle bu verilerin işlenmesini ve Nesneden Nesneye, Nesne Bulut, Nesne-Ağ Geçidi ve Arka Uç Veri Paylaşım modelleri gibi çeşitli iletişim altyapıları üzerinden aktarılmasını sağlamaktadır. IPv6, MQTT, CoAP, XMPP, ZigBee, Z-Wave ve Bluetooth gibi protokoller, bu karmaşık ekosistemin verimli ve güvenli bir şekilde işlemesi için temel taşları oluşturmaktadır. Nesnelerin İnterneti, akıllı şehirler, akıllı evler ve endüstriyel otomasyon gibi geniş bir uygulama yelpazesinde dönüşüm potansiyeli sunarak geleceğin teknolojik altyapısını şekillendirmektedir.








