Blog

Mobil Uygulama Geliştirme

Merhaba,

Mobil uygulama geliştirmek isteyenler yada mobil uygulama yaptırmak isteyenler için mobil uygulama geliştirme nasıl oluyor ve aşamaları neler bunları aktarmak istiyorum. Çünkü sürekli sorulan bu sorulara basit ve anlaşılır cevaplar vermek çok önemli.

1 – Mobil Uygulama Geliştirmelerini Kimler Yapar?

Mobil Uygulama bir yazılım firması yada bu işi bilen mobil uygulama yazılımcısı tarafından yapılabilir. Burada kimin yaptığından daha çok nasıl destek alacağınız ve nasıl çalışacağını önemlidir. Genelde freelance mobil yazılımcı olarak çalışanlar ek bir iş olarak bu işi yapabilmektedir ve buda bazı sıkıntıları beraberinde getirir. Freelance sürekli bu iş ile uğraşıyorsa yani bir yerde çalışıp ek zamanında yapmıyorsa sürekli bu işle uğraşıyorsa sorun olmayabilir ancak bu durumda da yaptığı işi yasal yapıyormu , en azından şahıs firması varmı ve referansları sağlam mı sorgulamak gerekir. Eğer bir yerde çalışıyor ve bu işi yapıyorsa o zaman işiniz yapılsa bile devamında destek konusunda sıkıntılar yaşayabilirsiniz. Bir mobil uygulama yapıldıktan sonrada sıkıntı yaşadığınızda bu işi başkasına aktarmak o kadar kolay bir iş değildir. Bu yüzden en iyi çözüm seçtiğiniz firma yada kişi ile devam etmektedir. Ancak bu konuda aktarım yapmak durumunda kalırsanız da bir başka yazımızda anlatacağımız bu yazının konusu olmayan yazımı okumanızı tavsiye ederim. Linki burada daha sonra paylaşacağım.

İş yaptığınız firma yada şahıstan mutlaka bu bilgileri isteyin.

  • Firma yada şahıs referanslarında bulunduğu web sitesi
  • Ne kadar zamandır bu işi yapıyor
  • Hangi yöntemi kullanıyor? (Madde 2 de anlattığım 3 yöntemden biri?)
  • Sonrasında nasıl destek veriyor?
  • Destek vermez ise ne olacak? Bu durumda desteği garanti altına almak için sözleşme yapmanızı şiddetle tavsiye ederim.
  • Tasarım konusunda çözüm sunabiliyor mu? Bunu sizde başka birileri ile çalışarak halledebilirsiniz ancak tek bir yerden tüm hizmetleri almanız daha iyi olacaktır. Bu yüzden bunu mutlaka sorun. Eğer bu konuda hizmet vermiyorsa başka bir çözüm bulmanız gerekecektir.
  • Proje bazlı anlaştınız devamında ek istekleriniz çıktı bu durumda ek istekler için nasıl bir fiyatlama yapıyor. Örneğin adam/gün ücreti nedir. Bir işin kaç gün süreceğini neye göre belirliyor.

2 – Mobil Uygulama Geliştirmesi Nasıl Yapılır?

Mobil uygulama 3 farklı şekilde hazırlanabilir. Günümüzde en çok tercih edilen bu 3 yöntemi ve avantaj dezavantajlarını da başka bir yazımda paylaşacağım bu yazıyı çok uzun tutmamak adına şimdilik bu 3 yöntemden bahsedelim.

2-a – Native Mobil Uygulama Geliştirme:

Native dediğimiz uygulama geliştirme yöntemi aslında Google ve Apple ın önerdiği her platforma yani android e uygun Android Studio da Java yada Kotlin dilleri ile veya Ios için Xcode Uygulamasında Swift yada Objective-C dilinde yapılan geliştirmelerdir. Günümüzde Android için Java , Ios için Swift dilleri daha çok tercih edilmektedir. Kotlin yaklaşık 1 sene oldu aşağı yukarı çıkalı ancak şahsi görüşüm ben ısınamadım bana garip geldi. Java yada Swift i tercih ederim. Eğer projenize sıfırdan başlanacak ise ve ileride yazılımcı bulma konusunda sıkıntı yaşamak istemiyorsanız en çok tercih edilen bu dilleri kullanan mobil yazılımcıları yada firmaları tercih etmenizi öneririm.

