移動端技術(shù)方案設(shè)計的經(jīng)驗總結(jié)

??因為所接觸的業(yè)務(wù)復(fù)雜度高、技術(shù)難度大,不能像之前開發(fā)APP那樣拿到需求后畫畫流程圖、定一下各領(lǐng)域的時間節(jié)點和項目里程碑就開干,因為不對技術(shù)做抽象并輸出技術(shù)方案設(shè)計文檔是講不清楚項目的整體實現(xiàn)方案的,即使做出了功能,只要技術(shù)指標(biāo)不達標(biāo)(比如準(zhǔn)確率低、耗時長等),就很難達到和產(chǎn)品預(yù)期相符的用戶體驗。所以需要有和類似于大型項目的服務(wù)端技術(shù)方案設(shè)計一樣,對客戶端APP做技術(shù)方案設(shè)計的環(huán)節(jié),設(shè)計出高性能和高擴展性的技術(shù)方案,避免項目風(fēng)險大、項目目標(biāo)難達預(yù)期、技術(shù)債務(wù)堆積等問題。
??移動端的技術(shù)方案設(shè)計,同樣要遵循合適(合適優(yōu)于業(yè)界領(lǐng)先)、簡單(簡單優(yōu)于復(fù)雜)、演化(演化優(yōu)于一步到位)的原則,以高可用、高性能和高擴展性為目標(biāo)。相比于服務(wù)端的技術(shù)方案設(shè)計,做事的思路和方法都差不多,只是側(cè)重點不一樣而已。
??在做技術(shù)方案設(shè)計時,我對自己的要求是需要遵循如下幾大原則:
1、成事心態(tài):作為架構(gòu)師,在設(shè)計技術(shù)方案時要想方設(shè)法達成產(chǎn)品需求和目標(biāo)。即使產(chǎn)品需求實現(xiàn)難度大、目標(biāo)不切實際、技術(shù)上存在瓶頸,經(jīng)過嚴謹?shù)姆治鲵炞C后,在客觀陳述技術(shù)瓶頸的同時還要基于對用戶需求的洞察給出自己對產(chǎn)品方案的建議,推動其它領(lǐng)域一起去促成項目目標(biāo)的達成;
2、全球視野:對于技術(shù)難度大或沒有頭緒的事情,多看看同行頭部企業(yè)是怎么做的,尤其是自己不了解、認為有難度的地方,要通過查閱資料、深入交流等方式,去開闊自己的視野,切忌成了井底之蛙在坐井觀天;
3、說到做到:方案設(shè)計出來不是架構(gòu)師工作的終點,而是工作的起點,架構(gòu)師的厲害之處在于不僅能設(shè)計出合適的技術(shù)方案,還能將技術(shù)方案落地,達成預(yù)期目標(biāo)。要通過在落地過程中遇到的問題去反思復(fù)盤,優(yōu)化自己做技術(shù)方案設(shè)計的方法、加深對技術(shù)的理解。

??下面講講我對移動端技術(shù)方案設(shè)計流程的理解:
一、需求分析:
??需求分析包括產(chǎn)品需求分析和技術(shù)需求分析,產(chǎn)品需求主要為功能性需求,技術(shù)需求主要為非功能需求,比如性能、穩(wěn)定性、安全性等,技術(shù)需求往往是設(shè)計技術(shù)方案時的約束。
??對產(chǎn)品的需求分析,最基本的是要了解做什么?解決用戶什么問題?什么時候做完?需要做成什么樣子?即要弄清楚產(chǎn)品功能、用戶需求、時間節(jié)點和產(chǎn)品規(guī)格。除了弄清楚這幾點之外,還要基于對用戶需求的洞察,去挖掘文字背后的隱藏信息,這些你洞察到但產(chǎn)品需求中沒有呈現(xiàn)出來的信息,往往就是潛在的需求變更點,即使你將洞察到的需求和疑慮告知產(chǎn)品,產(chǎn)品回復(fù)暫時不做考慮,在設(shè)計技術(shù)方案時也要將這些可能的需求考慮進去增強技術(shù)方案的拓展性。具體做法是假想自己就是用戶,去模擬用戶在特定場景下可能的行為。
??對技術(shù)的需求分析,主要是要識別出如果要保障產(chǎn)品在生命周期內(nèi)持續(xù)安全穩(wěn)定的運行,需要做些什么,這通常都屬于非功能性需求,比如:
1、安全性問題:被劫持、被逆向、被抓包等;
2、兼容性問題:在不同設(shè)備上運行可能存在的兼容性風(fēng)險;
3、性能問題:內(nèi)存泄漏、卡頓、高CPU占用等可能導(dǎo)致整機流暢度和功耗等問題;
4、 合規(guī)問題:技術(shù)上可能存在的法律風(fēng)險,比如使用第三方開源庫等。

