25 Ocak 2017 Çarşamba

HTTP2 Nedir?

HTTP2 yeni gelişen ve henüz alt yapısı tam olarak oturmayan bir teknoloji olsada web sitelerinin erişim hızını %45 oranında arttırdığı söylenen bir teknoloji olarak karşımıza çıkmakta.
Bu gelişen teknoloji ile ilgili bilgilere www.spdycheck.org sitesinden erişebilir aynı zamanda hangi web sitelerinin bu teknolojiyi kullanmaya başladığınıda görebilirsiniz.

Kablosuz Ağ İzleme Aracı

Kablosuz ağınıza bağlı olan kişileri listelemek ve istenmeyen kullanıcıların olup olmadığına bakmak için kullanılabilecek güzel bir araç www.whoisonmywifi.com . 1.5 Milyon kişinin kullandığı bu yazılım haricinde Microsoft network monitor yazılımıda bu amaçlı olarak kullanılabilir.

dbdesigner


Web tabanlı bir araç olan dbdesigner araçı SQL kodu yazmadan veri tabanı şeması( Database diyagram ) oluşturmanızı sağlayan bir web uygulamasıdır. Türkçe dil desteğide buluanan araçta ücretsiz olarak 2 veri tabanı modeli (30 tane db tablosu destekleyen) oluşturulabilir.

Uygulamanın web adresi : https://dbdesigner.net/
sitesidir. Siteye kayıt yapmadan Guest User olarak girilip kolayca istediğimiz özelliklere sahip dbSeması oluşturulabilirsiniz. Ayrıca site kullanılarak database tabloları oluşturulabilir ve bu tablolar arasındaki ilişkileri belirleyebilirsiniz. Site UML diyagram oluşturur gibi veri tabanı tabloları oluşturmamıza imkan vermektedir. Db tasarımı bittikten sonra bu tasarımı kolayca istediğimiz veri tabanı scriptlerine dönüştürüp o veri tabanını otomatik olarak oluşturabiliriz. DbDesigner; PostgreSql, SqLite, MySql, MsSql ve Oracle veri tabanlarını desteklemektedir.

db Forge Studio


db Forge Studio; veri tabanı oluşturmak için geliştirilmiş ve  veri tabanını yönetmek için oldukca fazla özelliğe sahip güçlü bir IDE'dir. Hem Microsoft SQL server hemde MySql için geliştirilmiş araçlara sahiptir. Bu araçlar haricinde aynı zamanda Oracle, Postgre Sql içinde geliştirilmiş araçları vardır. db Forge Studio aracı ücretsiz olarak https://www.devart.com/dbforge/sql/studio/ sitesinden indirilebilir.


Eğitim Videoları (My Sql için)
 
  


Yazılım Proje Riskleri ve Risk Azaltma Stratejileri

Risk Analizi

Belirlenen risklerin sayısal değerlere dönüştürülmesi işlemidir. Riskleri sayısal değerler olarak ifade edilebilir hale getirmek için şu yöntemler kullanılır:
Riskleri niceliksel büyüklükler itibariyle düşük, orta, yüksek gibi istenen sayıda ölçeklendirerek, bu ölçeklerin her birine sayısal değerler vermek.
Olasılık teorisini kullanarak matematiksel tekniklerden ve benzetişim tekniklerinden yararlanmak suretiyle sayısal değerleri ortaya çıkarmak.

Her bir riskin olasılığı ve ciddiliği değerlendirmelidir.
Olasılık çok düşük, düşük, orta, yüksek veya çok yüksek olabilir.
Riskin etkisi dağıtıcı, ciddi, tahammül edilebilir ve önemsiz olabilir.


Risk Planlaması