Bu aşamadan sonra diğer anlatılan yöntemlere Cross Platform Mobil Uygulama Geliştirme Yöntemleri denir. Cross platform özetle bir ortamda geliştirme yapıp 2 platform içinde uygulama üretebilmektir. Android için ayrı Ios için ayrı kod yazılmaz. Bu maliyet ve zaman konusunda tasarruf etmenizi sağlar. Ancak madem bu kadar iyi neden öyle yapmıyor herkes dediğinizi duyar gibiyim 🙂 Elbette dezavantajları da var. Bunları da yine anlatacağım.

2-b React Native ile Mobil Uygulama Geliştirme:

Facebook tarafından desteklenen bir cross platform. Facebook uygulamasında mesela bu kullanılıyor.

Ancak detaya girmeden daha fazla ingilizce bilenler yada çeviri yaparak bu yazıyı okuyabilirsiniz.

https://medium.com/mop-developers/mobile-app-development-react-native-vs-native-ios-android-49c5c168045b

Özetle şunu söylüyor , facebook uygulamasında da kullanılan bu sistem facebook tarafından bir gün desteklenmez ise ne olacak. Yada facebook react native de çıkan hataları facebook app ini çok etkilemiyorsa 2. öncelik vererek sonraya bırakabiliyor. Yada google ve apple ın yeni çıkardığı bir özellik react native de sonradan yapılabiliyor.

Avantajı ise aynı anda 2 platform içinde mobil uygulama geliştirme yapabilmesi. Bu yüzden çok tercih ediliyor. Yoksa kimse native varken riske girmek istemez yada facebook böyle bir işe soyunmaz.

2-c Cordova ile Mobil Uygulama Geliştirme

Cordova aslında cihaz içindeki browser da çalışan html tabanlı bir uygulama sunuyor. Basit işler için tercih edilebilir ancak native bir uygulama hissiyatı veremiyor. Bu yüzden bence en son tercih edilecek seçenek bu. Bu konuda daha önceki yazılarımu şu linkden bakarak okuyabilirsiniz https://ferhatbalaban.com/tag/cordova/

2-d Soru; Özet;

React native kullanmaya değer mi?  Cevap: Değişir ancak çoğu sorunun cevabı gördüğünüz üzere Native dir.

Sadece ios yada sadece android uygulama mı yaptıracaksınız ? Native
Küçük bir ekibiniz yada kısıtlı zamanınız ve bütçeniz mi var?  React Native.
Çok kapsamlı bir uygulama mı yaptıracaksınız ? Native.
Yaptırdığınız mobil uygulama çok uzun süreler hayatta kalacak mı, Facebook a ya birşey olursa korkunuzu atamıyormusunuz? Native.
Çıkar çıkmaz yeni cihaz özelliklerini desteklemeye ihtiyacınız var mı ? Native.

Genel Özet;

Tüm bu kriterleri değerlendirerek mobil yazılım geliştirme yapacak yada yaptıracak iseniz çalışacağını kişiyi ve çalıştığı platformu iyi değerlendirin. İşiniz için büyük emekler verip paralar harcıyorsanız iyi düşünmek ve iyi bir karar vermek çok önemli diye düşünüyorum. Sorularınız olursa ana sayfadaki iletişim bölümünden benimle irtibata geçebilirsiniz.

 

Saygılar, sevgiler.


Yönetilebilir mobil uygulamalar

Merhaba,

Bu yazımda olmazsa olmaz bir konudan bahsedeceğim. Yönetim paneli nedir ? Nasıl olmalıdır? Neler içermelidir?

Önce nedir bundan başlayalım. Yönetim paneli genelde atlanan bir konu oluyor bu yüzden bu konuya değinmek istedim. Bir mobil uygulama yada web sitesi yani online olarak çalışan bir uygulama yapmak istediniz diyelim. Bu uygulama yaptığı işe göre değişir ama her online çalışan uygulamanın bir yönetim sistemine mutlaka ihtiyacı vardır. Tamamen client tarafında çalışsa bile mutlaka bazı ayarlar dinamik, bazı içeriklerde dinamik yönetilmelidir. Bu şekilde olması pratik ve avantajlı olandır.

