開發一個產品(本文「產品」特指移動端軟件產品,可是移動端產品的設計流程和方法與PC端的產品並沒有本質區別),html
能夠是一項很簡單的事情:android
打開IDE,拖幾個控件,寫幾行代碼,作一個簡單的測試,提交到app store上,ios
一個下午搞定一個產品; windows
也能夠是一項很複雜的事情:架構
他可能會包含嚴格的前期設計、app
可用性測試、驗收測試(在數千種不一樣的環境和終端上進行的測試)、ide
一個完整的生命週期管理方案、工具
而且規劃出不一樣的實現方案; 佈局
本文將詳細介紹一下產品的開發過程,也就是軟件開發生命週期:性能
(SDLC:Software Development Lifecycle)
咱們將針對產品生命週期的各個階段進行詳細的討論,
包括:靈感、設計、開發、測試、分發、維護等內容;
另外咱們也會討論,在產品開發的各個階段存在的各類各樣的權衡和取捨;
這篇文章試圖回答一系列關於產品研發生命週期的基本問題
文章所涉及的內容對新手和有經驗的開發者都頗有用
當你須要開發一個產品的時候,這篇文章所討論的內容,對於你將有必定的指導意義;
移動應用產品研發的生命週期與PC端產品或者WEB端產品本質上沒什麼不一樣
它主要由5個部分組成
啓動階段
每一個產品都來源於一個想法,這個想法就是這個產品最底層的支撐基礎
設計階段
設計階段包括:用戶體驗設計(整體佈局是什麼樣,基本的操做是什麼樣),用戶界面設計(由用戶體驗設計衍生而來)
開發階段
開發階段是資源投入最多的階段,這是實實在在的產品建設階段;
測試階段
當開發工做進行的差很少了,QA就會介入進來測試產品,最終產品會進入beta階段,這時會有更多的用戶來使用你的產品,並收集他們的反饋意見
發佈階段
不少時候這幾個階段都是由重疊交叉的現象的,
好比好多時候,UI設計工做已經完成了,已經進入開發階段了,又有一些東西須要從新設計;
另外,產品到了穩定階段,仍舊會由一些新的特性會被引入進來;
有不少方法論支撐完成這幾個階段的工做,好比敏捷開發,螺旋開發,瀑布開發等
下面咱們就詳細介紹一下這幾個階段的具體內容
幾乎接觸互聯網的每一個人,都想成爲一個互聯網的產品經理;
如今互聯網設備已經成爲人民生活的基礎設施了;
產品的啓動階段主要是關於產品想法的定義和細化工做的;
爲了打造一個成功的產品,
有必要問本身一些基本的問題
競爭優點
市場上是否有了相似的產品,若是是,那麼你想作的產品與市場上的產品有什麼區別?
價值
你的產品將帶給用戶什麼價值?你的用戶將怎麼使用你的產品
集成工做
若是你開發的是一個企業應用,那麼這個產品將會與什麼系統集成,或者將被什麼系統集成?
爲了設計一個產品的功能
有必要爲這個產品定義角色和用例
角色是這個產品不一樣身份的用戶
用例是不一樣身份的用戶的行爲和意圖
舉個例子
一個活動分享類產品,可能會有兩個角色的用戶:
用戶和好友
一個用戶可能建立一個活動
而後給他的好友分享這個活動
建立和分享這兩個動做就是兩個不一樣的用例
有了角色和用例
你就知道本身要建立什麼畫面了
甚至你會知道本身須要建立哪些實體,撰寫哪些業務代碼
一旦你挖掘、定義了足夠多的角色和用例
設計一個產品就會變得很是簡單
開發工做就能夠只關注怎麼建立這個產品
而不是這個產品應該具有哪些功能
一旦定義好了產品的功能和特性,第二步要作的工做就是解決用戶體驗的問題
用戶體驗設計(UX Design 即 User Experience Design)
用戶體驗設計工做常常是經過線框圖或者實物模型來完成的
不少相似的工具均可以完成這項工做,好比:Balsamiq, Mockingbird, Visio
或者就是簡單的使用一張紙和一支筆
用戶體驗設計工做開展的時候,沒必要擔憂任何界面美觀的問題
工做產物可能就想下面這樣
當你完成用戶體驗設計工做以後
你須要考慮你的產品要在哪些平臺上被使用
對於移動應用來講,各個平臺都有各自的用戶體驗設計規範和約束:
蘋果設計規範:https://developer.apple.com/ios/human-interface-guidelines/overview/themes/
安卓設計規範:http://developer.android.com/design/index.html
windows phone設計規範:http://msdn.microsoft.com/en-US/library/windowsphone/design/fa00461b-abe1-41d1-be87-0b0fe3d3389d(v=vs.105).aspx
舉個例子
每一個移動應用系統,在切換畫面的時候,都有本身的一套設計理念
IOS系統用一個在屏幕底部的tab條
安卓系統用一個在屏幕頂部的tab條
而windows phone用的是全景視圖模式
另外,硬件自己也會影響用戶體驗設計工做
好比蘋果設備就沒有物理返回鍵
因此你要在你的畫面上設計一個返回鍵
更進一步,不一樣分辨率的屏幕也會影響用戶體驗設計
一個平板電腦有更多的空間供你使用
一個移動電話你就須要設計多個畫面來完成一項複雜的功能
由於市面上有多種不一樣分辨率的移動設備
有可能他們是介於平板電腦和移動電話之間的設備
這些你也是須要考慮的
用戶界面設計(UI Design 即 User Interface Design)
一旦用戶體驗設計工做完成以後,
接下來就要設計用戶界面了;
用戶體驗設計工做的產物通常是黑白的線框圖(草圖),
用戶界面設計工做就要把顏色、圖形等內容設計好了,
花大量的時間用在UI設計工做上是值得的,
由於一個好的產品,一般具有一個很是專業的用戶界面設計;
和用戶體驗設計同樣
每一個移動應用平臺都有各自的用戶界面設計語言
因此一個好的應用
在不一樣的平臺上,看起來也每每會不同
推薦以下幾個設計網站給你們
Android:http://androidpttrns.com/
三個平臺:http://lovelyui.com/ 、 http://mobiledesignpatterngallery.com/
另外,你能夠在下面幾個站點,看到全世界設計師的工做產物
http://behance.com/ 、http://dribbble.com/
也能夠在這些平臺找設計師幫大家工做
不少時候,產品原型設計(黑白線框圖)工做結束以後,就會進入開發階段;
由於產品原型設計能夠很具體的描述產品的功能
如何完成一個產品的開發工做,有很是多的內容須要討論
由於會偏離文章的主題
這裏不作詳細描述
測試階段主要工做就是找出你產品的問題
好比:當我點這個按鈕的時候,你的APP崩潰了;
固然,產品的問題不僅僅是功能性的問題
還有可用性的問題和性能的問題
產品穩定性測試最好在產品技術架構開發完成以後就立刻開展
由於越是開展的完,發現了問題以後,修復問題的成本就越是高
隨着測試的深刻,
你的產品可能會進入以下幾個階段:
Prototype、Alapha、Beta、Release Candidate
不一樣的產品經理可能會爲本身的產品定義不一樣的階段
可是他們每每會遵循以下的原則:
Prototype
這個產品仍處於概念驗證的階段,並且只具有核心的功能,只有產品的核心部件能夠爭產運行,可能會存在嚴重的BUG
Alapha
這個產品的核心功能已經開發完成,但可能未經全面測試,仍舊可能存在嚴重的BUG,外圍的一些功能還未提供
Beta
絕大多數功能已經開發完成,並且作了最基準的功能測試,而且完成了BUG修復工做,仍然可能存在一些缺陷(issues)
Release Candidate
全部的功能都已經完成而且經過了測試,這個產品對外發布已經提上日程,但在這個階段自己仍有可能會發現新的BUG;
測試工做應該儘量早的開展
好比,你在產品的Prototype階段發現了一個致命的問題,
用戶體驗設計產物(UX設計階段的產物)還能夠被修改,用來解決或者掩蓋這個問題,
若是一個在Alapha階段發現了一個性能問題,
你還能夠及時修改你的技術架構,
等到在錯誤的技術架構上開發了不少業務代碼,再想改架構就麻煩多了;
原則上,
隨着產品開發和測試工做的不斷深刻,
應該逐步把產品推給更多的用戶使用,
收集他們的意見。
舉個例子:
Prototype版本的產品能夠推送給利益相關者使用
Release Candidate就能夠給那些願意體驗新功能的最終用戶使用
另外,不管是開發仍是測試所使用的設備的數量是有限的
然而產品投放到市場以後,所面對的設備數量是無限的
各類不一樣的軟硬件環境都有可能碰到,
因此應該儘早的讓社會上的自由職業者來幫你測試軟件
讓他們用本身的設備測試你的產品
你給他們提供遍歷的工具讓他們反饋他們發現的問題;
目前市場上有不少平臺提供這項服務
好比:
Testflight
這是一個蘋果的產品,他能夠收集蘋果APP的使用狀況和崩潰記錄
你若是是蘋果企業應用開發者是不能用這個產品的
這個產品跟Testflight很是類似,只不過是安卓平臺上的產品而已
他們的產品容許你自定義用戶的使用場景和方式
跟蹤用戶的行爲,甚至能夠作A/B測試
(A/B 測試就是把用戶分爲兩羣,一羣訪問A方案,一羣訪問B方案。最後用統計數聽說明那個方案更好)
能夠提供安卓、蘋果和windows phone三個平臺的測試服務
一旦產品經過了測試階段的各類測試,
那麼就要把產品發佈給最終客戶了
目前市場上有很是多的產品發佈辦法
IOS應用
那麼通常狀況下你會發布到Apple app store
安卓應用
大部分用戶都會發布到google play上
然而國內用戶用不了google play
但你仍是能夠選國內的一些應用平臺的
windows phone應用
會發布到windows phone dev center
這裏提供兩個參考連接:
http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff402565(v=vs.105).aspx
http://dev.windowsphone.com/en-us/publish
文章參考了:https://developer.xamarin.com/guides/cross-platform/getting_started/introduction_to_mobile_sdlc/
在決定寫本文以前,覺得本文會有不少有用的乾貨
後來寫着寫着發現大部分都是基礎知識
但我仍舊仍是把他寫完了
但願能給剛入門的朋友提供一些幫助
本文國慶節的時候開始想寫
2017-10-23:開始寫第一部分
2017-10-27:完成大部份內容
2017-10-28:完成所有內容