Riskin varsayımı ve bu riskin yönetimi  için strateji geliştirilmesi.
Riski önleme stratejileri:
Riskin oluşma ihtimali azaltılır.
Minimalleştirme stratejileri:
Riskin projeye veya ürüne etkisi azaltılır.
Olasılık planları:
Risk oluşmuşsa, bu riskle ilgili olasılık planları geliştirilir.
Riske karşı yapılan planlama dört adımdan oluşur;
    Riskleri ortadan kaldırmaya/azaltmaya yönelik planlama,
    Risk planının yürütülmesi,
    Proje sonuçlarının değerlendirilmesi,
    Alınan önlemler ile proje sonuçlarının belgelenmesi.

Risk Tablosu

Risk tablosunda bulunması gereken temel başlıklar;
Riskin açıklaması.
Projeye etkisi (düşük, orta, yüksek)
Riskin gerçekleşme olasılığı (düşük orta, yüksek)
Alınabilecek önlemler.
Risk sahibi.
Durum (açık, kapandı, değişiklik yok, artıyor, azalıyor vb)

Pratik bir faydası olması açısından biraz daha somutlaştırarak risk tablosunda bulunması gereken temel başlıkları da listeleyelim.


Daha detaylı bilgi tutmak isteyenler aşağıdakiler dahil pek çok alanı ekleyebilirler.
Riski ortaya çıkaran kişi
Riskin ortaya çıkma tarihi
Riskin olası gerçekleşme tarihi
Son güncellenme tarihi
Riskin kimlik numarası (ID)
Sınıflandırma bilgisi (teknik, ticari, hukuki vb)

Etki ve gerçekleşme olasılığı için birden ona ya da yüze kadar bile bir ölçek kullanılabilir. Ancak bu derecede ölçebilecek yetkinliğiniz varsa kullanılmalıdır. Üçlü (düşük, orta, yüksek) ölçek büyük ölçüde ihtiyacınızı karşılayacak, anlaşılması ve anlatılması kolay olacaktır.


Risk Azaltma
Öngörülen ve sayısal değerler olarak ifade edilen risklere karşı ne gibi önlemlerin alınmasının uygun olacağının değerlendirilmesi ve bu önlemlerin alınmasıdır.

Projenin koşulları ve risklerin durumu göz önüne alınarak;
Projenin yönünü değiştirerek riski yok etmek,
Riskin etkilerini sürekli izlemek ve kontrol altında tutmak,
Riski projedeki diğer paydaşlarla paylaşmak,
Riski oluşturan etmenlerle ilgili bilgileri arttırmak için bu konularda araştırma yapmak.

Belirtilen bu durumlarda hangisinin veya hangilerinin uygun olduğu konusunda değerlendirme yapılarak, her bir risk başlığı için uygun önlemler alınmaktadır. Alınan önlemlerden sonra elde edilen sonuçlara göre, risk yönetim süreci yeniden tekrar edilmelidir.


Risk Yönetimi Araç ve Teknikleri

Risk yönetiminde kullanılan araç ve teknikler:
Fikir yaratma araçları;
Uzmanlarla görüşme,
Anket düzenleme,
Grup içi fikir jimnastiği

Eşgüdüm araçları,
Planların gözden geçirilmesi,
Teknik belirtimleri okuma,
Ekip toplantıları.

İnsan yönetimi araçları
Liderlik,
Ekip oluşturma becerileri,
Zaman yönetimi,
İletişim becerileri.
Karar Verme Araçları
Olasılık kavramları,
Yaşam döngüsü maliyet analizleri,
Uzman yazılımlar,
Planlama araçları
Gant ve Pert çizgesi,
Kritik yol yöntemi (CPM),

Risk Yönetimi

Risk yönetimi, ürünün düşünce aşamasından başlayarak müşteriye bir ürün olarak sunulabilmesine kadar tüm aşamaları kapsayan bir süreçtir.

Risk yönetimi hızlı kararlar ve faaliyetlerle sürekli olarak risklerin belirlendiği, hangi risklerin öncelikle çözümlenmesi gerektiğinin değerlendirildiği, risklerle başa çıkmak için stratejiler ve planların geliştirilerek uygulandığı bir sistematiktir.