Örnek vermek gerekirse yaptığını uygulama açılırken cihaz bilgilerini bildirim gönderebilmek için api aracılığı ile backend e göndermelidir. Yada uygulama içindeki bazı bilgileri yada sayfaları api aracılığı ile çekmelidir. Yoksa uygulama statik çalışan ve yönetilemeyen bir uygulama olarak kalır. En basitinden uygulamanızı kullanan kullanıcılara bildirimler göndermek için bile bir yönetim paneline ihtiyacınız olacaktır.

En basit olan bu ihtiyaçları karşılayacak ve işinizi kolaylaştıracak bazı hazır çözümler geliştirilmiştir. Mesela firebase , onesignal gibi platformlar bu işlemleri kolay şekilde halletmenize olanak sağlar. Toplu bildirimler göndermek için bu gibi platformları kullanabilirsiniz. Ancak bazı ayarları dinamik olarak çekmek , bazı içerikleri dinamik olarak uygulamaya getirmek yada kafanızda yer alan özellikleri yönetmek için daha kapsamlı bir yönetim paneline ihtiyacınız olacaktır.

Mesela bu bahsettiğimiz platformlardan firebase de çoğu içeriği yönetebileceğiniz ve uygulama ile konuşan bir api ve arka planda çalışan bir veritabanına sahip olabilirsiniz. Bu durumda uygulamanızı da firebase e göre yazmanız gerekir.

Bazı basit işlemlerde bu tercih edilebilir. Yada sadece push bildirimleri göndermek için onesignal seçebilirsiniz. Ancak şöyle bir düşündüğümüzde biz ne isteriz?

Biz aslında bir uygulamaya sahip olacaksak tüm kontrol bizde olsun isteriz. Bir platforma bağımlı olmasın, bir sistem kapanırsa biz ondan etkilenmeyelim.

Buna geçmişten güzel bir örnek vermek gerekirse, belki duymuşsunuzdur yada duymadıysanız anlatayım bundan birkaç sene önce herkes parse platformu üzerine uygulama geliştiriyordu. Evet çok kolaylıklar sağlıyordu hatta talep üzerinde bizde bazı işler yaptık. Ancak hep içimde bir şüphe vardı bu tip altyapılar kullanırken pratik ama uzun vadede bize ait değil ve bağımlı hale geliyoruz diye. Nitekim bunları düşünürken platform sahipleri sistemi kapatacaklarını açıkladı. İnsanları mağdur etmemek için ise kodları aık kaynak olarak paylaştılar. Yani platform kodlarını. Bu tip altyapılar karmaşık sistemler ve herkese hitap eden sistemler olduğundan kodları anlamak yada sistemi kendi sunucularınızda çalıştırmak o kadar kolay bir iş değil. Bir sorun çıktığında müdahale etmeniz o kadar kolay değil. Birçok insan ise bu platformu ya kurmaya çalıştı kendi sunucularında yada yapılarında değişikliklere gitti. Bildiğim çoğu değiştirdi çünkü en güzel olan sistem yönetebildiğiniz ve hakim olduğunuz sistemdir.

Şimdi bu örneklerden sonra ihtiyacımız olan yönetilebilir sistemin nasıl olması gerektiğinden bahsedelim.

Mobil yada web uygulamaları için ihtiyacımız olan 2 bileşen var. Hatta veritabanını da düşünürsek 3 diyebiliriz.

1 –  Veritabanı : Tüm uygulama ile ilgili verilerinizin saklandığı yer. Bu veritabanı, mssql, mysql, oracle, postgresql gibi veritabanları olabilir.

