ytu web gunleri

32
Web Girişimlerinde Yazılım Süreci ve Güvenlik Ersan Bilik

Upload: ersanbilik

Post on 13-Jan-2015

1.706 views

Category:

Business


1 download

DESCRIPTION

YTÜ Web günleri için hazırladığım sunum

TRANSCRIPT

Page 1: YTU Web Gunleri

Web GirişimlerindeYazılım Süreci ve Güvenlik

Ersan Bilik

Page 2: YTU Web Gunleri

Hemen başlayalım...

• Odaklandığımız alan...• Mevcut problemler...• En iyi pratikler...• Öneriler...• Son söz...• Soru & Cevap

Page 3: YTU Web Gunleri

Girişim masasının 4 bacağı

Page 4: YTU Web Gunleri

Web Girişimlerinde ürün: Yazılım

• Girişimin neresinde ?• Nasıl Geliştirilmeli ?• Girişimcilere uygun

yazılım süreçleri ?

Page 5: YTU Web Gunleri

Yazılım: Girişimin neresinde ?

• Ürün ya da fikir yoksa, neyi pazarlıyoruz?

• Finans ? • İş planı <bağımlıdır> ürün.• Yazılım, kraldır.• Kötü haber: İyi yazılım

zanaatkarları durumun farkındadır.

• İyi haber: Kötü yazılım geliştiren binlerce “yazılımcı” vardır.

Page 6: YTU Web Gunleri

Yazılım: Nasıl geliştirmeli ?

• Mevcut durum nedir ?– Rock Star Yazılımcı. (10x)– 2 kişiyiz. (2 * 5x)– 3.... ( 3 * 3x )– 5 ? ( 5 * 1x ) – x = verimlilik

• Malesef sihirli değnek yok. – (bkz: no silver bullet by

Dr.Fred Brooks )

Page 7: YTU Web Gunleri

Ne demek yok ? Bunun adı kaos !• Yazılım “mühendisliği” diye henüz bişey yok.

(ama zamanla olgunlaşıyor...) • Mevcut durumda yazılım zanaatkarları var.• Yazılım hala onu geliştiren insanların yetenekleri

doğrultusunda sizi başarıya ya da başarısızlığa götürür.

• Kaynaklar: – Chaos Report (Standish Group)– Google Ara: Bill Clinton quote about software– Google Ara: Alistair Cockburn phd thesis

Page 8: YTU Web Gunleri

Peki ne yapabiliriz ?

• Disiplin.• Eğer oyunun kurallarını

koyarsak ve tüm paydaşlar mızıkçılık yapmazsa sorun çıkmaz.

Page 9: YTU Web Gunleri

Paydaşlar kimler ?

Page 10: YTU Web Gunleri

Ürün geliştirme yaşam döngüsü

• Paydaşların üründen beklentileri nedir ?– Gereksinim Yönetimi

• Gereksinimler ürüne nasıl dönüşecek ?– Analiz, Tasarım, Kodlama

• Takım halinde nasıl geliştiririz ?– Proje Yönetimi

• Nasıl sürümleri çıkarabilirim ?– Sürüm yönetimi

Page 11: YTU Web Gunleri

Web girişimlerinde durum

• İstekler an be an değişiyor...• Yazılım geliştiricilerin işi zor... – ( değişiklik isteği çok fazla )

• Tüm start-up şirketlerin ortamı : “çevik”• Hantallığa tahammül YOK !• Ve herşeyi yapması beklenen bir tane rock star

yazılımcı var

FAIL

Page 12: YTU Web Gunleri

Cevap: Çevik Yöntemler

• Scrum• XP• FDD• Lean• Agile UP• Getting Real ( 37 Signals )

Page 13: YTU Web Gunleri

Scrum

• Bir proje yönetimi metodolojisi– Sadece yazılım projelerin mahsus bir metodoloji

değil ama çıkışı yazılım projeleri ile birliktedir.– Yazılım mühendisliğine özel pratiklerden söz etmez

Page 14: YTU Web Gunleri

Scrum

Page 15: YTU Web Gunleri

Scrum’da gereksinim yönetimi