Belirsizlikleri ve belirsizliğin yaratacağı olumsuz etkileri daha kabul edilebilir düzeye indirgemeyi hedefleyen bir disiplindir.
Risklerin probleme ya da tehlikeye dönüşmeden belirlenmesini ve en aza indirgenmesi, faaliyetlerinin planlanması ve yürütülmesini kapsar. Risk yönetiminin temel hedefi, karar verme mekanizmaları için riskleri görünür ve ölçülebilir hale getirmek, sübjektifliği azaltmaktır.

Proje yöneticisi, risk unsuru taşıyan bir durumla karşı karşıya kaldığında, bu durumun proje üzerinde nasıl ve ne zaman etki yaratacağını görebilmelidir.
Risk yönetimi, proje yöneticisinin daha iyi karar alabilmesini sağlayan bir araçtır.

Risk yönetiminin iki ana unsuru;
Riskin değerlendirilmesi,
Riske karşı planlama yapılmasıdır.

Risk Değerlendirmesi

Ortaya konulan risk kaynaklarının değerlendirilmesi yapılmaktadır.

Risklerin değerlendirilmesinde uzmanların görüşlerinden, benzer sistemlerle ilgili deneyimlerden, önceki projelerden alınan derslerden ve teknoloji değerlendirme raporlarından yararlanılmakta ve yapılan planlar gözden geçirilmektedir.

Risk değerlendirmesi üç adımdan oluşur;
Risklerin tanımlanması,
Analiz edilmesi,
Önceliklerin belirlenmesi,

Risk Değerlendirmesi: Olasılık ve Etki Analizi
Riskin iki temel özelliği vardır. Bunlar;
Belirli bir sonuca ulaşamama olasılığı ya da istenmeyen bir olayın oluşma olasılığı. (Possibility of Occurence – Meydana Gelme İhtimali)
Riskin oluşması durumunda, bu durumların sonuca etkisinden oluşur. (Severity of Loss – Kaybın Büyüklüğü)
Riskler gerçekleşme olasılığı ve risklerin gerçekleşmesi durumunda ortaya çıkacak sonuçların etkileri göz önünde bulundurularak ölçülür.







Risklerin Tanımlanması


Riskin tanımlanabilmesi için, amaçların belirlenmiş olması gerekir.

Amaçlar belirlendikten sonra amaçlara ulaşılmasını engelleyebilecek riskler tanımlanır, değerlendirilir ve alınacak tedbirler kararlaştırılır.

Ürün riskleri:
Projeye ilişkin olarak proje planını tehdit edebilecek özel karakteristik özelliklerin tanımlanması gerekir.

Genel riskler:
Her yazılım projesi için potansiyel tehditlerdir:
Projenin büyüklüğü, müşterinin karakteri, geliştirme ortamı, kullanılacak teknoloji.

Projede risklerle ilgili alınacak önlemler büyük ölçüde risk tanımlarına dayandırılacağı için, risk tanımlama sırasında mümkün olan en az hata ile çalışılmasına dikkat edilmektedir. Risklerin onları yaratan kaynaklar bakımından sınıflandırılarak tanımlanması, hataları en aza indirebilmek bakımından yararlı bir teknik olarak uygulanmaktadır.

Risklerin tanımlanmasında aşağıda verilen soru örnekleri yardımcı olabilir:
Amaca ulaşma yolunda neler yanlış gidebilir?
Sorun nedir?
Hangi tür işlemler başarısız olmamıza neden olabilir?
Zayıf olduğumuz alanlar neler?
Hangi varlıkları daha çok korumalıyız?
Faaliyetlerimiz hangi durum ya da olaylar karşısında aksayabilir?
En kritik bilgi kaynaklarımız neler?
En fazla harcama yaptığımız alanlar hangileri?
Hangi faaliyet ya da süreçler daha karmaşık?
Cezai yaptırımlara maruz kaldığımız alanlar hangileri?