2 – Yönetim paneli:  Veritabanı ile konuşan ve tim veritabanını yönetmenizi, ayarları değiştirmenizi ve işlemler yapabilmenizi sağlayan web tabanlı arayüz. Bu arayüzün mobil uygulama olması pratik değildir. Web tabanlı olması sebebi genelde bu ayarları mobil haldeyken yapmazsınız. İşinizin başına oturur ayarları yapar ve kalkarsınız. Web tabanlı arayüzler geliştirmek ve güncellemek için daha pratiktir. App store a çıkmanızı da gerek yoktur. Değişiklik için hosting de bulunan kodları değiştirirsiniz ve web yönetim paneli isteğinize göre şekillenir. Ayrıca mobil cihazınızdan da kullanabilirsiniz. Tabi bunun için hazırlanan yönetim panelinin de mobil uyumlu yani responsive dediğimiz şekilde olmalıdır.

3 – Api: Client yani app leriniz ile konuşan sizin görmediğiniz ama web servis dediğimiz kendi response dili olan (xml yada json) bir servistir. Bu serviste yönetim paneli gibi hazırlanabilir ancak arayüzü web gibi değildir. Genelde yazılımcıların yazılımcılar ile haberleştiği bir katman gibi düşünün. Mobil uygulama yazılımcısı bu api yi kullanmak için api yi yazan kişiden api doc ister. Yani api kullanım klavuzu. Mobil yazılımcı direk yönetim panelinden işlem yapamaz – yapmamalıdır. Yada direk veritabanına veri gönderemez. Bunu yapmak için belli kurallar çerçevesinde api yi çağırır. Api ye veri gönderir, api bunu işler ve veritabanına yazar ve api client a yani mobil uygulamaya haber verir. Uygulama sahibi de yönetim panelinden tüm bunları görür bu işlemleri inceler ve yönetir. Yani api bu işe yarar, client app ler ile backend arasında bağlantı kurar.

Şimdi birde yönetim panelimizin neler içermesi gerekir bundan bahsedelim.

Yapacağınız işe göre , ihtiyaçlarınıza göre şekillendirebilirsiniz. Örneğin içerik ağırlıklı bir app var ise mesela Kategoriler ve buna bağlı yazılar var. Bu kayıtları ekleme, silme, güncelleme yapabilmelisiniz. Tüm bu kayıtları kolay şekilde aratabilmeli, sıralatabilmeli,  filtreleyebilmeli, çok kayıt olduğunda da size liste şeklinde sayfalama yaparak gösterebilmelidir. Özetle bu işlemlere kayıt yönetimi diyelim. Bunu içermelidir elbette.

Ancak burada yapacağınız işleri yönetmek dışında olması gereken bazı konular var.

1 –  Güvenlik :

Bu konu genelde atlanan bir özelliktir. Yönetim paneli en çok korunması gereken yerlerden biridir. Buraya sızan bir kişi herşeyi değiştirebilir öyle düşünün. Sıradan bir kullanıcı adı ve şifre ile bu yönetim paneline girmemelisiniz. Bir parola politikası , birden fazla yanlış denemeye – brute force saldırı yani çoklu şifre denemelerine karşı korumalı olması gerekmektedir. Şifrelernizi bu yüzden karmaşık şifreler olarak belirlemelisiniz. Zaten yönetim paneli şifre belirlerken basit şifre girmenize izin vermemelidir.

2 – Yönetici yönetimi ve roller:

Ayrıca ana yönetici olarak farklı yöneticiler yaratabilmeli ve yönetim panelinin belli yerlerini kullanabilme imkanı sağlayabilmelisiniz. Bu yönetim panelini sadece ben kullanacağım diye düşünmeyin. İlerde işiniz büyüdüğünde bu basit özellik yok ise yine ihtiyacınız olacak ve tek kullanıcının olduğu sistemde şu sorunları yaşayacaksınız. Herkes aynı kullanıcı ile işlem yaptığından bir sorun olduğunda kimin ne yaptığını bilemeyiz.

3 – Log:

Bunu anlamak için herkes farklı kullanıcılar ile girmeli ve yönetim paneli altyapınız audit log dediğimiz yönetim loglarını tutmalıdır. Yani kim ne işlem yaptı ne değiştirdi bunu süper yönetici rolundeki kişiler kolay şekilde görebilmelidir. Yani yönetim panelinden süper yönetici roller, izinler , yeni yöneticiler belirleyebilmelidir. Her yönetici tipi farklı işler yapabilir. Bu yüzden yönetim panelinizin her giren kişi için farklı menüler ve haklar ile çalışması gerektiği ortaya çıkar.