二、方案設(shè)計:
??需求分析的主要工作是知道做什么?要做成什么樣?什么時候做完?做什么、做成什么樣是目標(biāo),什么時候做完是約束。技術(shù)方案設(shè)計的主要工作是在產(chǎn)品和技術(shù)的約束下,設(shè)計技術(shù)方案實現(xiàn)項目目標(biāo)。其實技術(shù)方案的設(shè)計就是一個工作拆解的過程,現(xiàn)在的項目通常都很復(fù)雜、涉及領(lǐng)域眾多,只有拆成一個一個地模塊,然后由團隊相互協(xié)作,才能更好的達成項目目標(biāo)。架構(gòu)師要做的就是抽象問題、拆解模塊、串聯(lián)各模塊搭建方案以及明確每個模塊的實現(xiàn)方案,具體到工作上就是三個方面的工作:輸出技術(shù)架構(gòu)圖、輸出核心流程圖、明確各模塊的技術(shù)實現(xiàn)方案。
??技術(shù)架構(gòu)圖就是抽象問題和拆解模塊的工具,架構(gòu)圖分很多種,其中分層、分模塊的架構(gòu)圖最為流行,做技術(shù)方案設(shè)計的首要任務(wù)就是畫出基于項目的技術(shù)架構(gòu)圖,通過劃分為多個抽象的層級實現(xiàn)邏輯上的拆分、通過對單個層級下劃分為多個模塊實現(xiàn)物理上的拆分。Android平臺架構(gòu)圖就是典型的分層、分模塊架構(gòu),具體如下圖所示:

圖1 Android 平臺架構(gòu)圖

??通過架構(gòu)圖能夠清晰明了地知道整個項目有哪些技術(shù)領(lǐng)域和哪些技術(shù)點組成,如果要讓整個項目運作,就需要通過流程將技術(shù)架構(gòu)中的各模塊串聯(lián)起來,技術(shù)架構(gòu)中的每一層和每個模塊就像一個一個的齒輪,流程圖就像是潤滑油,讓齒輪之間聯(lián)動運行起來。在技術(shù)方案設(shè)計階段,只需要畫出項目的主流程和核心流程就可以了,其它子流程可以在詳細設(shè)計的時候再畫。
??明確整個項目的方案后,還需要明確技術(shù)架構(gòu)中每個子模塊的實現(xiàn)方案,在能夠滿足功能和指標(biāo)需求的前提下,子模塊盡量復(fù)用公司或社會現(xiàn)成資源,其中社會資源包括開源的項目以及通過商務(wù)合作的資源,因為快速低成本交付是項目的首要目標(biāo)。如果沒有現(xiàn)成的方案,就需要根據(jù)公司的技術(shù)能力和項目的約束,確定是自研還是尋找技術(shù)合作。如果是自研需要走預(yù)研流程,在有預(yù)研成果對項目有一定的把握后才能進入工程化。如果是尋找技術(shù)合作,需要做技術(shù)方案選型,技術(shù)方案選型要基于項目的各維度關(guān)注點來選出最合適而非最厲害的方案(合適優(yōu)于業(yè)界領(lǐng)先),在方案選型中呈現(xiàn)的信息必須是經(jīng)過實際驗證得出的,切忌只是做信息的收集,避免因為信息不準(zhǔn)確而誤判導(dǎo)致潛在的項目風(fēng)險。

三、方案總結(jié):
??技術(shù)方案設(shè)計完成后,需要給出總結(jié)性的結(jié)論,答復(fù)團隊和領(lǐng)導(dǎo)的疑慮。因為團隊中領(lǐng)域眾多,大家對技術(shù)的理解和認知各有不同,關(guān)注的重點也各不相同。所以在給出結(jié)論時要用直白簡練而非技術(shù)性的語言,解答各干系人的關(guān)注點。

結(jié)論通常包含如下幾個方面的內(nèi)容:
1、 技術(shù)上能否實現(xiàn)?
2、 技術(shù)上能做到什么程度?
3、 項目上存在哪些風(fēng)險?有何應(yīng)對方案?
4、 整個項目的投入情況如何?
??用一句話描述技術(shù)上能否實現(xiàn)即可,技術(shù)上可行/不可行。前提是要基于項目的約束,包括產(chǎn)品上和技術(shù)上的。
??如果可行,需要輸出整個項目以及各技術(shù)子模塊的技術(shù)規(guī)格,講清楚衡量技術(shù)能力的指標(biāo)以及能做到什么程度。

??接下來需要闡述清楚在項目過程中存在的潛在風(fēng)險,風(fēng)險包括:
1、 進度風(fēng)險:進度上存在的風(fēng)險;
2、 資源風(fēng)險:人力等資源上存在的風(fēng)險;
3、 涌現(xiàn)風(fēng)險:多個技術(shù)組合、并行存在的風(fēng)險,比如功耗、系統(tǒng)資源瓶頸等問題;
4、 體驗風(fēng)險:比如耗時長、操作繁瑣等和產(chǎn)品預(yù)期不一致的風(fēng)險問題;
5、 指標(biāo)風(fēng)險:受限于項目約束和技術(shù)瓶頸,無法達成產(chǎn)品規(guī)格的風(fēng)險。