Risklerin Tanımlanması:İş Hayatından Örnekler
Amaç: Kurum içersindeki iş sürekliliğinin sağlanması.
Risk: Aynı dönemde bir çok personelin yıllık izin kullanması nedeniyle işlerin aksaması.
Kontrol: İşlerin yoğun olduğu dönemlerde izinlerin belli bir süre önce talep edilmesi ve buna göre bir takvim çerçevesinde izin kullandırılması.
Sonuç: Müşteri memnuniyeti.

Risk Nedir?


Riskler, yazılım projesinin başarılı bir şekilde tamamlanmasını etkileyecek  potansiyel problemlerdir.

PM-BOK (Project Management Body of Knowledge) riski, projenin hedefleri üzerinde olumlu veya olumsuz bir etki meydana getirebilecek  belirsiz bir durum veya koşul olarak tanımlamaktadır.

Riskler kesin olmayanı ve potansiyel kayıpları kapsar.

Risk analizi ve yönetimi yazılım ekibinin gelişim sürecinde kesin olmayanı anlamasına yardımcı olur.
Risk, kurumun stratejik, mali ve operasyonel hedeflerini gerçekleştirmesini engelleyecek, her türlü olayın gerçekleşme olasılığıdır.

Risk Kategorileri


Zamanlama riskleri; yetersiz zaman ayrılması durumunda karşılaşılan risklerdir.

Maliyet riskleri; maliyetin iyi hesaplanamaması durumunda karşılaşılan risklerdir.

Zamanlama ve maliyet risklerini azaltmak için mutlaka proje planının iyileştirilmesi gerekir.

Proje Riskleri:
Proje planını tehdit eder.
Gerçekleşirse zamanlama ileri tarihlere sarkar ve maliyet artar.
Örnekler: bütçe riskleri, zaman riskleri, personel riskleri, vb.

Teknik riskler:
Üretilen yazılımın kalitesini ve zamanında bitirilmesini etkiler.
Bu riskin gerçekleşmesi durumunda yazılımın uygulanması zorlaşır veya imkansızlaşır.
Analiz, tasarım, uygulama ve bakım aşamaları ile ilgili risklerdir.
Örnek: “Son teknoloji ürünler” yüksek teknik riske sahiptir.
Bug'lar var mı? Dokümantasyonu tam mı? Yarın da bu teknoloji hayatta olacak mı?


İşletme riskleri:
Geliştirilen ürününün gereksinimleri karşılayamaması…

Tahmin edilemeyen riskler; düzen değişiklikleri, doğal afetler, çevresel faktörler,

Tahmin edilebilen (fakat belirsiz) riskler; pazar değişiklikleri, enflasyon, döviz kuru değişiklikleri, vergiler v.b.

Pazar riskleri: Ürüne talep olur mu?
Örn: Tıraş bıçağı, tıraş makinesi

Satış riskleri: Pazarlama ekibi ürünü nasıl satacağını biliyor mu?

Bu tür riskler MIS konularıdır.

Risk Stratejileri

Duyarlı Stratejiler
Yaygın olarak kullanılan bir stratejidir. Genellikle risk gerçekleşince çaresine bakılır.
Proje takımı problemleri çözmek için kullanılacak kaynakları belirler.
Proje takımı risk bir problem teşkil edene kadar bir şey yapmaz.

Proaktif Stratejiler
Riskleri daha gerçeklemeden önlemeye çalışmak…
Risk yönetimi teknik işten çok önce başlar, riskler tanımlanır ve önem derecesine göre öncelik verilir.
Proje takımı risklerden korunmak için bir plan oluşturur.

RİSK YÖNETİMİ

