web İçin teknoloji geliştirmek

46
Volkan Özçelik blog: www.fikribol.com Web İçin Teknoloji Geliştirmek Volkan Özçelik cember.net – Bilişim ve Teknoloji Direktörü

Upload: volkan-oezcelik

Post on 24-Jun-2015

3.592 views

Category:

Technology


4 download

DESCRIPTION

Ocak Ayı Web Seminerlerindeki "Web İçin Teknoloji Geliştirmek" sunumu -- Volkan Özçelik

TRANSCRIPT

Page 1: Web İçin Teknoloji Geliştirmek

Volkan Özçelik blog: www.fikribol.com

Web İçin Teknoloji Geliştirmek

Volkan Özçelikcember.net – Bilişim ve Teknoloji Direktörü

Page 2: Web İçin Teknoloji Geliştirmek

Baş Döndürücü Bir Evrim Süreci1994

<MARQUEE>

Page 3: Web İçin Teknoloji Geliştirmek

Baş Döndürücü Bir Evrim Süreci 2008

XHTML, CSS, JS, DHTML, AJAX, OOP, XML, XSTL, RSS, OPML, SQL, DDL, UML, RPC, SOA,

Folksonomi, MVC, J2EE, Microformat, XFN, Hcal,

Ruby on Rails, DTD, W3C, WAI, JAVA, .NET, SSI,

WYSIWYG, WYSIWYM, API, UGC, Wiki, blog,

thumblog, GTD, microblog, webtop, CMS, ERP, Mashup,

Semantik Web, Yapay Zeka, Kollektif Zeka,

beta, web2.0, web3.0, web4.0 ... daha gider bu!

Page 4: Web İçin Teknoloji Geliştirmek

Baş Döndürücü Bir Evrim Süreci Altavista Google Hotmail Gmail / Yahoo! Mail(beta) Ofoto Flickr Mp3.com iTunes Netscape Mozilla Firefox

Page 5: Web İçin Teknoloji Geliştirmek

Baş Döndürücü Bir Evrim Süreci

Hizmet Ürün Software Infoware Statik Dinamik Zengin Kullanıcı Deneyimi

Kolay Eğlenceli Sosyal

Page 6: Web İçin Teknoloji Geliştirmek

Baş Döndürücü Bir Evrim Süreci

API RSS AJAX Standartlar

DOM XHTML CSS

Page 7: Web İçin Teknoloji Geliştirmek

Web Uygulaması Geliştirmek İçin Harika Bir Dönem!

Her gün yeni bir web uygulaması Hızlı gelişen bir internet pazarı

Kolay veri ve bilgi paylaşımı Basitleştirilmiş bir dağıtım kanalı Düşük Sabit Masraflar

Hızlı olgunlaşan bir İnternet ekonomisi

Page 8: Web İçin Teknoloji Geliştirmek

Daha Başlamadan...

Hedef Kitlenizi Belirleyin Amaçlarınızı Belirleyin Bütçenizi Belirleyin

Page 9: Web İçin Teknoloji Geliştirmek

Web İçin Teknoloji Geliştirmek Proje Yapısının Belirlenmesi Plan Üretilmesi Geliştirme Süreci Test ve Bakım

Page 10: Web İçin Teknoloji Geliştirmek

Web İçin Teknoloji Geliştirirken (olması gereken)

İş Mantığının ve İş Nesnelerinin Belirlenmesi İşlevsel Gereksinimlerin Belirlenmesi Uygulamanın Kodlanmaya Başlanması Bakım ve Destek Prosedürlerinin Belirlenmesi

Page 11: Web İçin Teknoloji Geliştirmek

Web İçin Teknoloji Geliştirirken (genelde olan)

Uygulamanın Kodlanmaya Başlanması

Page 12: Web İçin Teknoloji Geliştirmek

Web İçin Teknoloji Geliştirirken... Amacınızı bilin Değer katın Deneyim kazanın

Page 13: Web İçin Teknoloji Geliştirmek

Gözardı Edilenler

Dokümantasyon Gereksiz, kimse okumuyor. Test Zaman Kaybı, o kadar lüksümüz yok. Bakım? Destek?

Page 14: Web İçin Teknoloji Geliştirmek

Web Teknolojilerinde Güvenlik

Page 15: Web İçin Teknoloji Geliştirmek

Web Teknolojilerinde Güvenlik Bir Hacker

