web İçin teknoloji geliştirmek
DESCRIPTION
Ocak Ayı Web Seminerlerindeki "Web İçin Teknoloji Geliştirmek" sunumu -- Volkan ÖzçelikTRANSCRIPT
Volkan Özçelik blog: www.fikribol.com
Web İçin Teknoloji Geliştirmek
Volkan Özçelikcember.net – Bilişim ve Teknoloji Direktörü
Baş Döndürücü Bir Evrim Süreci1994
<MARQUEE>
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!
Baş Döndürücü Bir Evrim Süreci Altavista Google Hotmail Gmail / Yahoo! Mail(beta) Ofoto Flickr Mp3.com iTunes Netscape Mozilla Firefox
Baş Döndürücü Bir Evrim Süreci
Hizmet Ürün Software Infoware Statik Dinamik Zengin Kullanıcı Deneyimi
Kolay Eğlenceli Sosyal
Baş Döndürücü Bir Evrim Süreci
API RSS AJAX Standartlar
DOM XHTML CSS
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
Daha Başlamadan...
Hedef Kitlenizi Belirleyin Amaçlarınızı Belirleyin Bütçenizi Belirleyin
Web İçin Teknoloji Geliştirmek Proje Yapısının Belirlenmesi Plan Üretilmesi Geliştirme Süreci Test ve Bakım
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
Web İçin Teknoloji Geliştirirken (genelde olan)
Uygulamanın Kodlanmaya Başlanması
Web İçin Teknoloji Geliştirirken... Amacınızı bilin Değer katın Deneyim kazanın
Gözardı Edilenler
Dokümantasyon Gereksiz, kimse okumuyor. Test Zaman Kaybı, o kadar lüksümüz yok. Bakım? Destek?
Web Teknolojilerinde Güvenlik
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
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
Web Teknolojilerinde Güvenlik Kendi uygulamanızı hackleyin Bir kayıt dosyası (log) tutun
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
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?
Web Teknolojisi Modeli
Kullanıcı Hizmetleri İş Hizmetleri
Veri Hizmetleri
Web Teknolojisi Modeli
Kullanıcı Arayüzü İş Mantığı
Veritabanı
Web Teknolojisi Modeli
Kullanıcı ArayüzüVIEW
İş MantığıCONTROLLER
VeritabanıMODEL
Web Teknolojisi Modeli
Kullanıcı ArayüzüVIEW
Görünüm (biçem)CSS
İşlev JavaScript (betik)
(AJAX)
SunumXHTML
Sunum, Görünüm ve İşlev (genelde olan)
tek bir HTML dosyası
Sunum, Görünüm ve İşlev (olması gereken)
cssjs
xhtml
Sunum, Görünüm ve İşlev
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...
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
Web Teknolojisinin Hayat Çizgisi
Web Teknolojisinin Hayat Çizgisi
Yararlı Bir Şeyler Üretin!
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
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
Performans
Bazen kuralları çiğnemek gerekebilir Algılanan performansı arttırmaya çalışın Yapabiliyorsanız hile yapın
Kod Yapısı
Sürdürülebilen (maintainability) Ölçeklenebilen (scalability) Değerlendirilebilen (auditability)
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
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
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
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)
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
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?
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)
Ö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ş)
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
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
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
Teşekkürler
Sorularınız?