Visual Studio Code

30 Haz

indirProgramlama dillerinin platform bağımsız bir alana taşınmaya başladığı günümüzde kod geliştirme disiplinleri de baştan aşağı değişiklik göstermektedir. Bir programlama dili ile geliştirme yapmak için her türlü işletim sistemi kullanılabilir olmalıdır. Son bir kaç yılda Microsoft teknolojileri de bu değişime  ayak uydurarak açık kaynak ürünler ve platform bağımsız teknolojiler üretmeye başlamıştır. Microsoft .Net ile artık Mac ve Linux platformlarında geliştirme yapmak mümkün hale gelmiştir. Şu anda (2016 Haziran) Visual Studio Code 1.2.1 sürümü ile yayınlanmıştır.

Adsız

Geliştirme altyapısının platform bağımsız bir yapıya büründüğü Microsoft tarafında geliştirme ortamı da her platformda çalışabilecek bir ürün olan  Visual Studio Code ile desteklenmiştir. Visual Studio Code hızlı, hafif olmanın yanında Microsoft, Linux ve Mac işletim sistemlerinde çalışabilen bir araçtır. Kurulum yapıldığında  basit bir metin editörü görüntüsü ile karşımıza çıkan ürün, eklentiler sayesinde Nodejs, Ruby, Python, C/C++, C#, Javascript gibi bir çok programlama dilini desteklemektedir. Yani klasik Visual Studio ürünleri gibi her şeyi bünyesinde barındırmak yerine çekirdek bir yapı ile başlatılıp lazım olan parçaların eklentiler halinde ürüne eklenmesi sağlanarak mantıklı bir hareket yapılmıştır. Eklentilerin indirilebildiği bir market ortamı oluşturulmuştur.

Visual Studio Code ürününün başlıca özellikleri:

  • Hızlıdır.
  • Platform bağımsız kod geliştirebilmeyi destekler.
  • Code Debugger desteği vardır.
  • Zengin bir kod tanıma(code intellisense) içeriği vardır.
  • Zengin bir kod refactoring desteği vardır.

Windows 10 ve Linux Ubuntu dağıtımında Visual Studio Code kurulumunu ve denemelerini yapsam da henüz Mac versiyonunu deneme şansı bulamadım.

Adsız

ilk izlenimlerime göre klasik Visual Studio 2012,2013 serisinden sonra bu ürünü kullanmak insana ilk başta biraz eziyet gibi geliyor. Çünkü eski alışkanlıklar yüzünde insanın gözü dolu dolu bir IDE arayüzü aramaya başlıyor. Ardından kendinize gelip bunun bir IDE değil editör olduğunu hatırlıyorsunuz.

SSL Güvenlik Protokolü ve SSL Sertifikası

29 Haz

İş dünyasının ve ticaretin internet ortamına taşındığı günden itibaren internetin güvenliği sürekli sorgulanmıştır. Milyonlarca internet site arasından müşteri bilgilerinin güvenliğini ve mahremiyetini sağlayanlar öncelikli olarak tercih edilmiş ve rekabette bir adım önde olmuştur.

İnternet üzerinden yapılan iletişimin güvenliği noktasında iki önemli soruna çözüm bulunmalıdır.

  1. Veri gönderen ve alan tarafın, iletişim süresi boyunca birbirlerini tanıdıklarından emin olmaları gerekir. Alıcı tarafın, üçüncü şahıslar olması durumunda kişisel bilgiler, hesaplar gibi önemli verilerin güvenliği tehlikede demektir.
  2. Alıcı taraf, gönderilen verinin iletişim yolu üzerinde hiç değiştirilmeden geldiğinden emin olmak durumundadır.

Uzmanlar güvensiz ağ üzerinde güvenlik üzerinde kafa yorarak http protokolüne güvenlik mekanizmasını ekleyip https protokolünü oluşturmuşlardır.

  • http: hyper text transper protocol.
  • https: secured  hyper text transper protocol.

HTTP Protokolü

Protokol kavramı bilgisayar dünyasında gerçek hayatta ki sözlük anlamından farksızdır. Günlük hayatta protokoller iki taraf arasında uyulacak kuralları belirlemek amacıyla imzalanan anlaşma metnidir. Bilgisayar dünyasında ise haberleşen taraflar arasında belirlenen dijital iletişim kurallarıdır. Gönderen tarafın ve alıcı tarafın ilgili protokol kurallarına göre veri göndermesi ve alması gerekmektedir. HTTP protokolü sunucudaki 80 numaralı port üzerinden haberleşir.

HTTP protokolü, belli kurallar dahilinde istemci ve sunucu arasında talep/cevap göndermeyi sağlayan bir protokoldür.

https-ranking-signal-02 - Kopya

Örneğin bir tarayıcı sunucuya gönderdiği talepte protokol gereği şunları söyler:

  • Benim metodum GET,
  • Ulaşmak istediğim kaynak URL şudur,
  • QueryString parametrelerim şunlar,
  • Kabul ettiğim Accept-Encoding gzip, deflate
  • Tarayıcı dilim en-EN
  • Tarayıcı bilgilerim şunlar gibi.

HTTP protokolünün kurallarını, sunucu bilgisayar da bildiği için tarayıcının ne söylediğini anlayabilir ve ona göre ilgili kaynaktaki bilgiyi cevap olarak geri gönderir.

HTTP protokolü güvenlik gerektirmeyen bir ağ üzerinde çalışabilmek amacıyla tasarlanmıştır.

HTTPS Protokolü

HTTPS protokolünün oluşturulma amacı güvensiz bir ağ ortamında güvenli bir iletişim yolu oluşturmaktır. Çünkü HTTP protokolü man-in-the-middle diye tabir edilen saldırılara açıktır. Bu tür saldırılarda ağı dinleyen saldırganlar, kişisel hesap bilgilerini ve parolaları kolay bir şekilde ele geçirebilirler. HTTPS bu tür saldırılardan korunmak amacıyla tasarlanmış bir protokoldür. HTTPS = HTTP + SSL şeklinde bir formül ile ifade edebiliriz. HTTPS protokolü sunucudaki 443 numaralı port üzerinden haberleşir.

https-ranking-signal-02

Bir web sitesinde https protokolünün kullanılmasını gerektiren durumlar özetle şu şekildedir.

  • E-ticaret ve ödemek işlemleri gerçekleştirilen sitelerde maddi kayıpları önlemek amacıyla kullanılır.
  • Kişisel hesapların oluşturulduğu sitelerde kişisel verilerin korunması ve kullanıcı güvenliği amacıyla kullanılır.
  • Kullanıcıların kötü niyetli şahıslar tarafından oluşturulan benzer sitelere gitmesini engellemek için bilgilendirmek amacıyla kullanılır.

https ile veri mahremiyeti ve bütünlüğünü sağlamak amacıyla verinin şifrelenmesi ve iletişime geçilen sunucuların güvenliği doğrulanmış olması gerekmektedir. Veri şifrelemesi için doğrulanmış ve güvenilir sunucu sertifikaları kullanılır. Bu sertifikalara SSL sertifikaları denir. SSL sertifikaları, SSL protokolünün bir parçasıdır.

SSL Protokolü

