一、本文背景
在我轉(zhuǎn)產(chǎn)品之前,雖然我混跡IT行業(yè),做過實(shí)施和售前,也跟研發(fā)打過交道,但我一直都不知道一個軟件是怎么開發(fā)出來的。直面客戶,扛著壓力,在對程序一無所知的情況下,很容易產(chǎn)生一些想法:為什么產(chǎn)品的結(jié)果是這樣?為什么產(chǎn)品開發(fā)的速度不能再快一點(diǎn)?為什么程序員經(jīng)常加班?他們都在忙些什么?測試是不是就是每天忙著點(diǎn)點(diǎn)程序看會不會報(bào)錯?
所以本文面向的對象是,適合和我當(dāng)初一樣對軟件開發(fā)一無所知的IT從業(yè)者(或者有興趣者),另外也歡迎我的程序員小伙伴和測試小伙伴,因?yàn)槟銈円捕@個過程,所以我們可以作更多探討,這個過程中我們可能會發(fā)現(xiàn)大家對同一件事的理解并不一致,也許經(jīng)過碰撞,我們能共創(chuàng)智慧的果實(shí)。
二、CMMI的組織成熟度
在講解正式流程之前,我們先花一些筆墨講一下CNMI(Capability Maturity Model Integration)組織成熟度,這樣讀者可以大概知道我司開發(fā)的水平,也可以知道本文撰寫的基本根據(jù)。
CMMI是美國產(chǎn)業(yè)界、政府和卡內(nèi)基梅隆大學(xué)軟件工程研究所于2002年推出的集成了軟件工程、系統(tǒng)工程、集成化產(chǎn)品和過程開發(fā)等學(xué)科的綜合成熟度模型。模型總共分五級,目前我司是CMMI5級,具體每個等級達(dá)到的水準(zhǔn)請見下圖。

三、軟件開發(fā)流程
現(xiàn)在開始文章重點(diǎn),目前我司一個完整的開發(fā)流程是什么樣的?(本文的流程適用于純開發(fā)型項(xiàng)目,涵蓋服務(wù)端、APP、H5的開發(fā))
目前可以大致分為四個里程碑:
一、需求;二、設(shè)計(jì);三、編碼;四、測試;五、上線。
里程碑僅是一個比較重要的節(jié)點(diǎn),其實(shí)每個節(jié)點(diǎn)再拆開,還有許多關(guān)鍵的步驟以及重要的產(chǎn)物輸出,下面先簡單說一下每個過程:
1、需求
包括需求梳理、需求設(shè)計(jì),需要產(chǎn)品經(jīng)理輸出《產(chǎn)品原型》并進(jìn)行講解,研發(fā)根據(jù)產(chǎn)輸出的線框圖,完成《概要需求》并評審;
2、設(shè)計(jì)
包括UI界面(含交互)及研發(fā)設(shè)計(jì),需要UI界面設(shè)計(jì)師輸出《界面效果圖》,研發(fā)根據(jù)界面效果圖再輸出《需求規(guī)格》,評審過后進(jìn)行研發(fā)上的一系列設(shè)計(jì),包括《概要設(shè)計(jì)》《通訊協(xié)議》;
3、編碼;
這個階段是研發(fā)真正去寫代碼的階段,寫代碼的依據(jù)就是前兩個階段的過程產(chǎn)物,目標(biāo)就是完成需求規(guī)格的內(nèi)容。
4、測試;
測試過程主要是測試工程師來發(fā)揮力量,不過程序員也需要根據(jù)測試包括最基礎(chǔ)的功能性測試、壓力測試等,功能性測試的依據(jù)是測試根據(jù)需求撰寫的《測試用例》來的。
這里在多啰嗦兩句,其實(shí)測試的主要目的不是為了找出軟件有哪些地方無法正常運(yùn)行,那是最基礎(chǔ)的找bug,測試更主要的工作應(yīng)該是測出功能與需求不一致的地方。
5、上線
產(chǎn)品上線前通常會有一些準(zhǔn)備工作,包括相關(guān)數(shù)據(jù)的維護(hù),培訓(xùn)資料的準(zhǔn)備等。上線前通常會有一段試運(yùn)行的時間,最后才正式上線。
未完待續(xù)……
附:后面的內(nèi)容,主要想更詳細(xì)地講解每個過程,寫的過程可能更多的是站在前端、站在老板站在上級角度來寫的。這幾個利益方都會關(guān)注的一個點(diǎn)是——怎么控制成本?而要控制成本,則開發(fā)過程要盡量一步到位,減少返工;要實(shí)現(xiàn)減少返工,則要在每個階段要有相應(yīng)的成果及評審。我接下來要寫的就是我們應(yīng)當(dāng)輸出什么成果,我們怎么做評審。
最后,在說完這些基本事項(xiàng)之后,再提出一些想要探討的開發(fā)過程問題。