1 / 57

YALIN YAZILIM Geliştirme

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.”

yuri
Download Presentation

YALIN YAZILIM Geliştirme

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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.” Thomas Jefferson (1743-1826) ABD 3. Başkanı Bağımsızlık Bildirisi Yazarı G. Banger - G. Çalışır

  3. Yalın Yazılım Yalın Yazılım Geliştirme Unsurları Yalın Araçlar Yalın İlkeler 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 Üretim Süreci Değer üretmeyen ATIK adımları Değer üreten adımlar Değer üretmeyen gerekli DESTEK adı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 PRODUCTION G. Banger - G. Çalışır

  7. Yazılımda Yalın İlkeler Yalın yazılım geliştirme ilkeleri: • Atığı / israfı / fireyi yok et, • Öğrenmeyi güçlendir, • Mümkün olduğunca geç karara bağla, • Mümkün olan en kısa sürede üret ve teslim et, • Takımı güçlendir, • Bütünlüğü sağla ve yerleştir, • Bütünü gör. G. Banger - G. Çalışır

  8. Yalın Düşünce “İyimserlik, yazılım geliştirmede mesleki bir tehlikedir.” Kent Beck Yazılım mühendisi ExtremeProgramming geliştiricisi Agile Manifesto (2001) yazarlarından G. Banger - G. Çalışır

  9. Atığı yok et Hibbs, Jewett, Sullivan; The Art of Lean Software Development; 2009 G. Banger - G. Çalışır

  10. Atığı yok et Bilgi kaybı Geleneksel “Çağlayan Geliştirme Modeli” G. Banger - G. Çalışır

  11. Yalın Düşünce “Her şey, olabildiği kadar basit olmalıdır, ama asla daha fazla değil.” Albert Einstein (1879-1955) Alman kökenli ABD’li fizikçi Genel 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: • Hatalar: Kaynakta yok edilmesi gereken sorunlar, • Aşırı üretim: İstenmeyen özelliklerin üretilmesi, eklenmesi, • Taşıma: Gereksiz iş aktarmalar ve taşımalar, • Bekleme: Bir başka işin veya sürecin tamamlanmasını bekleme, • Envanter: Bekleyen kısmen tamamlanmış işler, • Hareket: Kişilerin veya malzemelerin sürecin başarılması açısından gereksiz, amaçsız ve katmayan hareketleri, • Aşırı işleme: Müşteri tarafından ihtiyaç duyulmayan aşırı süreçleme / işleme, • İ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 Değer Akım Haritası 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. 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. Öğrenmeyi güçlendir Yazılımcı Müşteri / Kullanıcı G. Banger - G. Çalışır

  24. 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. Öğrenmeyi güçlendir Yazılımcı Müşteri / Kullanıcı G. Banger - G. Çalışır

  25. 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. Öğrenmeyi güçlendir 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 Birlikte geliştirebileceğimiz yaklaşımlar, müstakbel ihtiyaçlarınızı tatmin edecek çözümler… Gelecekteki ihtiyaçlarımız, müstakbel sorunlarımız… Küme temelli öğrenme ( Set-based learning ) ortamı Yazılım geliştirici Müşteri / Kullanıcı 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. Option-based Approach 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. Kararların Zamanlaması 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. ÇEVİK YAZILIM 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: • Müşteri, yazılım ürününü belirleyen ihtiyaçlarını iletir. • 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. • Kart üzerinde işin gerektirdiği girdiler ve zamanlama belirtilmiştir. • Her takıma bir kart (iş) verilir. G. Banger - G. Çalışır

  39. Hızlı üret ve teslim et • 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. • 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): • Her iş parçası (kanban) için en az üç takıma potansiyel çözüm geliştirme görevi verilir. • Böylece her takım problem uzayını öğrenir ve bir potansiyel çözüm geliştirir. • Geçersiz bulunan çözüm(ler) elenir. G. Banger - G. Çalışır

  41. Hızlı üret ve teslim et • Eleme sonrası kalan çözümler karşılaştırılır ve bir tanesi uygun olarak belirlenir. • Uygun çözüm seçeneği üzerinde açık görüşme açılarak iyileştirme önerileri geliştirilir. • 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. • Kavramsal bütünlük, algılanan bütünlüğün sağlanmasında kritik önemdedir. G. Banger - G. Çalışır

  48. Bütünlüğü sağla, yerleştir • Yazılım ürünü, bir başka bütünlük düzeyi daha gerektirir. • Yazılım, yararlılığını zamana yaygın olarak sağlamalıdır. • Yazılımın zamana uyum göstererek evrimleşmesi beklenir. • Ölçütler: Kaynaşık mimari, yararlılık, amaca uygunluk, onarılabilme, uyumluluk, genişleyebilirlik… G. Banger - G. Çalışır

  49. Bütünü gör • 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 Bütünü Gör !... ÖRNEK: Ishikawa ( Kılçık ) Diyagramı G. Banger - G. Çalışır

More Related