Sistemin açıklarından yararlanarak Size ait olmayan veri enjekte edebilir Verinizi değiştirebilir Verinizi çalabilir

Tüm bunları nasıl yapar? Sisteminizle haberleşerek Sıradan kullanıcının yapmadığı şeyler deneyerek Sosyal Mühendislik

Page 16: Web İçin Teknoloji Geliştirmek

Web Teknolojilerinde Güvenlik Kullanıcıya Asla Güvenmeyin

Sunucu – İstemci arasında bağlantı kopabilir Eksik/hatalı veri

Sunucu – İstemci arasında veri kirlenebilir Kullanıcı tarafından beklenmeyen bir şekilde

değiştirilebilir Sistemi çökertmek, yetkisiz erişim sağlamak için özel

olarak tasarlanmış bir saldırı olabilir

Page 17: Web İçin Teknoloji Geliştirmek

Web Teknolojilerinde Güvenlik Kendi uygulamanızı hackleyin Bir kayıt dosyası (log) tutun

Page 18: Web İçin Teknoloji Geliştirmek

Sık Yapılan Gaflar (güvenlik)

JavaScript korur beni JavaScript iptal edilebilir JavaScript kullanıcı tarafından modifiye edilebilir Sisteme kullanıcı tarafından JavaScript enjekte

edilebilir Cross Site Scripting / Script Injection

Page 19: Web İçin Teknoloji Geliştirmek

Sık Yapılan Gaflar (güvenlik)

Gizli form alanlarını kimse göremez Rahatlıkla görütülenebilir Rahatlıkla değiştirilebilir Rahatlıkla yeni form alanları eklenebilir

Kaynak kodunu kim okur ki? Sizce?

Page 20: Web İçin Teknoloji Geliştirmek

Web Teknolojisi Modeli

Kullanıcı Hizmetleri İş Hizmetleri

Veri Hizmetleri

Page 21: Web İçin Teknoloji Geliştirmek

Web Teknolojisi Modeli

Kullanıcı Arayüzü İş Mantığı

Veritabanı

Page 22: Web İçin Teknoloji Geliştirmek

Web Teknolojisi Modeli

Kullanıcı ArayüzüVIEW

İş MantığıCONTROLLER

VeritabanıMODEL

Page 23: Web İçin Teknoloji Geliştirmek

Web Teknolojisi Modeli

Kullanıcı ArayüzüVIEW

Görünüm (biçem)CSS

İşlev JavaScript (betik)

(AJAX)

SunumXHTML

Page 24: Web İçin Teknoloji Geliştirmek

Sunum, Görünüm ve İşlev (genelde olan)

tek bir HTML dosyası

Page 25: Web İçin Teknoloji Geliştirmek

Sunum, Görünüm ve İşlev (olması gereken)

cssjs

xhtml

Page 26: Web İçin Teknoloji Geliştirmek

Sunum, Görünüm ve İşlev

Page 27: Web İçin Teknoloji Geliştirmek

Uygulama Mimarisi Gafları

Kullan-At Düşüncesi geçici çözüm geçici prototip günü kurtarmak

Halının Altına Süpürmek Kod spagethisi

Sil baştan başlamak...

Page 28: Web İçin Teknoloji Geliştirmek

Geliştirme Ortamı

Her geliştiricinin kendi oyun alanı olsun (sandbox)

Uygulamanızı Düzenli Olarak Gözden Geçirin Pre-review / Internal Auditing

Bir Sürüm Kontrol Sistemi Kullanın CVS Subversion

Page 29: Web İçin Teknoloji Geliştirmek

Web Teknolojisinin Hayat Çizgisi

Page 30: Web İçin Teknoloji Geliştirmek

Web Teknolojisinin Hayat Çizgisi

Yararlı Bir Şeyler Üretin!

Page 31: Web İçin Teknoloji Geliştirmek

Sık Yapılan Gaflar

Yazılım Geliştirici Gafları Kontrolsüz büyüyen kod kalabalığı “yeniden kullanılırlık”? O da neymiş? Dokümantasyon eksikliği Önce ateş edip sonra soru sormak Duvardaki sinek için roket atar kullanmak

Page 32: Web İçin Teknoloji Geliştirmek

Performans Önemlidir

8 Saniye Kuralı Birinci günden planlamaya başlayın İşlevsellik ve performans arasında denge kurun Pes etmeyin Az aslında “çok”tur

