31 Aralık 2018 Pazartesi

2018'den 2019'a Geçerken

Bir yıl daha tükettik ömrümüzden.
Bir yıl daha yaklaştık ölüme.
Kırdıklarımız oldu.
Üzdüklerimiz oldu.
Kırıldıklarımız oldu.
Üzüldüklerimiz oldu.
Ama şimdi bizim için ne kadar süreceğini bilmediğimiz bir yeni yıla başlıyoruz.
Daha dikkatli ol.
Daha mutlu ol.
Kendinle barış.
Kendine güven.
Sen yaparsın.
Güçlüsün.
Yeni bir yıl ya da yeni bir gün farketmez.
Sirkelen artık kendine gel.
Ne kadar ömrün kaldığını biliyor musun?
Kendin için yaşa.
Önce kendini düşün, sonra düşünürsün sevdiklerini.
Hem zaten sen mutlu olmazsan sevdiklerini nasıl mutlu edebilirsin ki?
Gülümse.
Hayat kısa.
Sarıl sevdiklerine.
Seni seviyorum demeyisakın ihmal etme.


                                2019

 

Bana ulaşmak için e-posta ve instagram   

29 Aralık 2018 Cumartesi

Yazılım Testi Nedir?

Yazılımın özelliklerini değerlendirmek amacıyla incelenmesi ve yazılımda var olan ile istenen durumlar arasındaki farklılıkların değerlendirilme süreci yazılım testi olarak adlandırılır.
Test bir yazılımın hata bulma amacıyla çalıştırılmasıdır.
Başka bir tanımla test bir sistemin özellik ve yeteneklerinin uygunluğunu ölçmek için hatalarının açığa çıkarılma sürecidir.
Bir hata yazılım geliştirme sürecinin herhangi bir evresinde ortaya çıkabilir ve hatanın birçok sebebi olabilir.

"Yazılım testi korunmak için, akla gelmeyecek kadar gizli-kapalı belirsizlikleri karşılaştırma sürecidir." Boch.

"Yazılım testi, ürünün davranışlarını öngörme/tahmin etme ve bu tahminlerin gerçek sonuçlarıyla karşılaştırılma sürecidir." R.Vaderwall.

Yazılım testleri hata olmadığını göstermek yerine yazılımda hataların var olduğunu göstermeyi amaçlar. Bu nedenle hataların tespit edilmesi yapılan testlerin başarısını gösterir. Ne kadar çok hata tespit edilip düzeltilmiş ise yazılım o kadar başarılıdır.



Bana ulaşmak için e-posta ve instagram.  

Kabarcık Sıralama

Kabarcık Sıralaması, bilgisayar bilimlerinde kullanılan yalın bir sıralama algoritmasıdır. Sıralanacak dizinin üzerinde sürekli ilerlerken her defasında iki öğenin birbiriyle karşılaştırılıp, karşılaştırılan öğelerin yanlış sırada olmaları durumunda yerlerinin değiştirilmesi mantığına dayanır.
Örnek
İlk geçiş
( 5 1 4 2 8 ) → ( 1 5 4 2 8 ), algoritma iki elemanı karşılaştırır ve 5>1 olduğundan yer değiştirme yapar.

( 1 5 4 2 8 ) → ( 1 4 5 2 8 ),  5>4 olduğundan yer değiştirme yapılır.
( 1 4 5 2 8 ) → ( 1 4 2 5 8 ),  5>2 olduğundan yer değiştirme yapılır.
( 1 4 2 5 8 ) → ( 1 4 2 5 8 ), elemanlar zaten sıralı (8>5), algoritma onların yerini değiştirmez.
İkinci geçiş
( 1 4 2 5 8 ) → ( 1 4 2 5 8 )
( 1 4 2 5 8 ) → ( 1 2 4 5 8 ),  4>2 olduğundan yer değiştirme yapılır.
( 1 2 4 5 8 ) → ( 1 2 4 5 8 )
( 1 2 4 5 8 ) → ( 1 2 4 5 8 )
Dizi sıralanmıştır.





void bubbleSort (int arr [], int n)
{
      int i,j;
      for (i=0; i<n-1; i++)
          for (j=0; j<n-i-1; j++)
              if (arr[j] > arr[j+1])
                 swap (&arr[j], &arr[j+1]);
}




Bana ulaşmak için e-posta ve instagram.   

Bubble Sort

27 Aralık 2018 Perşembe

Bubble Sort

