1. FİKİR ÜRETMEK
Bir uygulama geliştirmek için en önemli birincil aşamadır. Neticede her başarılı uygulama bir FİKİR ile ortaya çıkmıştır. Geliştirilmesi planlanan uygulamanın bir sorunu çözmesi veya bir ihtiyacı karşılaması gerekir. Fikrin uygulanabilir ve özgün olması da önemli bir başka kriterdir. Bu aşamada FREEWRITING adı verilen yöntemin kullanılması tavsiye edilir.
1.1. FREEWRITING
Uygulama ile alakalı düşünülen, akla gelen her şeyin bir kâğıda dökülmesi ve daha sonrasında toplanmasıdır. Burada “her şey” derken tam anlamıyla her şey olmalıdır, çünkü bu yöntem uygulama geliştirirken tahmin edilemeyen pek çok duruma hazırlıklı olmayı sağlar. Bir başka deyişle bütün bir süreç için, geliştirmek istediğimiz uygulamanın kafamızda belirginleşmesine yarar.[1][7][14]
2. ARAŞTIRMA
Bir fikir oluşturulduğunda, uygulamanın başından geçen tüm süreci planlamak gerekir. Uygulama geliştirme sürecinde harcanan vakit ve para kaybını en aza indirmek için daha önce yapılan hatalardan ders çıkarmak gerekir. Bu hataların hepsini tek başına yapmaktansa daha önce yapılan hatalara bakmak çok işe yarar. Başlamak için en iyi yerlerden biri rekabeti belirlemektir. Başka bir uygulamanın da benzer bir amaca hizmet edip etmediğine bakmalı ve aşağıdakiler aranmalıdır:
Yükleme sayısı: Bu uygulamaları kullanan biri var mı,
Derecelendirmeler ve incelemeler: İnsanların bu uygulamaları sevip sevmediğini ve neleri sevdiklerini / beğenmedikleri,
Uygulama geçmişi: Bu uygulamaların zaman içinde nasıl değiştiğini ve yol boyunca ne tür zorluklarla karşılaştıkları, Kullanıcı tabanını büyütmek için neler yaptıklarını,
İncelemek gerekir. [1][7][14][18]
3. KESİNLEŞTİRMEK
3.1. Uygulama Hedef Kitlesi
Bir uygulama geliştirirken hedef kitlenin kimler olduğunun bilinmesi gerekir. Bu aşama, uygulamadan özellikle maddi bir beklenti varsa daha da önem arz eder. (Küçük bir çocuk ile yetişkin bir insanın mevcut uygulamaya yatırabilecekleri para miktarı çok farklıdır.) Uygulama ile sunulan faydaların, hizmetlerin, ürünlerin ihtiyaçları nasıl ve ne ölçüde karşıladığını göz önünde bulundurmak çok önemlidir. uygulama, beklentileri ne kadar iyi karşılarsa, hedef kitleyi yakalamak da o kadar kolaylaşır.
Örneğin bir bankanın mobil uygulamasında; Açıkça uygulamanın en çok hitap ettiği kesim, kendi müşterileridir. Bir başka örnek de mobil oyunlarda, nerdeyse 7 den 70 e pek bir sınır yoktur.
3.2. Mobil Platformlar ve Desteklenecek Cihazlar
Mobil platformlar ve cihazlar; donanımlarının performansı bataryalarının durumu, dayanıklılıklarını ve bağlanabilir çevre birimlerini de göz önünde bulundurarak seçilmelidir. Bunların dışında kapsama alanı, cihaz desteği ve diğer özellikleri de göz önünde bulundurmak gerekir. Uygulamanın hangi platformlarda ve ne tür cihazlarda çalışacağını belirleyerek uygulamanın geliştirilme sürecinde ulaşılabilecek sınırların belirlenmesi sağlanır.
3.3. Gelir Modeli
Uygulamadan kazanç sağlamanın çeşitli yöntemleri vardır. Bu yöntemlerden hangisinin geliştirilen uygulama için en iyisi olduğunu belirlemek için pazarda bulunan alternatif uygulamalarda hangi gelir modellerinin kullanıldığı incelenmelidir. Ayrıca, uygulamayı pazara sürdükten sonra hangi aşamada para kazanmaya başlanılacağı da düşünülmesi gerekir.
Uygulamadan para kazanma yöntemleri:
Reklamlar: Reklamlar, mobil uygulamalarda en çok tercih edilen gelir modelidir. Reklamlar tam ekran veya banner şeklinde olabilir. Ayrıca tam ekran reklamlar ise geçilebilen ve geçilemeyen reklamlar olmak üzere ikiye ayrılır. İzleme, tıklama ve etkileşim başına gelir elde edilir.
Ücretli indirme: En az tercih edilen gelir modelidir. Yüksek rekabet sebebiyle uygulamanın tanıtımı iyi bir şekilde yapılmazsa ve kullanıcılar ikna edilemezse bu yöntem bir getiri sağlamaz. Ayrıca uygulamanın korsan olarak dağıtılması en büyük sorunudur. Bu yöntemi sadece korsan korumalı platformlarda kullanılmaya özen gösterilmelidir. (Android üzerinde APK sorunu varken, iPhone, iPad gibi iOS işletim sistemli cihazlarda böyle bir sorunun olmaması.)
Uygulama içi satın alma: Ücretli indirme yerine tercih edilebilen bir gelir modelidir. Bu gelir modeliyle uygulama ücretsiz sunulur ancak uygulamanın içerisinde, kullanıcının cazip teklifler ile para ödemesi sağlanır.
Burada dikkat edilmesi gereken husus ise kullanıcıya sunulan ücretli içeriğin gerçek anlamda etkileyici olması gerektiğidir. Bu gelir modeline daha çok oyunlarda karşılaşılır. Üyelik teklifleri de bu kategoridendir.
Netflix abonelikleri, Youtube Premium vb. sistemler bunlara örnektir[1][2]
4. UYGULAMAYI TASARLAMAK
Tasarlama aşamasında uygulamaya görsel ve işitsel şekil/form kazandırılır. Bu aşamalar aşağıdaki gibidir:
Tasarım Araştırması : Bu adım için daha önce de yapıldığı üzere, varsa halihazırda bulunan uygulamaların tasarımlarını, kullanıcı ara yüzlerini (UI), logolarını vs incelemek ile başlanmalıdır. Burada dikkat edilmesi gereken husus tasarımın içeriğin üzerine inşa ediliyor, içeriğe göre yapılıyor olmasıdır. Bu aşamada içeriğin halen tamamlanmamış olması tasarımın sürekli değişmesine sebep olup gereksiz zaman ve para kaybına yol açacaktır. Bir müzik uygulamasının arayüz tasarımı ile haber uygulamasının arayüz tasarımı aynı olamaz. Bu yüzden, içeriğin tasarım süreçlerinden önce tamamlanması önemlidir.
Örnek toplamak için kullanılabilecek siteler: [10][29][30]
Akış Şeması (Flowchart) : “Akış şeması: mobil uygulamanın içindeki ekranlar arasındaki geçişleri, hangi ekrandan hangi ekrana geçileceğini ve uygulama içindeki diğer navigasyonel fikirlerin sürecinin her bir aşamasını (ara yüzünün) oklar ile birbirlerine bağlanarak tasarım süreci başlamadan önce görsel olarak düzenlenmesidir.”
Akış Şeması için kullanılabilecek programlar: [31][32][33][34]
Digital branding : Akış şemasının ardından tüm tasarım sürecini biraz daha kolaylaştıracak bir logo tasarlamak isabetli olacaktır. Bu logo, uygulamanın açık ya da kapalı olduğu her an onu simgeleyecek ana görsel olacaktır. Dolayısıyla diğer uygulamaların logolarının da yanında renk, şekil ve çizim olarak uygun bir tasarıma sahip olmalıdır. Logonun tasarlanmasının ardından diğer görsel içeriği de buna göre yapmak gerekir.
Wireframing : Wireframe Türkçe’ye çevirisi telkafes olsa da aslında geliştirilen mobil uygulamanın arayüzünün şematik bir planıdır. Bir diğer deyişle tasarımın görsel bir iskeletidir. Burada wireframe, elle çizilebileceği gibi artık dijital ortamda da çeşitli araçlar ile hazırlanabilir. Wireframe görsel elemanların nerede olduklarını genel hatlarıyla göstermek için kullanılır.
Bazı Wireframe araçları- Örnekler için kaynak site: [35][36][37][38]
UI Kiti ve arayüz detaylarının tasarımı : User Interface yani Kullanıcı Arayüzünün, daha önce birbirleriyle genel hatlarıyla etkileşimleri belirlenen(wireframe ile) görsel elemanların kendilerinin tasarlanmasıdır. Bu tasarımı, daha önce yapılmış uygulamanın ana logosuna göre yapmak gerekir. Bu tasarım yapılırken kullanılabilecek birtakım siteler elbette mevcuttur fakat bu durum özgün görseller hazırlamanın önüne geçer. Arayüzü tasarlarken renkleri, şekilleri, çerçeveleri gibi tüm görsel detayları iyi düşünmek gerekir. Bu süreçte de tutarlı bir tasarım yapmak tüm ikonların beraber çalışmasını kolaylaştırır. (Tüm bu tasarımlar neticede (UX) kullanıcı deneyimini birincil derecede etkileyen faktördür.)[1][9][11]
Uygulama tasarlamaya yönelik bazı web siteleri-Yaygın mobil tasarım modelleri: [13][39]
5. Uygulama Geliştirme Yaklaşımını Belirlemek (HYBRID-NATIVE-WEB)
Tasarım tamamlandıktan sonra asıl işlemlerin yapıldığı, fonksiyonların gerçekleştirildiği kısım yazılımdır. Her tıklanan butonun altında yapılacak işlemlerin cihazı yormadan hızlı çalışması gerekir. Bunu yapabilmek için algoritma yapısının iyi oluşturulmuş olması gerekir.
5.1. IDE Nedir? (Integrated Development Environment – Tümleşik Geliştirme Ortamı) (Tanım-1)
“IDE bilgisayar programcılarının hızlı ve rahat bir şekilde program geliştirebilmesini amaçlayan, geliştirme sürecini organize edebilen birçok araç ile birlikte geliştirme sürecinin verimli kullanılmasına katkıda bulunan araçların tamamını içerisinde barındıran bir yazılım türüdür.”
5.2. Native (Yerel)
Platforma özel olarak yani platformun kendine has IDE ve Dilleriyle uygulama geliştirilmesidir. Örnek olarak; IOS platformuna Native olarak uygulama geliştirmek için Apple’ın kendine has dili olan Swift veya Objective C bilmek ve IDE olarak Xcode kullanmak gerekir. Aynı zamanda muhakkak bir Mac OSX işletim sistemli bir bilgisayar da bulunmalıdır.
Android platformuna Native olarak uygulama geliştirmek için Google’ın kendine has dili olan Kotlin veya Java bilmek ve IDE olarak da Android Studio (ya da Eclipse, Netbeans) kullanmak gerekir.
5.3. Hybrid (Karma-Melez)
Hybrid uygulama ise platforma özel ayrı ayrı proje geliştirmeye gerek kalmaksızın tek kod ile yazılan ve çeşitli platformlarda çalışabilen uygulamalardır. Bu tip uygulamalar temelinde C#, HTML, CSS, Javascript, dilleri kullanılarak ortaya çıkarılır. Sonuç olarak Webview şeklinde isimlendirilen bir tarayıcı sayesinde aktif hale getirilir. Cross-platform (çarpraz platform) olarak da adlandırılan bu uygulama geliştirme yaklaşımında, tüm platformlar için hemen hemen aynı sonuç üretilir ve tek bir dil kullanarak native benzeri bir uygulama oluşturulur.
Hybrit uygulama geliştirmek için bir çok IDE bulunmaktadır, ReactNative, Xamarin, Cordova, Ionic, PhoneGap, Titanyum, Smartface… gibi. Her IDE’nin kendine özgü farklı kullanım şekilleri, farklı geliştirme yöntemleri ve dilleri bulunmaktadır.
5.4. Web Uygulama Geliştirme
Bu yöntemle geliştirilen uygulamalar, sadece ağ bağlantısı üzerinden HTTP (Hypertext Transfer Protocol) kullanarak çalıştırılabilirler.Web tabanlı uygulamalar esasında cihazın hafızasında yer etmez ve internet tarayıcısını kullanarak aktif bir şekilde kullanılırlar.Ancak bazı web tabanlı geliştirilen uygulamalar istemci-sunucu ilişkisi içinde çalışarak cihaza az da olsa bir kod parçasının yüklenmesini gerektirebilir. Buna karşın yine de asıl işlem sunucu tarafında gerçekleştirilir ve tamamlanır. İnternet üzerinden aktif bir şekilde çalışabilmeleri en önemli özelliklerindendir. Çünkü bu sayede mekan, zaman, cihaz ayırt etmeksizin çeşitli amaçlar doğrultusunda internete bağlantı sağlandığı sürece her türlü hizmet ve işlemler yürütülebilir haldedir.
Böyle uygulamalara aynı zamanda internet yazılımları, uygulamaları da denebilir.Web tabanlı uygulamalar sadece programlama dilleri kullanarak geliştirilebilirler. Bunun için birçok programlama dili mevcuttur. Ancak sonuç olarak farklı diller ile aynı işleve sahip uygulamalar geliştirilir. İnternet tarayıcısı üzerinden kullanılan ve http protokolü kapsamında haberleşmeyi sağlayan tüm yazılımlar bu tarz uygulamalara örnek olarak verilebilir.
Web tabanlı uygulamaların bir diğer özelliği performans konusunda esneklik sağlayabilmesidir. Yani hangi tarayıcı olursa olsun çalışabilmektedirler. Ayrıca bu uygulamalara herhangi bir güncelleme yapılacağı zaman tüm kullanıcıların cihazlarını güncellemektense sadece sunucunun olduğu bilgisayar güncellenerek çok gereksiz ve uzun ikinci bir işlem yapılmadan çözüme ulaşılır. Bir diğer avantajı ise diğer uygulama geliştirme yaklaşımlarında yaşanabilecek sistem çökme sorununun Web tabanlı uygulamalarda olmamasıdır. Gerektiği takdirde bir başka cihaz ile aynı işlemlere devam edilebilir. Bunun nedeni ise daha önce bahsedildiği üzere web tabanlı uygulamaların adı üstünde internet üzerinden aktif olarak çalışmalarıdır
Web tabanlı uygulamalar kişilerin bireysel siteler yapabilmesinden büyük çaplı e-ticaret sitelerine varana kadar tek bir merkezde yönetim ve denetim ile işlevsel çözümler oluşturur.
Kaynak : GitHub - abdullahaligun/KOU-BSM-Giris-Sunum-Mobil-Uygulama-Gelistirme: Kocaeli Üniversitesi Bilişim Sistemleri Mühendisliği (burada bulunan Rapor dosyasında detaylı kaynaklar bulunmaktadır.)