- Mobil uygulamalar, insanların dijital medyada geçirdiği zamanın 1/2’sini oluşturuyor.
- Akıllı telefon kullanıcıları bu cihazlarda geçirdikleri zamanın yaklaşık yüzde 90’ını uygulamalara harcıyor.
- Tüketicilerin yüzde 85’i yerel mobil uygulamaları mobil web sitelerine tercih ediyor.
- Ortalama bir kullanıcının mobil cihazında en az 30 uygulama var ve bu uygulamalarda ayda 35 saatten fazla zaman harcıyorlar.
- Google Play ve Apple App Store’da ortalama 3 milyon uygulama vardır.
Tüm bu istatistikler mobil uygulama geliştirmeyi desteklese de, uygulama geliştirme süreci bu kadar kolay değildir. Mobil uygulama geliştirmeden önce süreci ve onu oluşturan tüm bileşenleri bilmeniz çok önemlidir.
Mobil Uygulama Geliştirme Nedir?
Mobil uygulama geliştirme, mobil cihazlarda çalışan mobil uygulamalar oluşturmaya yönelik bir süreçtir. Bu uygulamalar kullanıcı tarafından daha sonra indirilip yüklenebilir. Bilgi işlem kaynaklarını uzaktan çalıştırmak için cihazın ağ özelliklerini kullanır. Bu nedenle, mobil uygulama geliştirme süreci, cihaza yüklenebilecek yazılımların oluşturulmasını, API’ler aracılığıyla veri erişimi için back-end hizmetlerinin etkinleştirilmesini ve uygulamanın hedef cihazlarda test edilmesini gerektirir.
Ölçeklenebilir mobil uygulamalar geliştirmek için ekran boyutlarını, donanım gereksinimlerini ve uygulama geliştirme sürecinin diğer birçok yönünü de göz önünde bulundurmanız gerekir. Mobil uygulama geliştirme endüstrisinde artan sayıda iş ile sürecin girişimciler, yeni başlayanlar ve özellikle geliştiriciler tarafından iyi tanımlanması ve anlaşılması önemlidir.
Bulutistan hizmetlerinin detaylarına ulaşmak için tıklayınız.
Mobil Uygulama Geliştirme Platformları
En önemli iki mobil uygulama platformu, Apple iOS ve Google Android’dir. iOS, Apple’ın özel olarak iPhone’lar için oluşturduğu tescilli mobil işletim sistemidir. Ancak Android, Google dahil olmak üzere çeşitli OEM’ler tarafından üretilen mobil cihazlarda çalışır.
İkisi arasında birçok benzerlik olsa da, farklı platformlar için farklı yazılım geliştirme kitleri (SDK’ler) kullanılır. Apple, iOS’u sadece kendi cihazları için kullanırken Google, Android’i belirli gereksinimleri karşılayan diğer şirketler için kullanılabilir hale getirmiştir.
Mobil Uygulama Oluşturma Yöntemleri
Mobil uygulama geliştirme söz konusu olduğunda, en popüler 4 yaklaşım aşağıdaki şekildedir:
- Yerel Mobil Uygulamalar (Native Mobile Applications)
- Platformlar Arası Yerel Mobil Uygulamalar (Cross-Platform Native Mobile Applications)
- Hibrit Mobil Uygulamalar (Hybrid Mobile Applications)
- Aşamalı Web Uygulamaları (Progressive Web Applications)
Mobil uygulamalar geliştirmeye yönelik bu yöntemlerin her birinin hem avantajları hem de dezavantajları vardır. Mobil uygulama geliştirme yaklaşımlarını değerlendirirken, istenen kullanıcı deneyimine, uygulamanın gerektirdiği bilgi işlem kaynaklarına ve yerel özelliklere, bütçeye, zaman çizelgesine, zaman kısıtlamalarına ve uygulamayı sürdürmek için mevcut kaynaklara bakmanız gerekir.
1. Yerel Uygulamalar
Native mobil uygulamalar, platform sahibi tarafından sağlanan programlama dili ve çerçeveler tarafından yazılır. Yerel bir uygulama, doğrudan iOS ve Android gibi cihazın işletim sisteminde çalışır.
Artıları
- Çalışma zamanı açısından en iyi performansı sağlar.
- Cihazın API’lerine doğrudan erişim sunar.
Eksileri
- Uygulamaları geliştirmek ve sürdürmek için daha yüksek maliyetler ortaya çıkarır.
- Her platform için çeşitli kod tabanları vardır.
2. Platformlar Arası Uygulamalar
Platformlar arası uygulamalar çeşitli programlama dillerinde ve çerçevelerde yazılabilir. Ancak bunlar, cihazın işletim sisteminde çalışacak yerel bir uygulamada paketlenir.
Artıları
- Birden çok platform için tek kod tabanı sağlar.
- Geliştirmesi ve bakımı kolaydır.
Eksileri
- Yerel özellikler için kitaplıklara güvenir.
- Köprüleme nedeniyle performansında sınırlamalar vardır.
3. Hibrit Web Uygulamaları
Hibrit mobil uygulamalar JavaScript, CSS ve HTML5 gibi standart web teknolojilerinde yazılır ve uygulama yükleme paketlerinde derlenir. Yerel uygulamalardan farklı olarak hibrit uygulamalar, Apache Cordova aracılığıyla yerel cihaz API’leri için bir tarayıcı çalışma zamanı ve köprü sağlayan bir web kapsayıcısında çalışır.
Artıları
- Aynı kod tabanını paylaşan web ve mobil uygulamalar sağlar.
- Mobil uygulamalar geliştirmek için web geliştirme dillerini kullanır.
Eksileri
- Yerel uygulamalara kıyasla daha düşük performans sağlar.
- Yerel cihaz özellikleri için sınırlı destek sunar.
4. Aşamalı Web Uygulamaları
Aşamalı web uygulamaları, uygulama mağazası teslimi ve uygulama yüklemelerinin atlandığı geleneksel mobil uygulama geliştirmeye alternatif bir yaklaşımdır. PWA’lar, uygulama benzeri bir kullanıcı deneyimi sağlamak için çevrimdışı çalışma, arka plan işlemlerini çalıştırma ve cihazın ana ekranına bir bağlantı ekleme gibi tarayıcı özelliklerini kullanan teknik olarak web uygulamalarıdır.
Artıları
- Aynı uygulama hem web hem de mobil için kullanılabilirdir.
- Kurulum gerektirmez, bir URL üzerinden erişilebilirdir.
Eksileri
- Yerel cihaz özellikleri için sınırlı destek sağlar.
- Tarayıcıya bağlı olarak uygulama yetenekleri sunar.
Yerel ve Hibrit Mobil Uygulamalar Arasındaki Farklar
Yerel bir mobil uygulamayı hibrit olandan aşağıdaki dört yolla ayırt edebilirsiniz.
Yerel | Hibrit |
Platforma özel | Çapraz platform |
Compiled language (Derlenmiş dil) | Komut dosyası / Derlenmiş |
Cihaz donanımına erişim | Eklentiler / Yerel modüller |
Platform frameworks | Web Frameworks |
Neden Hibrit/Platformlar Arası Yaklaşımı Seçmelisiniz?
Yerel mobil uygulama geliştirme, yüksek düzeyde uzmanlaşmış beceriler gerektirir. Günümüzde çoğu geliştirici, yerel geliştirme için en popüler iki dil olan C ve Java’ya aşinadır. Ancak, herkes bu dillerin platforma özel sürümlerinde ve ilgili IDE’lerinde deneyimli değildir. Bu nedenle yerel uygulama geliştiriciler her zaman yüksek talep görmektedir.
Hibrit ve Platformlar Arası Çerçeveler Nasıl Çalışır?
Hibrit uygulamalar söz konusu olduğunda, geliştiriciler web dillerini (HTML5/CSS/JavaScript) kullanabilir. Daha sonra bu web uygulamalarını, web uygulamasının cihazda yerel bir uygulama olarak işlev görmesini sağlayan bir kapsayıcıda kapsüller.
Hibrit mobil uygulamalar temelde bir tarayıcıda çalışan web uygulamaları olduğundan, bir web uygulamasındaki kodun çoğu bir mobil uygulama oluşturmak için kullanılabilir. Mobil tarayıcıların oluşturma ve çalışma zamanı performansı sürekli arttığı için bu da geliştiricilerin mobil uygulamalar oluşturmak için hibrit bir ortam kullanmasını mümkün kılar.
Benzer şekilde, PWA’lar, genellikle JavaScript, HTML5 ve CSS’nin bazı türevlerini içeren geleneksel web uygulama teknolojileri tarafından programlanır. Başlangıçta cihaz veya bilgisayardaki bir tarayıcı aracılığıyla erişilirler.
React Native ve Native Script gibi çoğu platformlar arası çerçeve, platformlar arası kodlarla çalışmak için yerel bileşenler sunar. Flutter ve Xamarin gibi diğerleri, daha iyi performans için platformlar arası kodları yerel kodda derler.
En Popüler Mobil Uygulama Geliştirme Yaklaşımları
Seçtiğiniz mobil uygulama geliştirme metodolojisinin türü, projenizin ekip üyelerini, zaman çizelgesini ve sonucunu belirler. Aşağıda, mobil uygulama geliştirme projenize uygulayabileceğiniz en popüler 5 metodoloji bulunmaktadır:
1. Şelale Metodolojisi (Waterfall Methodology)
Waterfall belki de uygulama ve yazılım geliştirmeye yönelik en eski yaklaşımdır. Bu metodolojide ekibiniz sırayla bir aşamadan diğerine geçer. Başka bir deyişle, diğerine geçmeden önce bir aşamayı bitirmeniz gerekir.
Bu yöntemin en büyük dezavantajı, geri dönüşün olmamasıdır. Şelale baştan sona önceden tanımlanmıştır. Değişiklikler ancak ürün lansmanından sonra gerçekleşen bakım aşamasında yapılabilir.
2. Prototip Metodolojisi
Evrimsel tasarım veya artımlı geliştirme olarak da adlandırılan prototip mobil uygulama geliştirme yaklaşımı, şelale metodolojisinin geliştirilmiş versiyonudur. Ekip üyelerinin tasarım aşamasında değişiklik yapmalarını sağlar.
Bu yaklaşıma göre tasarım aşamasından önce proje gereksinimlerini tam olarak anlamak için ekibinizin bir prototip oluşturması gerekir.
3. Spiral Metodoloji
Spiral yaklaşım, bir tür risk odaklı mobil uygulama geliştirme metodolojisidir. Projenin risk yapısına bağlıdır ve süreci boyunca birden fazla yöntem uygular. Spiral uygulama geliştirme yaklaşımı, bir dereceye kadar şelale metodolojisini ve yinelemeyi birleştirir.
Spiral yaklaşımda, her aşama için gereksinimleri tanımlamanız gerekir. Spiraldeki tüm aşamalar yalnızca proje riskine dayanır. Bu nedenle, büyük, riskli projeler için idealdir.
4. Agile Metodoloji
Agile, sofistike projeler için tasarlanmış bir mobil uygulama geliştirme yaklaşımıdır. Hataları azaltmaya yardımcı olan yinelemelere izin verir.
Model, mobil uygulama projesini bir dizi döngüye veya kısa zaman kutusuna böler. İşbirlikçi olmak, gereksinimlerin sürekli değişmesine izin verir. Agile, mobil uygulama geliştirme yaşam döngüsü sırasında gereksinimlerdeki değişiklikleri hesaba kattığı için esnektir.
Ayrıca agile’ın birçok varyasyonu vardır. Bunlar aşağıdakileri içerir:
- Özellik Odaklı Geliştirme – Feature Driven Development (FDD)
- Yalın yazılım geliştirme
- Scrum
- Kristal Yöntemleri
- Hızlı Uygulama Geliştirme – Rapid Application Development (RAD)/ Hızlı uygulama oluşturma – Rapid-application building (RAB)
- Uyarlanabilir Yazılım Geliştirme – Adaptive Software Development (ASD)
- Dinamik Sistem Geliştirme Yöntemi – Dynamic Systems Development Method (DSDM)
- Extreme Programlama (XP)
- Kanban
5. Yalın Girişim Metodolojisi
Bu mobil uygulama yaklaşımının amacı, yeni başlayanların uygulama geliştirirken karşılaştığı birçok sorunu çözmektir.
Yalın girişim metodolojisi, mobil uygulama geliştirmeyi başlatmak için minimum uygulanabilir bir ürün (MVP) gerektirir. Yalın girişim modeli, oluşturduğunuz mobil uygulamayı oluşturmanıza, izlemenize ve ondan öğrenmenize olanak tanır.
Mobil Uygulama Testine Genel Bakış
Günümüz müşterileri, kullanıcı merkezli ve yüksek kaliteli bir mobil uygulama deneyimi bekler. Bu noktada kötü bir deneyim, kullanıcıların ve marka itibarının kaybına yol açabilir. Bu nedenle, kapsamlı bir mobil uygulama test stratejisine ihtiyacınız vardır.
Mobil Uygulama Testinin Zorlukları
Mobil uygulama geliştirme hızla geliştiği için geliştiriciler bu süreçte çeşitli zorluklarla karşılaşabilir. Bu zorluklardan bazıları aşağıdaki şekildedir:
Yeni Teknolojiler: Günümüzün mobil uygulamaları, akıllı bağlantılı arabalar ve evler, sesli arayüzler, kiosklar ve daha fazlasıyla sorunsuz bir şekilde çalışmalıdır.
Hızlı Sürüm Programları: Artık sürekli entegrasyon ve sürekli geliştirme kritik öneme sahip olduğundan, sürüm programınızı geciktiren kapsamlı testler yapmak zorlaşır.
Kişiselleştirme: Kullanıcılar, uygulamanızı kullanırken kişiselleştirilmiş deneyim ve iletişim talep eder.
Fragment: Uygulamalarınızı yalnızca en yeni cihazlarla güncellemekle kalmayıp, aynı zamanda en yeni işletim sistemi sürümüyle sorunsuz çalıştıklarından emin olmanız gerekir.
Tüm bu zorluklar nedeniyle, mobil uygulama testinin laboratuvar ortamında yapılması artık uygun değildir, çünkü uygulamalarınız gerçek kişiler tarafından gerçek cihazlarla kullanıldığında, yanlış gidebilecek birçok şey hesaba katılmaz.
Mobil Uygulama Testi Türleri
Aşağıda, bir sonraki projeniz için yararlanabileceğiniz en popüler mobil uygulama test yaklaşımlarından bazılarını bulabilirsiniz:
İşlevsel Test: Uygulamalarınızın her cihazda ve her kullanım durumunda beklendiği gibi çalıştığından emin olmak için keşif amaçlı veya yapılandırılmış bir mobil testtir.
Kullanılabilirlik Testi: Müşterilerin uygulamayı her açtıklarında sorunsuz bir deneyim yaşamalarını sağlamak için hedef kitlenizi simüle eden ve kullanıcı arayüzü ve işlevsellik hakkında eyleme geçirilebilir geri bildirim alan test grupları oluşturma.
Manuel Test: Bir veya iki kez test gerektiren işlevsellik veya testler manuel olarak test edilmelidir.
Otomasyon Testi: Regresyon testi senaryoları otomatikleştirilir. Defalarca tekrar eden herhangi bir regresyon testi, otomasyon için mükemmeldir.
Mobil Uygulama Front-End
Front-end, mobil uygulama kullanıcılarının deneyimlediği görsel ve etkileşimli kısmıdır.
Front-end cihazda bulunur, yani en azından ana ekranda uygulamayı temsil eden bir simge vardır ya da cihazın uygulama kataloğunda sabitlenmiş durumdadır.
Mobil uygulama, uygulama mağazalarından indirilebilir, doğrudan cihaza yüklenebilir veya PWA’larda olduğu gibi cihazın tarayıcısı üzerinden erişilebilir.
Front-end Geliştirme İş Akışı Neye Benzer?
Mobil uygulamayı geliştiren ekibin büyüklüğüne bağlı olarak, front-end oluşturma sürecine birçok kişi dahil olabilir. Takım büyüklüğü, her şeyi halleden bir kişiden her biri farklı rollere ve becerilere sahip onlarca veya yüzlerce kişiye kadar değişebilir.
Örneğin, bir front-end ekibi, mobil uygulama için simgeler, arka planlar, renkler, temalar vb. gibi görsel öğeler oluşturan yaratıcı tasarımcıları içerebilir. Ayrıca bileşenlerin nasıl olduğundan sorumlu olan kullanıcı deneyimi ve kullanıcı arayüzü tasarımcıları da içerebilir.
Mobil Uygulamalar Back-End ile Nasıl Bütünleşir?
Mobil uygulama geliştirme sürecinin en kritik parçası, backend hizmetlerine ağ aramaları yapan, verileri alan ve back-end’deki verileri uygulamadan yeni verilerle güncelleyen mantığı oluşturmaktır.
Bu back-end hizmetlerine, en yaygın olarak API’ler olarak bilinen çeşitli uygulama programlama arabirimleri aracılığıyla erişilebilir. Ayrıca REST ve GraphQL dahil olmak üzere çeşitli API türleri vardır. Bunlara erişmek için çeşitli araç ve stiller de mevcuttur.
Platformda mevcut back-end hizmet API’leri olmasına rağmen özel hizmetlerin birçoğunun bir yazılım geliştirme kiti (SDK) ile uygulamaya entegre edilmesi gerekir. Geliştirme ortamı aracılığıyla uygulamaya SDK eklendikten sonra uygulama, SDK’da tanımlanan API’leri kullanabilir.
Back-End Verileriyle Nasıl Etkileşime Geçilir?
Uygulamada kullanılan bilgileri içeren veri tabanı, back-end’in front-end ile nasıl etkileşime girdiğinin mükemmel bir örneğidir. Bir mobil geliştirici veri tabanına erişmek istiyorsa, veri tabanının ağ konumunu, bu veri tabanına erişim protokolünü, veri erişimini doğrulamak ve yetkilendirmek için kimlik bilgilerini ve verileri çıkarmak için gereken belirli veri tabanı komutlarını bilmelidir.
Alternatif bir yöntem olarak geliştirici, veri tabanıyla etkileşim kurmak için özel bir API kullanabilir. Bu şekilde, verileri almak veya güncellemek için bir yöntem çağrısında sadece gerekli parametreleri bilmesi gerekebilir.
Mobil geliştirici, bu API’leri kendileri programlamak veya back-end kaynağından sorumlu olan tarafından kendilerine sağlanan API tanımını kullanmak zorunda kalabilir.
Temel olarak, bir bulut veri tabanı gibi buluttaki veri kaynaklarıyla etkileşim kurmak için bir REST API kullanılabilir. Öte yandan, bir GraphQL API, geliştiricilerin bir mobil uygulamada back-end verileriyle çalışmasını kolaylaştırabilir. Alternatif olarak GraphQL, bir API uç noktası aracılığıyla sorgulama desteği ve geliştiricilerin uygulamada kullanılan veri modellerini oluşturmak ve kolayca genişletmek için kullanabilecekleri bir veri şeması sunar.
Mobil Uygulama Back-End
Kullanıcıları çekebilen ve elinde tutabilen yüksek kaliteli bir mobil uygulama, onu oluşturmak için hangi front-end platform veya geliştirme metodolojisinin kullanıldığına bakılmaksızın güvenilir bir back-end’e ihtiyaç duyar.
Back-end hizmetleri mobil uygulama geliştirme için kritik öneme sahip olduğundan, geliştiricilerin uygulamaların mimarisini ciddi şekilde düşünmesi gerekir. Örneğin, hangi hizmetleri kendilerinin geliştirmeleri gerektiğine ve hangi mevcut üçüncü taraf hizmetlerinden yararlanmaları gerektiğine karar vermeleri ve ardından hizmetlerini çalıştırmaları ve sürdürmeleri mi yoksa üçüncü taraf hizmetlerinden yararlanmaları mı gerektiğine karar vermeleri gerekir.
Bulutistan hizmetlerinin detaylarına ulaşmak için tıklayınız.
Mobil uygulama modernizasyonu
Uygulama modernizasyonu, eski mobil uygulamaları özellikler, diller, çerçeveler ve altyapı platformları açısından güncelleme sürecidir. Verimliliği, güvenliği ve yapısal bütünlüğü geliştirmek için eski bir evi yenilemeye eşdeğer bir mobil uygulama geliştirmedir. Mevcut bir mobil uygulamayı kullanımdan kaldırmak yerine uygulama modernizasyonu, en son teknik yeniliklerden yararlanırken kullanım ömrünü uzatır.
Mobil uygulama geliştirmenin yaygın kalıpları aşağıdakileri içerir:
- Kaldır ve değiştir (Lift and shift): Yeniden barındırma olarak da bilinen “kaldır ve değiştir”, mevcut bir uygulamayı alıp eski bir ortamdan (örneğin, şirket içi sunucu) genel bulut gibi modern altyapıya taşımak anlamına gelir. Bu yaklaşımla uygulama, mevcut kodunda veya mimarisinde çok az değişiklik yapılmadan veya hiç değişiklik yapılmadan modernleştirilir.
- Yeniden Düzenleme (Refactoring): Yeniden düzenleme, mobil uygulamayı yeniden yazmak veya yeniden yapılandırmaktır. Bu uygulama modernizasyonu yaklaşımı, genellikle bulut altyapısı olmak üzere yeni bir ortamda daha iyi çalışması için uygulamadaki kod parçalarını yeniden düzenlemeyi içerir. Mevcut kod tabanının büyük ölçüde yeniden yapılandırılmasına ek olarak, bu yaklaşım genellikle kodun yeniden yazılmasını gerektirir.
- Yeniden Platform Oluşturma (Replatforming): Bu yaklaşım, kaldırma ve değiştirme ile yeniden düzenleme arasındaki uzlaşma olarak görülebilir. Yeniden platform oluşturma, büyük kod değişiklikleri gerektirmez, ancak eski uygulamanın, uygulamanın back-end veri tabanını değiştirme gibi modern bir bulut platformunu kullanmasına izin veren tamamlayıcı güncellemelere ihtiyaç duyar.
Önemli Mobil Uygulama Hizmetleri
Geliştiriciler, mobil uygulamalarının geliştirilmesini ve sunulmasını hızlandırmak için yüzlerce kullanılabilir bulut ve 3. taraf hizmetten yararlanabilir. Bununla birlikte, bir geliştiricinin tüm bu bireysel hizmetlerde uzman olması mümkün değildir.
Bunun yerine, mobil geliştiricilerin yapması gereken, en yaygın olarak gerekli yetenekleri uygulamalarına kolayca entegre edebilecekleri, kullanabilecekleri ve tüketebilecekleri ve yine de birçok mevcut hizmeti kullanma özgürlüğüne sahip olabilecekleri bir geliştirme ortamı aramaktır.
Temel
- Kullanıcı kaydı/Oturum açma ve yönetim
- Sosyal oturum açma (Facebook oturum açma, Twitter oturum açma vb.)
- Analitik ve kullanıcı etkileşimi
- Push bildirimleri
- Gerçek cihaz testi
Veri Servisleri
- Bulut depolama
- Gerçek zamanlı ve çevrimdışı veriler
- Uygulama mantığı/bulut işlevleri
Makine Öğrenimi
- Konuşma botları
- Görüntü ve video tanıma
- Konuşma tanıma