Bubble sort is the simplest sorting algortihm that works by repeatedly swapping the adjacent elements if they are in wrong order.
Example:
First Pass
( 5 1 4 2 8 ) → ( 1 5 4 2 8 ), algorithm compares the first two elements, and swaps since 5>1
( 1 5 4 2 8 ) → ( 1 4 5 2 8 ), swap since 5>4
( 1 4 5 2 8 ) → ( 1 4 2 5 8 ), swap since 5>2
( 1 4 2 5 8 ) → ( 1 4 2 5 8 ), now, since these elements are already in order (8>5), algorithm does not swap them.
Second Pass
( 1 4 2 5 8 ) → ( 1 4 2 5 8 )
( 1 4 2 5 8 ) → ( 1 2 4 5 8 ), swap since 4>2
( 1 2 4 5 8 ) → ( 1 2 4 5 8 )
( 1 2 4 5 8 ) → ( 1 2 4 5 8 )
Now, the array is already sorted.


void bubbleSort (int arr [], int n)
{
      int i,j;
      for (i=0; i<n-1; i++)
          for (j=0; j<n-i-1; j++)
              if (arr[j] > arr[j+1])
                 swap (&arr[j], &arr[j+1]);
}





Bana ulaşmak için e-posta ve instagram.


Kabarcık Sıralama

26 Aralık 2018 Çarşamba

Artımlı Model

Çağlayan modeline yinelemeli bir özellik katılarak artımlı model oluşturulmuştur. Bu model belirli bir takvime bağlı olarak yazılımı sürümler halinde geliştirip teslim etmeye dayanır. Her bir yeni sürüm, öncekinin üstüne bazı ek işlevlerin eklenmesini öngörür. Bu model gereksinimlerin tamamının belli olduğu durumlarda etkin bir şekilde kullanılabilir. Bu modelin evrimsel geliştirme modelinden farkı, çıkan her sürümün son ürünün sahip olduğu tüm işlevleri içermesidir.



Bana ulaşmak için e-posta ve instagram

25 Aralık 2018 Salı

Spiral Model

Spiral modelde yazılım geliştirme süreci geriye dönüşü olan ardışık faaliyetler yerine spiral olarak genişleyen bir yapıda ifade edilir. Spiral model kullanıldığında her bir sarmalın sonunda yazılımın yeni bir sürümü ortaya çıkar. İlk halkanın sonunda artırımda ortaya çıkarılan yazılım uygulama ortamında kullanılanın gerçek bir prototipidir. Geliştirimi sırasında tüm süreç uygulanmıştır. Sonraki yinelemelerde üstüne yeni işlevler sürecin tüm adımları kullanılarak eklenir. Kalite, verimlilik ve kapasite açısından geliştiirlen yazılımın uygun özellikleri taşıması her sarmal döngüde (her yeni sürümde) sağlanarak geliştirme süreci sürdürülür.
Sarmalın herbir döngüsü sırayla tekrarlanan dört etkinlikten oluşur:
  1. Planlama: Yapılacakların eldeki kaynaklar ve zaman çizelgesi gibi konular göz önünde tutularak planlanmasıdır.
  2. Risk Çözümleme: Teknik ve yönetsel risklerin çözümlenmesidir.
  3. Geliştirme: Yazılımın gerçekleştirimi, çözümleme, tasarım, kodlama aşamalarıdır.
  4. Değerlendirme: Kullanıcı geribildiriminin alınması, yapılanın geçerliliğinin ve gerektiği gibi çalıştığının ortaya konmasıdır.
Spiral model çok karmaşık büyük projelerde uygulanabilecek gerçekçi bir model olarak görülmektedir.


Bana ulaşmak için e-posta ve instagram

24 Aralık 2018 Pazartesi

Evrimsel Geliştirme Modelleri

Evrimsel geliştirme modellerinde, ilk gerçekleştirimi hızlı yapıp onun üzerinde kullanıcının tepkilerini alıp iyileştirmeyi öngörerek yazılım geliştirilmesi hedeflenir.
Başlıca evrimsel geliştirme modelleri:
  • Araştırmacı (explatory) Geliştirme
  • Atılabilir (throwaway) Prototipleme
Araştırmacı geliştirmede yazılım geliştirilmeye daha anlaşılır bir kesim ile başlanır; üstüne yeni özellikler eklenerek devam edilir. Bu yaklaşım yazılımın gereksinimlerinin daha iyi anlaşılmasını hedeflemektedir.
Atılabilir prototiplemede amaç yazılım gereksinimlerini keşfetmektir. Bu nedenle ilk anda tespit edilen gereksinimlerden bir prototip yazılım geliştirilerek müşteriye gösterilir. Buradan hareketle müşterinin kafasındaki hedef yazılım keşfedilmeye çalışılır. Gösterilen prototip daha sonra bir daha kullanılmadan atılabilir.