SSL protokolü, ağ üzerinden gönderilen bilginin sadece doğru adreste deşifre edilerek okunabilmesi amacıyla tasarlanmış kriptolama protokolüdür. Protokol kuralları gereği gönderilen bilgi gönderici tarafında şifrelenir, ve sadece ulaşması istenen tarafta deşifre edilmesi garanti altına alınır. Böylece her iki tarafta doğrulamalar yapılarak veri mahremiyeti ve bütünlüğü sağlanmış olur.

ssl

Veri şifrelemede güvenliğin seviyesi şifreleme anahtarının uzunluğuna göre değişir. Örneğin 8 bit anahtar 0-255 arası değerler alacağından 256 olasılık sıra ile denenerek anahtar bilgisi elde edilebilir. SSL protokolünde genelde 128 ve daha fazla bit ile şifreleme kullanılır. 128 bit şifreleme durumda 2128 adet değişik anahtar kullanılmaktadır. 128 bitlik şifrenin çözülmesi için çok büyük yatırım maliyetleri ve çok uzun süre gereklidir.

SSL protokolü ile iletişim kurulabilmesi için SSL sertifikalarına ihtiyaç duyulur ancak olmazsa olmaz bir şart değildir.

SSL Sertifikaları

SSL Sertifikaları, internet işlemlerini güvenli hale getiren veri şifreleme işleminin önemli bir bileşenidir. Sertifikalar, veri gizliliğini ve bütünlüğünü sağlamak amacıyla web sitelerinin kimlik bilgisini doğrulayan dijital belgelerdir. SSL sertifikaları SSL protokolü aracılığıyla kullanıcıların güvenli bir oturum başlatmalarını sağlar. Sertifika olmadan şifreleme anahtarları ve web sitesini tanıtan şirket bilgileri olmayacağından güvenli bir bağlantı sağlanamaz.

Sertifikalar tanınmış resmi kuruluşlar tarafından sağlanır. Bu kuruluşlara Certificate Authority(CA) denir. Sertifika içeriğinde veri şifreleme için kullanılacak olan bir public key ve sertifika veren kuruluş bilgileri bulunur. Sertifika veren kuruluşlar istemci bilgisayarların sertifika depolarında bulunduğundan sunucu ile iletişime geçen bir internet tarayıcısı bize ilgili sitenin sertifikasının güvenilir bir kuruluş tarafından verilip verilmediğini veya geçerli olup olmadığını uyarılar şeklinde belirtir.

HTTPS ile Güvenli İletişimin Adımları

HTTPS protokolü üzerinden bir internet tarayıcısı ve sunucu arasında gerçekleştirilen iletişim adımları şu şekilde gerçekleşir.

https://www.thesslstore.com/blog/wp-content/uploads/2016/02/howsslworks-1.png
https://www.thesslstore.com/blog/wp-content/uploads/2016/02/howsslworks-1.png

 

Adım-1: İstemci internet tarayıcısında https protokolü üzerinden sunucuya bir talep gönderir.

Adım-2: Sunucu kendisine ait şifreleme yöntemini belirten genel anahtarı(public-key) bulunduran bir sertifikayı istemciye gönderir.

Adım-3: İstemci tarayıcısı, sertifikanın:

  • Güvenli bir CA tarafından üretilip üretilmediğini,
  • Sertifikanın hala geçerli olup olmadığını,
  • Sertifikanın ilgili siteye ait olup olmadığını kontrol eder.

Adım-4: Tarayıcı public-key kullanarak rasgele simetrik şifreleme ile bilgileri şifreleyerek sunucuya gönderir.

Adım-5:Sunucu simetrik şifreyi private-key yardımı ile çözerek veriye ulaşır.

Adım-6: Sunucu istemciye html dökümanını şifreleyerek geri gönderir.

Adım-7: İstemcinin internet tarayıcısı şifreyi çözerek html dökümanını görüntüler.

LINQPad Programcıların Oyun Alanı

25 Haz

LINQPad yazılımı, SqlServer, Oracle, OData servisleri gibi veri kaynakları üzerinde LINQ sorgularını kullanarak sorgular çalıştırabilen ve C#, VB, F# gibi programlama dillerini destekleyen bir editördür.

LINQPad ile desteklenen diller ve gerçekleştirilebilecek operasyonlar seçenekler halinde geliştiricilere sunulmuştur.

  • C# Expression
  • C# Statements
  • C# Program
  • VB Expression
  • VB Statements
  • VB Program
  • SQL
  • ESQL
  • F#Expression
  • F# Program

Adsız

Geliştiriciler olarak hızlı bir şekilde denemeler yapmak istediğimiz durumlar olabilir. Bu durumda hemen Visual Studio arayüzünde bir proje oluşturarak ya da mevcut bir proje üzerinde merak ettiğimiz kodları çalıştırmak durumunda kalırız. Ancak LINQPad ile hızlı bir şekilde istediğimiz sonucu hemen görebiliriz.

Örneğin C# LINQ ile rasgele şifre üretmek için hemen bir deneme yapmak istersek:

Adsız

Yazmak istediğimiz ifadeleri tamamladıktan sonra sonucu görmek için sadece .Dump() extension metodunu çalıştırmak yeterlidir.

Harici kütüphaneleri ve Nuget paketlerini referans olarak LINQPad’e eklemek ve çalıştırabilmek mümkündür.

 

Kitap – Refactoring Martin Fowler

24 Haz

DSC_1348

Martin Fowler imzalı Refactoring, temel ilke mevcut kodun iyileştirilmesi amacıyla kod işlevini değiştirmeden yeniden yapılandırılmasını hedeflemektedir. Kitabın temel iddiası, çalışan programların çeşitli nedenlerle kötü tasarlanmış olmasıdır.

Çok büyük yapıdaki metod veya fonksiyonların beklenmedik bir şekilde programda karmaşıklığa yol açacağı aşikardır. Martin Fowler’a göre Refactoring işlemi, metodun çalışmasını etkilemeden fonksiyonelliğini koruyarak dönüştürmektir. Dönüşüm ile koda yeni işlevselliklerin kolay bir şekilde kazandırılabilmesi ve kodun okunabilirliğinin sağlanması  amaçlanmaktadır. Küçük adımlarla işlevselliğin korunarak kod paketi sık sık birim testlere tabi tutulmalıdır. Kitapta Java programlama dili ile geliştirilmiş örnek uygulamalar ile anlatım güçlendirilmiştir.

15 bölümden olşumuş kitaptaki bölümler, refactoring işlemlerin adımları küçük adımlarla vevörnek uygulamalar ile  anlatılmıştır. Kodun temiz, okunabilir, test edilebilir bir şekilde düzenlenmesi amaçlanmıştır.

Kitapta ele alınan konuların bir kısmı, farkındalık açısından her programcının bilmesi gereken teorik bilgilerdir. Ancak bana göre günümüzde kullanılan gelişmiş IDE’ler veya Resharper tarzı IDE eklentiler, değişkenlerin yeniden adlandırılması, kod tekrarları, sınamaların kısa ifadeler şeklinde sadeleştirilmesi gibi işlemleri otomatik olarak geliştiriciye önermekte ve isterse otomatik olarak kodu düzenlemektedir. Bekli bu gibi bölümler bir süre sonra geliştiriciler açısından okunmaya değmez bölümler olarak algılanabilse de bence okumakta fayda var diyebilirim.

