YALIN YAZILIM YALIN YAZILIM Geliştirme Geliştirme Gürcan Banger Gürcan Banger Sanayi Geliştirme Merkezi – SANGEM Genel Sanayi Geliştirme Merkezi – SANGEM Genel Koordinatörü Koordinatörü Yrd. Doç. Dr. Gülsüm Çalışır Yrd. Doç. Dr. Gülsüm Çalışır Gümüşhane Üniversitesi İletişim Fakültesi Gümüşhane Üniversitesi İletişim Fakültesi
YALIN YAZILIM Geliştirme. Gürcan Banger Sanayi Geliştirme Merkezi – SANGEM Genel Koordinatörü Yrd. Doç. Dr. Gülsüm Çalışır Gümüşhane Üniversitesi İletişim Fakültesi. Yalın Düşünce. “Bütün yeteneklerin en değerlisi, tek bir sözcüğün yeterli olduğu yerde iki sözcük kullanmamaktır.” - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
YALIN YAZILIM YALIN YAZILIM GeliştirmeGeliştirme
Gürcan BangerGürcan BangerSanayi Geliştirme Merkezi – SANGEM Genel KoordinatörüSanayi Geliştirme Merkezi – SANGEM Genel Koordinatörü
Yrd. Doç. Dr. Gülsüm ÇalışırYrd. Doç. Dr. Gülsüm ÇalışırGümüşhane Üniversitesi İletişim FakültesiGümüşhane Üniversitesi İletişim Fakültesi
G. Banger - G. Çalışır 2
Yalın Düşünce
““Bütün yeteneklerin en Bütün yeteneklerin en değerlisi, tek bir sözcüğün değerlisi, tek bir sözcüğün yeterli olduğu yerde iki yeterli olduğu yerde iki sözcük kullanmamaktır.”sözcük kullanmamaktır.”
Thomas Jefferson (1743-1826)Thomas Jefferson (1743-1826)ABD 3. BaşkanıABD 3. Başkanı
Bağımsızlık Bildirisi YazarıBağımsızlık Bildirisi Yazarı
G. Banger - G. Çalışır 3
Yalın Yazılım
Yalın Yazılım GeliştirmeUnsurları
Yalınİlkeler
YalınAraçlar
G. Banger - G. Çalışır 4
Yalın Düşünce / Üretim
Anahtar niteliğindeki yalın faaliyet; bir süreci adımlara ayırmak, değer üreten adımları ve değer üretmeyen adımları (atık, fire veya
israf üreten adımları)
ayırt etmektir. Hedef; atığı (israfı ve fireyi) yok etmek
ve değer üreten adımları iyileştirmektir.
G. Banger - G. Çalışır 5
Yalın Düşünce / Üretim
ÜretimSüreci
Değer üretmeyenATIK adımları
Değer üretmeyengerekli DESTEK
adımları
Değer üretenadımlar
G. Banger - G. Çalışır 6
Yalın Üretim İlkeleri
Yalın üretim ilkeleri: Değer: Müşteri ve / veya kullanıcı tarafından
tanımlanan değer; Değer akımı: Ürünü üretmek için değer yaratan
adımlar; Akış: Üretim sürecinin sürekli akacak biçimde
tasarlanması; Çekiş: Ürünün müşteri tarafından istenmesi,
sipariş edilmesi; Mükemmellik: Atığı yok ederek mükemmelliğin
sürekli hale getirilmesi.L E
A N
P
RO
DU
CT
ION
G. Banger - G. Çalışır 7
Yazılımda Yalın İlkeler
Yalın yazılım geliştirme ilkeleri:1. Atığı / israfı / fireyi yok et,2. Öğrenmeyi güçlendir,3. Mümkün olduğunca geç karara bağla,4. Mümkün olan en kısa sürede üret ve
teslim et,5. Takımı güçlendir,6. Bütünlüğü sağla ve yerleştir,7. Bütünü gör.
G. Banger - G. Çalışır 8
Yalın Düşünce
““İyimserlik, yazılım İyimserlik, yazılım geliştirmede mesleki bir geliştirmede mesleki bir tehlikedir.”tehlikedir.”
Kent BeckKent BeckYazılım mühendisiYazılım mühendisi
Hibbs, Jewett, Sullivan; The Art of Lean Software Development; 2009
G. Banger - G. Çalışır 10
Atığı yok et
Geleneksel“ÇağlayanGeliştirme
Modeli”
Bilgi kaybı
G. Banger - G. Çalışır 11
Yalın Düşünce
““Her şey, olabildiği kadar basit Her şey, olabildiği kadar basit olmalıdır, ama asla daha fazla olmalıdır, ama asla daha fazla değil.”değil.”
Albert EinsteinAlbert Einstein(1879-1955)(1879-1955)
Alman kökenli ABD’li fizikçiAlman kökenli ABD’li fizikçi
Genel Görelilik Kuramı kurucusuGenel Görelilik Kuramı kurucusu
G. Banger - G. Çalışır 12
Atığı yok et
Bir ürüne, müşteri tarafından algılanabilen DEĞER katmayan şeye ATIK ( muda ) denir.
ATIK kavramı, gereksiz kod ve işlevleri, yazılım geliştirmedeki gecikmeleri, iyi tanımlanmamış ihtiyaçları, kayıt-kuyut işlerini ve bürokrasiyi, yavaş iç iletişimi
içerir.
G. Banger - G. Çalışır 13
Atığı yok et Atık / İsraf / Fire türleri:
1. Hatalar: Kaynakta yok edilmesi gereken sorunlar,2. Aşırı üretim: İstenmeyen özelliklerin üretilmesi,
eklenmesi,3. Taşıma: Gereksiz iş aktarmalar ve taşımalar,4. Bekleme: Bir başka işin veya sürecin tamamlanmasını
bekleme,5. Envanter: Bekleyen kısmen tamamlanmış işler,6. Hareket: Kişilerin veya malzemelerin sürecin
başarılması açısından gereksiz, amaçsız ve katmayan hareketleri,
7. Aşırı işleme: Müşteri tarafından ihtiyaç duyulmayan aşırı süreçleme / işleme,
8. İnsan kaynağının tam olarak değerlendirilememesi.
G. Banger - G. Çalışır 14
Atığı yok et
Örnek 1: Eğer yazılım geliştiriciler, müşterinin ihtiyaçlarını aşan bir kod yazdılarsa bu, bir israf örneğidir.
Örnek 2: Yazılım geliştirmede kodun ve dokümanların biteviye değişik takımlar arasında gidip gelmesi bir başka israf örneğidir.
Örnek 3: Kullanılmamak üzere yarıda bırakılmış kod bir diğer israf örneğidir.
G. Banger - G. Çalışır 15
Atığı yok et
Örnek 4: Müşteriler tarafından kullanılmayan fazladan süreçler ve özellikler, israf olarak kabul edilmelidir.
Örnek 5: Başka faaliyetleri, takımları veya süreçleri beklemek israf sayılır.
Örnek 6: Hatalı ürünler veya düşük kalite, israfa başka örneklerdir.
Örnek 7: Gerçek değer üretmeyen yönetim giderleri (genel giderler) israftır.
G. Banger - G. Çalışır 16
Atığı yok et
Atığı yok edebilmek için tanımlamak ve görmek gerekir.
Atığı ayırt etmek ve tanımlamak için değer akım haritalama tekniği kullanılır.
Bu teknik sayesinde atık kaynakları tespit edilir ve atık, israf veya fire yok edilir.
G. Banger - G. Çalışır 17
Atığı yok et
G. Banger - G. Çalışır 18
Öğrenmeyi güçlendir
Yazılım geliştirme ortamını iyileştirmede en etkili yaklaşım öğrenmeyi güçlendirmedir.
Yazılım hatalarının birikimi, kodun yazımının hemen ardından sınamaların yapılması ile önlenebilir.
YAZ ve ardından SINA !...
G. Banger - G. Çalışır 19
Öğrenmeyi güçlendir
1 2 3 SINA
1 2 3
G. Banger - G. Çalışır 20
Öğrenmeyi güçlendir
Aşırı dokümantasyon veya çok ayrıntılı planlama yerine değişik kod yazma ve yazılım inşası yaklaşımları denenebilir.
Müşterinin ihtiyaçlarını öğrenmek ve şartlarını daha hızlı yerine getirmeye yönelik bilgi toplama sürecinde; kullanıcı ekranlarını (arayüzlerini) anında paylaşmak ve geri bildirim almak kolay ve yararlı bir yoldur.
G. Banger - G. Çalışır 21
Öğrenmeyi güçlendir
Öğrenme süreci, kısa ardıştırmalı (iteratif) döngülerle hızlandırılabilir.
İçsel yapıyı değiştiren ama dışsal davranışı değiştirmeyen refactoring ile yazılmış modüllerin bir grup halinde sınandığı integration testing yaklaşımları, bu ardıştırmalı döngülere eklemlenebilir.
G. Banger - G. Çalışır 22
Öğrenmeyi güçlendir
1 2 3
Ardıştırmalı döngüler:Refactoring ve integration testing
G. Banger - G. Çalışır 23
Öğrenmeyi güçlendir
Müşteri ve kullanıcılarla yapılacak sık ve kısa geri bildirim seanslarından elde edilecek bilgiler, geliştirme sürecinin mevcut aşamasını ve gelecek iyileştirme çabalarını kolaylaştırır.
Yazılımcı
Müşteri / Kullanıcı
G. Banger - G. Çalışır 24
Öğrenmeyi güçlendir
Kısa müşteri / kullanıcı ziyaretleri sırasında müşteri temsilcileri ve yazılım geliştiriciler, kaynak sorunları öğrenirler ve yeni geliştirmeler için olası çözümler konusunda bilgilenirler.
Yazılımcı
Müşteri / Kullanıcı
G. Banger - G. Çalışır 25
Öğrenmeyi güçlendir
Bu ziyaretlerde müşteri ve kullanıcılar da yazılım geliştirme çabalarına bağlı olarak kendi ihtiyaçlarını daha iyi kavrarlar.
Yazılımcı
Müşteri / Kullanıcı
G. Banger - G. Çalışır 26
Öğrenmeyi güçlendir
Yazılım geliştirmenin en önemli sorunlarından birisi ürünün geleceğinin (hatta bir sonraki aşamasının) açık ve net olarak görülememesidir.
Bu belirsiz (bulanık) durumun ana kaynağı, geliştirilmekte olan ürünün geleceğine ilişkin bilgi ve deneyimimizdeki boşluklardır.
…kod…
??
G. Banger - G. Çalışır 27
Öğrenmeyi güçlendir
Bu boşluklar, geliştirmenin daha sonraki aşamalarında “pahalıya mal olacak” tasarım ve geliştirme geri dönüşlerine neden olur.
Bu durumu aşmanın anahtar faaliyetlerinden birisi müşteri ve kullanıcı ile iletişim ve ilişki içinde olmaktır.
…kod…
??
G. Banger - G. Çalışır 28
Öğrenmeyi güçlendir
Burada sözü edilen ilişki ve iletişim, sadece mevcut çözümlere odaklanmaz.
Müşteri ve kullanıcı ile iletişim halinde geleceğe yönelik çözümlerin şart ve kısıtlarını aşacak imkânlar ve kolaylıklar bulmaya çalışır.
Bu yaklaşıma küme tabanlı öğrenme (set-based learning) adı verilir.
…kod…
??
G. Banger - G. Çalışır 29
Öğrenmeyi güçlendir
Yazılım geliştirici Müşteri / Kullanıcı
Gelecekteki ihtiyaçlarımız,
müstakbel sorunlarımız…
Birlikte geliştirebileceğimiz
yaklaşımlar, müstakbel
ihtiyaçlarınızı tatmin edecek çözümler…
Küme temelli öğrenme
( Set-based learning )
ortamı
G. Banger - G. Çalışır 30
Geç karara bağla Yazılım geliştirme süreci, birtakım
belirsizlikleri içerir. Bu nedenle başarılı sonuçlar elde
etmek için seçenek temelli (seçenekleri
değerlendiren) yaklaşımlar kullanılmalıdır. Yazılım projesini varsayımlar ve
öngörüler üzerine kurmak yerine; gerçekler belirleninceye kadar bazı bağlayıcı kararları geciktirmek gerekebilir.
G. Banger - G. Çalışır 31
Geç karara bağla
Yazılım projesinin karmaşıklık düzeyi arttıkça, projeye daha fazla değişebilme kapasitesi verilmelidir.
Bağlayıcı kararların olabildiğince geciktirilmesi, projenin değişebilme kapasitesini ve yeteneğini artırır.
Az önce sözü edilen ardıştırmalı döngüler yaklaşımı da bu fikri destekler.
G. Banger - G. Çalışır 32
Geç karara bağla
Bazı önemli kararların geciktirilmesindeki ana fikir, müşterilerin ve kullanıcıların gerçek ihtiyaçlarının farkına varmaları için zamana ihtiyaç duymalarıdır.
Bazı kararların geç verilebilmesi için bir çevik yazılım geliştirme (agile software development) yaklaşımının yaratılmış olması gerekir.
G. Banger - G. Çalışır 33
Geç karara bağla
Çevik yazılım geliştirme ortamı (agile software development environmant), müşteri ve kullanıcıların ihtiyaçlarını daha iyi belirlemeleri açısından bağlayıcı kararların geciktirilebilmesine imkan tanır.
Böylece aceleyle alınmış yanlış teknolojik yatırımların da önüne geçilmiş olur.
G. Banger - G. Çalışır 34
Hızlı üret ve teslim et
Hızlı teknoloji evrimleşmesi çağında kalıcı ve sürdürülebilir olan, en hızlı ve çevik olandır.
Bir ürün minimum (önemsiz) hata ile üretilip teslim edilebilirse, hızlı biçimde geri bildirim alınır; ek ihtiyaçlar ve talepler bir sonraki ardıştırma (iterasyon) ile ilişkilendirilebilir.
G. Banger - G. Çalışır 35
Hızlı üret ve teslim et Hızlı ve çevik olamadan bağlayıcı
kararların geciktirilmesi mümkün olmaz.
Hız, müşterinin ve kullanıcının dün ne istediğini değil; bugünkü gerçek ihtiyaçlarını karşılamayı güvence altına alır.
Müşteri, gerçek ihtiyaçlarını açıklıkla öğrenecek ve bilecek; geliştirici, bunlara hızla ve çeviklikle çözüm üretecektir.
G. Banger - G. Çalışır 36
Hızlı üret ve teslim et
Tam Zamanında Üretim (Just In Time) yaklaşımı, yazılım üretiminde de uygulanabilir.
Bu amaçla kendini yönetip denetleyebilen takımlar oluşturmak gerekir.
Bu takımlar, projeyi görev parçaları halinde gerçekleştirirler.
G. Banger - G. Çalışır 37
Hızlı üret ve teslim et
Hızlı üretim, tam zamanında teslimat ve israfın azaltılması,
değer akım sürecini / süresini kısaltır.
G. Banger - G. Çalışır 38
Hızlı üret ve teslim et
Yalın yazılım geliştirme süreci:1. Müşteri, yazılım ürününü belirleyen
ihtiyaçlarını iletir.2. Geliştirme ekibi, ürünü görev
parçalarına ayırır. Her parçanın ayrı bir kart (kanban) üzerine yazıldığını düşünebilirsiniz.
3. Kart üzerinde işin gerektirdiği girdiler ve zamanlama belirtilmiştir.
4. Her takıma bir kart (iş) verilir.
G. Banger - G. Çalışır 39
Hızlı üret ve teslim et
5. Her takım elemanı her sabah ayakta yapılan bir toplantıda bir gün önce yaptıklarını anlatır, o gün ve ertesi gün yapılacak işleri özetler, çalışma arkadaşlarından veya müşteriden sağlanacak girdileri belirtir.
6. Böylece bir yandan takım içi saydamlık sağlanırken diğer yandan takım içi iletişim geliştirilmiş olur.
G. Banger - G. Çalışır 40
Hızlı üret ve teslim et
Toyota Ürün Geliştirme Sistemi ile yazılım geliştirme (Küme tabanlı tasarım, set-based design):
1. Her iş parçası (kanban) için en az üç takıma potansiyel çözüm geliştirme görevi verilir.
2. Böylece her takım problem uzayını öğrenir ve bir potansiyel çözüm geliştirir.
3. Geçersiz bulunan çözüm(ler) elenir.
G. Banger - G. Çalışır 41
Hızlı üret ve teslim et
4. Eleme sonrası kalan çözümler karşılaştırılır ve bir tanesi uygun olarak belirlenir.
5. Uygun çözüm seçeneği üzerinde açık görüşme açılarak iyileştirme önerileri geliştirilir.
6. Geliştirilen çözüm, bunu geliştirecek takıma verilir.
G. Banger - G. Çalışır 42
Takımı güçlendir
İcranın (yönetimin) başarısı, ayrıntıları doğru elde etmekten geçer.
Doğru ayrıntıları ise en iyi o işi gerçekten yapanlar anlar.
Mükemmeliyete ulaşmak için geliştiricileri teknik kararların ayrıntıları ile ilişkilendirmek temel önemdedir.
G. Banger - G. Çalışır 43
Takımı güçlendir Geliştirici ekibin (takımların) gerekli
uzmanlıkla donatıldığı ve doğru liderlikle yönetildiği durumda; ekip, daha iyi teknik kararlar ve daha iyi süreç kararları verebilir.
Yalın yazılım üretiminde temel yaklaşım, bağlayıcı kararların geç alınması ve üretim ile teslimatın hızlı ve çevik olması nedeniyle tüm işlerin merkezî otorite tarafından yönetilmesi mümkün olmaz.
G. Banger - G. Çalışır 44
Takımı güçlendir
Yalın uygulama; iş planlaması yapmak için çekiş (pull) teknikleri kullanır; çalışanların sonraki adımda ne yapılacağını bilmeleri için yerel sinyal mekanizmalarından yararlanılır. (Kanban sistemi)
G. Banger - G. Çalışır 45
Takımı güçlendir
Yalın yazılım geliştirmede; çekiş mekanizması, çalışan yazılımın iyileştirilmiş sürümlerinin düzenli aralıklarla sunulması konusunda bir anlaşmadır.
Yerel sinyal sistemi; görünür çizelgeler, günlük toplantılar, kısmî ve kapsamlı yazılım sınamaları ile gerçekleştirilir.
G. Banger - G. Çalışır 46
Bütünlüğü sağla, yerleştir
Kullanıcının bir ürün hakkında “Evet; benim istediğim tam da bu…” şeklindeki algılaması durumunda; o sistemin bütünlüğe sahip olduğu söylenir. Buna algılanan bütünlük adı verilir.
Pazar payı, algılanan bütünlüğün kaba bir ölçümüdür.
G. Banger - G. Çalışır 47
Bütünlüğü sağla, yerleştir
Kavramsal bütünlük; sistemin merkezî kavramlarının düzgün ve kaynaşmış bir bütün olarak birlikte çalışmaları anlamına gelir.
Geliştirme süreci boyunca küçüklü büyüklü hatalar birikerek yazılım son ürününde tanımı ve çözümü zor sorunlara yol açarlar.
Büyük işlerin küçük parçalara bölünmesi ve farklı geliştirme aşamalarının standartlaştırılması ile hataların kaynak nedenleri bulunabilir ve önlenebilir.
G. Banger - G. Çalışır 50
Bütünü gör
ÖRNEK: Ishikawa ( Kılçık ) Diyagramı
G. Banger - G. Çalışır 51
Bütünü gör
Sistem büyüdükçe geliştirme örgütlenmesi karmaşıklaşır;
Değişik takımlar tarafından üretilen parça sayısı artar;
Yeni ilişkiler ortaya çıkar; Böylece bu karmaşık yapıyı bir bütün
olarak yönetmenin önemi bir kez daha ortaya çıkar.
G. Banger - G. Çalışır 52
Bütünü gör
Karmaşık sistemlerde bütünlüğün sağlanması, çeşitliliğe sahip farklı alanlarda derin uzmanlık bilgi ve deneyimi gerektirir.
Böyle bir durumda herhangi bir alandaki bir uzmanın, sistemin bütünsel performansına odaklanmak yerine kendi uzmanlık uygulamasını abartmaya çalışması sık rastlanan bir sorundur.
G. Banger - G. Çalışır 53
Bütünü gör
Çoklu geliştirmeden kaynaklanan sorunları çözmenin araçları ölçme ve sözleşme yapmadır.
Geliştiricilerin ve tedarikçilerin performansları, yazılımın tümü dikkate alınarak ölçülmelidir.
Farklı taraflar aynı yazılım projesinde yer aldıklarında gerekli hukuk, sözleşme ile oluşturulmalıdır.
G. Banger - G. Çalışır 54
Bütünü gör
Sayılan sorunların aşılması için ilk koşul, yalın düşüncenin tüm ekip tarafından tam ve doğru anlaşılmasıdır.
Büyük düşün,Küçük adım at,
Hızlı yanıl, Çabuk öğren…
G. Banger - G. Çalışır 55
Yalın İlkeler
Yalın yazılım geliştirme ilkeleri:1. Atığı / israfı / fireyi yok et,2. Öğrenmeyi güçlendir,3. Mümkün olduğunca geç karara bağla,4. Mümkün olan en kısa sürede üret ve
teslim et,5. Takımı güçlendir,6. Bütünlüğü sağla ve yerleştir,7. Bütünü gör.