KategorilerTasarım DesenleriYazılım Mimarisi

Repository Design Pattern Nedir?

Repository Design Pattern yazılım geliştirmede kullanılan, Data Source(veri kaynağı) ile uygulama arasında aracı görevi gören structural(yapısal) bir tasarım desenidir.

Data access mantığını programın kalanından soyutlayarak veriye erişmek için tutarlı bir arayüz sağlar. Repository tasarım deseni genellikle veri kaynağında CRUD(Create, Read, Update, Delete) işlemlerini gerçekleştirmek için gereken metotları içerir.

Repository Design Pattern’in Avantajları

  • Veri kaynağından bağımsız olarak veriye erişmek için tutarlı ve merkezi bir yol sağlar.
  • Veri depolama yönteminin detaylarının değişmesi durumunda kod yapısının kalanını etkilemeden değişiklik yapmaya imkan sağlar.
  • Business logic(iş mantığı) ve data access logic(veri erişim mantığı)‘i ayırarak daha temiz ve sürdürülebilir kod yapısına katkıda bulunur.
  • Yazılım geliştiricilerin veriye erişmek ve güncellemek gibi işlemler hakkında endişelenmeden iş mantığına odaklanmasına yardımcı olur.
  • Uygulamanın farklı bölümlerinden erişilebilecek yeniden kullanılabilir veri erişim metotları sağlar ve kod tekrarlarını azaltır.
KategorilerTasarım DesenleriYazılım Mimarisi

Singleton Pattern Nedir? Örnekli Anlatım

Singleton Design Pattern yani Singleton Tasarım Deseni, yazılım geliştirmede en yaygın kullanılan tasarım desenlerinden biridir. Creational Design Pattern‘ler arasında bulunan Singleton Design Pattern, uygulamada bir sınıfı o sınıftan yalnızca bir tane instance(örneklem) olması için kısıtlayan ve bu instance‘a global erişim sağlayan tasarım desenidir.

Ne Zaman Singleton Pattern Kullanılır?

Bu tasarım deseni bir sınıfın tek bir instance‘ının uygulamanın her yerinde koordine olarak kullanılması gerektiği zamanlarda kullanılır. Loglama, Ayarlar ve Önbellekleme bunlara örnek olarak gösterilebilir.

KategorilerVeritabanıYazılım Geliştirme

SQL vs NoSQL Karşılaştırması

Günümüzde veritabanları her türlü uygulamada ve sistemde önemli birer rol oynamaktadır. Sql ve NoSQL ise en popüler veri depolama teknolojilerindendir. Bu yazıda SQL vs NoSQL karşılaştırması yaparak farklarını inceleyeceğiz.

SQL Nedir?

SQL sorgu yapmak ve verileri yönetmek için kullanılan alana özel bir dildir. Uzun ismi Structured Query Language olan SQL kullanıcıların ilişkisel bir veritabanında CRUD işlemleri yapmasını sağlar. CRUD ise Create(oluşturma), Read(okuma), Update(güncelleme), Delete(silme) işlemlerinin bir kısaltmasıdır. SQL aynı zamanda fonksiyonlar ve görünümler gibi dahili yapılarla karmaşık mantıkların uygulanmasına izin verir.

KategorilerProgramlama PrensipleriProje YönetimiYazılım Mimarisi

Agile Nedir?

Agile(Çevik) metodu yazılım geliştirme ve proje yönetiminde kullanılan esneklik, takım çalışması ve yinelemeli geliştirmeye odaklı prensipler bütünüdür. Çoğunlukla yazılım geliştirmede kullanılsa da geliştirme sürecindeki değişikliklere uyum sağlanması gereken her türlü projeye uygulanabilir.

Agile metodu değişen ihtiyaçlara ve proje gereksinimlerine hızlı bir şekilde uyum sağlayabilmek için geleneksel doğrusal yazılım geliştirme metodolojilerine(Waterfall gibi) karşı alternatif olarak geliştirilmiştir.

Scrum, Kanban ve Extreme Programming (XP) gibi bir çok farklı Agile framework‘ü bulunuyor, her birinin kendi özellikleri ve uygulamaları olsa da aynı Agile temel değerlerini ve prensiplerini paylaşıyorlar.

KategorilerTasarım DesenleriYazılım Mimarisi

Design Pattern Nedir? Ne işe yarar?

Design patternler veya tasarım desenleri(örüntüleri) yazılım geliştirme süreçlerinde sıklıkla karşılaşılan bazı problemlere karşı üretilmiş çözümlerdir. Design pattern bir kod parçasından ziyade bir problemi çözmek için tasarlanmış genel bir konsepttir.

Design Patternlerin Kullanım Nedeni

Design Patternler programlama problemlerine test edilmiş ve ispatlanmış çözümler sağladığından geliştirme sürecini hızlandırabilir. Beklenmedik yapısal hatalarla karşılaşma olasılığını azaltır. Aynı zamanda kullanılan design pattern konusunda tecrübeli yazılımcılar için de okuması kolay bir kod ortaya çıkmasını sağlar.

Design patternler yazılımcılar arasında anlaşmayı ve iletişimi kolaylaştıran ortak bir dil yaratır.

KategorilerYazılım Mimarisi

Mikroservis Mimarisi Nedir? Avantajları Nelerdir?

Yazılım mülakatlarının olmazsa olmaz sorularından Mikroservis Mimarisi nedir ya da kısa adıyla Mikroservis nedir? Mikroservisler küçük birbirinden bağımsız servislerin iyi tanımlanmış API’lar aracılığıyla birbirleriyle iletişim kurduğu bir yazılım mimarisidir.

Mikroservis mimarisi büyük uygulamaların, her birinin kendi görevleri olan küçük bağımsız parçalar halinde bölünebilmesine imkan sağlayan bir yapıdır.

Aynı zamanda daha önce SOLID prensipleri makalelerinde bahsettiğim Single Responsibility Prensibinin servis bazında uygulanmış hali olduğunu söyleyebiliriz.

KategorilerNesne Yönelimli ProgramlamaProgramlama PrensipleriYazılım Mimarisi

Dependency Inversion Prensibi Örnekli Anlatım

SOLID prensilerinin “D”si, Dependency Inversion Prensibi (DIP) yani Bağımlılıkları Tersine Çevirme Prensibi SOLID prensiplerinin sonuncusudur. Dependency Inversion Prensibi yüksek seviye modüllerin düşük seviye modüllere bağımlı olmaması gerektiğini, bunun yerine ikisinin de soyutlamalara(abstractions) bağlı olması gerektiğini söylüyor.

Bu prensip loose coupling(gevşek bağlılık) denen prensibe dayanıyor, bunu da yüksek seviye ve düşük seviye sınıflar arasında soyut bir katman oluşturarak yapıyor.

KategorilerNesne Yönelimli ProgramlamaProgramlama PrensipleriYazılım Mimarisi

Interface Segregation Prensibi Örnekli Anlatım

SOLID prensiplerinin “I”si, Interface Segregation Prensibi(ISP) yani Arayüz Ayırma Prensibi bir Interface’in(arayüzün) onu kullanan Class’ların(sınıfların) ihtiyaçlarına göre bölünmesi gerektiğini anlatan tasarım prensibidir. Prensibin amacı sınıfların ihtiyacı olmayan metotları içermek zorunda kalmamasıdır.

Daha basit bir şekilde ifade etmek gerekirse, Interface Segregation Prensibine göre bir Interface öyle bir şekilde tasarlanmalı ki bu Interface‘i kullanan sınıfların sadece ihtiyaçları olan metotları uygulamaları gereksin, ihtiyaçları olmayan metotları barındırmak zorunda olmasın.

KategorilerNesne Yönelimli ProgramlamaProgramlama PrensipleriYazılım Mimarisi

Liskov Substitution Prensibi Örnekli Anlatım

SOLID prensiplerinin “L”si olan Liskov Substitution Prensibi(LSP) yani Liskov Yerine Geçme Prensibi ilk olarak Barbara Liskov tarafından 1987 yılında bir konferansta tanıtıldı. Bu prensibe göre B sınıfı eğer A sınıfının alt sınıfıysa A sınıfının objeleri B sınıfının objeleriyle programın çalışmasında herhangi bir değişiklik yaratmadan yer değiştirebilir.

Biliyorum biraz karışık görünüyor bu şekilde anlatınca, daha basit bir şekilde söylemek gerekirse eğer iki sınıf arasında ebeveyn-çocuk ilişkisi yani bir kalıtım varsa ve biz çocuk sınıftan ürettiğimiz bir nesneyi ebeveyn sınıftan ürettiğimiz bir nesneyle değiştirebiliyor ve program çalışması beklendiği gibi sürdürülebiliyorsa, o zaman Liskov Substitution Prensibine uyuyor diyebiliriz.

KategorilerNesne Yönelimli ProgramlamaProgramlama PrensipleriYazılım Mimarisi

Open-Closed Prensibi Örnekli Anlatım

SOLID prensiplerinin “O”su Open-Closed Prensibi yani Açık-Kapalı prensibi bir sınıfın veya modülün geliştirme için açık ancak değiştirme için kapalı olması gerektiğini söyler.

Peki bu ne anlama geliyor?

Daha basit kelimelerle ifade etmek gerekirse bu prensip yazılımcıları var olan kodu güncellemeden yeni özellikler ve fonksiyonlar eklemeye imkan sağlayacak bir tasarım kullanmaya teşvik ediyor.

Geliştirmeye açık bir kod yapısı kurarak yeni gelen istekler için var olan kodları sürekli değiştirmektense yeni kodlar eklemeyerek bakımı daha kolay ve daha esnek yapılar kurmayı amaçlıyor.