İletişim

Yazılım Geliştirme Nedir?

Kısa tanım

Yazılım geliştirme, bir ihtiyacı çalışan ve bakımı yapılabilen bir yazılıma dönüştürme sürecidir. Yalnızca kod yazmayı değil; gereksinim analizini, tasarımı, test etmeyi, canlıya almayı ve yayından sonraki bakım ile iyileştirmeyi de kapsar. Bu aşamalar şelale gibi sıralı ya da Agile gibi kısa ve tekrarlayan döngülerle yürütülebilir. Süreçte analist, tasarımcı, geliştirici, test ve operasyon gibi farklı roller birlikte çalışır.

Diğer adları: software development, yazılım geliştirme süreci, SDLC, yazılım geliştirme yaşam döngüsü

Planlama, tasarım, geliştirme, test, yayına alma ve bakım adımlarının sürekli tekrarlandığı yazılım geliştirme yaşam döngüsü

Kod yazmak işin yalnızca bir parçası

Dışarıdan bakıldığında yazılım geliştirme klavye başında geçen saatler gibi görünür. Oysa bir projenin başarısını çoğu zaman kodun kendisinden çok, neyin neden yapıldığının doğru anlaşılması belirler. Yanlış anlaşılmış bir ihtiyaç kusursuz kodla çözülse bile ortaya kimsenin kullanmadığı bir ürün çıkar. Bu yüzden süreç, “ne yazacağız?” sorusundan çok önce “hangi sorunu çözüyoruz ve başarıyı nasıl anlayacağız?” sorusuyla başlar.

Yaşam döngüsünün aşamaları

  1. Keşif ve gereksinim analizi: Kullanıcılar, iş kuralları, entegrasyonlar ve kısıtlar belirlenir. Çıktısı; kullanıcı hikâyeleri, kabul kriterleri ve önceliklendirilmiş bir iş listesidir.
  2. Tasarım: Ekran akışları ve arayüz tasarımı ile birlikte veri modeli, servisler arası iletişim ve altyapı kararları verilir.
  3. Geliştirme: Kod küçük, gözden geçirilebilir parçalar hâlinde yazılır ve Git gibi bir sürüm kontrol sisteminde tutulur.
  4. Test: Birim testleri, entegrasyon testleri ve kullanıcı kabul testleri hataları canlıya çıkmadan yakalar.
  5. Yayına alma: Değişiklik önce bir staging ortamında denenir, ardından üretim ortamına taşınır.
  6. Bakım ve gelişim: Güvenlik güncellemeleri, hata düzeltmeleri, performans iyileştirmeleri ve yeni ihtiyaçlar. Bir yazılımın ömrünün büyük bölümü bu aşamada geçer.

Şelale, Agile ve pratikteki karışım

Şelale (waterfall) yaklaşımında her aşama bir öncekinin tamamlanmasını bekler; kapsam baştan sabitlenir. Gereksinimlerin gerçekten değişmediği, örneğin mevzuatla tanımlanmış süreçlerde işe yarar; ancak hatalı bir varsayım çoğu zaman proje sonunda, düzeltmesi en pahalı anda ortaya çıkar.

2001'de yayımlanan Agile Manifestosu farklı bir öncelik sırası önerdi: süreç ve araçlardan çok bireyler ve etkileşimler, kapsamlı dokümantasyondan çok çalışan yazılım, sözleşme pazarlığından çok müşteriyle iş birliği, plana bağlı kalmaktan çok değişime yanıt vermek. Scrum, iki ila dört haftalık sprintlerle; Kanban ise iş akışını görselleştirip aynı anda yürüyen iş sayısını sınırlayarak bu fikri uygular. Gerçek projelerin çoğu bir karışımdır: bütçe ve ana kapsam baştan belirlenir, ayrıntılar kısa döngülerle netleşir. Bu döngülerin ilk hedefi genellikle bir MVP'dir.

Ekipte kim ne yapar?

RolSorumluluk
Ürün sahibi / iş analistiİhtiyacı tanımlar, önceliklendirir, “bitti” kriterini belirler
UX/UI tasarımcıAkışları ve arayüzü kullanıcının bakış açısından kurgular
Frontend ve backend geliştiriciArayüzü, iş mantığını, veritabanını ve entegrasyonları kodlar
Test / QATest senaryolarını yazar, otomasyonu kurar, kaliteyi raporlar
DevOps / operasyonAltyapıyı, dağıtım hattını, izleme ve yedeklemeyi yönetir

Küçük ekiplerde bu rollerin birkaçı aynı kişide toplanır; önemli olan rolün kendisinin unutulmamasıdır. Testten sorumlu kimse yoksa testi sonunda kullanıcı yapar.

Kaliteyi belirleyen alışkanlıklar

  • Kod incelemesi: Her değişikliği en az bir başka geliştiricinin okuması hataları ve bilgi tekelini azaltır.
  • Otomatik test ve dağıtım: CI/CD hattı her değişiklikte testleri çalıştırır ve yayına almayı tekrarlanabilir hâle getirir.
  • Borcu görünür tutmak: Zaman baskısıyla alınan kısa yollar teknik borç olarak kaydedilir ve düzenli olarak geri ödenir.
  • Belgelemek: Kurulum adımları, mimari kararlar ve ortam değişkenleri yazılı olmalıdır; projeyi bilen tek kişinin ayrılması bir projeyi durdurmamalıdır.

İlgili terimler

← Sözlüğe dön