Bana ulaşmak için e-posta ve instagram.

22 Aralık 2018 Cumartesi

Çevik Modeller

Çevik modeller 1990ların ortalarında zor uygulanan, aşırı kuralcı klasik yazılım süreç modellerine tepki olarak ortaya çıkmıştır. Çağlayan ve V gibi klasik modeller doğalarında var olan aşırı belgelendirme faaliyetleri ve sıralı yaklaşımları ile daha yüksek maliyetle daha yavaş yazılım geliştirmeye sebep olarak görülmüştür. Yazılım geliştirme sürecini hızlandırmak amacıyla bu süreci daha etkin kullanmak ve gerektiğinde belgelendirme yapmak temeline dayalı çevik yazılım geliştirme yöntemleri ortaya çıkmıştır. Çevik geliştirme modelleri şu ilkelere dayanır:
  • Hızlı, devamlı ve kullanışlı yazılımlar üreterek müşteri memnuniyetini sağlamak amaçlanmaktadır.
  • Çalışan yazılım gelişimin en önemli ölçüsüdür.
  • Cevap verilemeyen veya geç cevap verilen talepler memnuniyeti azaltır.
  • En iyi iletişim karşılıklı görüşmedir.
  • Basitlik önemlidir.
  • Kendi kendini organize eden takım yapısı gereklidir.
Yazılım geliştirme amacıyla üretilen bu yöntem klasik yazılım geliştirme modellerine göre yazılım geliştirmeyi daha esnek hale getirir. Bu yöntem müşterinin isteklerinin net olmadığı, yazılım geliştirmenin her aşamasında müşteri isteklerinin değişebildiği, hedeflenen sistemin hemen görülmek istendiği durumlarda kullanılabilir.
Başlıca çevik modeller:
  • Uç (Sınırsal) Programlama (Extreme Programming)
  • Çevik Birleştirilmiş Süreç (Agile Unified Process)
  • Scrum
  • Test Güdümlü Geliştirme (Test Driven Development)
  • Çevik Bilgi Yönetimi (Agile Data Method)
  • Özellik Güdümlü Geliştirme (Feature Driven Programming)
Çevik yazılım geliştirme kısa vadeli planlar ve küçük gelişmeler halinde yazılımın geliştirilmesini öngörür. Kısa vadeli planlar yazılımın geliştirilmesinde yineleme getirir. Her yinelemede yazılım üzerine yeni özellikler eklenir. Çevik yazılım geliştirme değişikliklere uyum sağlamayı kolaylaştırır.




Bana ulaşmak için e-posta ve instagram

21 Aralık 2018 Cuma

Prototip Geliştirme Modeli

Gereksinim belirsizliğini ortadan kaldırmak ve kullanıcının istediği yazılımı geliştirmek için ortaya çıkmış bir modeldir. Gereksinim verileri toplanarak işe başlanır. Kullanıcılar ve geliştiriciler bir araya gelerek yazılım girdi ve çıktılarını belirlerler. Tesipt edilen bilgilerle hızlıca bir tasarım prototipi oluşturularak kullanıcıya sunulur ve değerlendirme yapılır. Bu değerlendirmeler ışığında yeni gereksinimler tespit edilmeye çalışılır. Kullanıcının beklentisini karşılayacak şekilde yazılım oluşana kadar bu işleme devam edilir. Gereksinimler yeterince ayrıntılı hale getirildikten sonra istenilen sistem geliştirilir. Bu model gereksinimlerin net olarak bilinmediği durumlarda başarılı bir şekilde uygulanabilir.




Bana ulaşmak için e-posta ve instagram

20 Aralık 2018 Perşembe

V-Modeli

V-modeli çağlayan modelinin genişletilmiş bir şeklidir. Çağlayan modelden farklı olarak yazılım geliştirmeye başlamadan test planı oluşturulur.







Bana ulaşmak için e-posta ve instagram

18 Aralık 2018 Salı

Çağlayan Modeli (Waterfall Model)

Yazılım yaşam döngüsünü analiz, tasarım, kodlama, test ve bakım olmak üzere beş aşamada ele almaktadır.





Analiz: Yazılımın işlevi ve bu işlevi nasıl yerine getireceğinin belirlendiği aşamadır. Yazılan kod işlevini doğru şekilde yerine getirebiliyorsa başarılı bir yazılım olarak adlandırılır. Bu sebeple yazılımdan ne istendiğinin doğru bir biçimde tanımlanması gereklidir. Analiz aşaması, personel, donanım ve sistem gereksinimlerinin belirlenmesi, sistemin fizibilite çalışmasının yapılması, kullanıcıların gereksinimlerinin analizi, sistemin ne yapıp ne yapmayacağının kısıtlamalar göz önüne alınarak belirlenmesi, bu bilginin kullanıcılar tarafından doğrulanması ve proje planı oluşturulması adımlarından oluşur.
Tasarım: Analiz aşaması sonucunda belirlenen gereksinimlere yanıt verecek yazılımın tasarımının oluşturulduğu aşamadır. Yazılım tasarımı, bir bileşen veya sistemin nasıl gerçekleştirileceğini belirlemek için kullanılan teknikler, stratejiler, gösterimler ve desenleri içerir. Bu aşamada yazılım bileşenleri arasındaki içsel ara yüzler, mimari tasarım, veri tasarımı, kullanıcı ara yüzü tasarımı, tasarım araçları ve tasarımın değerlendirimesi alt süreçlerini kapsamaktadır. Tasarım aşaması, yazılımın hem kullanıcı ara yüzünü hem de programın temel yapısını oluşturur. Yapılacak tasarım, yazılımın işlevsel gereksinimlere uygun olmasının yanı sıra kaynaklar, performans ve güvenlik gibi kavramları da göz önüne alınarak gerçekleştirilmelidir.
Kodlama: Bu aşama, tasarım sürecinde ortaya konan veriler doğrultusunda yazılımın gerçekleştirilmesi aşamasıdır. Bu süreç programlamanın yanı sıra yazılımın geliştirilmesi ve kullanıcıya ulaştırılması sürecindeki bütün çalışmaları kapsar. Tasarım sonucu üretilen fiziksel modelin yazılıma dönüştüğü süreç olarak da nitelendirilebilir. Yazılım geliştirme ortamı, programlama dili, veri tabanı yönetim sistemi, yazılım geliştirme araçları seçimi bu aşmada gerçekleştirilir.
Test: Test aşaması, yazılım kodlanması sürecinin ardından gerçekleştirilen sınama ve doğrulama aşamasıdır. Elde edilen uygulama yazılımının hem belirlenen gereksinimleri sağlayıp sağlamadığı hem de gerçekleştirimin beklentilere uygun olup olmadığını kontrol etmek için statik ve dinamik sınama tekniklerinden yararlanır. Statik teknikler, yazılımın tüm yaşam döngüsü boyunca elde edilen gösterimlerin analizi ve kontrolüyle ilgilenirlen, dinamik teknikler sadece gerçekleştirilmiş sistemi içerir. Yazılım üretiminde ilk testler genelde geliştirme sürecinde programcı tarafından yapılır. Bununla birlikte, asıl hata ayıklama ve geribildirim hizmeti test ekipleri tarafından yapılır. Testler ve geribildirim müşteri yazılımı kullandığı sürece devam eder.
Bakım: Hata giderme ve yeni eklentilerin yapıldığı aşamadır. Yazılımın kullanıma başlanmasından sonra yazılımın desteklenmesi sürecini kapsar. Yazılımın eksiklerinin giderilmesi, iyileştirilmesi gibi alt aşamaları içerir.



Bana ulaşmak için e-posta ve instagram

13 Aralık 2018 Perşembe

Harry Potter The Complete Collection

Bugün daha farklı bir yazı ile buradayım. Bilmiyorsunuz ama ben çok sıkı bir Harry Potter aşığıyım yani bir potterheadim 😊 Geçen günde kendime Harry Potter kitaplarının ingilizcesinin setini satın aldım. İngilizce kitapların ne kadar pahalı olduğunu bilirsiniz. Bu set de baya bir pahalıydı ama amazon türkiyede neredeyse yarı fiyatına bulunca kaptım. Amazondan da ilk alışverişimi bu şekilde gerçekleştirmiş oldum 😊  10 aralık akşamında siparişimi verdim ama 12 aralıkda kitaplarım elimdeydi. O kadar hızlı bir şekilde gelmesini kesinlikle beklemiyordum çünkü express kargo diye bir seçenek vardı. Kargo ücreti ödemeniz halinde 2 gün içerisinde elinizde olacağını söylüyordu ama ben onu seçmedim. Beklemeye razıydım ama çok çabuk elime ulaştı. Hatta o kadar sevindimki kargoyu açarken video bile çektim 😀Videoyu izlemek isterseniz buaraya ışınlanabilirsiniz 😂 Fotoğraflarını da aşağıda paylaşıyorum 💕



O kadar güzellerki sürekli bakıyorum, inceliyorum. Açıkcası çok uygun fiyata aldım ve bu kadar kaliteli olacağını düşünmüyordum ama bunlar beni şaşırttı.
Bana ulaşmak için e-posta ve instagram.

6 Aralık 2018 Perşembe

Büyüklüklerine Göre Veriler Kaç Gruptadır?

Veriler büyüklüklerine göre 3 gruba ayrılırlar. Bunlar; küçük, orta ve büyük.
Küçük: Text formatında veya basit bir lokal veritabanı uygulamasında tutulabilen verilerdir. Genellikle birden fazla kullanıcının erişimi gerekmez. 
Orta: Bir ilişkisel veritabanı sunucusu ile yönetilebilen verilerdir. Yüzlerce kullanıcı eş zamanlı işlem yapabilir.
Büyük: Tek bir sunucu üzerinden yönetilemeyen, çok sayıda kullanıcının eş zamanlı olarak işlem yaptığı verilerdir.

Bana ulaşmak için e-posta ve instagram.

5 Aralık 2018 Çarşamba

5 Aralık Dünya Mühendisler Günü

Bugün bizim günümüz 😍 bir öğretmenler günü kadar çoşku ile kutlanmasa da unutturmayalım. Hem zaten biz cool insanlarız değil mi ne gerek var kutlamaya falan 😁 istemem yan cebime koycular burda mı 👆 uzun uzadıya bir yazı yazmayacağım sadece bugünü unutturmamak içn bir yazı yazıyorum ve TÜM MÜHENDİSLERİN VE MÜHENDİS ADAYLARININ DÜNYA MÜHENDİSLER GÜNÜ KUTLU OLSUN 💓😍📏💻🔑🎁🎀



Bana ulaşmak için e-posta ve instagram

3 Aralık 2018 Pazartesi

Yazılım Geliştirme Süreçleri

Yazılım geliştirme süreci bir yazılım ürününün geliştirilmesi ile ilgili süreci kapsar ve bir dizi eylemden oluşur. Yazılım geliştirme süreci; tanımlama(definition), ayrıntılandırma(elaboration), gerçekleştirme(construction), değerlendirme(evaluation), yayma(transition) ve yönetim(management) aşamalarından oluşmaktadır.
Tanımlama: Yazılım geliştirmenin ilk aşamasıdır. Bu aşamada amaçlanan yazılımın işlevi ve hangi probleme çözüm getireceği belirlenir. Yazılımın hedeflenen işlevleri yerine getirirken nasıl bir ortamda çalışacağı ve ne gibi kısıtlamaları olacağı tanımlanır.
Ayrıntılandırma: Bu aşamada, problemin yazılımla nasıl çözüleceğine odaklanılır. Tanımlama aşamasında problem tüm yönleriyle ortaya konulmuştur. Yazılımın hedefi belirlidir ve bu hedefe nasıl gidileceğine dair çalışmalar yapılır, farklı düzeylerde modeller geliştirilir. Bu modeller ile geliştirilecek olan yazılımın hangi alt sistemlerden oluşacağı, bu sistemler arasındaki bilgi alışverişinin nasıl olacağı tanımlanır.
Gerçekleştirme: Ayrtıntılandırma aşamasında geliştirilen modelelr programlama dilleri kullanılarak kodlanır. Her bir kod parçasının testi gerçekleştirilir. Daha sonra çalışan kod parçaları bir araya getirililerek hedeflenen yazılım geliştirilir.
Değerlendirme: Geliştirilen yazılımın istenen amacı yerine getirip getirmediği değerlendirilir. Bu amaçla gözden geçirmeler ve testler kullanılarak geliştirilen yazılımın doğru çalıştığı ve kendinden beklenen işlevleri yerine getirdği doğrulanır.
Yayma: Yazılımın piyasaya sürüldüğü ve kullanıcıların kullanımına sunulduğu aşamadır. Bu aşamadan sonra gelen geri bildirimler ile yazılım üzerinde düzeltici, uyarlayıcı, iyileştirici ve önleyici bakımlar gerçekleştirilebilir.
Yönetim: Yazılım projeleri kapsamında ilk evreden son evreye kadar gerçekleştirilen faaliyetlerin yönetimsel işlemleri bu aşamada gerçekleştirilir. Yazılım geliştirme süreci içerisinde yönetim aşaması ve değerlendirme aşaması diğer aşamalarla birarada yürütülür.



Bana ulaşmak için e-posta ve instagram