Page 33: Web İçin Teknoloji Geliştirmek

Performans

Bazen kuralları çiğnemek gerekebilir Algılanan performansı arttırmaya çalışın Yapabiliyorsanız hile yapın

Page 34: Web İçin Teknoloji Geliştirmek

Kod Yapısı

Sürdürülebilen (maintainability) Ölçeklenebilen (scalability) Değerlendirilebilen (auditability)

Page 35: Web İçin Teknoloji Geliştirmek

Veritabanı

Veritabanınızı normalize edin (3rd normal form) Her zaman uygun veri tiplerini kullanın SQL Injection saldırılarına dikkat edin Verilerinizi düzenli olarak gözden geçirin

Page 36: Web İçin Teknoloji Geliştirmek

Sık Yapılan Gaflar

kopyala / yapıştır sağını solunu değiştir çalışacağına inan / dua et üstünkörü bir test et <çalışıyor mu ?>

EVET çalışıyorsa elleme! HAYIR

Page 37: Web İçin Teknoloji Geliştirmek

Bir Framework Kullanmalı mıyım? framework kullanmak

Uygulama geliştirmeyi hızlandırır Güvenilir / Test edilmiş bir yapı

... ya da framework kullanmamak Öğrenme eğrisi Kontrol

Page 38: Web İçin Teknoloji Geliştirmek

Söz Gider, Yazı Kalır

Uygulama Gereksinim Dokümanı (Functional Specification)

Gizlilik Notu Giriş Kullanıcı Senaryoları Sistem Analizi Son-kullanıcı Görevleri Yönetici Görevleri Diğer Gereksinimler (non functional requirements)

Page 39: Web İçin Teknoloji Geliştirmek

Mutlaka Yapın

Sürüm Kontrol Sistemi Kullanın Tek kişi olsanız bile!

Önce varolan hataları düzeltin Sistem Kurulumu (build) işlemini günlük

olarak yapın Bir hata veri bankanız olsun Güncel bir iş takviminiz olsun Sakin bir çalışma ortamınız olsun

Page 40: Web İçin Teknoloji Geliştirmek

Az Aslında Gerçekten Çok mudur? Kullanıcı ne yapmak istiyor? Bu özelliği kaldırmak

Kullanıcının bu işini kolaylaştıracak mı? Uygulamanın kullanılırlığını nasıl etkiliyor?

Bu özellik “olması beklenen” bir şey mi? Bu özelliğin varlığı kullanıcıları mutlu eder mi? Bu özelliğin eksik olması kullanıcıları rahatsız

eder mi?

Page 41: Web İçin Teknoloji Geliştirmek

Bir Web Uygulamasını Yönetmek Sihirli Kelime: “Organize Olun” Projenizi Planlayın Gerçekçi bir Takviminiz Olsun Proje Yönetim Araçlarından Yararlanın

Basecamp (basecamphq.com) Zoho Projects (projects.zoho.com) Free Mind (freemind.sourceforge.net) Open Workbench (openworkbench.org)

Page 42: Web İçin Teknoloji Geliştirmek

Öncelikleri Belirlemek (yönetim) Görünür Değer Ekip Üretkenliği Çelişki / Uyum (vay be!) / (aslında gerçekte yapılan iş)

Page 43: Web İçin Teknoloji Geliştirmek

Sık Yapılan Gaflar

Yönetim Gafları “Bir An Önce Büyüyelim!” Sendromu “Bir An Önce Herkes Duysun Bizi” Sendromu “Hazır Olunca Yayınlarız!” Sendromu

Page 44: Web İçin Teknoloji Geliştirmek

Mutlaka Yapın

Vizyon sahibi bir diktatör olun

Uygulamanız varsayılan haliyle kullanılır olsun Çoğu kullanıcı ek özelliklere dokunmayacaktır bile

Görev odaklı düşünün

Mutlaka test edin

Page 45: Web İçin Teknoloji Geliştirmek

Mutlaka Test Edin

Genel Unit Test Integration Test System Test

Uygulamaya Özel Güvenlik Testleri Performans, Yük ve Stres Testleri XHTML / CSS Doğrulaması Erişilirlik Testleri Kullanılırlık Testleri

Page 46: Web İçin Teknoloji Geliştirmek

Teşekkürler

Sorularınız?