今天我們來介紹一下 Android 項(xiàng)目流程的相關(guān)知識沙郭,在本篇文章里面我們將從需求的產(chǎn)生到交互的實(shí)現(xiàn),再到視覺的輸出到最后我們開發(fā)并完成上線猪杭,描述一下一個典型的產(chǎn)品開發(fā)流程是什么樣子的元媚,項(xiàng)目流程一般分為這幾個階段:
在整個流程里面廉嚼,除了編碼屬于開發(fā)的基本工作以外,工程師還有需要參與流程的其他里面去揍魂。第一個就是產(chǎn)品需求產(chǎn)生的需求評審卓鹿,讓開發(fā)參與需求討論了解需求,并提出一些意見贤笆、解決一些問題蝇棉;同時也可以進(jìn)行一定的腦報(bào)幫助完善需求;同時評估實(shí)現(xiàn)復(fù)雜難易程度和性價比芥永。在這之后篡殷,有一個交互評審,開發(fā)對官方交互的設(shè)計(jì)了解是必不可少的埋涧。在這個階段的評審可以提出自己的意見和官方的指導(dǎo)意見板辽,同時呢,可以評估一下實(shí)現(xiàn)的難易復(fù)雜程度和性價比棘催。視覺階段劲弦,主要是對于技術(shù)是否能夠?qū)崿F(xiàn)的考慮,有些視覺設(shè)計(jì)可能過于理想化巧鸭,需要及時更正瓶您。之后到我們開發(fā)的重點(diǎn),交互和視覺評審纲仍,有一點(diǎn)是非常重要的呀袱,就是我們開發(fā)要從我們開發(fā)的角度去思考,從而及時發(fā)現(xiàn)交互和視覺沒有發(fā)現(xiàn)的問題和細(xì)節(jié)郑叠,這樣非常有利于我們后面的開發(fā)工作夜赵,減少反復(fù)的成本。開發(fā)完成之后我們要進(jìn)行性能調(diào)優(yōu)乡革,這個我們會在后面具體講到寇僧。
正常的開發(fā)流程都是并行的,開發(fā)不會等到的這個版本完全開發(fā)完成了沸版,才開始開發(fā)下一個版本嘁傀,下個版本的產(chǎn)品需求也不會在這個版本上線之后才開始設(shè)計(jì)。一般情況下视粮,在上個版本還在測試發(fā)布前细办,下個版本的需求就已經(jīng)開始輸出了。在產(chǎn)品開發(fā)的后期開發(fā)往往有一些空閑時間蕾殴,剛好可以用來做產(chǎn)品需求的評審和交互的評審笑撞。在這個圖上面岛啸,我們可以看到在這個,測試的中后期茴肥,產(chǎn)品需求就已經(jīng)開始輸出坚踩,并完成評審,然后交互設(shè)計(jì)隨之進(jìn)行開展瓤狐,交互設(shè)計(jì)完成時間點(diǎn)不是特別確定瞬铸,一般要求盡快完成交互評審。這樣在發(fā)布了三個版本之后開發(fā)就可以稍作休整芬首,觀察一下現(xiàn)場的反饋赴捞,就可以接著下個版本開發(fā)了。與此同時郁稍,視覺設(shè)計(jì)的整個過程也是和開發(fā)一樣是并行的赦政。在測試的中后期就會開始驗(yàn)收,驗(yàn)收非常重要耀怜,是驗(yàn)證每個環(huán)節(jié)是否達(dá)到了預(yù)期恢着,不同小組的工作并行非常重要,這樣才能極大的發(fā)揮團(tuán)隊(duì)的協(xié)作能力财破,提高工作效率掰派。
在評估完交互和設(shè)計(jì)之后,我們會進(jìn)行版本開發(fā)計(jì)劃左痢,并評估每個模塊開發(fā)的具體需要時間靡羡,然后把具體開發(fā)工作分配到每一個開發(fā)人員身上。比如說我們有三個人并行開發(fā)俊性,每個模塊的開發(fā)時間和人員安排都被評估出來略步,視覺會根據(jù)我們的開發(fā)計(jì)劃分批輸出視覺。比如說在這個這個時間點(diǎn)會輸出模塊1定页、2趟薄、3,我在這個時間點(diǎn)會輸出4典徊、5杭煎、6,然后在這個時間點(diǎn)會輸出7卒落、8羡铲。這邊特別要去注意的是,最后一批視覺輸出儡毕,一定要把控好時間要保證留足夠的時間給開發(fā)進(jìn)行資源的替換犀勒,這樣才能保證在體測時間可以完成開發(fā)工作。要保證留足夠的時間給開發(fā)進(jìn)行資源的替換妥曲,這樣才能保證在體測時間可以完成開發(fā)工作贾费。所以其實(shí)在某些階段,開發(fā)工作是沒有視覺資源的檐盟,所以要先完成邏輯和功能開發(fā)褂萧,這個過程應(yīng)該是完整的,包括各種分辨率的適配葵萎,唯一留下來工作就是替換美術(shù)資源导犹。
那同樣開發(fā)和后臺的配合也是非常重要的,它跟視覺的配合有點(diǎn)類似羡忘,因?yàn)楹笈_的接口也是分批給出來谎痢,所以在一定階段我們開發(fā)是沒有結(jié)口的,這就需要我們根據(jù)實(shí)際來 Mock 些數(shù)據(jù)卷雕。同樣节猿,最后一批計(jì)劃輸出時間也一定要確定好,保證剩余足夠的時間來跟后臺進(jìn)行接口的聯(lián)調(diào)漫雕。
接下來我們重點(diǎn)來看看開發(fā)的基本流程:
我們拿到需求之后滨嘱,首先要對需求進(jìn)行分析,具體要做什么工作是為了解決什么問題浸间?然后我們對功能進(jìn)行劃分太雨,哪些部分是關(guān)聯(lián)的,大概分成哪些模塊魁蒜。同時能對這些情況進(jìn)行技術(shù)思考囊扳,可能用到什么技術(shù)方案去實(shí)現(xiàn)難點(diǎn),大概技術(shù)點(diǎn)是什么樣子的兜看。需求分析之后我們就進(jìn)入模塊設(shè)計(jì)锥咸,首先我們要對技術(shù)方案進(jìn)行對比,選擇一個適合自己的方案铣减,方案不是越復(fù)雜越好她君,要能解決需求的同時又有一定的擴(kuò)展能力。那接下來就是結(jié)構(gòu)框架設(shè)計(jì)葫哗,搭建好結(jié)構(gòu)框架缔刹,包括定義好接口,通信模型流程結(jié)構(gòu)等等劣针,然后進(jìn)行詳細(xì)設(shè)計(jì)校镐,比如詳細(xì)的協(xié)議、涉及數(shù)據(jù)算法的選擇捺典。必要時鸟廓,我們會輸出設(shè)計(jì)文檔以便后面的維護(hù)。接下來我們就進(jìn)入編碼階段,我們把設(shè)計(jì)轉(zhuǎn)換成代碼引谜,實(shí)現(xiàn)完整的邏輯流程功能牍陌,但實(shí)際上我們花在編碼上時間并不多,可能會占了20%员咽,大部分時間我們都在調(diào)試毒涧,通過不斷調(diào)試來解決各種Bug,最后還要進(jìn)行必要的優(yōu)化和重構(gòu)贝室,來完善我們的代碼∑踅玻現(xiàn)在調(diào)優(yōu)在開發(fā)過程后期占很大的比重,偶爾通過排查可以發(fā)現(xiàn)一些潛在的問題滑频,比如內(nèi)存泄露捡偏,CPU 占比過高,滾動掉幀等等峡迷。通過一些工作進(jìn)行調(diào)優(yōu)银伟,不可缺少。最后是自測凉当,自測是必須的枣申,這是屬于每個開發(fā)者的責(zé)任。自測很重要看杭,只有通過自測代碼才可以提交給后面專門的測試人員來測試忠藤,沒有通過自測的代碼,甚至都不允許提交到代碼倉庫楼雹,如果提交了這被認(rèn)為是一種不負(fù)責(zé)任的表現(xiàn)模孩,自測有很多種,常見的有冒煙測試贮缅、功能測試榨咐、邊界測試、回歸測試等谴供。
一般情況块茁,每個模塊開發(fā)完成之后,開發(fā)就需要對這個模塊進(jìn)行測試桂肌,所以基本的流程是数焊,開發(fā)一個模塊測試一個模塊。這部分自測時間是包括在我們的開發(fā)時間里面的崎场,剛才提到?jīng)]有通過自測的開發(fā)代碼佩耳,是不能提交到代碼倉庫的,通過開發(fā)自測后谭跨,其實(shí)是可以直接作為上線標(biāo)準(zhǔn)的干厚。開發(fā)不應(yīng)該依賴于后面還有專門的測試人員來保障我們的產(chǎn)品質(zhì)量李滴。
<p>接下來我們介紹幾個時間節(jié)點(diǎn)。第一個是需求截止時間蛮瞄,我們最討厭的就是需求不斷的變更或者新增所坯,最正規(guī)的項(xiàng)目開發(fā)流程里面應(yīng)該規(guī)定有需求截止時間,但因?yàn)橛?jì)劃趕不上變化裕坊,所以同時應(yīng)該也有需求變更和新增的流程包竹,為了保證項(xiàng)目質(zhì)量,絕對不允許臨近上線還在改變需求籍凝。</p>
只有開發(fā)跟交互一起去了解各種細(xì)節(jié),后面的開發(fā)才能順暢起來苗缩,否則后面遇到交互饵蒂、視覺有問題就會影響我們的開發(fā)效率。同樣酱讶,視覺得分配輸出節(jié)點(diǎn)和后臺的接口分配輸出節(jié)點(diǎn)退盯,在前面已經(jīng)講過了。
只有及時溝通好了泻肯,才能跟視覺和后臺配合得好渊迁,我們才能在約定的提測時間點(diǎn)提測。當(dāng)然重要的是知道我們一個版本的發(fā)布計(jì)劃灶挟,上個流程晚了就會影響測試時間琉朽,從而影響發(fā)布時間。
<p>在發(fā)布里面有一種發(fā)布叫做灰度發(fā)布稚铣,就是只有少量用戶可以更新到我們的最新版本箱叁,這樣的話,那我們可以通過這種方式來暴露出一些問題惕医,然后可以進(jìn)行一輪修正之后再全量發(fā)布耕漱,可以減少受影響的用戶√牛灰度發(fā)布有很多辦法螟够,比如說我們通過尾號推送版本更新等等,那根據(jù)一般的經(jīng)驗(yàn)來講在有一定規(guī)模用戶基礎(chǔ)上峡钓,一般20%用戶升級到最新版本妓笙,大概需要3到5天就可以完成暴露出這個版本的問題。</p>