4 – Mobil uyumluluk: Bu çok önemli olmasada bilgisayar başında değilken rahat işinizi yapabilmeniz acilen bir ayar değiştirmeniz gerektiğinizde zorlanmamanız açısından yönetim panelinizin mobil uyumlu olması önemlidir.

Bu yazıda yaptırdığınız yada yapacağınız mobil uygulamada yönetim paneli neden önemli ve neleri içermeli onu anlatmaya çalıştım. Sorularınız olursa lütfen çekinmeyin.


Bir uygulama denemesi

Bir uygulamanın serüvenini burada anlatacağım ve başarıya nasıl ulaştığını paylaşacağım. Uygulamayı yapmanın yeterli olmadığını uygulamayı store a çıktıktan sonra sürekli iyileştirme gerektiğini ve hata raporlarını inceleyerek uygulamayı hatasız hale getirmeniz gerektiğinden bahsedeceğim.

Bir ihtiyaçtan yola çıkarak uber benzeri bir taksi uygulaması yaparken ihtiyaç duyduğumuz ayrı bir uygulama gerekti. Önce varolan uygulamaları inceledim hepsinde eksikler gördüm. İhtiyaç temel olarak oturduğumuz yerden sanki araç sürüyor gibi lokasyon değiştirebilmek ve gerçekçi bir rota üzerinde hareket edebilmekti. Android buna imkan tanıyor ve bu konuda uygulamalar var. Bunların ismine mock yada fake gps yada hide gps location deniyor.

2017 sonlarında çıktığım uygulama hiç tanıtım yapmadan yüklenmeye ve iyi yorumlar almaya başladı ama hem harita hemde kritik bazı işlemler yaptığından bazı crash ler oluyordu. Bunlar ile tek tek ilgilenmek ve yapılan kötü yorumları incelemek ve araştırmak gerekti. Daha kolay kullanım ve anlaşılır şekilde nasıl olabilirdi uygulama sürekli düşünmek gerekti.

Yavaş başlayan hareketlilik giderek hızlandı. Grafikte göreceğiniz üzere uygulamanın potansiyeli açık şekilde görülüyor ve giderek ivmelenen şekilde download sayısı artıyor. 4 civarı olan puanda 4.5 in üzerine çıkmış durumda.

Son durumu ve neler yaptığımı bu yazımda paylaşmaya devam edeceğim. Şimdilik herşey iyi gidiyor.

Uygulamayı buradan android cihazı olanlar yükleyebilir.


Ios yazılım geliştirmede hangi veritabanını kullanmalıyım?

Bu konu içimizde (ekibimizde ve yazılımcılar arasında) sürekli tartışmalara yol açtığı için değinilmesi gereken bir konu. Öncelikle seçeneklerimize bakalım. Ios yazılım geliştirme sırasında lokal bir veritabanı kullanma ihtiyacı ortaya çıkarsa 3 tane seçeneğiniz var. Core Data, SQLite veya Realm.

SQLite: Bu hem ios hem android de çok sık kullanılan açık kaynak bir veritabanıdır. ANSI-C de yazıldığı için basit ve kullanışlı bir programlama arayüzü sunar. Bazı avantajları şunlardır.

  • SQLLite ayrı bir sunucu process ine ihtiyaç duymaz. Direk dosyalara yazar ve okursunuz.
  • Ayar gerektirmez
  • Çoklu multi-thread işlemleri destekler
  • Veri kısıtlamaları (Data constraints) kullanabilirsiniz.
  • Tabloyu silme ve veriyi değiştirme işlemlerini hafızaya yüklemeden yapabilir.

Core Data: Bu ise iOS veri saklama konusunda en başından beri Apple tarafından sunulan bir veritabanıdır. Daha çok yaratılan objelere odaklanmış bir yapısı vardır. Core Data ile class lar ile tanımlanmış objelerinizin içeriğini saklar ve yönetirsiniz.

  • SQLite dan daha fazla memory tüketimi yapar
  • SQLite dan daha fazla yer kaplar
  • SQLite dan daha hızlı kayıtları getirir
  • Veri kıstlama yoktur. Yapılmak istiyorsa bunu kendiniz yazmanız gerekir.
  • Hafıza da çalışır. Veri disk den hafıza ya yüklenir.
  • Silme ve güncelleme yapmak istiyorsanız bütün datayı tekrar yüklemek gerekir.

