來自:36氪 連結:http://36kr.com/p/5117575.html 原文:https://medium.com/swlh/how-long-does-it-take-to-develop-a-mobile-app-77574df9d18d
App 開發分為四個階段。
到2021年,將會有大約3500億的移動APP下載量,這將創造約2000億美元的營收,因此如今移動APP的開發、營銷和銷售都在呈現指數級增長這個事實也就在情理之中了。
事實上,目前在Google Play商店中有280萬款APP可供下載,在蘋果App Store裡有220萬款APP可供下載,而且這些數字還在不斷增長。相對於桌面端而言,移動端的主導地位正在不斷加強,移動APP將會存在很長時間,尤其是在商業和科技領域更是如此。
因此,這些領域的創業公司的創始人都很想知道這個問題的答案:開發一款移動APP需要花多少時間和精力?
現有資料:開發一款移動APP需要3-5個月
儘管每年有100萬款新的移動APP會在主流應用商店上架,但關於開發一款新的移動APP究竟需要多長時間方面的資料卻非常少。雖然你會發現很多網站聲稱開發一款移動應用所需的時間大概為3-4個月,但要找到證明這個資訊的可靠資料卻並不容易。
不過,至少有兩個這方面的調查資料是值得一提的:
(1)在由Kinvey在2013年發起的一項調查中,Kinvey讓100名移動APP設計師指出,他們認為要開發出含有主要功能的Android或iOS的APP1.0版本需要多長時間(即一個最小可行化產品,也就是MVP),透過對這100個參與調研的應用設計師的反饋的資料進行求和平均,Kinvey發現開發一款原生的移動APP需要大約18周的時間(即:4.5個月),其中後端開發大概需要10周時間,前端開發大概需要8周時間。針對這個調研結果,Kinvey還製作了一張經常被大家取用和分享的移動APP開發時間軸資訊圖:
在下文中,我將描述後臺和前端開發的本質,因此,如果上面的資訊圖現在有點混亂,也請不要介意。
(2)第二個值得提及的這方面的研究是GoodFirms在2017年釋出的一份報告。
GoodFirms在應用領域進行了多項調查,調研的主題包括開發一款移動APP需要的時間和費用方面的問題
和Kinvey採用的方法類似,GoodFirms調研了幾十家科技公司,要求參與調研的公司估計開發像Instagram、Tinder和Uber這樣的APP需要多長時間,然後對參與調研者給出的資料進行了求和平均。
根據這個調研,GoodFirms的報告中展示了以下資料:
-
功能豐富的高度複雜的應用,如Instagram和Uber,需要花費4.5月-5.5個月的時間才能開發完成。
-
中等複雜的移動應用,如WhatsApp或QuizUp,需要大約4.6個月的時間才能開發完成。
-
使用者友好型但功能較少的應用,比如Tinder和Periscope,需要大約3.8月-4.1個月才能開發完成。
下麵是 GoodFirms製作的相應的資訊圖表:
總之,這兩項調研都表明,開發一款APP大約需要3-5個月的時間才能完成。儘管開發不同的應用需要的時間會有一定的差別,但大概的時間範圍是肯定沒錯的。
現在讓我們來看看開發一款移動APP所涉及的四個關鍵階段,以便探索可能會影響完成一款APP開發所需要的時間的各種因素和決策。
移動APP開發的四個關鍵階段
儘管我們可以將APP開發看作是一個迭代過程,但將過程概念化是有幫助的,因為它涉及到許多定義階段。我將一一描述APP開發的每一個階段,同時你要記住,每一個階段都不是與其它階段完全分開的。
階段1:調研和規劃
開發一款移動應用的第一階段需要回答兩個基本的問題:
(1)為什麼我要開發這款APP?這款APP為什麼需要存在?它將如何為世界帶來價值?人們真的想使用這款APP嗎?哪些人會使用這款APP?為什麼會使用?
(2)市面上是否已經這種型別的APP了?如果已經存在的話,我為什麼相信我開發的APP能戰勝其它競爭對手?我的APP與其它現有同類APP的區別和優勢分別是什麼?
從本質上看,要想回答諸如“我想要我的APP做什麼?我的APP為什麼要存在?我的APP如何擊敗競爭對手?”這些問題,這就需要你對你的標的市場和標的客戶群有深入的瞭解。
你需要對市場需求和客戶需求進行廣泛的研究,確保:(1)確認並證實一個能夠為你帶來盈利的客戶痛點;(2)計算標的市場規模;(3)驗證你的產品想法。此外,你還必須研究你的競爭對手,包括他們的APP、客戶和商業策略。
很難準確地指出你需要花多長時間來收集和確認這些重要的資訊,但是你很有可能需要花幾個星期的時間來調研和驗證想法。
階段2:功能和特性
在收集了足夠多有關理想客戶的需要和需求資料後,確定你打算提供的解決方案確實是有很大的市場需求的,接下來你必須決定應該要為你的APP開發哪些具體的功能和特性。很多移動APP開發者都會迷失在這個階段。
在這個階段,你要精確地確定你想讓你的APP以何種方式執行:
-
你希望你的APP能夠做些什麼?
-
它將執行哪些任務、功能和操作?(一對一聊天?與其他應用整合?等等)
-
它將如何處理資料?它將從使用者那裡收集原始資料,還是利用現有的資料框架?
這時,你就需要建立故事板(storyboard)了,例如應用程式的使用者介面的視覺化展示,顯示內容的螢幕和這些螢幕之間的聯絡和連線:
故事板有助於你發現可用性方面的問題,並改善使用者體驗。
在確定移動APP的功能和特性階段,你還要開發用例,這些用例作為理想使用者與應用進行互動的模板。正如Crew的團隊成員所說的那樣,你開發的功能越多,你的產品就會越複雜,開發應用所需的時間也就越長。
你在這個階段必須做的最重要的決策之一就是你的APP要支援多作業系統和裝置,還是隻支援一種作業系統和裝置。實際上,這通常意味著你必須決定你的APP是否有iOS、Android和Windows版本。
為什麼這個選擇從時間表的角度來看非常重要呢?主要因為兩個原因:
(1)為多個作業系統和裝置開發一款APP需要更長的時間才能開發完成。
(2)雖然隨著時間的推移,這一差別變得越來越不明顯,但開發一款安卓APP比開
發一款iOS APP通常需要更多的時間(通常需要多花20-30%的時間)。
關於這一點,Valeriia Timokhina曾表示:“iOS通常是最開始推出應用的首選平臺,因為只有少量的標的裝置和作業系統需要適配。相對於一次性需要適配多個作業系統,一次只確保你的應用在一個作業系統上完美地執行容易得多。此外,在市面上有超過12000個不同的Android裝置,幾乎不可能將APP針對每一款Android裝置都進行最佳化。因此,開發和測試Android APP往往需要花費更多的時間,除非你限制支援的裝置和支援的螢幕解析度的數量。如果你想同時開發iOS和Android APP,那麼你開發APP所需要的時間和預算可能會翻倍。”
關於你應該如何同時開發麵向多個作業系統的應用,Cruxlab的工作人員指出:“傳統上,Android APP程式是用Java開發的,而iOS APP則是用Swift和objective-objective編寫的。儘管如此,仍然存在大量其他可替代的替代工具,Xamarin、React Native和Ionic是其中的一些比較受歡迎的替代工具。”
在沒有深入技術細節之前,如果你想同時開發iOS和Android APP(也可能包括Windows應用),那麼你可以選擇下麵兩種路徑中的一種:
(1)使用兩種完全不同的程式語言來開發APP的兩個不同的版本;
(2)使用跨平臺的開發工具(React Native、Ionic等)同時開發APP的兩個版本,從而簡化流程。
這裡再強調一遍,雖然無法準確預測確定APP的核心功能特性所需要的時間,不過大概的時間範圍是肯定的:3-5周左右。
階段3:技術可行性、設計和開發
在確定了你想要APP做什麼以及期望它如何執行之後,你接下來必須要明確地確認將這些功能和特性開發出來並正常執行是能夠做到的。在這個過程中,需要讓你的技術團隊參與確認,你想要給使用者帶來的功能和產品前端互動體驗是能夠在後端透過程式設計來實現的。換句話說,你需要確保前端和後端系統之間的相容性。為此,你必須諮詢你的技術人員並與其合作。
前端系統包括一個軟體、應用程式或網站的視覺化前端元素,它們可以被終端使用者直接檢視和訪問。相反,後端系統由一個網站、軟體或資訊系統的核心計算邏輯組成,這些系統是可以供使用者透過前端應用程式或系統間接訪問的。
前端開發主要集中在開發的客戶端。前端開發人員將參與分析程式碼、設計和除錯應用程式,同時確保提供一個無縫的使用者體驗。你可以管理和控制人們在瀏覽器或應用中首先會看到的東西,作為前端開發者,你要負責網站的外觀、感覺和最終設計。
後端開髮指的是伺服器端的開發,你主要關註的點是網站是如何工作的。這種型別的web開發通常由三個部分組成:一臺伺服器、一個應用和一個資料庫。後臺開發人員編寫的程式碼是將資料庫資訊傳到瀏覽器或應用中。任何你無法輕易看到的東西,比如資料庫和伺服器,都是後臺開發人員的工作。
從技術上講,前端流程包括快取、同步、線框圖、UI設計、UI開發等。資料儲存、使用者管理、伺服器端邏輯、資料整合和版本控制等都屬於後端開發。由於後端流程負責計算、業務邏輯、資料庫互動和效能等方面的操作,讓應用執行的大部分程式碼都是後端程式碼。
後端工程師要與前端設計人員保持持續的溝通,這一點至關重要。否則你就有可能陷入這樣一種危險的境地:後端工程師無法開發前端設計人員想要的東西。
如果你想與後端基礎架構一起來開發前端移動APP,那麼最重要的是你要對所要開發的功能進行優先順序排序。讓你的後端工程師先開發,這樣你的前端工程師才可以開發功能程式碼。如果後端沒有很好地定義,也沒有相應的功能,那麼前端工程師的工作效率就會低很多。
開發APP的一個關鍵部分在於需要能成功地訪問你的應用執行的核心資料。你是會使用公共API密匙,還是會開發自己的抽象層?
API的全稱是Application Programming Interface(應用程式介面),它代表了一種獨特的程式碼,允許應用與應用之間(開發者)相互訪問。一些全球知名的應用都有開放的API,比如Dropbox、Facebook、Instagram、Skype、Twitter和Uber,開發人員可以利用這些API來開發自己的應用。
例如,流行的基於滑動的交友應用Tinder就使用了Facebook的API:Tinder使用者透過他們的Facebook主頁登入Tinder,正因如此,Tinder就沒有必要從零開始打造自己的使用者群。
確定前端和後端相容性需要涉及各種不同的UX(使用者體驗)和UI(使用者介面)設計流程,包括線框圖:
作為UX設計的一部分,線框圖是一個頁面或應用介面的二維圖,主要展示的是內容的空間分配和優先順序,可用的功能以及預期的行為。
線框圖主要是灰色的,主要幫助:
(1)在APP的資訊架構與它的視覺設計之間搭起一座橋梁。
(2)闡明在使用者介面上所顯示的資訊的一致方法。
(3)確定互動介面中的預期功能。
(4)透過確定給一個特定專案分配多少空間以及將該專案在螢幕上的位置,併進而來進行內容的優先順序排序。
下麵是Facebook的線框圖的例子:
在產品開發和最佳化週期的不同階段都可以製作線框圖。例如,有些人會選擇在功能和特性階段早期製作線框圖,將線框圖與故事板和其它基本視覺表現的使用聯絡起來。另一些人則在設計和開發階段製作線框圖,把它與對前端和後端相容性的調查聯絡起來。
正如 Sheila Olson 所言,線框圖和故事板可以作為你用來支撐APP的後臺架構的嚮導——API、資料圖、伺服器、資料整合和推送通知服務。
對於那些在設計和開發階段製作線框圖的人來說,大概的順序是這樣的:
線框圖→ 低保真原型→高保真模型→程式碼。
一旦完成了線框圖的製作設計後,就可以建立應用的圖形使用者介面(GUI)了,這個介面是用來建立新增特定字型、顏色、主題和圖示的地方。
正如 Aim Consulting的人所言,一旦設計元素完成之後,設計結果就能提供一個清晰的視覺方向,讓你的工程師瞭解預想的最終產品以及APP中的互動感覺、移動和流動應該是怎樣的。
你可以透過利用專門為這個目的設計的軟體平臺來開發你的新APP(例如:應用程式開發程式,其中很多都是拖放介面)。然而,我們建議你與一個專業的應用開發代理商合作,因為代理商在幫助企業家成功地執行他們的想法方面擁有豐富的經驗。
總而言之,進行技術可行性評估,確定前端設計元素,並編寫後端架構,這可能需要1-2個月的時間才能完成。
階段4:測試與改進
開發一款APP的最後一個階段(除了實際釋出和相關的營銷活動之外)是測試和改進階段。
現在,從某種層面上說,測試是開發階段的一部分,因為你的程式員和Alpha測試工程師在開發過程中會不斷地嘗試打破你的APP,以便在其釋出之前發現並糾正程式碼中存在的錯誤。
Alpha測試是你的公司內部的進行的,因為你的開發人員(無論是員工還是外包)將會在你的APP釋出到真實的終端使用者手裡之前對應用進行標準化的診斷。
Beta測試的目的是在實驗室外測試你的APP:當真正的使用者有機會按照他們自己喜歡的方使用APP而不是按照你設想的方式使用APP時,這時會發生什麼呢?Beta測試的關鍵是要弄清楚當日常使用者將你的應用下載到他們的手機上並按照他們喜歡的方式使用應用時,你的應用是否能支撐住。
Alpha測試需要發現主要的bug和小故障,而Beta測試需要能夠發現APP在真實使用者的真實使用環境中可能會出現的問題。
Alpha測試(開發階段)和Beta階段(測試階段)對於打造一款可靠的應用都是必不可少的組成部分。
一旦你在你自己的開發團隊中對應用完成了Alpha測試後,你就應該將APP開放給特定的公眾進行Beta測試。
你如何才能為即將釋出的應用找到合格的Beta測試者呢?你可以透過一些基於Web的服務和平臺來找到測試者,包括BetaFamily、BetaList、ErliBird、PreApps、TestElf、Reddit和UserTesting等。
如果你已經完成了一輪或幾輪Alpha測試,那麼你的Beta測試階段需要花的時間應該不會超過3-4周。
結語
在上面的時間基礎上,我們還為APP開發的四個階段分別還留有了一定的時間緩衝,因此我們最終計算出,開發完成一款應用所需的最終時間大概在4-5個月。因此,我們會發現,開發一款移動APP是一個相當漫長而複雜的過程,需要大量的準備、耐心和投入才能正確地執行。
下麵是我為大家的APP開發之旅提供的最後兩點建議:
(1)在制定APP開發時間表上,要保持適當的靈活性,要做好延遲的準備。很多無法預見的情況都會造成時間的拖延,如iOS新版釋出、第三方整合發生的變化、質量測試過程中出現的意想不到的問題等。在完成開發的過程中,要給自己留出一個緩衝時間,而不是一個嚴格的最後期限。你最不想看到的就是將APP釋出到應用商店後,發現這款應用崩潰了或者出現其它更糟糕的情況。你只有一次給使用者留下第一印象的機會,你肯定不想成為那些在被使用者下載後就被立即棄之不用的APP。
(2)確保你能夠在APP釋出後依然可以隨時與開發團隊溝通。如果你正在與外部供應商合作開發你的APP,確保你在APP釋出後透過託管服務協議或類似的合作伙伴關係來繼續與開發團隊溝通,移動APP並不是那種“一旦開發完成便終身無憂”的產品。
●本文編號243,以後想閱讀這篇文章直接輸入243即可
●輸入m獲取到文章目錄
駭客技術與網路安全
更多推薦《18個技術類公眾微信》
涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。