文/姚冬
通過對Android產業開發的簡要分析,總結了Android系統開發中遇到的各種問題,從產品組合、需求管理、建模與重用、協同開發等角度分析和總結出能夠加速Android系統開發並有效提高產品品質的方法和思路。最後在此基礎上,提出了Android系統開發平台的解決方案,並結合整個產品生命週期,對Android系統開發中的各個環節加以表述。
經過多年的發展,Android已不是最初設想的僅僅作為行動裝置的平台,它提供了一個跨裝置的通用結構,並且開始進入其他數字消費裝置領域,諸如平板電腦、移動互連網裝置、Google TV等,甚至有配備觸控螢幕的家用固定電話、遙控器、飯店的觸控螢幕目錄、醫療設備以及廚房電腦等。
Android用它開放、跨平台的通用軟體架構征服了眾多消費者以及廠商,前景一片光明,但並非一片坦途。無論是與Apple平台,還是 Android同一產業鏈上的不同廠商之間,競爭始終存在。在Android面前人人平等,如何能夠在相同的起跑線下脫穎而出,得到市場和客戶的認可,是擺在我們面前的巨大挑戰。
本文從多個角度出發,分析了Android產品開發中遇到的問題,探討了有效提高產品開發效率的方式和方法,試圖找到一個通用並行之有效解決方案。由於整個方案貫穿Android產品生命週期,因此稱之為Android系統開發平台,希望能夠對致力於Android產業的廠商或個人有所啟示。
圖1 Android系統階層(引自Android官網)
Android系統開發平台
Android希望能夠建立標準化、開放式的軟體平台和作業系統,平台由作業系統、中介軟體、使用者介面和應用程式組成,已經衍生出一條由手機和其他終端製造商、行動電信業者、半導體公司、軟體公司等組成的、完整的產業鏈和生態環境。此舉必將推進更好、更快的創新,為移動使用者提供更多功能強大的應用和服務。1所示。
Android開發不只局限於Android應用的開發,而是涵蓋整個Android產業鏈的所有環節,從系統的定製,到電子裝置的研製,甚至可以包含適用於Android平台的各種半導體組件。由於終端和應用最受關注,並且也是最容易被直接接觸到的,因此本文會更多地面向裝置製造商以及應用開發商。
Android系統在逐漸穩定和成熟,但版本變化還是相對比較快,開發人員需要適應快速變化的版本;同時,Android使用者與傳統平台的使用者群不同,其消費行為也必然不同,要求廠商對勘探群的消費行為作出良好判斷;另外,Android平台上應用開發的盈利模式不夠明確,給產業鏈帶來未知因素。Android帶來機遇的同時也帶來了挑戰,必然不會一帆風順,對於終端研發以及應用開發會提出種種的挑戰和更高的要求。
支援跨平台的應用開發
Android推出至今,曆經了多個版本,同時還存在由Android系統衍生出來的特定廠商的系統,這往往要求裝置和應用廠商同時支援多個版本。另外對於應用而言,有時不僅需要支援Android,還需要支援其他系統例如iOS、Windows Mobile等。因而提出跨平台的產品和應用的開發,以支援多種平台、多個版本的需要。
產品準確定位,及時響應市場需求
想想近十年Motorola和Nokia等公司的沉浮,讓人不禁感歎電子裝置市場的瞬息萬變。要把握好市場的脈搏,就要求產品準確定位,在對需求加以捕獲的同時,進行良好的分析、排優和管理。
產品的創新性要求高,準確捕獲與把握創意
電子產品更新換代的速度極快,廠商無法依靠品牌本身來黏合客戶,消費者對產品的忠實程度取決於產品品質和功能,這就對產品的創新性提出了更高的要求:要求細緻研究客戶消費行為,準確尋找市場需求,及時的捕獲並把握產品創意。
縮短產品上市時間
電子消費市場日新月異,時間就是生命。要想盡量縮短產品從創意產生到推向市場的時間,就帶來了產品的協作開發、功能複用以及測試一體化等需求。
基於上述種種分析,結合Android開發特點,我個人認為有必要建設Android系統開發平台。下文試圖從產品組合管理、需求管理、模型驅動開發以及協作開發等方面入手對其進行闡述和分析。限於篇幅和個人研究水平的局限,不求事無巨細面面俱到,只是重點介紹個人心得體會,希望對大家能夠有所啟示。
通過產品組合管理準確產品定位
變化的市場對所有廠商都提出了挑戰,無論是對於終端製造商還是應用開發商而言,如何保持自身的競爭力是面臨的最大痛點之一。這就要求企業在不斷髮掘新創意的同時,提升生產及開發的效率,建立區別於競爭者的競爭優勢。
對於Android而言,即使是在同一個平台、同一生態環境下的不同廠商之間,也是合作與競爭同在的關係,如何良好地適應競爭激烈的生態環境,就需要依賴對自身產品的組合規劃、對產品特性的差分定位、對競爭者的優勢分析。這就引出了產品組合管理的概念。
產品組合管理通過對市場環境的分析,收集商機,捕獲並分析需求,根據對競爭者以及自身企業及產品特性,制定產品組合策略,以期平衡整個產品開發投資組合中的風險和回報,最大限度地提高市場認知和投資收益。
產品組合能夠從四個方面創造企業價值:價值最大化、均衡、戰略一致性、合理的產品分布。價值最大化允許主動管理組合中的項目,以便從營運目標的角度最大限度地提高組合價值;均衡的產品組合能夠防止在決定項目規模時出錯,以防出現項目執行時間過長或者項目的業務風險過高等問題;為了實現戰略一致性,目標產品組合應以支援公司實現主要營運目標為標準;應確保提供合理數量的資源來支援已經確定的產品項目。
產品特性組合
電子產品非常強調特性,例如是否具備WiFi、有沒有拍照功能等。產品的特性講究人無我有、人有我新。這要求我們一方面加以創新,去產生吸引消費者購買行為的新特性;另一方面也要求我們對產品的種種特性,根據不同的市場定位加以組合,因為並非一個大而全的產品就可以滿足所有人的需要。產品的特性大致可以分成下面三種類型。
功能型特性,例如拍照功能、上網功能。
效能型特性,例如CPU速率、記憶體大小、拍照的像素等。
合規型特性,例如不同國家的入網要求。
各廠商應對不同類型的特性,根據相應消費人群使用習慣,以及不同市場的合規型要求,進行靈活合理的組合,從而得到適應不同的市場定位的產品組合。
可行性分析
一款產品的推出,除了要具備相應的特性以外,也要對其可行性進行分析。衡量的因素有眾多維度,例如技術可行性、商業可行性、市場潛力、財務回報、產品複雜性以及戰略一致性。
每個企業都有定義的企業戰略,對自身及其產品都有相應的定位,產品要求與企業戰略目標保持一致,對實現企業戰略目標提供協助和支援。同時產品的投入要求有匹配的產出,成本與收益一定要達到良好的比率,並且要求在收益與風險之間達到平衡。產品技術方面要評估現有技術與預期目標之間的差距、實現的技術複雜度與產品總體架構是否一致。而風險的管控同樣是對產品評估的重要因素之一,包括品質風險、進度風險、組織風險、技術風險等。
不同的維度,在不同的市場環境下,面向不同的目標人群,其優先順序以及評判標準是不盡相同的,這就需要引入靈活的評判模型,通過產品或特性的兩兩比對得到打分模型,並針對不同的判決因素進行加權,綜合評比得到最終的判決。
資源配置與管理
產品組合管理是聯絡戰略決策和戰術執行的紐帶,產品開發是商業戰略的表現形式,企業實現其戰略的重要途徑就是通過恰當的展品開發,產品組合管理要求在企業戰略與產品開發之間建立橋樑。
企業往往會同時有開發多款產品的需求,而各種資源總是有限的,產品組合管理同時研究資源的分配,協助企業合理有效配置資源。資源管理要求能夠對產品進行排優,從而最佳化資源投入與產出,實現產品價值最大化。錯誤的產品規劃將在運行資源、定位、宣傳、銷售和支援方面給企業帶來沉重壓力,並行產品組合的增多會加劇啟動並執行複雜性,必須在產品開發項目的數量與公司自身能力之間找到最佳均衡點。基於產品開發能力來調整產品組合規劃可以協助有效提高整個產品開發項目的成效。
通過需求管理和重用縮短產品上市時間
需求的捕獲
需求管理首先是對需求和靈感的捕獲,面對複雜多變的市場環境,要求準確地捕捉和發掘Android使用者的真實需求,捕獲業務人員、設計人員的靈感,從而避免因需求的遺漏或是靈感的丟失,錯誤或模糊的需求所造成產品的延遲或取消。對需求的描述通常通過文字與模型並存的方式進行,文字的優勢在於描述具體、精確的事務,例如數字、指標等;而模型的優點在於無歧義、正常化。結合兩者優勢可以協助業務人員或產品經理準確地把握和闡述使用者需求。
需求的審批
需求需要經過排優、審批的過程,並非所有需求和靈感都切實可行,一個好的想法同時也需要恰當的市場環境。快速變化的市場環境要求簡潔靈活的需求批覆、實現、追蹤流程,保持對市場的最高靈敏度,避免笨重的管理流程帶來滯後。另外,不同的需求是針對不同的客戶群,其定位和時效性都不同,這就需要通過不同的產品加以實現,這一點至關重要,可以通過前面論述過的產品組合管理得以實現。
需求的複用
在Android的開發過程中,有效需求複用可以很好地縮短整個軟體開發週期。通過需求管理流程,需求得以在不同的產品中實現複用,並且很好地支援設計開發的複用流程。產品線工程是Android產品系列開發的重要方法,需求複用的管理是支援產品線工程的必要手段。
需求的複用可以針對不同的層面。項目一級需求複用,是將商務規則、資料元素、使用者介面等定義為單一的執行個體且通過需求開發過程為項目成員共用和複用;組織一級的需求複用,是當團隊在多重專案協作時,資訊可以通過共用的需求庫進行重用。這樣的需求庫可以被組織來為不同產品定義特性。
圖2 Android系統開發平台
通過跨平台應用開發減少重複工作量
自推出到現在,Android曆經多個版本, 前期的系統版本無論是從功能還是穩定性都差強人意,直到1.6版本才有了第一個穩定且功能強大的系統版本。除Android自身這麼多版本以外,還存在由 Android系統衍生出來的特定廠商的系統,存在很多廠商基於Android某一個穩定版本的基礎加以定製,得到的作業系統,例如中移動的OPhone 系統、聯想的樂OS等。
開發廠商,尤其是應用開發商,有時需要同時支援多個版本的多種系統,多線作戰對於開發商而言是極大的挑戰。跨平台的應用開發可以協助開發商良好地應對多平台多版本的應用開發支援,從而提高開發效率,減少重複的開發工作。
跨平台開發的實現需要藉助工具的支援, 對工具而言要求包括兩個內容。
首先,工具需要支援代碼產生並通過編譯後,可以運行在不同的系統和平台上,並且能夠支援跨平台的部署和調試。通過跨平台的編譯、部署和調試,極大地協助開發人員提升開發效率,並且同時能夠保障應用開發的品質。
其次, 由於不同的系統和平台, 甚至Android不同的版本之間,其API調用都有所不同,如果針對每一個版本都需要調整代碼,那麼將對後續的維護和升級都造成嚴重的困難。因此,跨平台的開發要求工具能夠支援一套設計、一套實現能夠應對多種系統和平台,從而減輕重複而枯燥的開發工作。而能夠實現這一要求的最佳選擇就是模型驅動開發。模型驅動開發工具可以根據不同的目標環境,基於相應的架構和模型,產生適用於特定目標環境的代碼。這對於手機開發這樣的嵌入式系統開發而言是至關重要的,尤其是當需要適應不同的目標硬體、系統內容時,模型驅動開發由此極大地提高了軟體的複用度,使相同的設計和功能模組,可以方便快捷地應用部署到不同的產品裝置中。同時由於是基於同一套設計和實現產生的程式碼,其功能、品質以及穩定性都可以得到良好的保障,從而極大地減輕開發人員的重複工作量,讓他們從其中脫身出來,將精力放在更富有創造性和挑戰性的設計與開發工作中。
結束語
Android提供的標準化、開放的軟體平台和作業系統是史無前例的創舉,其商業價值也逐漸凸顯,應用軟體數量迅速突破了十萬大關。一片讚譽中,Android開發的道路卻並非總是坦途,尤其是對Android產業鏈中的不同廠商而言,無論是裝置製造商,或是應用開發商,市場競爭始終存在,優勝劣汰是亙古不變的,如何在眾多的同行業競爭者中突破重圍,脫穎而出,與每一個廠商切身利益緊密相關。
以上通過對Android系統開發的簡單分析, 提出Android系統開發平台的概念,從產品組合、需求管理、建模與重用、協同開發等角度分析和總結,提供一些能夠加速Android系統開發,並有效提高產品品質的方法和思路。
參考資料
《專案經理到執行官修鍊之道——圖解組合管理》寧德軍,朱華宇,清華出版社 ISBN 978-7- 302-23638-2。
《即時設計模式》(美)Bruce Powel Douglass 著,麥中凡 ,陶偉等譯, 北京航空航天大學出版社 ISBN 7-81077-421-2。
作者姚冬,北京郵電大學軟體工程在職研究生。現就職於某知名跨國企業,關注複雜系統開發,以及軟體流程改善等方面的研究。擁有12年的系統軟體開發和軟體工程實踐經曆。
文章來源:程式員官網