??風(fēng)險的應(yīng)對方案包括:
1、 消除風(fēng)險:風(fēng)險可以消除且對項目沒有影響,這種通常不用寫出來;
2、 規(guī)避風(fēng)險:無法正面解決,但可以曲線救國的方案,這種情況可能對用戶體驗或其它方面有影響,必須寫出來講清楚,要在項目上達成一致;
3、 減小風(fēng)險:風(fēng)險無法消除但可以降低風(fēng)險對項目的影響。

??最后需要講清楚項目在人力、資金方面的投入成本,便于領(lǐng)導(dǎo)決策項目的價值。是否值得投入,或調(diào)整項目策略。

四、方案落地:
??在方案設(shè)計完成,且通過項目內(nèi)、領(lǐng)導(dǎo)的決策后,接下來需要按照設(shè)計的方案落地達成技術(shù)規(guī)格,在落地的過程中需要重點關(guān)注如下幾個方面:
1、 分里程碑拆解目標(biāo),類似于敏捷開發(fā)小步快跑的方式及時交付、遇到問題能快速調(diào)整,降低風(fēng)險,避免一條路走到黑、遲遲看不到效果。
2、 分點專項驗證各技術(shù)點的達成情況,各個關(guān)鍵的技術(shù)點都需要針對性驗證和驗收,齒輪的質(zhì)量有保障,多個齒輪組成的系統(tǒng)聯(lián)動才會有保障。
3、 遇到異常時優(yōu)先嘗試去解決,如果在一段時間內(nèi)沒有進展需及時調(diào)整方案;只要是在方案設(shè)計階段經(jīng)過嚴格的驗證,遇到異常時首先不應(yīng)否定自己的方案,要想辦法嘗試解決遇到的問題。如果實在解決不了,要及時調(diào)整避免對項目進度造成影響。
4、 工程化的優(yōu)化是錦上添花的操作,但要正確理解工程化的優(yōu)化,不是打補丁,而是方案層面的優(yōu)化,比如多個技術(shù)并行減少運行時的耗時;
5、 項目結(jié)束后及時復(fù)盤總結(jié),優(yōu)化后續(xù)的技術(shù)方案設(shè)計流程和方法。

??下面是對整篇文章的總結(jié):
1、 技術(shù)方案的設(shè)計要以全球視野去想方設(shè)法做成項目,并且方案設(shè)計出來后要能親自落地,達成項目目標(biāo);
2、 技術(shù)方案設(shè)計要充分洞察產(chǎn)品和技術(shù)需求,基于需求通過架構(gòu)圖拆解模塊,并通過流程將各模塊中的技術(shù)點串聯(lián)起來使整個項目運行起來。對于關(guān)鍵的技術(shù)點,要基于嚴謹?shù)尿炞C分析做出方案選型;
3、 技術(shù)方案的評審要給出明確的結(jié)論,以各領(lǐng)域都能懂的語言表達清楚技術(shù)的可行性、技術(shù)規(guī)格、風(fēng)險和應(yīng)對方案以及項目投入情況;
4、 技術(shù)方案設(shè)計評審?fù)ㄟ^不是架構(gòu)師工作的終點,把技術(shù)方案落地達成項目目標(biāo)才是終點。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,885評論 6 541
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,312評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,993評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,667評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,410評論 6 411
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,778評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,775評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,955評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,521評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,266評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,468評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,998評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,696評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,095評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,385評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,193評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,431評論 2 378

推薦閱讀更多精彩內(nèi)容

  • 解決方案通常是指針對某些已經(jīng)體現(xiàn)出的,或者可以預(yù)期的問題、不足、缺陷、需求等等,所提出的一個解決整體問題方法的方案...
    李雨閱讀 1,647評論 0 11
  • 注:本文原創(chuàng),轉(zhuǎn)載請標(biāo)明出處。歡迎轉(zhuǎn)發(fā)、關(guān)注微信公眾號:Q的博客。不定期發(fā)送干貨,實踐經(jīng)驗、系統(tǒng)總結(jié)、源碼解讀、技...
    Q的博客閱讀 1,306評論 0 2
  • 久違的晴天,家長會。 家長大會開好到教室時,離放學(xué)已經(jīng)沒多少時間了。班主任說已經(jīng)安排了三個家長分享經(jīng)驗。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,547評論 16 22
  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開了第一次的黨會,身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,594評論 0 11
  • 可愛進取,孤獨成精。努力飛翔,天堂翱翔。戰(zhàn)爭美好,孤獨進取。膽大飛翔,成就輝煌。努力進取,遙望,和諧家園。可愛游走...
    趙原野閱讀 2,756評論 1 1