Yazılım projeleri risk içerir mi?
Proje planları çoğu zaman tahminlerle oluşturulur. Yapılan bu tahminler her zaman belirsizlik içerir. Bu belirsizlikler de potansiyel olarak risk oluştururlar.
Riskler, proje gidişini ters yönde değiştirebilir.
Risk Yönetimi bu durumların tanımlanması, değerlendirilmesini önlemek ya da etkisini azaltmak yönünde gerekli denetimlerin uygulanması ve alternatiflerin planlanmasını içerir.
Risk yönetimi, proje yönetimi konusunda en çok bahsedilen ve en az uygulanan alanların herhalde başında gelir. Risk yönetimi zor olduğundan veya uygulanması çok maliyetli ya da zaman alıcı olmasından değil, belki de kavramın kendisinin ürkütücü olmasından kaynaklanıyordur. İşin bir başka kültürel ve proje organizasyonlarına ait boyutu da var sanırım.
Proje risklerinin belirlenmesi, analiz edilmesi, çözümlerin uygulanmasına yönelik süreçler tanımlanır. Risk tanımlama, risk boyutu belirleme, riske karşı planlama ve risk azaltıcı denetim yöntemleri uygulanır.

24 Ocak 2017 Salı

Algoritmik Olmayan Emek Kestirim Yöntemleri

Algoritmik olmayan emek kestirim yöntemleri;
uzman kararı,
benzerlik ile kestirim ve
büyüklük verisi kullanarak kıyaslama’dır.


Uzman Kararı
Uzman kararı yöntemi, yazılım endüstrisinde emek kestirimi için en çok kullanılan yöntemdir.
Yıllardan beri proje yöneticileri kendi deneyimlerine güvenmişlerdir. Uzman kararında, pek çok uzman önerilen yazılımın uygulama alanı ve geliştirme tekniklerine göre proje emeğini tahmin etmektedir.

Yeni proje daha önce tamamlanan projelerden çok farklı değilse ve deneyimli kestirimciler mevcutsa, emek kestirimi için en uygun yöntem uzman kararıdır.
Ancak, kestirimde uzman kararını kullanmanın bazı zorlukları da vardır. Bu kişisel bir kestirim olacaktır. Her yeni proje için çok deneyimli kestirim yapabilecek kişi bulmak zordur. Sonuç ortaya çıkana kadar uzmanın görüşünü test etmenin hiçbir yolu yoktur ve bu çok geç olabilir. Eğer uzman yoksa, çok yanlış olacaktır.


Benzerlik ile Kestirim
Bu yöntemde, projelere ilişkin pek çok nitelik tanımlanır.
Bu nitelikler tamamlanmış projeler arasından yeni projeye en çok benzeyen projeleri belirlemek için kullanılır.
Yeni projenin emek kestirimi, yeni proje ile tamamlanmış projeler arasındaki farklılıklar dikkate alınarak belirlenir.
Benzerlik esaslı kestirim için, daha önce tamamlanmış benzer projelere ait geçmiş veriler gereklidir. Bu nedenle, bu kestirim yöntemi tamamlanmış projelere ait verileri tutan veri tabanlarına gereksinim duymaktadır.
Benzerlik esaslı kestirim, bütün proje seviyesinde veya alt sistem seviyesinde gerçekleştirilebilir. Bütün proje seviyesini esas alan kestirimler, sistemin tüm maliyet bileşenlerini dikkate alır. Diğer taraftan, alt sistem seviyesini esas alan kestirimler, yeni proje ile tamamlanmış projeler arasındaki benzerlikler ve farklılıkların daha detaylı bir değerlendirmesini sağlamaktadır.

Büyüklük Verisini Kullanarak Kıyaslama
Bu yöntem,  verimliliğin bir uygulama alanı ve büyüklük fonksiyonu olduğu düşüncesini temel almaktadır.
Aşağıda verilen formüle göre, büyüklük verisini kullanarak kıyaslama ile emeği hesaplamak çok basittir;
Emek Tahmini = Proje Büyüklüğü / Teslimat Oranı