Lean Software Development
Yalın Yazılım Geliştirme
- Okunuşu
- lin softver divelıpmınt
Kısaca
Lean yazılım geliştirme, yalın üretim fikirlerini yazılıma uygulayarak israfı kaldırıp akışı iyileştirerek müşteri değerini hızla teslim etmeyi amaçlar.
Lean yazılım geliştirme nedir?
Lean yazılım geliştirme, yalın üretimin ilkelerini, özellikle Toyota Üretim Sistemi'ni, yazılım geliştirmeye uygular. Temel amacı, müşterinin bakış açısından değer katmayan her şey anlamına gelen israfı ortadan kaldırarak müşterilere mümkün olduğunca hızlı değer sunmaktır. Yaklaşımı Mary ve Tom Poppendieck 2003 tarihli Lean Software Development: An Agile Toolkit kitabıyla popülerleştirdi.
Poppendieck'ler yedi ilke tanımlar: israfı ortadan kaldır, kaliteyi işin içine kat, bilgi yarat, taahhüdü ertele, hızlı teslim et, insanlara saygı göster ve bütünü optimize et. Yazılımda israf; yarım kalmış işi, kimsenin kullanmadığı özellikleri, ekipler arasındaki devir tesliminleri, görev değiştirmeyi, onay beklemeyi, unutulmuş kararları yeniden öğrenmeyi ve hataları içerir. Ekipler işin nerede beklediğini görmek için, istekten teslimata kadar her adımın çizimi olan değer akışı haritalamasını (value stream mapping) kullanır, ardından devam eden işi sınırlar ve istekten teslimata toplam süre olan lead time'ı izler.
Lean, bir restoran mutfağını sadeleştirmek gibidir: aşçıları daha hızlı doğratmaya zorlamaktan çok, bitmiş tabakların tek kişi her yemeği süslediği için on dakika beklediğini fark etmek önemlidir. Lean düşünce Kanban'ın temelidir ve DevOps'u, sürekli teslimatı ve hızlı öğrenmek için minimum uygulanabilir ürün yayınlama fikrini güçlü biçimde etkiler.
Lean çoğunlukla Agile ile karıştırılır. İkisi büyük ölçüde örtüşür ve Lean sıklıkla Agile ailesinin bir parçası sayılır; ancak Agile kısa iterasyonları, geri bildirimi ve iş birliğini vurgularken Lean, fikirden müşteriye kadar tüm değer akışı boyunca akışa ve israfa odaklanır. Lean yazılım geliştirme, iş fikirlerini geliştir, ölç, öğren döngüleriyle test etmeyi anlatan Lean Startup yönteminden de farklıdır. Ada rağmen Lean, personel ya da bütçe kısmak anlamına gelmez.
Önemli noktalar
- Lean yazılım geliştirme, yalın üretim fikirlerini yazılıma uyarlar.
- Ana hedefi israfı kaldırarak müşteri değerini hızla teslim etmektir.
- Yaygın yazılım israfları arasında bekleme, devir teslim, kullanılmayan özellikler ve hatalar vardır.
- Değer akışı haritalama ve lead time, işin nerede takıldığını ortaya çıkarır.
- Lean, Kanban'ın temelidir ve DevOps pratiklerini etkiler.
Örnek
Value stream for one feature, from request to customer
Step Working time Waiting time
Idea approved 1 day 9 days (waiting for a planning meeting)
Development 3 days 4 days (waiting for code review)
Testing 1 day 6 days (waiting for the test environment)
Release 0.5 days 7 days (waiting for the monthly release)
Lead time: 31.5 days, of which only 5.5 days are real work (about 17%)
Biggest waste: waiting. Fix the release and test-environment delays first.Sık sorulan sorular
Lean yazılım geliştirmenin yedi ilkesi nelerdir?
İsrafı ortadan kaldır, kaliteyi işin içine kat, bilgi yarat, taahhüdü ertele, hızlı teslim et, insanlara saygı göster ve bütünü optimize et. Bunları Mary ve Tom Poppendieck 2003 tarihli kitaplarında tanımladı.
Lean ile Agile arasındaki fark nedir?
Agile, yazılımı kısa, geri bildirime dayalı iterasyonlarda ve yakın iş birliğiyle teslim etmeye odaklanır. Lean ise tüm süreç boyunca akıcı akışa ve israfın kaldırılmasına odaklanır; ikisi çoğu zaman birlikte kullanılır.
İlgili sayfalar
- AgileEkipler ve Süreç, s. 3Agile, çalışan yazılımı küçük ve sık parçalar halinde teslim eden ve planları düzenli geri bildirime göre ayarlayan bir yazılım geliştirme yaklaşımıdır.
- KanbanEkipler ve Süreç, s. 11Kanban, işi sütunlardan oluşan bir panoda görselleştiren ve iş akışının düzgün ilerlemesi için aynı anda devam eden iş sayısını sınırlayan bir Agile yöntemidir.
- MVPEkipler ve Süreç, s. 14MVP, gerçek kullanıcıların kullanabileceği en sade ürün sürümüdür; temel bir varsayımı test etmek ve en az emekle en çok şeyi öğrenmek için geliştirilir.
- DevOpsDevOps ve Bulut, s. 13DevOps, yazılım geliştirme ile BT operasyonlarını birleştirerek yazılımın daha hızlı ve güvenilir sunulmasını sağlayan bir kültür ve pratikler bütünüdür.
- Extreme ProgrammingEkipler ve Süreç, s. 10Extreme Programming, eşli programlama, test odaklı geliştirme ve sürekli entegrasyon gibi mühendislik pratikleri üzerine kurulu bir Agile yöntemidir.
- Teknik BorçYazılım Mimarisi, s. 43Teknik borç, daha uzun sürecek daha iyi bir yaklaşım yerine şimdi hızlı ya da sınırlı bir çözüm seçilmesiyle doğan, gelecekteki ek iş maliyetidir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin