Yazılım mimarisi

Programlama öğrenmek ciddi bir süreç. Hele bir de hiç bilmiyorsanız nereden başlayacağınıza karar vermek çok daha kritik ve önemli bir dönüm noktası. Bizim eğitim dünyamızda Matematik gibi Programlama da ne yazık ki doğru yerden başlayarak öğretilmiyor. O nedenle Matematik düşmanı genç beyinler yetiştiği gibi Programlama bilmeyen/sevmeyen (hatta nefret eden) bilgisayar nesli yetişiyor. Oysaki anlamlı ve değerli bir hayat için Matematik neyse Bilgisayar Bilimleri için programlama da o.

Peki böylesine değerli bir konu nasıl öğrencilere aktarılmalı? Programlama sevdalı olmasa da, problem çözme yeteneği gelişmiş algoritmik düşünce ile yoğrulmuş gençler nasıl yetiştirilebilir? Öncelikle programlama dili eğitimi verilmeyerek başlanabilir. Evet yanlış okumadınız programlama dili bilmek veya öğrenmek demek programlama bilmek demek değil. Büyük yanılgı buradan başlıyor.

Programlamanın en temelinde aslında “problem çözme” eylemi var. O nedenle öncelikle problemi tespit edip analiz etme, onu parçalara ayırma işin ilk aşaması. Problemi doğru kavramadan programlamanan bir çok yazılım hayatımızı kolaylaştırmaktansa yeni problemler yaratıyorlar. Oysa ki doğru çözümlenmiş bir problem nereden nasıl başlanacağı konusunda önemli ipucuları vermektedir.

İkinci aşamada ise,  çözüm metodlarının karar verilmesi geliyor. Çözüm metodlarının kara verilmesi ve değerlendirilmesi ise tasarım disiplininin kapsamında değerlendirilebilir. İşte bu noktada, yazılım mimarisinin rolü başlar. Tabii tasarım süreci ile mimarisini birbirine karıştırmamak gerek. Mimari de meseleyi detaylıca hem teknik hem de içerik açısıından irdelemeye başlanır. (Tasarım kelimesini de sakın ha grafik arabirim tasarımı olarak algılamayın :) )

Yazılım geliştirme yerine yazılım tasarımı ve yazılım mimarisi ilkelerini öğrenmek ile yola başlamak çok önemli ve değerli. Böylece programlama dilinden bağımsız olarak yola nasıl çıkılacağı, bir fikrin nasıl yazılıma adapte edileceği konusunda deneyim elde etmek mümkün. Çünkü veri yapıları ve tipleri ile haşır neşir olmak yazılımın sağlıklı geliştirilmesi için de önemli bir unsur.

Yazılım mimarisi şunları içerir :

  • Sistemin organizasyonu hakkında önemli kararlar
  • Sistemin önemli yapısal elementleri ve bunların arayüzleri ile birbirleri arasındaki etkileşim
  • Sistemin önemli yapısal ve davranışal elemanlarının altsistem’lere dağılımı

Yazılım mimarisi yapı ve davranışların yanı sıra kullanılabilirlik , fonksiyonalite , performans , esnekllik , yeniden kullanım , anlaşılırlık , ekonomik ve teknolojik kısıtlar gibi özellikleri de yansıtır.

Tüm bu özellikleri ile “Yazılım Mimarisi” sistemin anayasasıdır. Tüm yazılım geliştirme sürecinin merkezinde durur ve her türlü faliyete kılavuzluk eder.

Kısaca, yazılım mimarisi bize sistemin karmaşıklığını yönetmek ve bütünlüğünü korumak için , kontrol edilebilir bir yapı sunar.

Ayrıca artık sadece bunlarla başlamak yeterli olmuyor. Modern programlama dillerin artık hepsi nesne tabanlı geliştirme olanakları sunuyorlar. O nedenle nesne tabanlı programlama yaklaşımını benimsemek ve öğrenmekte başlangıç sürecine dahil edilebilir.

En son elde edilen tüm bu tecrübeler nasıl bir programlama dili ile birleştirilecek ona karar verilmeli.

 

 .

02 Temmuz 20140 commentsDevamı

Framework’ler üzerine yazmayı ve seviyorum. Eskiz defterinin sayfalarında zaman zaman farklı alanlardaki frameworkler üzerine ayırdığım oldu. Bu sefer de HTML5 üzerine bir derleme sunacağım.Yanlız şunu belirtmekte fazda var; burada anlatacağım framework’ler front-end konusunda uzmanlaşmış HTML5 destekli duyarlı uygulama iskeletleri. Yani katıksız bir HTML5 uygulama geliştirme konusunda pek hünerli değiller. (O konuda da çok başarılı framework’ler. Onları da ayrıca başka bir yazı da değineceğim.)

Ünlü arayüz tasarımcısı ve geliştiricisi, Ethan Marcotte bir konuşmasında her front-end developer’ların az ve çok muhakkak bir miktar korsan şapkası giymesi gerektiğini belirtmişti. Özellikle web dünyası başta olmak üzere arayüz tasarımında, artık kabul edilmesi gereken grafik elementler çok yaygınlaştı ve benimsendi. Hatta kullanıcı dostu bir uygulama geliştirmek istiyorsanız muhakkak bu standartlara dikkat etmeniz gerekiyor.

Bu nedenle Marcotte, arayüz geliştiricilerinin bu durumdan kaçamayacağını ve muhakkak geçtiği yollarda izleri takip etmesi gerektiğini vurgulamıştı. Böylece uygulamaların yol üzerindeki, bariz ve büyük çukurlara düşmesinin engellenebileceğini savunmuştu.  Bence de çok haklıydı. Hem böylece uygulamaların yaşam döngüsü çok hızlı ilerliyor ve bir an önce kullanıcısına kavuşuyordu.

Bu hızlanma ve tutarlığı destekleyen en önemli teknolojik araçlardan biri de tabii ki Framework’ler. Türkçesi ile uygulama iskeletleri.  Browser uyumluğu, medya tutarlığı gibi kritik konulara büyük çözümler üreten HTML5 framework’ler, uygulama sahibinin fikre odaklanmasını sağlıyor ve üzerindeki yükleri hafifletiyor. Büyük komünitelerin ve kurumların desteklediği bu framework’ler her geçen gün daha fazla yaygınlaşıp daha çok uygulamanın eti kemiğine bürünüyor. Şimdi sırasıyla bunları inceleyelim

1.Bootstrap

Söze, Twitter Bootstrap ile başlayınca diğer alternatiflerin pek bir önemi kalmıyor. HTML5 konusunda en güçlü ve pratik framework herkesin ortak kaanati ile kesinlikle Bootstrap‘ dır. Geliştiricilere ve tasarımcılara zengin seçenekler sunan framework, tüm medyaları da sorunsuz destekliyor. Adaptasyon problemi yaşamıyor. O nedenle yapacağız uygulamaların, sitelerin mobile, tablet ve pc uyumluluğunu çok rahat ve hızlı bir şekilde sağlayabilirsiniz. 12 sütunluk bir iskelet desteği sunan paket, 724px, 940px ve 1170px olmak üzere 3 farklı sabit sayfa düzeni ile de hazır olarak geliyor. (Tabii isterseniz bu standartlara da müdahale edebiliyorsunuz. ) Hızlı prototipleme için de oldukça kullanışlı olan set, github üzerinden yönetilebiliyor ve bir çok browser sürümü tarafından sorunsuzca destekliyor.

Olayın güzel yani etkileşim boyutunda kendini gösteriyor. Geniş bir javascript desteği sunan paket, ayrıca komunite tarafından desteklenen ve geliştirilen yüzlerce eklenti ile de ihtiyaca yönelik çok rahat ve hızlı özelleştirilebiliyor.

2.Foundation

Bootstrap‘ın en büyük alternatiflerden biri olan Foundation, Zurb firması tarafından açık kaynak olarak geliştiriliyor. mobile-first yaklaşımı ile geliştirilen framework, zengin bir ızgara yapısı sunuyor. 16 sütunluk ızgara yapısı eğer size yetersiz gibi geldiyse, ihtiyacınıza göre çok daha fazla özelleştirebilirsiniz. Zengin mobil desteği ile gelen paket bir çok browser ile de sorunsuz çalışabiliyor. Ekstra hiçbir eklentiye ihtiyaç duymadan standart pakete bir çok UI elementi dahil olarak geliyor. Tooltip, uyarı, hata ve geri bildirim ifadeleri mobil ile birebir uyumlu halde paketin içerisinde sizin emirlerinizi bekliyor. Joyride desteği de olan Foundation şke çok rahat bir şekilde CSS veya SCSS parametrelerini özelleştirebiliyorsunuz. Diğer bir tadına doyamayacağınız özelliği de Magellan adındaki sayfa pozisyon yönetimi. Sayfa içinde yapışkan sabit bölümler oluşturabilmek için harika kolaylıklar sunuyor.

3.HTML5 Boilerplate

Yüksek performans ve farklı bir yaklaşıma ihtiyaç duyuyorsanız bu framework tam size göre olabilir. Noarmalize.css adını verdikleri css sıfırlama derlemesi ile farklı bir bakış açısı getiren paket, sağlam referans portfolyosu ile de göz dolduruyor. Google Microsoft ve Nasa gibi firmalarında tercihi olan Boilerplate, JQuery’nin yanı sıra Modernizr kütüphanesini de destekliyor.

4.Skeleton

Responsive Design (Duyarlı Tasarım) konusunda oldukça iddialı olan Skeleton, 12 sütunluk ızgara sistemi ile geliştirilmiş bir HTML5 framework’ü.  Çok ufak boyutu ile göz dolduran paket, hızlı geliştirme konusunda güzel bir alternatif olarak karşımıza çıkıyor. 17″ gibi büyük ekran laptop’lar için de destek veren Skeleton mobil aygıtları da desteklemekten vazgeçmiyor.

5. HTML KickStart

Şimdi, HTML KickStart’a göz atalım. Oldukça kolay ve hızlı öğrenebileceğiniz bu framework ile çok hızlı bir şekilde geliştirebilirsiniz. İçerisinde onlarca hazır UI öğesi barındıran paket sayesinde, hazır elementleri kullanarak hızlı HTML5 prototipler hazırlayabilirsiniz.

6. 52framework

CSS3′ün tüm nimetlerinden faydalanan, içerisinde HTML5 video oynatıcı olan güzel düşük boyutlu bir paket olan 52framework, serinin en son alternatifi. Tam olarak duyarlı web konusunda büyük iddiaları olmasa, sahip olduğu hünerler konusunda yadsınamayacak bir seçenek gibi duruyor.

İlk okunduğu zaman insanın iştahını kabartan bu framework’ler bilinçsizce ve dikkatsizce kullanımlarda başınızı ağrıtabilir. Proje kapsamı ve detayı çok iyi belirlendikten sonra artıları ve eksileri çıkartarak iyi bir SWOT analizi ile framework seçimi yapılmalı. Aksi takdirde, dört nala koşup hızlıca projemi çıkartayım derken ayağınız takılıp düşebilir ve büyük yaralar alabilirsiniz. Bu noktada en büyük görev yazılım mimarisini hazırlayan kişilere düşüyor. Bu analizler ve değerlendirmeleri iyi yaparak karar vermeli. Bol bol başarılı projelere imza atmanızı diliyorum!

 .

25 Haziran 20131 commentDevamı
View Sidebar