LEAN Development – Yalın Yazılım Geliştirme , yazısı daha önce pek yazmadığım türden bir tanım ve bilgilendirme türünde yazılarımdandır. İlgili çeken bir konu olduğundan dolayı yazma gereği duydum ve yazıyorum. LEAN Development – Yalın Yazılım Geliştirme ‘ye bir göz atalım.
LEAN Development – Yalın Yazılım Geliştirme
Konu Başlıkları
- Lean Düşüncesinin Doğuşu
- Boş Harcamaların Elenmesi
- Kalitenin Sağlanması
- Bilginin Oluşturulması
- Kararların Ertelenmesi
- Hızlı Dağıtım Yapılması
- Saygı
- Tüm Döngünün Optimize Edilmesi
Lean Düşüncesinin Doğuşu
1940’lı yılların sonlarında Toyota; Japon sektörleri arasında minik bir araba üreticisiydi. İnsanların parası olmadığından daha düşük maliyetle araba üretimi gereksinim vardı. Düşük maliyetli araba üretimi için de en ucuz yöntem seri üretimdi Bu sebeple Toyota, seri üretim yapmadan düşük maliyetli araba üretmenin yollarını aramaya başlamıştı. Daha sonra Taiichi Ohno önderliğinde Toyota üretim sistemi geliştirildi. Bu sistem, Lean düşüncesin de kaynağıdır. Bu sistemin temel prensibi boşa harcamaları elemektir.
Ohno, seri üretimde elde edilen değerlerin çoğaltılması yerine daha güzel bir fikir ortaya atmıştır. Müşteri için anlam ifade etmeyen her şey boşuna emektir.
Lean Development Modeli
Bu yüzden boş harcamaları elemek Lean’in ana prensibidir. Lean’in birinci aşaması boşuna olan giderlerin tespit edilmesi iken ikinci aşaması boş harcamaların egale etmesidir.
LEAN Yazılım Geliştirmenin 7 Prensibi
- Boş Harcamaların Elenmesi
- Kalitenin Sağlanması
- Bilginin Oluşturulması
- Kararların Ertelenmesi
- Hızlı Dağıtım Yapılması
- Saygı
- Tüm Döngünün Optimize Edilmesi
1 – Boş Harcamaların Elenmesi
Müşteri için nelerin değer ifade ettiğinin anlaşılması gerekmektedir. Daha sonra, neyin boş harcama olduğu anlaşılmaya çalışılır.
Yazılımdaki en büyük boşuna harcama ise ekstra özelliklerdir. Araştırmalar, özellik ve fonksiyonların ancak %20’sinin müşteriler tarafından sıklıkla kullanıldığını göstermiştir. Ekstra özelliklerin yazılıma çok büyük bir maliyeti bulunmaktadır. Bu özellikler; yazılımın bakımını çok karmaşık hale getirmektedir.
Üretim Süreci
Lean , siparişin alınmasından projenin teslim edilene kadar olan zamanda, müşteri için herhangi bir anlam teşkil etmeyen her şeyi egale odaklanır. Yazılım doğası gereği çok çabuk değişir. Çoğunlukla müşteri gerçekten ne istediğini bilmemektedir. ancak projeyi kullandıkça neler gerektiğini daha kolay idrak etmeye başlayacaktır..
Tüm sürenin %20’si geliştirilerek, müşterilerin isteklerinin %80’i karşılanabilmektedir. Bu sebeple önce müşteri için en fazla değer ifade eden %20’lik kısma odaklanılır, daha sonra müşteri için en fazla değer ve anlam sağlayan özelliklere bakılır. Lean’de üretimde ve bunun karşılığında projede tanımlanmış yedi boşa harcama Tabloda gösterilmiştir.
Boşa Harcama Tablosu
Yarı tamamlanmış işlere örnek olarak, kodlama tamamlanmamış belgeleri düzenlenmemiş, senkronize edilmemiş kodlar, test edilmemiş kod, belgeleri düzenlenmemiş kod ve eklentisi yapılmamış kodu verilebilir.
Ek özellikler ise müşteri istedğine bakmadan ileride kullanılabilir düşüncesi ile geliştirilen özelliklerdir. Bu ek özelliklerin bir çoğu ileride kullanılamamakta ya da anlamını yitirmesi bir yana bu ek özellikler sistemi oldukça karmaşık hale getirmektedirler.
Personellerin farklı projelerde görevlendirilmesi ve durmadan bu projeler arasında değişim yapmaları, o projeye olan odaklarını durmadan kaybetmelerine ve performans kayıplarına sebep olduğu için boşa harcama olarak değerlendirilmektedir.
Beklemeler boşa harcamadır.
2 – Kalitenin Sağlanması
Lean’de kalite önemlidir. Kodların hatasız olmasına test aşamasında değilde kodlar yazmaya başlanması gerekir. Lean için yazılım hatalarının hata izleme ve test aşamasında çözülmesi bir boşa giden bir harcamadır.
Lean proje geliştirimine göre; testlerin amacı hatanın oluşumundan kaçınmaktır. Bu sebeple kalitenin gerçekleşmesi için, kodun baştan hatasız olması gerekmektedir.
3 – Bilginin Oluşturulması
Şelale modelinin adımlarından birisi, istek ve kodlamayı birbirlerinden ayırmış olmasıdır. Ne kadar detaylı tasarım dökümanları hazırlanırsa hazırlansın, birçok tasarımın kodlama aşamasında şekil aldığı görülmüştür. Harward Business Üniversitesinde prof olan Alan MacCormak, başarılı ve sağlıklı Yazılım Mühendisliği için aşağıdaki 4 adımı tanımlamıştır.
• Müşteri tarafından belirlenmiş kısa tanımlı sürümler.
• Derlemeler günlük yapılmalı böylece sık entegrasyon ile geri besleme sağlanmalıdır.
• Takım ve liderler iyi karar alma yetisinde olmalıdırlar.
• Yazılım, yeni özellikleri kolayca ekleyebileceğimiz bir mimariye sahip olmalıdır.
Lean Yazılım Geliştirme Sistemine göre, geliştirme süreci içerisinde sistematik olarak süreç öğrenilmeli ve de sistematik olarak süreç geliştirilmeye çalışılmalıdır. Süreç ilerlemesi geliştirme takımının sorumluluğu olmalıdır.
Tahminlemenin iyi yapılabilmesi için, mümkün olduğunca varsayımlardan uzak olunmalıdır. Eğer sistem; karmaşık, detaylı ve çok ileri tarihli bir zamanı kapsıyorsa tahminleme zorlaşacaktır. Deneyimlere göre deneysel metodolojiler, diğer metolojilere göre daha iyi tahminleme yapmaktadır. Çünkü süreç geliştikçe, süreç daha iyi tahminlenmekte ve planlama bilinen şeyler üzerinden yapılmaktadır
4 – Kararların Ertelenmesi
Lean’de planlar, kararlar, zor tasarım problemlerinin nasıl çözüleceği; elde yeterince veri yoksa, çok fazla belirsizlik varsa sonraya bırakılmaktadır. Bu zor kararlar mümkün olduğunca geç alınmalıdır. Bu tüm kararların sonraya bırakılması anlamına gelmemektedir. Fakat belirsizlik ve zorluk durumlarında daha iyi sonuca ulaşmak için kararlar ertelenebilmektedir.
5 – Hızlı Dağıtım Yapılması
Şirketlerde dağıtım hızlı yapılırsa rekabetçi piyasada avantaj elde edilmekte, mümkün olduğunca hızlı geri dönüş sağlanmaktadır. Ayrıca yazılım çok çabuk değiştirilebilen bir ürün olduğundan, hızlı dağıtım ile müşterinin fikir değiştirip değişik bir ürün istemesi zorlaşmaktadır
Hızlı dağıtım yapmak için kaliteden ödün verilmemelidir. Kaliteyi sağlamak için çok dikkatli olunup yavaş ilerlenmesi gerektiğini kabul eden bir düşünce vardır. Fakat Lean kaliteyi yükseltmek için; yavaş hareket edip dikkatli olmak yerine, süreci durmadan ilerleterek, ürünü en baştan itibaren kalite faktörünü düşünerek tasarlayarak ve müşterinin değişen isteklerine rakiplerinden hızlı cevap vererek ulaşılması gerektiğini savunmakadır. Lean kalite ve hızın beraber yürüyebilen iki faktör olduğunu düşünmektedir
6 – Saygı
Lean takımı içerisinde; görevi, pozisyonu ne olursa olsun tüm takım üyeleri birbirine saygı göstermelidir. Hiçbir zaman tek bir iyi yol yoktur. Hiçbir süreç geliştirilemeyecek kadar mükemmel değildir. İnsanların süreci ilerletebilmeleri için, birbirlerine saygılı davranarak iletişimde bulunmaları şarttır
7 – Tüm Döngünün Optimize Edilmesi
Lean sitemine göre, yazlım sistemi sipariş alınmasından sistemin teslim edilmesine kadar olan tüm süreçte optimize edilmelidir. Eğer sürecin sadece belirli noktaları optimize edilirse, tüm süreç bundan olumsuz etkilenmektedir.
LEAN Development – Yalın Yazılım Geliştirme yazımızda bu kadar dostlar. Diğer yazılarımızda görüşmek üzere.
Programlama hakkındaki diğer yazılarım için tıklayabilirisiniz.
Takipte ve Sağlıcakla kalın. ;)