• Save
GDO'suz Yazılım Geliştirme Teknikleri
Upcoming SlideShare
Loading in...5
×
 

GDO'suz Yazılım Geliştirme Teknikleri

on

  • 1,538 views

13 Haziran 2013'de Ankara'da gerçekleştirilen, Agile Turkey'in organize ettiği "Agile Talks" seminerindeki sunumum

13 Haziran 2013'de Ankara'da gerçekleştirilen, Agile Turkey'in organize ettiği "Agile Talks" seminerindeki sunumum

Statistics

Views

Total Views
1,538
Slideshare-icon Views on SlideShare
1,326
Embed Views
212

Actions

Likes
5
Downloads
0
Comments
0

5 Embeds 212

http://www.agilistanbul.com 129
https://twitter.com 75
http://259981284161873230_ca71b2f0a434f577154ecf9934c5b613547a11ee.blogspot.com 4
http://cloud.feedly.com 3
http://webcache.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    GDO'suz Yazılım Geliştirme Teknikleri GDO'suz Yazılım Geliştirme Teknikleri Presentation Transcript

    • ’suzYazılım Gelİştİrme teknİklerİGDO{ doğasına uygun yazılım geliştirme sanatı }Lemİ Orhan ERGİNPrincipal Software Engineer @ Sony@lemiorhan
    • Lemİ Orhan Ergİnyılından bu yana Sony’de Yazılım Ustasıyılından bu yana Tüsside, BYM,GittiGidiyor/eBay ve Sony’de yazılımcı,takım lideri, teknik koordinatör ve SMyılında Jim Coplien tarafından CSMsertifikasıseneden fazla Scrum Master’lıksprint ve Scrum takımlarında ScrumMaster ve takım elemanı olarak 4 senedönüsüm, yazılım takımlarında veorganizasyonlarda çevik kültür insaasıkonularında deneyim200120122009156agile,,@lemiorhan
    • oldu mu?BAŞARISIZHiç yazılım projeniz
    • Projeyi yetiştiremedik, ek süre istiyoruzYetiştirmemiz imkansız, ama söz verdik bir kereDaha canlıya çıkmadan iptal ediyoruzCanlıda sürekli hatalarla karşılaşıyoruzMevcut yazılımı baştan yazmamız gerekProje uzadıkça uzadı, bitecek gibi de görünmüyorProjenin başarısız olacağı aşikardı aslındaProje güzel giderken ne oldu da birden battı“”Proje yönetİMİ / Takım
    • İstenen özellikleri eklemek çok maliyetliBir kişi ayrıldı proje çıkmaza girdiGeliştiren takımda çalışanlar sürekli değişiyorYazılımın mimarisi ve teknolojisi çok eskiBir hata çözüyorum yeni hatalar oluşuyorBazı modüllere yıllardır kimse dokunmamışHata çözmekten yeni özellik ekleyemiyorumAynı manuel testleri defalarca kez tekrarlıyoruz“”Yazılım gelİŞTİRİCİ
    • 11Kariyerimboyuncabüyük çaplı projedeyazılım geliştirdim
    • Kalıpçılık endüstrisi için B2B eticaret sitesiIBM tabanlı ürün bilgisi yönetim sistemiAvrupa için ürün bilgisi yönetim sistemiAskeri belge yönetim sistemiTüm Avrupa ülkeleri için pazarlama siteleriTüm Avrupa siteleri için ortak araç çubuğuAna arkaplan bileşenleri, uygulamaları ve APIleriAvrupa için ana veri servisleriAvrupa için müşteriye özel veri servisleriABD ve Kanada için çekirdek veri servisleriE-ticaret dikey ürün satış modulüHer bİRİEN AZ 6 AYLIKPROJELERDİ
    • Kalıpçılık endüstrisi için B2B eticaret sitesiIBM tabanlı ürün bilgisi yönetim sistemiAvrupa için ürün bilgisi yönetim sistemiAskeri belge yönetim sistemiTüm Avrupa ülkeleri için pazarlama siteleriTüm Avrupa siteleri için ortak araç çubuğuAna arkaplan bileşenleri, uygulamaları ve APIleriAvrupa için ana veri servisleriAvrupa için müşteriye özel veri servisleriABD ve Kanada için çekirdek veri servisleriE-ticaret dikey ürün satış modulü6 tanesİYa hİç canlıya çıkmadıya kapandıya kapanacak%55
    • BAŞARISIZyazılım Projelerİ“Türkiyedeki projelerin %50si çöpe gidiyor”Agile Turkeymercer consulting“Gerçek masraflar eklendiğinde dünyadateknoloji projelerinin %80’i zarar ediyor”
    • neden?
    • neden varçokaslında başarısızolmak için
    • ŞİRKETPOLİTİKALARIkiminin nedenielimizden pek bir sey gelmiyor,
    • yazılımındoğasınaaykırıdavranmakancak genelininnedeni sadece
    • GÜNDEMYazılımın DoğasıYazılımın Doğalı: ÇeviklikÇevik Yazılım Geliştirme Pratikleri
    • Yazılımındoğasıve 9 ana kuralı
    • Nİhaİ hedefmüşterİ memnunİyetİdİr1Müşterinin talep ettiği yazılımdaistediği özelliklere hızlı bir şekildesahip olma hakkı vardırtabi müsterinizin bu kadar mutluetmeyi basaramayabilirsiniz,,
    • MÜŞTERİ ÇOĞU KEZNE İSTEDİĞİNDENEMİN DEĞİLDİR2
    • Yazılım sürecİNİN HER ANINDABelİRSİZLİKmevcuttur3
    • Gereksİnİmlerdaİma değİşİr4Başlangıç NoktasıBitiş Noktası213
    • Yazılım sadeceDeğİLDİR5Programlama
    • Yazılımın süreklİBakımının yapılmasıgereKİR6
    • Yazılım gelİŞTİRMEsosyal bİR AKTİVİTEDİRsosyalleşmeyİ gerektİRİR7
    • EN BAŞTA YAPILANDETAYLI Efor TahmİNİANLAMSIZDIR8
    • TOPLAM MALİYETİ ARTTIRIR9 KALİTEDEN ÖDÜN VERMEK
    • ÇevİKLİKkavramıyazılımın doğasına uygun yazılım geliştirmeyikolaylaştırmak için vardır
    • GÜNDEMYazılımın DoğasıYazılımın Doğalı: ÇeviklikÇevik Yazılım Geliştirme Pratikleri
    • ÇevİKLİKnedİR?
    • ÇevİKLİKDeğİŞİME HIZLACEVAP VERMEKTİRbir güncellemeyi ya da yeni bir özelliği canlıya hızla çıkabilmektir
    • ÇevİKLİKEVRİMLEŞTİREREKtasarlamak vegeLİŞTİRMEKTİRyaptıklarınızı güncellemek zorunda kalacağınızıönceden kabul etmektir
    • ÇevİK yazılım geLİŞTİRME SADECEPROJE PLANLAMASIndaN İBARET DEĞİLDİRProje planlaması çevik yazılım geliştirmenin bir bölümüdür
    • ÇevİK yazılım geLİŞTİRMEProje planlama ve yönetimiYazılım geliştirme pratikleriMüşteri memnuniyetiTakım çalışmasıMotivasyonBiz burası üzerinde duracagız,-
    • GÜNDEMYazılımın DoğasıYazılımın Doğalı: ÇeviklikÇevik Yazılım Geliştirme Pratikleri
    • EN DOĞRU TASARımıEN İYİ teknolojİLER İLEEN KISA ZAMANDAbitirmek isteriz
    • Ancak her zamankaynaklı sorunlarla karşılaşırızİNSAN
    • HIZLI GERİBİLDİRİMÇevik yöntemler ve yalınlık şunlara odaklanır:YAVAŞ GERİBİLDİRİMİ HIZLANDIRMAK
    • HIZLI GERİBİLDİRİMÇevik yöntemler ve yalınlık şunlara odaklanır:YAVAŞ GERİBİLDİRİMİ HIZLANDIRMAKBİR PROJEYİÇEVİK PratİklerKULLANARAK GELİŞTİRELİM
    • Çalışanlarınızı “kaynak”tan ziyade birer “yetenek” olarak görün (No headcount calculation)Bilgi ve tecrübeyi paylaşmaktan zevk alan kişilerle çalışın (Collaborative & Volunteer)Çevik yöntemler ve pratikler hakkında eğitim verin (Up-Front Education)Takımda tutkulu ve disiplinli yazılımcılar bulundurun (Passionate Developer)En iyi teknolojiyi değil, en ucuza değişiklik yapabileceğiniz teknolojileri seçin.Proje ÖncesİYazılım Gelişticiİş AnalistiTest MühendisiÜrün Sahibi
    • YazılımGelişticiFarklı görevlerden insanlarla takım oluşturun (Cross functional teams)Takım elemanları olarak birbirinize yakın oturun (Sitting CLOSE)İlk önce, geribildirim alabileceğiniz asgari özellikleri yazın (Minimum Viable Product)Müşteriye değer katacak özelliklere odaklanın (Prioritization)Proje öncesi uzun detaylı tasarımdan kaçının (Short Up-Front Design)Detaylı belgeleme yerine yeteri kadar belge oluşturun (Agile Documentation)Çevik olabilmeniz için gerekli teknik altyapıyı kurunProjeye Hazırlıkİş AnalistiTestMühendisi
    • SürümKontrolSistemiYazılımGelişticiİş AnalistiTestMühendisiYazılan kodu mutlaka sürüm kontrol sisteminde tutun (Version Control System)Eşli programlama yapın (Pair Programming)Başkalarının yazdığı kodu gözden geçirin (Code/Peer Review)Yeni her geliştirmeyi farklı bir dalda yapın (Code Branching)Temiz kod prensiplerini takip edin (Clean Code Principles)Teknik yetenekleri geliştirebilmek için düzenli kod kataları yapın (Code Kata)Tasarım şablonları yanında, mimari ve deyimsel şablonları da kullanın (Idiomatic Patterns)BDD ile müşteri gözünden tasarlayın (Behaviour Driven Development)TDD ile yazılımcı gözünden tasarlayın (Test Driven Development)YAZILIM GELİŞTİRME ve Sosyal Programlama
    • Mesajlaşma Servisleri (eposta, mesaj)SürekliBütünleştirmeSürümKontrolSistemiHer gün en az bir kere başkalarının komitlerini alın ve bütünleştirin (Continuous Integration)Yazılmış testleri anında çalıştırın ve geribildirim alın (Continuous Build)Kodunuzda test edilmemiş yerleri bulup testlerinizi iyileştirin (Code Coverage)Silmekten korkmayın, tasarımı testler yardımıyla yenileyin (Refactoring)Tüm döngünün bitmesi ve geribildirim alman en fazla 10 dakika sürsün (10 min build)Süreklİ BÜTÜNLEŞTİRME (Continuous INTEGRATION)YazılımGelişticiİş AnalistiTestMühendisi
    • Paket/Sürüm DeposuMesajlaşma Servisleri (eposta, mesaj)SürekliDağıtımSürümKontrolSistemiYazılımGelişticiİş AnalistiTestMühendisiHer gün çalışan kodun bir kopyasını canlıya çıkabilecekmiş gibi hazırlayın (SNAPSHOT)Kodun çalışan son hali daima depoda ya da CVS’de hazır bulunsun (Continuous delivery)Süreklİ DAĞITIM (Continuous Delivery)
    • DEV TEST & QA STAGING PRODYazılımcıların deney yapabileceği, uygulamayı test edebileceği bir ortam kurun (DEV)Performans ve yük testlerinin yapılabileceği ayrı bir ortamınız olsun (TEST/QUALITY ASSURANCE)Canlı öncesi kullanıcı kabul testlerinin yapılabileceği bir ortam bulundurun (STAGING/UAT/SIT)GelİŞTİRME ORTAMLARI (development Environments)
    • Paket/Sürüm DeposuMesajlaşma Servisleri (eposta, mesaj)SürümKontrolSistemiYazılımGelişticiİş AnalistiTestMühendisiKısa aralıklarla sürüm çıkın (SHORT RELEASES)Tek tıkla sürüm çıkabilecek teknik altyapıyı kurun (Continuous DEPLOYMENT)Uygulamaların sürüm çıkma ve açılma sürelerini hızlandırın (Fast bootup)Yazılım geliştirmeden ve BT operasyonlarından anlayan DevOps’lar yetiştirin (DEVOPS)SÜRÜM ÇIKMADEVTEST & QASTAGINGPRODSürekliSürüm
    • YazılımGelişticiİş AnalistiTestMühendisiBulut sistemleri bahsedilen çoğu yöntemi kullanmaya zorlar.Bulut üstünde uygulama gelİŞTİRMEDevOpsDevOps DevOps DevOpsSürümKontrolSistemi
    • eXtreme Programming pratikleri olmadan çevik olmaktan sözetmekanlamsızdır. XP ise ancak tutkulu yazılımcılar ile başarılır.“”İsa GöksuAgile Practice Lead
    • Kullanılan ResİMLERhttp://www.flickr.com/photos/emmanuelecontini/2558211856http://www.flickr.com/photos/thecampbells/5103649471http://www.flickr.com/photos/robbiemacphotos/7875854334http://www.flickr.com/photos/w4nd3rl0st/7174403872http://s590.photobucket.com/user/asmithj/media/CPC/girl_2_computer_arms_raised2.jpg.htmlhttp://www.flickr.com/photos/usnavy/5488581781http://www.flickr.com/photos/purplemattfish/3489639831http://www.flickr.com/photos/thomashawk/7215052318http://www.flickr.com/photos/nuwandalice/4764805046http://www.flickr.com/photos/lauter-als-der-rest/6898114788http://www.flickr.com/photos/31288116@N02/4008216690http://www.flickr.com/photos/a2gemma/1448178195http://www.flickr.com/photos/nuudls/3281779141
    • Lemİ orhan ergİnlemiorhan@agilistanbul.com@lemiorhan@lemiorhanagilistanbul.com@lemiorhanLINKEDINTWITTERSLIDESHAREBLOGPrincipal Software Engineer @ SonyFounder & Author @ agilistanbul.comflyingtomoon.comBu sunum AgileTurkey’in 13 Haziran 2013 tarihindedüzenlediği Agile Talks etkinliğinde kullanılmıstır,