Javascript Touch Events

22 Haz

Javascript kullanana uygulamaları kişisel bilgisayarların tarayıcılarında kullanırken yakalanabilen mouse olayları(events)mobil platforlarda mümkün olmamaktadır. Bunun yerinde mobil veya dokunmatik platformlarda touch(dokunma) olayları yakalanabilmektedir.

touchevents
Resim Kaynağı: http://www.girliemac.com/assets/images/articles/2013/04/touchevents.png

 

Mouse hareketlerinde olduğu gibi dokunmatik ekranlarda da javascriptin bizlere sunduğu touch down, touch move, touch end gibi olay yakalama(event handling) seçenekleri vardır.

Olay Açıklama
touchstart Kullanıcı ekrana bir veya daha fazla parmağını ekrana dokunduğunda gerçekleşir.
touchmove Kullanıcı ekranda parmağını dokunarak hareket ettirdiğinde, sürüklediğinde gerçekleşir.
touchend Kullanıcı ekrandan parmağını çektiğinde gerçekleşir.
touchcancel Ekrandaki temas noktası kesintiye uğradığında gerçekleşir.

 

touchstart

function start() {
   // Dokunulacak element referans olarak alınır.
   var touchElement = document.getElementById("touchelement");
 
   // Referans alınan elemente event handler eklenir.
   touchElement.addEventListener("touchstart", touchHandler, false);

   function touchHandler(event) 
   {
       e.preventDefault();

       console.log("I am touch start event");
  } 
} 

touchmove

function start() {
   // Dokunulacak element referans olarak alınır.
   var touchElement = document.getElementById("touchelement");
 
   // Referans alınan elemente event handler eklenir.
   touchElement.addEventListener("touchmove", touchHandler, false);

   function touchHandler(event) 
   {
       e.preventDefault();

       console.log("I am touch move event");
  } 
} 

Bu olayların hepsi bazı tarayıcıda çalışmayabilir. Ancak ilk üç olay(event) genelde tüm tarayıcılarda çalışır.

Olayları Chrome Internet tarayıcısında test etmek için F12 ile geliştirici araçlarında bulunan “Toggle Device Toolbar” seçeneği kullanılabilir. Bu seçenekte değişik mobil cihazların simülasyonu gerçekleştirilmektedir.

Adsız

Burada not olarak belirtmekte fayda var ki touchcancel olayını çalıştırmak için ekranda touchmove hareketini yaparken mouse sağ tuşuna basmanız yeterli olacaktır. Bu durumda ekranda ki temas noktası bozulmaya uğrar ve touchcancel olayı tetiklenecektir.

Yazılımda Arayüz Değerlendirmesi

21 Haz

Bir sistemin değelendirilmesi, sistemin kalitesi hakkındaki bilgilerin toplanması ile gerçekleştirilebilir. Sistemin kalitesi belli değerlendirme kriterleri neticesinde ortaya çıkan bir disiplindir. Kaliteli bir sistem, müşteriye işin ciddiyetini ve önemini yansıtan bir göstergedir.

Genel olarak bir sistemin kalitesini ortaya koyan kriterler şu şekildedir:

  1. Fonksiyonellik: Sistemin istenen fonksiyonları içermesi ve yerine getirebilmesidir.
  2. Kullanılabilirlik: Sistemin iş süreçlerinde görevlerini yerine getirebilmesidir.
  3. Bakılabilirlik: Sistemin desteklenmesi ve gerekli değişikliklerin yapılabilmesi imkanıdır.
  4. Güvenilirlik: Sistemin her zaman aynı doğrulukta ve yeterlikte sonuçlar verebilmesidir.
  5. Taşınabilirlik: Sistem farklı ortamlara adapte olabiliyor mu?

Bu özellikleri taşıyan bir sistem kaliteli bir sistem olarak değerlendirilir.

Yazılımda Arayüz Değerlendirme İlkeleri

Arayüz yazılımın kullanıcı ile iletişim halinde olan bölümüdür. Bu nedenle arayüz değerlendirmesi daha çok sistemin kullanıcı tarafından algılanan kalitesini incelemeyi hedefler. Yukarıda tanımlanan kalite kriterleri kullanıcı tarafından yazılım arayüzünde değerlendirilir. Değerlendirmenin doğru yapılması ile sistem daha kullanılabilir ve faydalı geliştirmelerin sistem üzerinde yapılabilmesi sağlanır.

Bir arayüzün değerlendirmesi ilgili kriterlere uygunluğun incelenmesi ve kullanıcı kabul testlerinin yapılması adımlarını içerir. Yalnızca kullanıcı testleri ya da prensiplere uygunluğun değerlendirilmesi yeterli değildir. Arayüz tasarımının farklı aşamalarında arayüz değerlendirilmesi yapılır. İdeal olarak birinci değerlendirme herhangi bir uygulama programı yapılmaya başlamadan gerçekleştirilmelidir. Son değerlendirme ise sistemin aktif olarak kullanımı sırasında yapılmalıdır. Bunlara ek olarak tüm tasarım ve uygulama sürecinde, sürekli olarak çeşitli aşamalarda arayüz değerlendirmesi yapılmalıdır.

Buluşsal (Heuristic) Değerlendirme

Bir arayüz tasarımının buluşsal değerlendirmesi, göreceli olarak basit kılavuz kurallara göre bu kurallara uygunluğun belirlenmesi biçiminde gerçekleştirilir. Bu kılavuz kurallar yardımı ile sistem farklı değerlendiriciler tarafından değerlendirilir. Bu değerlendiriciler genellikle kullanıcı arayüz tasarımı ve insan bilgisayar etkileşimi konularında tecrübeli uzmanlardan seçilir. Programcı veya sitemin gerçek hayattaki kullanıcıları olmak zorunda değildir.

Buluşsal değerlendirme, tasarımın ilk aşamalarında gerçekleştirilmelidir, çünkü ciddi kullanım problemlerinin erken aşamada bulunması, bu problemlerin daha kolay çözümlenmesini ve bazı durumlarda göz ardı edilmemesini sağlar.

Problemin ciddi boyutları değerlendirilmeli ve tasarımcılarla problemin ortadan kaldırmanın zorluğu hakkında tartışılmalıdır.

Değerlendirme Kuralları

1- Sistem Durumunun Görünürlüğü

Kullanıcılar sistemde ne olup bittiği hakkında bilgilendirilmelidir. Arayüze yerleştirilen durum göstergeleri, ilerleme çubukları gibi görev tamamlama durumunu ifade eden arayüz bileşenleri kullanılabilir.

2-Gerçek Hayat ve Sistem Arasındaki Uyum

Kullanıcının gerçek hayatta kullandığı kelimelerin seçilmesine özen gösterilmelidir. Tasarımcı olarak kendi anlayacağımız ifadeleri kullanıcıya sunmamız hatalı sonuçlara yol açabilir.