• Kullanıcı hikayeleri

Page 16: YTU Web Gunleri

Gereksinimleri bir havuzda toplayın

• Product Backlog• Paydaşlardan, kullanıcı hikayelerini

ölçeklendirmelerini isteyin.– Bizim için acil olan işlevsellikler nedir ?

Page 17: YTU Web Gunleri

Tahmin edin

• Yazılım ekibi olarak toplanın.• Her işlevsellik için ne kadar efor

harcayacağınızı tahmin etmeye çalışın• Planning poker.

Page 18: YTU Web Gunleri

Sprint’i planlayın

• Sprint Backlog– Product backlogtan 2 ila 4 haftalık (fixed) süre için

müşterinin ölçeklendirdiği kullanıcı hikayelerini seçin ve sprint backloga atın.

– Sprint süresini belirleyin ( fixed süre , 2-4 hafta)– Bu süre zarfında, seçtiğiniz kullanıcı hikayelerini

bitirmeye çalışın, sprint sonunda toplam kaç puanlık kullanıcı hikayesi bitirdiğinizi ölçün.

Page 19: YTU Web Gunleri

Burndown chart...

Page 20: YTU Web Gunleri

Kurallar

• Sprint süreci içinde, yeni bir istek gelirse, o istek çok kritik olmadıkça, sprint backloga değil, product backloga eklenir ve bir sonraki sprintte gerçeklenir.

• Hergün 15 dakika toplantı yapılır ve geliştiricilere şu sorular sorulur– Dün ne yaptın ?– Bugün ne yapıyorsun ?– Yarın ne yapacaksın ?

• Her sprint sonunda mevcut ürüne bir değer eklenmesi gerekmektedir.

Page 21: YTU Web Gunleri

Kendi kendinizi denetleyin

• Reprospective toplantıları...• Her sprint sonunda ekip olarak bir araya gelin

ve şu soruları cevaplayın;– Neyi iyi yaptık ?– Neyi daha iyi yapabilirdik ?– Neyi başaramadık ?– Bizi engelleyen şey nedir ?

Page 22: YTU Web Gunleri

Yazılım Mühendisliğine dair pratikler ?

• Scrum’ın bir cevabı yok...• Ama XP’nin var..

Resim referans: Akın Demir (flickr)

Page 23: YTU Web Gunleri

Konfigürasyon Yönetimi

• CVS, SVN, Gitt...• Merkezi – Dağıtık Ambar• Ağır siklet : TFS

Page 24: YTU Web Gunleri

Test Driven Development

• Önce kodu değil, testi yazın.• Neden ?– Test aslında bir gereksinime tekabül ediyor..– Gereksinimin testini önce yazarsak, o testi geçecek

kadar kod yazmış oluruz.– KISS , YAGNI prenspileri..– Less is More– Refactoring, etc...

Page 25: YTU Web Gunleri

Continious Integration

Page 26: YTU Web Gunleri

Pair Programming

Page 27: YTU Web Gunleri

Collective Code Ownership

Page 28: YTU Web Gunleri

En iyi pratikler

• Temel bir mimari oluşturmak elzem...– Değişikliklerin maliyeti bazen yüksek olabilir

• Modüler geliştirme faydalı– Daha sonra değişiklik istendiğinde, gerçeklenmesi

kolaylaşır• while(true)– {Write Test,Code,Review,Refactor,Commit };

Page 29: YTU Web Gunleri

Öneriler & Tavsiyeler

• Re-invent wheel ikilemi...• Kullanılacak araçlar...• Paydaşlar birbirinin işine burnunu sokmasın– Yazılımcı vs Tasarımcı– Yazılımcı vs Yazılımcı– Yazılımcı vs Herkes

• Araba herkese çarpıyor. ( Riskler.. )

Page 30: YTU Web Gunleri

Güvenlik konusuna gelince

• Kaynak kod güvenliği..• Yazılım güvenliği..• Donanım güvenliği..• İletişim güvenliği...• Veri güvenliği...• Etc..

Page 31: YTU Web Gunleri

Son söz

• Bitti.

Page 32: YTU Web Gunleri

Sorular ?