Realm: Realm son yıllarda geliştirilmiş SQLite ve Core Data dan daha hızlı ve verimli çalışabilen bir veritabanıdır.

  • Cross platform olduğundan her yerde kullanılabilir. Örneğin android, desktop uygulamaları gibi yerlerde.
  • Birkaç satır kod ile herşeyi halledebilirsiniz.
  • En azından iOS 8 olmalıdır daha altında çalışmaz
  • Basit bir kurulumu vardır. Cocoapods ile kolayca kurabilirsiniz.
  • SQLite ve Core Data dan daha hızlıdır.
  • Ölçeklenebilir yapısı ile büyük verilerde ve çok sayıda kayıt ile daha rahat çalışır.
  • Dökümantasyon ve desteği gayet iyi durumdadır.
  • Pinterest, Dubsmash , Hipmunk gibi büyük mobil uygulamalar tarafından kullanılmaya başlanmış ve gereken güveni kazanmıştır.

Sonuç:

Bu seçimi yapmak için düşünüyorsanız hiç düşünmeden Realm seçin derim. Pişman olmayacaksınız. https://realm.io/ adresinden incelemeye başlayabilirsiniz.


Seo Uzmanı

Seo Uzmanı Ne Yapar?

Önce bu sorudan başlayalım. Bu sorunun cevabını kendime göre vereceğim. Yazdığım her yazıda zaten herşeyi kendi bilgi ve tecrübeme göre anlatıyorum yalın bir dil ile. Sizde ona göre araştırıp kararı kendiniz verebilirsiniz.

Seo uzmanları biliyorsunuz şunu taahhüt ediyor. Ben sitenizi 1. sayfaya çıkartırım. 1. sayfa ilk 5 e getirebilirim. Ben bunun doğru bir yaklaşım olduğunu düşünmüyorum.

Sebebine gelince. Seo uzmanı size balık vermemeli balık tutmayı öğretmeli. Bilgi ve birikimini aktarmalı. Çoğu kişi bunu yapmak istemiyor sizi belirli yerlere getirdikten bir süre sonra bu bilgi sizde olmadığı için düşüş başlıyor.  Bunun olmaması için nelere dikkat etmeniz gerektiğini öğrenmeniz gerekiyor.  Eğer bir yönetici konumunda iseniz ve teknik bilginiz yoksa bu bilginin bu durumda direk size değil işletmenize aktarılması , iş yapış planlarınızın düzenlenmesi , herşeyi kurallara bağlanması gerekiyor.

Aslında burada seo uzmanının seo danışmanlığı yapmasından bahsediyorum. Örneğin sitemi google da şu kelimelerde aratın.

Android Yazılım Uzmanı
Ios Yazılım Uzmanı

Sadece 2 örnek verdim. Daha çok örnek var. Bu aramalarda en üstlerde olduğumu göreceksiniz. Bunu övünmek için söylemiyorum. Sadece şunu vurgulamak istiyorum. Neden bu kelimelerde en üstlerdeyim.

Çünkü;

1 – Gerçekten bu işi yapıyorum. (Bu çok ilginç google gerçekten anlıyor mu benim gerçekten bu işi yaptığımı?)

2 – Belirli kurallara dikkat ediyorum.

3 – Öyle aman aman binlerce makale yazmadığımı göreceksiniz. (toplasanız saymadım şimdi ama 25-30 dur herhalde)

4 – Yada dışarıdan yüzlerce backlink almadığımı. Hatta hiç almadığımı bu işi bilenler araştırıp bulabilir.

5 –  Sayfam süper seo araçları yada acayip şeyler içermiyor.

6 – Ne yapıyorsam normal yapıyorum.

Ancak işte bazı konular var. Bu konularda bilgi ve danışmanlık istiyorsanız benimle irtibata geçebilirsiniz. Sizlere bu konuda eğitim ve danışmanlık vererek tecrübelerimi aktarmak isterim. Konu çok derin gibi görünsede aslında bir o kadar da basit aslında. Herkesin gözden kaçırdığı şeyleri öğrenmek ve uygulamak o kadar zor değil.