Örneğin arayüzdeki düğmelerde veya araç çubuklarında kullanılan ikonlar gerçek hayata dair figürler içerir. İnternet tarayıcılarında, geçmişte kullanılan sayfalar menüsüne ait düğmeler saat veya zaman ifade eden resimler içerirler. Ya da bir bankamatik arayüzünde kullanılan metinler ve düğmeler yaşlı-genç her yaştan kullanıcının bu sistemi kullanabileceği hesap edilerek tasarlanmalıdır.

3-Kullanıcı Kontrolü ve Özgürlüğü

Arayüzlerde geri alma ve yeniden yapma işlemlerinin desteklenmesi ve ihtiyaç halinde kullanıcılara “acil çıkış”, “geri dönüş” gibi olanakların sağlanması gereklidir. Böylece hata durumlarında kullanıcılar yaptığı işleri geri alabilir ve hata yapmaktan korkmazlar. Aksi halde kullanıcı kendini güvende hissedemeden hareket edecektir.

4-Tutarlılık ve Standartlara Uygunluk

Aynı platform üzerinde farklı yorumlara yol açmayacak anlamlı bileşenler kullanılmalıdır. Kullanıcılar aynı anlama gelen farklı kelimelerin aynı işi mi yoksa farklı işi mi yaptığını çözmeye uğraşmamalıdır. Arayüzde kullanılan ikon ve arayüzler de dahil olmak üzere bir standarta uygun olmalıdır.

Örneğin yenile butonunda bulunan ifade hemen hemen bütün yazılımlarda aynı resimle veya metinle ifade edilir. İnternet Explorer ve Google Chrome kullanıcıları sayfayı yeniden yükleme, ileri, geri gibi işlemlerine farklı platformlar olsa da hemen adapte olabilmektedirler. Her iki platformda da ikonlar üzerindeki ifadeler aynıdır.

5-Hata Önleme

Tasarımlar yapılan hataların düzeltilmesi hedeflenerek değil, hataların daha yapılmadan engellenmesi hedeflenerek gerçekleştirilmelidir.

Örneğin bir işlem sırasında kullanılmayacak olan komut düğmelerinin pasif durumda olması yanlış kullanıcının işlemler yapmasını engeller. Ancak düğmenin aktif olarak bırakılıp kullanıcı tıkladığında “Bu işlemi bu aşamada gerçekleştiremezsiniz!” şeklinde uyarı vermek doğru değildir.

6-Hata Fark Etme

Hatırlamadan daha çok fark etme ve seçmeye ağırlık verilmelidir. Nesneler, aksiyonlar, komutlar ve opsiyonlar kolayca görülür bir biçimde sunulmalıdır.

Örneğin menü ve araç çubuklarında kullanıcıların kolayca fark edeceği  seçenekler sunulur.

7-Kullanımın Esnekliği ve Verimliliği

Arayüzler tek düzey kullanıcılara hitap edecek şekilde tasarlanmamalıdır. Hem deneyimli kullanıcıların, hem de deneyimsiz kullanıcıların kendilerince kolay kullanabilecekleri biçimde tasarlanmalıdır. Sık kullanılan komutlar ve komut bileşimleri için kişiselleştirme olanakları tanınmalıdır.

Örneğin kullanıcı bir komutu menüden seçebilir, kısa yol tuşu kullanabilir ya da hızlandırma tuşları ile klavye yardımıyla fare kullanmadan menüdeki aynı komutu seçebilir. Deneyimli kullanıcıların daha çok kısa yol tuşlarını kullandıkları gözlenmektedir.

8-Estetik ve Minimalist Tasarım Yaklaşımı

Çok fazla ihtiyaç duyulmayan ya da arada bir ihtiyaç duyulan bilgiler her seferinde ekranda gösterilmemelidir. Kullanıcıya olabildiğince az sayıda seçenek sunulur ancak ihtiyaç duyulduğunda bir düğme yardımıyla ek seçenekler görüntülenir.

9-Hata Mesajları

Kullanıcıların hatalarını fark etmeleri, çözümlemeleri ve bu hataları düzeltebilmeleri için gerekli yardım yapılmalıdır. Bu amaçla hata mesajları, kullanıcıya neyi yanlış yaptığını bildiren ve nasıl düzeltebileceğini açıklayan bilgiler içermelidir. Bu mesajlar kullanıcının diliyle kullanıcıya verilmelidir. Aksi halde ingilizce bilmeyen biri ingilizce bir mesajı anlayamayacaktır.

10-Dokümantasyon ve Yardım

Kolayca arama yapılabilir bir yardım sunulmalı, bu yardım kullanıcının yapmakta olduğu işe yönelik özelleştirilmiş olmalıdır. Örneğin F1 tuşu neredeyse tüm programlarda ortak bir şekilde kullanıcıya “yardım “ekranını gösterir.

Buluşsal Değerlendirmenin Tamamlanması

Buluşsal değerlendirmede izlenmesi gereken dört adım vardır.

Adım-1

Değerlendirme yapan kişinin sistemin konusu hakkında ve değerlendirilen konu hakkında yeterli bilgi sahibi olması gerekmektedir. Eğer bilgi sahibi değilse bu konuda kesinlikle bilgilendirilmelidir.

Adım-2

Değerlendirmelerin değerlendiriciler tarafından birbirinde bağımsız olarak yapılması mutlaka sağlanması gereken şarttır. Bağımsız olarak yapılan değerlendirmeler daha sonradan birleştirilmelidir. Her değerlendirici görmüş olduğu problemin bir listesini hazırlamalıdır.  Örnek: “Font rengi ve boyutunun sayfasan sayfaya farklılık arzetmesi, tutarlılık ve standartlara uyum ilkesini ihlal etmektedir.” Önerilen çözüm ortak font stilinin oluşturulmasıdır.

Adım-3

Her probleme, problemin ciddiyetini belirleyen bir numara verilmelidir. Örnek numaralandrıma:

  • 0: Değerlendiriciler arasında problemin arayüz problemi olup olmadığı konusunda hemfikir olamadıkları hafif problemler.
  • 1: Kozmetik problem.
  • 2: Küçük kullanılabilirlik problemi.
  • 3: Ciddi kullanılabilirlik problemi. Düzeltilmesi çok önemlidir.
  • 4: Felaket derecede problem. Mutlaka düzeltilmelidir.

Örneğin:

  • Problem: Silme işleminde uyarı mesajı verilmiyor.
  • İhlal Edilen Değerlendirme Kuralı: 1
  • İhlal Edilen Ciddiyet: 2
  • Not: Tasarımcının bunu düzeltmesi rica edilir.

Adım-4

Tasarım ekibi ile tartışma oturumu yapılır. Bu tartışmada kullanılabilirlik problemlerinin düzeltilmesi için izlenecek adımlar veya bunu düzeltmenin zorluğu ve maliyeti hesaplanır.

Buluşsal değerlendirmenin, hızlı değerlendirme yapabilme ve yüksek getiri sağlayan bir yönü vardır. Ancak değerlendiricilerin uzmanlık alanı uyuşmazlığı sebebiyle bazı problemler gözden kaçabilir.

JSON Web Token – JWT

19 Haz

JSON Web Token OAuth protokolü üzerinde veri değiş tokuşu sırasında kullanılan JSON formatında veriler içeren veri yapılarıdır.

