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

??因為所接觸的業(yè)務(wù)復(fù)雜度高、技術(shù)難度大融击,不能像之前開發(fā)APP那樣拿到需求后畫畫流程圖、定一下各領(lǐng)域的時間節(jié)點和項目里程碑就開干,因為不對技術(shù)做抽象并輸出技術(shù)方案設(shè)計文檔是講不清楚項目的整體實現(xiàn)方案的偿警,即使做出了功能,只要技術(shù)指標(biāo)不達(dá)標(biāo)(比如準(zhǔn)確率低唯笙、耗時長等)螟蒸,就很難達(dá)到和產(chǎn)品預(yù)期相符的用戶體驗。所以需要有和類似于大型項目的服務(wù)端技術(shù)方案設(shè)計一樣崩掘,對客戶端APP做技術(shù)方案設(shè)計的環(huán)節(jié)七嫌,設(shè)計出高性能和高擴(kuò)展性的技術(shù)方案,避免項目風(fēng)險大苞慢、項目目標(biāo)難達(dá)預(yù)期诵原、技術(shù)債務(wù)堆積等問題。
??移動端的技術(shù)方案設(shè)計挽放,同樣要遵循合適(合適優(yōu)于業(yè)界領(lǐng)先)绍赛、簡單(簡單優(yōu)于復(fù)雜)、演化(演化優(yōu)于一步到位)的原則辑畦,以高可用吗蚌、高性能和高擴(kuò)展性為目標(biāo)。相比于服務(wù)端的技術(shù)方案設(shè)計纯出,做事的思路和方法都差不多蚯妇,只是側(cè)重點不一樣而已。
??在做技術(shù)方案設(shè)計時暂筝,我對自己的要求是需要遵循如下幾大原則:
1箩言、成事心態(tài):作為架構(gòu)師,在設(shè)計技術(shù)方案時要想方設(shè)法達(dá)成產(chǎn)品需求和目標(biāo)乖杠。即使產(chǎn)品需求實現(xiàn)難度大分扎、目標(biāo)不切實際、技術(shù)上存在瓶頸胧洒,經(jīng)過嚴(yán)謹(jǐn)?shù)姆治鲵炞C后畏吓,在客觀陳述技術(shù)瓶頸的同時還要基于對用戶需求的洞察給出自己對產(chǎn)品方案的建議,推動其它領(lǐng)域一起去促成項目目標(biāo)的達(dá)成卫漫;
2菲饼、全球視野:對于技術(shù)難度大或沒有頭緒的事情,多看看同行頭部企業(yè)是怎么做的列赎,尤其是自己不了解宏悦、認(rèn)為有難度的地方,要通過查閱資料、深入交流等方式饼煞,去開闊自己的視野源葫,切忌成了井底之蛙在坐井觀天;
3砖瞧、說到做到:方案設(shè)計出來不是架構(gòu)師工作的終點息堂,而是工作的起點,架構(gòu)師的厲害之處在于不僅能設(shè)計出合適的技術(shù)方案块促,還能將技術(shù)方案落地荣堰,達(dá)成預(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ù)方案時也要將這些可能的需求考慮進(jìn)去增強(qiáng)技術(shù)方案的拓展性纸泡。具體做法是假想自己就是用戶漂问,去模擬用戶在特定場景下可能的行為。
??對技術(shù)的需求分析,主要是要識別出如果要保障產(chǎn)品在生命周期內(nèi)持續(xù)安全穩(wěn)定的運行蚤假,需要做些什么栏饮,這通常都屬于非功能性需求,比如:
1磷仰、安全性問題:被劫持袍嬉、被逆向、被抓包等芒划;
2冬竟、兼容性問題:在不同設(shè)備上運行可能存在的兼容性風(fēng)險;
3民逼、性能問題:內(nèi)存泄漏泵殴、卡頓、高CPU占用等可能導(dǎo)致整機(jī)流暢度和功耗等問題拼苍;
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)域眾多茫舶,只有拆成一個一個地模塊械巡,然后由團(tuán)隊相互協(xié)作,才能更好的達(dá)成項目目標(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è)計階段,只需要畫出項目的主流程和核心流程就可以了戈泼,其它子流程可以在詳細(xì)設(shè)計的時候再畫婿禽。
??明確整個項目的方案后,還需要明確技術(shù)架構(gòu)中每個子模塊的實現(xiàn)方案大猛,在能夠滿足功能和指標(biāo)需求的前提下扭倾,子模塊盡量復(fù)用公司或社會現(xiàn)成資源,其中社會資源包括開源的項目以及通過商務(wù)合作的資源挽绩,因為快速低成本交付是項目的首要目標(biāo)膛壹。如果沒有現(xiàn)成的方案,就需要根據(jù)公司的技術(shù)能力和項目的約束唉堪,確定是自研還是尋找技術(shù)合作恢筝。如果是自研需要走預(yù)研流程,在有預(yù)研成果對項目有一定的把握后才能進(jìn)入工程化巨坊。如果是尋找技術(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ù)團(tuán)隊和領(lǐng)導(dǎo)的疑慮。因為團(tuán)隊中領(lǐng)域眾多纵苛,大家對技術(shù)的理解和認(rèn)知各有不同剿涮,關(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泻帮、 進(jìn)度風(fēng)險:進(jìn)度上存在的風(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ù)瓶頸苇侵,無法達(dá)成產(chǎn)品規(guī)格的風(fēng)險。

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

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

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

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末祥得,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蒋得,更是在濱河造成了極大的恐慌级及,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件额衙,死亡現(xiàn)場離奇詭異饮焦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)窍侧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進(jìn)店門县踢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人伟件,你說我怎么就攤上這事硼啤。” “怎么了斧账?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵谴返,是天一觀的道長煞肾。 經(jīng)常有香客問我,道長嗓袱,這世上最難降的妖魔是什么籍救? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮渠抹,結(jié)果婚禮上蝙昙,老公的妹妹穿的比我還像新娘。我一直安慰自己逼肯,他們只是感情好耸黑,可當(dāng)我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著篮幢,像睡著了一般大刊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上三椿,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天缺菌,我揣著相機(jī)與錄音,去河邊找鬼搜锰。 笑死伴郁,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蛋叼。 我是一名探鬼主播焊傅,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼狈涮!你這毒婦竟也來了狐胎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤歌馍,失蹤者是張志新(化名)和其女友劉穎握巢,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體松却,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡暴浦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了晓锻。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片歌焦。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖砚哆,靈堂內(nèi)的尸體忽然破棺而出独撇,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布券勺,位于F島的核電站,受9級特大地震影響灿里,放射性物質(zhì)發(fā)生泄漏关炼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一匣吊、第九天 我趴在偏房一處隱蔽的房頂上張望儒拂。 院中可真熱鬧,春花似錦色鸳、人聲如沸社痛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蒜哀。三九已至,卻和暖如春吏砂,著一層夾襖步出監(jiān)牢的瞬間撵儿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工狐血, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留淀歇,地道東北人。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓匈织,卻偏偏與公主長得像浪默,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子缀匕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,700評論 2 345

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

  • 解決方案通常是指針對某些已經(jīng)體現(xiàn)出的纳决,或者可以預(yù)期的問題、不足弦追、缺陷岳链、需求等等,所提出的一個解決整體問題方法的方案...
    李雨閱讀 1,525評論 0 11
  • 注:本文原創(chuàng)劲件,轉(zhuǎn)載請標(biāo)明出處掸哑。歡迎轉(zhuǎn)發(fā)、關(guān)注微信公眾號:Q的博客零远。不定期發(fā)送干貨苗分,實踐經(jīng)驗、系統(tǒng)總結(jié)牵辣、源碼解讀摔癣、技...
    Q的博客閱讀 1,238評論 0 2
  • 久違的晴天,家長會。 家長大會開好到教室時择浊,離放學(xué)已經(jīng)沒多少時間了戴卜。班主任說已經(jīng)安排了三個家長分享經(jīng)驗。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,492評論 16 22
  • 今天感恩節(jié)哎琢岩,感謝一直在我身邊的親朋好友投剥。感恩相遇!感恩不離不棄担孔。 中午開了第一次的黨會江锨,身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,551評論 0 11
  • 可愛進(jìn)取,孤獨成精糕篇。努力飛翔啄育,天堂翱翔。戰(zhàn)爭美好拌消,孤獨進(jìn)取挑豌。膽大飛翔,成就輝煌拼坎。努力進(jìn)取浮毯,遙望,和諧家園泰鸡≌叮可愛游走...
    趙原野閱讀 2,716評論 1 1