Yazılım Güvenliği

Merhaba,

Bu konuya da daha fazla yer vermek gerektiğini düşünüyorum.

Yazılım güvenliği dediğimizde ilk aklımıza gelen konu yapılan yazılımın içeriden yada dışarıdan saldırılara karşı güvenli olması aklımıza geliyor.

Bunun için yazılımcının yazılımı hazırlarken çok bilinçli olması gerekiyor. Kullanıcıların farklı seviyelerde yetkileri olduğunda yada yetkisiz olduğunda neler yapabileceği çok iyi tarif edilmesi ve yazılımda bunların uygulanmış olması çok önemli. Tabiki bu iyi bir analiz gerektiriyor ve yazılımcı bunları yaptı diyelim. Ardından sadece bu sorumluluğu ona bırakmamak dışarıdan yetkili ve yetkisiz roller ile penetrasyon testleri yani güvenlik testleri yapmak gerekiyor. Malesef işin bu kısmı hep eksik kalıyor.

Bunun için basit ama etkili uygulayabileceğiniz yöntemler elbette var.  Evet bazı araçlardan bahsediyorum. Ancak bu araçları burada anlatmayacağım. Sebebine gelince bu araçlar bilgisiz kişiler tarafından kullanıldığında yada sadece tek başına kullanıldığında malesef hiçbir işe yaramıyor. Uzman bir göz bu araçları sadece yardımcı olarak kullanabilir ama aslında yazılım güvenlik uzmanları bu konuda yazılımı çok iyi testlere tabi tutup sonrada detaylı olarak incelemeli hem dışarıdan saldırı tekniklerini uygulayarak hemde yazılan kodun kalite ve güvenlik kontrollerini yapmalı.

Son zamanlarda bu konuda kendimi oldukça geliştirmiş biri olarak şunları söyleyebilirim.

  • Mutlaka yazılımcıyı güvenlik testlerine tabi tutan dışarıdan bir yöntem belirleyin
  • Sadece yazılımı değil kurduğunuz yapıyı da , organizasyonuzu da güvenli hale getirin.
  • Güvenlik ve güvenli yazılım geliştirme birarada yürütülmesi , bilinç seviyesinin bu anlamda artması açısından çok önemli.
  • Çalışan ekip küçük bir ekipte olsa büyük bir organizsyon da olsa bu değişmiyor bu iş için dışarıdan bu işi bile iyi danışmanlar gerekiyor.
  • 27001 sertifikasına başvurabilirsiniz. Firmanızı , işletmenizi bu konularda çok bilinçlendirecektir. Bu sertifika alımı sırasında tüm güvenlik önemlerini almış olmanız, risk planlarını yapmış olmanız ve işletiyor olmanız gerektiğinden buda ön hazırlık sırasında bir danışman ile çalışmanız anlamına geliyor.
  • Sertifika alsanız da almasanız da risk yönetimi çok önemli. Güvenliğin bir parçası. Örneğin bir saldırı yaşadınız ve veri kaybına uğradınız. Risk planınız nasıl? Yani online yedek tutuyorsanız sadece bu çok riskli bunu farkedememiş olabilirsiniz ama çok yatırım yapılmış bir işiniz var diyelim. Hiçbirşeyi şansa bırakmamak sizin elinizde. Ancak birçok kişi bunu şansa bırakıyor bunu görüyorum ve şaşırıyorum. Ciddi ve her ihtimali göz önünde bulunduran yedek planları ve işin aksamaması için risk planları yapmak çok önemli.
  • Yazılım güvenliği dediğimizde bunu sadece yazılım güvenliği olarak algılanmaması gerektiğini anlamanız gerekiyor. Evet bu çok önemli ancak bir sorun oluştuğunda işin aksamadan devam etmesi de o yazılımın güvenliği kadar önemlidir.

Bu ve bunun gibi çok konu var. Bu konuya değinmeye devam edeceğim. Bilinçlenmek açısından bu çok önemli.

Şimdilik hoşçakalın.