JSON Web Token, Web içerik kaynağına erişmek için kullanılan bir bilet gibi düşünülebilir. Erişilmek istenen Web kaynağı, bir servis veya web sitesi olabilir. Kaynağa erişmek isteyen kullanıcı uygulamanın, doğrulanmış ve yetkili olup olmadığını tanıtan bir kart gibi düşünebiliriz. Genel olarak access token olarak da adlandırılır.

Token Kullanım Amacı

JSON Web Token kullanım amacı güvenliği sağlamaktır. Web Api gibi kaynaklara erişim talepleri mobil, SPA (Single Page Application)  veya Web sitesi gibi uygulamalardan yapılabilmektedir. Sınırlı erişime sahip yada kullanıcı doğrulama gerektiren Web Api kaynağına yapılan her talep(request) bünyesinde bir erişim bileti(access token) bulundurmak zorundadır.

  • Güvenlik amacıyla kullanılan veri yapılarıdır.
    • İçeriğinde issuer ve subject (claims) bilgileri bulunur.
    • Simetrik veya asimetrik imzalar içerir.
    • Kullanım bitiş süresi(expiration time) içerir.
  • Kullanıcı(Client) uygulama, token talebini yapan taraftır.
  • Yayıncı(issuer), kullanıcıya token veren taraftır.
  • Kaynak(resource) token bilgisini kullanan taraftır.
    • Yayıncı(issuer) ile güvenli bir iletişim içerisindedir.

Token Yapısı

encoded-jwt3

Access token şifrelenmiş ve nokta(.) ile ayrılmış üç bölümden oluşur ve her bir bölüm, kendine has bilgiler barındırır. Bunlar:

  1. Header
  2. Payload
  3. Signature şeklindedir

Bir token içeriğinde bulunan bilgiler şifre çözülerek edilerek elde edilebilir. Online olarak bu işlemi gerçekleştirmek için jwt.io kullanılabilir.

legacy-app-auth-5

Bir JWT kendisi ile ilgili bilgileri bünyesindeki ilgili bölümde barındırır.

JWT Header Bölümü: İki kısımdan oluşur

  • Tür bilgisi (Örnek: JWT)
  • Şifreleme algoritma bilgisi (Örnek: HMAC, SHA256)

JWT Payload Bölümü: Bu bölümde uygulamalar için gerekli bilgiler bulunur. JWT Claims olarak da adlandırılır. JWT Claims üç farklı bölüme ayrılmıştır.

1- Registered Claims: Bu bölümde bulunabilecek içerik bilgisi aşağıdaki gibi olmakla beraber hepsinin kullanılması zorunlu değildir.

  • iss“(issuer): Token üreten yayıncı.
  • sub“(subject): Token başlığı.
  • aud“(audience): Token alıcısı.
  • exp“(expiration time): Token bitiş süresi.
  • nbf“(not before): Belirtilen tarihten önce kullanılamaması.
  • iat“(issued at): Token yayınlanma zamanı.
  • jti“(JWT ID): Unique identifier.

2-Public Claims: Bu bölümde tanımlanan bilgilere URI veya URN şeklinde adlandırma yapılarak token gönderen ve alan tarafların aynı ağda olmadığı durumlarda namespace belirteci ile çarpışmalar önlenebilir. Örneğin: https://www.bayramucuncu.com/jwt_claims/is_admin

3-Private Claims: Genelde kurumsal özel ağlarda kullanılan ve token üretici ve tüketicisi arasında kullanılan özel isimlerdir.


{
    "iss": "bayramucuncu.com", //Registered Claim
    "exp": 123456789, //Registered Claim
    "https://bayramucuncu.com/jwt_claims/is_admin": true, // Public Claim
    "username": "bayram", // Private Claim
    "user_id": "7617dfa9-9084-4e1e-8140-e1dc161ac594" // Private Claim
} 

JWT Signature Bölümü:

Bu bölüm JWT için imza niteliğindedir ve üç bölümün şifrelenmiş olarak birleştirilmesinden oluşur.

  1. JWT Header
  2. JWT Payload
  3. Secret

Örneğin HMAC SHA256 algoritması ile şifreleme yapmak için aşağıdaki yol izlenebilir.

  HMACSHA256(
    base64UrlEncode(header) + "." + base64UrlEncode(payload),
    secret
  )

Token imza bölümü gönderenin kim olduğu bilgisini içerir ve bilginin yolda gelirken değiştirilmediğini garanti altına alır.

Token elde etme süreci nasıl işler?

jwt-diagram

Adım-1: İstemci (client)tarafından JWT üreten sunucuya kullanıcı adı ve şifre ile birlikte POST talebi gönderilir.

Adım-2: Eğer kullanıcı bilgileri doğru ise sunucu istemciye bir JWT gönderir. 

Adım-3: Elde edilen JWT bilgisi ile artık istenen kaynaktan veri elde etmek mümkündür. Kullanıcı tarafı, yeni bir talep gönderirken JWT bilgisini talebin HTTP header bölümüne ekler ve talebi kaynağa iletir.

Adım-4: Sunucu JWT kontrolü sonrasında istemciye cevabı geri gönderir.

JWT Kullanmanın Avantajları

  • Kaynak tarafında oturum yönetimi(session management) yoktur.
  • Cookie kulanımına gerek yoktur.
  • Kaynaklar farklı domainlerde olsa bile tek bir token ile birden fazla kaynağa ulaşmak mümkündür. Çünkü JWT üreten sunucu diğer sunuculardan tamamen bağımsızdır ve her kaynak JWT doğrulamasını JWT üreten sunucudan yapar.
  • Mobil uyumludur. iOS, Android, Windows Mobile gibi ortamlarda token kullanarak kaynağa erişim sağlamak mümkündür.
  • Her token kendi bitiş süresine sahiptir ve logout gibi işlemlere gerek yoktur. Süresi bitmiş bir Token ile kaynağa erişim mümkün değildir.
  • Performansı yüksektir.
  • RFC tarafından standartlaştırılmıştır. Standart kodu RFC 7519‘dur.

Kaynaklar:

  • https://jwt.io/introduction/
  • https://jwt.io/
  • https://tools.ietf.org/html/rfc7797
  • http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html#RegisteredClaimName
  • https://auth0.com/blog/2014/12/02/using-json-web-tokens-as-api-keys/

IIS ile Self Signed Certificate Oluşturma

17 Haz

Self Signed Certificate yani Otomatik Olarak İmzalanan sertifikaların IIS yardımı ile oluşturulması adımları aşağıdaki gibidir.

IIS ana penceresinde bulunan “Sunucu Sertifikaları” bölümüne girilir.

1

Bu bölümde ki sağ pencerede bulunan “Otomatik Olarak İmzalanan Sertifika Oluştur” seçeneği seçilir.

2

3

Otomatik imzalanan sertifika oluşturma penceresinde bir sertifika adı ve sertifika deposu seçilir.

4

Oluşturulan yeni sertifika artık Sunucu Sertifikaları listesinde görünmektedir. Sağ bölümde bulunan “Dışarı Aktar” seçeneği ile açılan pencerede sertifikanın nereye aktarılacağı ve şifresi belirlenir.

5

Sertifika”C:\Temp\” dizini altına başarılı bir şekilde oluşturulmuştur. Sertifikayı Base64 olarak kodlanmış bir metin halinde almak için kullanılabilecek C# kodu:


Convert.ToBase64String(File.ReadAllBytes(@"C:\\Temp\B3CERT.pfx"));

 

Yazılımda Bakım Süreci ve IEEE 1219 Standardı

16 Haz

Sınama işlemleri bitirilen yazılımın kullanıcı ortamına yüklenmesi ve uygulamanın başlatılması gerekmektedir. Kullanıcı ortamı sunucu, desktop veya mobil platformalar olabilir. Yazılım devreye alındıktan sonra, yaşam döngüsünün en önemli ve hiç bitmeyecek aşaması olan “bakım” aşaması başlar.

Maintenance-Job

Müşteriye teslim edilmiş ve devreye alınmış çalışmakta olan yazılımın üç tür bakım gereksinimi bulunmaktadır.

1-Düzeltici bakım

Bir yazılımın 100% sınanabilmesi teorik olarak mümkün olsa da pratikte pek mümkün değildir. Bu nedenle hata ile karşılaşabilme olasılığı her zaman vardır. Zamanla ortaya çıkan hataların düzeltilmesi “düzeltici bakım” olarak adlandırılır.

2-Uyarlayıcı bakım

Uygulamaya alınmış yazılımlar kurumların, şirketleri veya kişilerin günlük hayattaki işlerini bilgisayar ortamında takip etmesini sağlayan araçlardır. Gün geçtikçe iş süreçlerinde yeni gereksinimler veya var olan gereksinimlerin iptali söz konusu olabilmektedir. Örneğin mevzuatların değişmesi, bir kurum yazılımında ilgili bölümün değişmesi anlamına gelmektedir. Bu tür uyarlamalar yazılımda “uyarlayıcı bakım” olarak adlandırılır.

3-En iyileyici bakım

Uygulama yazılımının performansının zamanla arttırılması gerekebilir. Bu tür bakımlar “en iyileyici bakım” olarak adlandırılır.

Yazılım bakımı, uluslararası standart belirleme organizasyonu olan IEEE(i triple e) tarafından belirli kriterlere ve aşamalara göre gerçekleştirilmektedir. Bakıma ilişkin standart IEEE 1219-1998 baz alınarak gerçekleştirilmektedir. IEEE tarafından sunulan bakım süreci şu adımları içermektedir:

  1. Sorun tanımlama süreci
  2. Çözümleme süreci
  3. Tasarım süreci
  4. Gerçekleştirim süreci
  5. Sistem test süreci
  6. Kabul test süreci
  7. Kurulum süreci

Bu adımlar aslında yazılım geliştirme yaşam döngüsünün çekirdek adımlarının tekrarlanması şeklindedir. Ancak tekrarlanan kısım sadece değişiklik isteklerinin mevcut koda aktarılması amacıyla yapılmaktadır.

Adsız

Süreç adımları IEEE 1219-1998 tarafından girdi, çıktı ve kontrol şeklinde belirlenmiştir.

1- Sorun Tanımlama Süreci

Adsız

Girdi: Sürecinin temel girdisi, “bakım isteği” şeklindedir. Örneğin;

  • Sistemde beklenen ve yeni düzenlemelere ilişkin değişiklikler.
  • Yeni fonksiyonel talepler.

İşlem/Süreç: Bakım isteği oluşturulduğunda yapılması gereken işlemlerdir.

  1. Değişiklik isteğine bir tanım numarası atamak.
  2. Değişiklik türünü belirlemek.
  3. Değişiklik isteğinin kabul edilmesi ya da ayrıntılı incelenmesine karar verilmesi.
  4. Değişiklik isteği ile ilgili zaman/boyut/işgücü kestirimi yapılması.
  5. Değişiklik isteğinin önceliklendirilmesi.
  6. Değişiklik isteğinin diğerleri ile birlikte zaman ve iş planına kaydedilmesi.

Bu adımların uygulanmasına değişiklik talebinde bulunan müşteri, kullanıcı temsilcileri, yazılım mühendisleri ve iş uzmanları ile birlikte çalışılarak karar verilir.

Denetim: Sorun tanımlama aşamasında ise değişiklik talebinin daha önceden yapılıp yapılmadığı denetlenir ve tek olduğu belirlenir. Mükerrer iş yapmaktan kaçınmak adına daha önceki değişiklik talepleri taranır.

Çıktı: Doğrulanmış, geçerlenmiş ve karar verilmiş “bakım İsteğidir”. Bakım isteğinin ayrıntıları bir veritabanında saklanır ve isteğe ait bilgiler şu şekilde olmalıdır:

  1. Sorun ya da yeni gereksinimin tanımı,
  2. Sorun ya da gereksinimin değerlendirmesi,
  3. Başlangıç önceliği,
  4. Geçerleme verisi (Düzeltici bakım için gereklidir),
  5. Başlangıç kaynak gereksinimi,
  6. Mevcut ve gelecekte kullanıcılar üzerindeki etkileri,
  7. Yararlı ve aksak yönleri

Ölçüt: Sorun tanımlama sırasında kullanılabilecek ölçütler

  • Bakım taleplerinde kabul edilmeyen madde sayısı,
  • Gelen bakım istekleri sayısı,
  • Sorunun aşılması için harcanan kaynak ve zaman biçimindedir.

Bu adımların tamamlanmasıyla birlikte çözüm süreci başlatılabilir.

2- Çözümleme Süreci

Çözümleme sürecinde, veri tabanında saklanmış ve geçerlenmiş bakım isteği girdi olarak alınır, projeye ilişkin bilgi ve belgeleri kullanarak söz konusu isteğin yerine getirilmesi için gerekli genel plan yapılır.

Girdi: Çözümleme sürecinin girdileri:

  1. Geçerlenmiş bakım isteği,
  2. Başlangıç kaynak gereksinimleri ve diğer veriler ve
  3. Mevcut proje yada sistem bilgi ve belgeleri biçimindedir.

İşlem/Süreç: Çözümleme süreci temel olarak iki aşamadan oluşur. Bunlar olurluk aşaması ve ayrıntılı çözümleme aşamasıdır.

Olurluk çalışmasında, yapılan değişikliğin etkileri, güvenlik ve emniyet zorunlulukları, insan faktörleri, kısa ve uzun vadeli maliyetler ve yapılacak olan değişikliğin yararları değerlendirilir.

Ayrıntılı çözüm aşamasında, değişiklik isteği için ayrıntılı gereksenim tanımlaması yapılır. Bu çalışmada etkilenen yazılım öğeleri (yazılım tanımları, yazılım gereksinimleri, tasarım, kod, vb) belirlenir. Yazılım bileşenlerinin değişmesi gereken kısımları belirlenir. Bu aşamada en az üç düzeyli test stratejisi (birim testleri, bütünleştirme testleri ve kabul kabul testleri) oluşturulur. Bu aşamada kullanıcıya en az etki yapacak şekilde değişiklik gereksinimlerinin nasıl karşılanacağı bilgilerini içeren “Başlangıç gerçekleştirim planı” da hazırlanır.

Denetim: Çözümleme çalışmasının denetiminde gerçekleştirilen işlemler şu şekildedir.

  1. Gerekli proje yada sistem bilgi/belgelerine erişimin sağlanması.
  2. Önerilen değişikliklerin  ve çözümleme çalışmasının teknik ve ekonomik olurluğunun gözden geçirilmesi,
  3. Güvenlik ve emniyet konularının tanımlanması,
  4. Önerilen değişikliğin, mevcut yazılımla bütünleştirilmesinin dikkate alınması,
  5. Proje belgelerinin düzgün olarak günlendiğinin denetimi,
  6. Çözümleme belgelerinin düzgün olarak hazırlanmasının sağlanması,
  7. Sınama stratejilerinin uygun olarak belirlenmesi.

Çıktı: Çözümleme çalışmasının çıktıları:

  • Değişiklik isteklerine ilişkin olurluk çalışması,
  • Ayrıntılı çözümleme raporu,
  • İzlenebilirlik listesini içeren günlenmiş gereksinim tanımları,
  • Başlangıç değişiklik listesi,
  • Sınama stratejisi,
  • Gerçekleştirim planı şeklindedir.

Ölçüt: Çözümleme çalışmasında kullanılabilecek ölçütler:

  1. Gereksinimlerdeki değişiklik sayısı,
  2. Belgeleme hata oranı,
  3. Her işlev alanı için gerekecek işgücü,
  4. Toplam zaman biçimindedir.

3- Tasarım Süreci

Tasarım aşamasında, değişiklikten etkilenebilecek tüm proje bilgi ve belgeleri üzerinde çalışma yapılıp söz konusu bilgi ve belgeler değişiklikle ilgili olarak güncellenir.

Girdi: Tasarım çalışmasının girdileri:

  1. Çözümleme çalışması çıktıları,
  2. Ayrıntılı çözümleme,
  3. Güncellenmiş gereksinim tanımları,
  4. Başlangıç değişiklik listesi,
  5. Sınama stratejisi,
  6. Gerçekleştirim planı,
  7. Sistem ve proje belgeleri ve
  8. Var olan kaynak kodları ve veritabanları biçimindedir.

İşlem/Süreç: Tasarım için gerekli temel işlemler aşağıda belirtilmektedir.

  1. Etkilenen yazılım modüllerinin tanımlanması,
  2. Yazılım modül belgelerinin değiştirilmesi,
  3. Yeni tasarım için, güvenlik ve emniyet konularını da içeren test senaryolarının hazırlanması,
  4. İlişki testleri tanımlanması,
  5. Kullanıcı belgelerinin güncelleme gereksinimlerinin tanımlanması,
  6. Değişiklik listesinin güncellenmesi şeklindedir.

Denetim: Tasarımın belirlenen standartlara uygunluğunun denetlenmesi gerekmektedir.

Çıktı: Bakım tasarımı çalışmasının çıktıları:

  1. Gözden geçirilmiş değişiklik listesi,
  2. Güncellenmiş tasarım
  3. Güncellenmiş test planları,
  4. Güncellenmiş ayrıntılı çözümleme,
  5. Güncellenmiş gereksinimler,
  6. Gözden geçirilmiş gerçekleştirim planı,
  7. Risk ve kısıtlar listesi biçimindedir.

Ölçüt: Tasarım çalışması için kullanılabilecek ölçütler aşağıda verilmektedir.

  • Yazılım karmaşıklığı,
  • Tasarım değişiklikleri
  • Her işlev alanı için gerekecek işgücü,
  • Toplam zaman,
  • Sınama yönerge ve plan değişiklikleri,
  • Önceliklendirmedeki hata oranları,
  • Varolan kodda, eklenen, çıkarılan ve değiştirilen satır sayısı,
  • Uygulama sayısı.

4- Gerçekleştirim Süreci

Gerçekleştirim sürecinde, temel olarak tasarım çıktılarını ve kaynak kodları girdi olarak alınmakta ve değişiklik isteğini gerçekleştiren kod parçaları ile güncellenmiş yazılım kodları üretilmektedir.  Güncellenmiş yazılıma ilişkin test bilgi ve belgelerinin ve eğitim belgelerinin üretimi de bu süreçte yapılmaktadır.

Girdi: Gerçekleştirim sürecinin girdileri:

  1. Tasarım çalışması sonuçları,
  2. Varolan kaynak kodlar, açıklamalar, belgeler ve
  3. Proje ve sistem belgeleri biçimindedir.

İşlem/Süreç: Gerçekleştirim sürecinin dört ana işlemi vardır:

  1. Kodlama ve birim testleri
  2. Bütünleştirme
  3. Risk çözümleme
  4. Sınama hazırlığı gözden geçirme

Kodlama işleminde, değişiklik isteğini karşılayan yazılım kodları, varolan yazılıma eklenmektedir. İşlem sonucunda elde edilen yeni, değişmiş modüllere birim testleri uygulanmaktadır.  Birim test işlemini, bütünleştirme testleri izlemekte, tüm sistem yeniden test edilmektedir.Uygulamadaki riskleri gidermek amacıyla, gerçekleştirim aşamasında sürekli risk çözümleme yapılmaktadır.

Denetim: Gerçekleştirim sürecinde oluşturulacak denetim yapısı, aşağıdaki özellikleri sağlamalıdır:

  • Belirlenen standartlara uygun olarak kod ve yazılım gözden geçirmeleri yapılması,
  • Birim ve bütünleştirme testleri ile ilgili bilgilerin derlenmesi ve kaydedilmesinin sağlanması,
  • Test belgelerinin güncellenmesi ve oluşturulmasının sağlanması,
  • Test hazırlıklarının gözden geçirilmesi sırasında risk çözümlemenin yapılması,
  • Yeni yazılımın, yazılım ortam yönetimi altında kaydedilmesi ve denetlenmesinin sağlanması,
  • Teknik ve eğitim belgelerinin güncellenmesi,

Çıktı: Gerçekleştirim süreci aşağıdaki çıktıları vermelidir:

  1. Güncellenmiş Yazılım,
  2. Güncellenmiş tasarım bilgi/belgeleri,
  3. Güncellenmiş sınama belgeleri,
  4. Güncellenmiş kullanıcı belgeleri,
  5. Güncellenmiş eğitim kılavuzları,
  6. Riskler ve kullanıcılara etkileri,
  7. Sınama hazırlığı gözden geçirme raporu

Ölçüt: Gerçekleştirim çalışmasında kullanılabilecek ölçütler kodlama ile ilgili olması gerekmektedir. Bu nedenle teknik ölçütler kullanılmaktadır:

  1. Değişiklik oranı
  2. Hata oranı

5- Sistem Test Süreci

Değişikliklerin mevcut yazılıma yansıtılmasından sonra elde edilen yeni yazılım sürümünün belirlenen standartlara uygun olarak tümüyle bütünleşik sistem üzerinde testlerin yapılması gerekmektedir.  Sistem testlerinin, kullanıcı ve üretici ekiplerin tanıklığında bağımsız bir yapı tarafından gerçekleştirilmeleri önerilmektedir.

Girdi: Sistem test sürecinin girdileri:

  1. Test hazırlık raporu
  2. Belgeler
  3. Sistem test planları,
  4. Sistem testleri,
  5. Sistem test yönergeleri,
  6. Kullanıcı kılavuzları,
  7. Tasarım
  8. Güncellenmiş sistem biçimindedir.

İşlem/Süreç: Sistem testleri, tümüyle bütünleşik bir sistem üzerinde yapılmalıdır. Bu aşamada, işlevsel sistem testi, arayüz testi, regresyon testi ve test hazırlık raporunun gözden geçirilmesi işlemleri yapılır.

Denetim: Sistem testleri, üretici ve kullanıcılardan bağımsız bir grup tarafından gerçekleştirilmelidir. Yazılım kodları ve her türlü bilgi belge, yazılım ortam yönetimi tarafından saklanır.

Çıktı: Bu aşamanın temel çıktıları:

  1. Tümüyle test edilmiş bütünleşik bir sistem,
  2. Test raporu,
  3. Gözden geçirilmiş test hazırlık raporu şeklindedir.

Ölçüt: Bu aşamada kullanılabilecek ölçütler, üretilen ve düzeltilen hata oranlarıdır.

6- Kabul Test Süreci

Kabul test süreci, kullanıcılar ya da kullanıcı temsilcileri tarafından gerçekleştirilen bir süreçtir.  Kullanıcıların, değişiklikleri içeren yeni yazılımı test etmeleri ve kabul etmeleri beklenmektedir.

Girdi: Kabul test sürecinin girdileri:

  1. Gözden geçirilmiş test hazırlık raporu,
  2. Tümüyle bütünleşik sistem,
  3. Kabul test planları,
  4. Kabul testleri ve
  5. Kabul test yönergeleri biçimindedir.

İşlem/Süreç: Kabul test işlemleri:

  1. İşlevsel kabul testlerinin yapılması,
  2. Birlikte çalışabilirlik testleri,
  3. Regresyon testleri biçimindedir.

Denetim: Kabul testleri sırasında denetimi aşağıdaki işlemleri içermektedir.

  1. Kabul testlerinin uygulanması,
  2. Sınama sonuçlarının raporlanması,
  3. İşlevsel denetim yapılması,
  4. Yeni sistemin oluşturulması,
  5. Kabul test belgelernin yazılım konfigürasyonuna yerleştirilmesi.

Çıktı: Kabul testlerinin çıktıları, yeni sistem, işlevsel konfigürasyon denetim raporu ve kabul  sınaması raporudur.

Ölçüt: Bu aşamada kullanılabilecek ölçütler: üretilen ve düzeltilen hata oranlarıdır.

6- Kurulum Süreci

Kurulum süreci, geliştirilen ya da  değiştirilmiş yeni yazılım sürümünün, uygulama sahasına aktarılma işlemlerini içerir.

Girdi: Bu sürecin temel girdisi, tümüyle sınanmış ve kabul edilmiş yeni yazılım sürümüdür.
İşlem/Süreç: Bu sürecin işlemleri:

  • Fiziksel ortam denetiminin yapılması,
  • Kullanıcıların bilgilendirilmesi,
  • Mevcut sistemin yedeklerinin alınması,
  • Kullanıcı tarafında kurulum ve eğitimlerin yapılması şeklindedir.

Denetim: Denetim işlemleri:

  1. Fiziksel ortam denetiminin yapılması,
  2. Sistem ile ilgili bilgi ve belgelerin kullanıcıya ulaştırılması,
  3. Sürüm Tanımlama raporunun tamamlanması,
  4. Yazılım konfigürasyon ortamına aktarımın sağlanması şeklindedir.

Çıktı: Bu sürecin temel çıktıları, fiziksel ortam denetim raporu ve Sürüm tanımlama raporudur.

Ölçüt: Bu süreçte kullanılabilecek ölçüt, belgeleme değişiklikleridir.

Tüm süreçlerin tamamlanmasıyla yazılım bakım döngüsü tamamlanmış ve müşteri istekleri eksiksiz yerine getirilmiş olmaktadır. Tekrar belirtmekte fayda var ki bu standartlar dizisi IEEE tarafından belirlenmiştir.

Pagination ve Infinite Scroll Tercihi

15 Haz

İçerik listeleme veya veri sorgulama işlemi sonucunda elde edilen verilerin çok fazla olduğu durumlarda tüm verinin kullanıcıya gösterilmesi hem maliyetli hem de kafa karıştırıcı bir yöntemdir. Bu gibi durumlarda verilerin kullanıcılara sıralı parçalar halinde sunulması gerekmektedir. Sıralı parçalı gösterim günümüzde web ve mobil ortamlarda iki şekilde yapılmaktadır.

  1. Pagination yöntemi
  2. Infinite Scroll yöntemi

Hangi yöntemin nasıl seçileceği ise amaca göre iyi belirlenmelidir. Aksi taktirde kullanıcıların sistemi terk etmesine sebep olabiliriz.

Bu noktada google arama motoru üzerinde iki örnekle ayrımı görmeye çalışabiliriz. Örneğin google üzerinde “otomobil” şeklinde bir ara yapıldığında tüm sonuçlar sayfasında listelenen metin içerikli veriler sayfalama(pagination) tekniği ile listelenmektedir.

i1

Ancak görseller bölümünde listelenen resim içerikleri sayfasında sayfa numaralarını gösteren bir bölüm bulunmamaktadır. Scroll bar aşağı doğru kaydırıldıkça yeni görseller sorgulanmakta ve listelenmektedir.

i2

Yine sosyal medya platformlarından Facebook, Twitter gibi en popüler sitelerin içerikleri infinite scroll yöntemi ile listelenmektedir.

Aslında burada akla gelen iki farklı sorunun karşılık bulduğu iki yöntemdir pagination ve infinite scroll. Bu iki soru:

  • Neler var?
  • Aradığım şey burada mı?

“Neler var?” sorusu, bir merakın karşılığıdır. Aslında aradığımız net bir şey yok fakat neler olup bittiğini de görmek istiyoruz demektir. Kullanıcıya var olanlar arasından seçme isteği uyandıran bir durumdur. Bu merak duygusu, kullanıcının sayfa numaralarına tıklayarak bekleme sürecini reddetmesi için bir sebeptir. “Kim hangi tweet’i atmış?”, “Arkadaşlarım ne paylaşmış?”, “En moda gelinlik tasarımları neler?” gibi meraklar kullanıcı için önemlidir ve beklemeye çok fazla tahammül ettirmez. İşte bu gibi durumlarda sayfa numaralarının kullanılması pek tercih edilmez. Bunun yerinde kullanıcının sürekli akışa dahil olduğu infinite scroll yöntemi kullanılır.

infinite_scroll

Infinite scroll yöntemi, ekranın tasarruflu kullanılması gerek mobil cihazlar için artık bir standart haline gelmiştir.

“Aradığım şey burada mı?” sorusu da aslında bir merak içersede, aranan şeyin ne olduğu net olarak bilinmektedir. Bu durumda kullanıcı içerik kontrolünü elinde tutmak ister. Arama sonucunda kaç sonuca ulaşıldığı önemlidir. Bu gibi durumlarda ise pagination(sayfalama) yöntemi tercih edilmektedir. Sayfa numaralarını kullanarak kişi yönlendirme kontrolünü elinde tutar.

Bir sonraki yazıda görüşmek dileğiyle.