一行代碼導(dǎo)致災(zāi)難,一個(gè)Bug導(dǎo)致發(fā)射失敗,一個(gè)不合格的電容導(dǎo)致產(chǎn)品壽命縮短。這些看似偶然的事件,偏偏又常常真實(shí)地發(fā)生了。
即使產(chǎn)品設(shè)計(jì)沒有問題,又可能因?yàn)椴缓觅u,而沒能給公司帶來豐厚利潤。不但初創(chuàng)的小公司時(shí)刻面臨生存的威脅,一些巨無霸公司由于產(chǎn)品決策失誤,陷入困境甚至倒閉的案例也不鮮見。
人們于是想有沒有一種方法,可以幫助我們設(shè)計(jì)出又好用,又好賣的產(chǎn)品。我們今天介紹一些前人在這方面探索,主要涉及一些開發(fā)模型,和開發(fā)管理流程。
開發(fā)模型指的是軟件開發(fā)的全部過程、活動(dòng)和任務(wù)的框架,它規(guī)定了軟件開發(fā)的具體活動(dòng)和任務(wù),并且以清晰直觀的方式表達(dá)出軟件開發(fā)的全部過程。簡單來說,開發(fā)模型是軟件開發(fā)過程的基礎(chǔ)和保障。
開發(fā)流程是指軟件開發(fā)的具體步驟和過程。它包括可行性分析、項(xiàng)目開發(fā)計(jì)劃、需求分析、系統(tǒng)概要設(shè)計(jì)、系統(tǒng)詳細(xì)設(shè)計(jì)、編碼、測試等環(huán)節(jié)。這些環(huán)節(jié)是軟件開發(fā)不可或缺的步驟,它們之間的關(guān)系密切,相互銜接,以確保軟件開發(fā)的高效和順利。
幾種典型的開發(fā)模型
瀑布模型
瀑布模型是最經(jīng)典的開發(fā)模型,又稱為線性模型。它把開發(fā)過程分解為按順序進(jìn)行的六個(gè)階段:計(jì)劃,需求分析,設(shè)計(jì),實(shí)現(xiàn),測試,運(yùn)行維護(hù)。每一個(gè)階段完成后,評審?fù)ㄟ^,才能開啟下一階段,一級(jí)一級(jí)向下進(jìn)行,如同瀑布。用戶在最后得到一個(gè)可用產(chǎn)品。
迭代模型
一個(gè)項(xiàng)目被拆解為多個(gè)小項(xiàng)目,每個(gè)小項(xiàng)目如同一個(gè)瀑布模型,都包括需求分析,設(shè)計(jì),實(shí)現(xiàn),測試。每個(gè)小項(xiàng)目的完成,就可以認(rèn)為是產(chǎn)品的一次迭代,雖然還不完善,但用戶可以使用。每個(gè)小項(xiàng)目可以反復(fù)迭代,整個(gè)產(chǎn)品也不斷完善。SpaceX的獵鷹火箭,就是采用了這種迭代方式開發(fā)。所以雖然爆炸了幾次,最終還是成功了。而其它的采用傳統(tǒng)瀑布模型的公司,很多還沒有一次發(fā)射。
除了以上這兩種,還有不少變種,如快速原型模型,螺旋模型,智能模型,增量模型,噴泉模型,V模型,混合模型,演化模型。
開發(fā)管理流程
IPD (Integrated Product Development)
IPD的思想來源于美國PRTM公司出版的《產(chǎn)品及生命周期優(yōu)化法》(Product And Cycle-time Excellence)一書,該書中詳細(xì)描述了這種新的產(chǎn)品開發(fā)模式所包含的各個(gè)方面。
IBM公司在上世紀(jì)90年代遭遇了一次危機(jī),當(dāng)時(shí)研發(fā)經(jīng)費(fèi)開支過高,產(chǎn)品上市時(shí)間過長,利潤下降嚴(yán)重。作為重振公司的一項(xiàng)重要內(nèi)容,IBM引入了集成產(chǎn)品開發(fā)方法IPD。它由7個(gè)方面的內(nèi)容組成:異步開發(fā)與公共基礎(chǔ)模塊、跨部門團(tuán)隊(duì)、項(xiàng)目和管道管理、結(jié)構(gòu)化流程、分析客戶需求的工具($APPEALS)、優(yōu)化投資和衡量指標(biāo) 。其核心為產(chǎn)品開發(fā)由市場驅(qū)動(dòng),強(qiáng)調(diào)決策的重要性,更關(guān)注做正確的事。
華為在1998年花重金從IBM引入IPD,經(jīng)過多年優(yōu)化,成為其飛速成長的基石之一。其它比較知名的公司有美的,VIVO,方太等。
CMMI (Capability Maturity Model Integration)
1987年,由美國卡內(nèi)基.梅隆大學(xué)軟件研究所提出CMM,即軟件過程成熟度模型,用于評價(jià)軟件承包能力,并幫助其改善軟件質(zhì)量的方法。后推廣至硬件開發(fā),系統(tǒng)集成等更多領(lǐng)域。其核心目的為衡量一個(gè)組織的過程能力,并推動(dòng)其改進(jìn)。CMMI分為初始級(jí),已管理級(jí),已定義級(jí),已定量管理級(jí),優(yōu)化級(jí)等5個(gè)等級(jí),其中優(yōu)化級(jí)為最高等級(jí)。
CMMI主要關(guān)注執(zhí)行,也就是正確地做事。它認(rèn)為控制好了過程,就可以保證產(chǎn)品交付質(zhì)量。
敏捷開發(fā) (Agile Development)
2001年,煩透了各種開發(fā)管理流程,疲于應(yīng)付各種文檔的17名程序員大佬,聚會(huì)于猶他州瓦薩奇山中的一個(gè)小酒店,扯起了敏捷開發(fā)的大旗,并發(fā)表了4條宣言:
Individuals and interactions?over processes and tools
(有話您直說,甭瞎扯流程。)
Working software?over comprehensive documentation
(軟件賊好用,文檔如廢紙。)
Customer collaboration?over contract negotiation
(客戶一點(diǎn)頭,合同算個(gè)鳥。)
Responding to change?over following a plan
(領(lǐng)導(dǎo)一揮手,馬上跟著走。)
總之,敏捷開發(fā)是一種以人為核心、迭代、循序漸進(jìn)的開發(fā)方法。在敏捷開發(fā)中,軟件項(xiàng)目的構(gòu)建被切分成多個(gè)子項(xiàng)目,各個(gè)子項(xiàng)目的成果都經(jīng)過測試,具備集成和可運(yùn)行的特征。簡言之,就是把一個(gè)大項(xiàng)目分為多個(gè)相互聯(lián)系,但也可獨(dú)立運(yùn)行的小項(xiàng)目,并分別完成,在此過程中軟件一直處于可使用狀態(tài)。
我們?nèi)绾谓梃b
大公司引入流程,花費(fèi)巨資的傳聞,有點(diǎn)兒讓小公司望而卻步。但也并不是說只有大公司才需要流程,小公司其實(shí)可以根據(jù)自身的情況,做一些借鑒。比如項(xiàng)目需求分析,一開始就和客戶做深入的交流,為客戶周到的考慮,不要到最后發(fā)現(xiàn)某個(gè)功能沒實(shí)現(xiàn),要過認(rèn)證時(shí)才整改。項(xiàng)目需求形成說明書文檔,設(shè)計(jì)實(shí)現(xiàn)要跟需求一一對應(yīng)。另外,開發(fā)的每一階段,做一些評審也是很必要的,特別是開發(fā)人員之間的互相檢查(Peer Review),可以把很多問題解決在萌芽狀態(tài)。把開發(fā)分解成并行的過程,并進(jìn)行關(guān)鍵路徑分析,可以大大縮短研發(fā)周期。
關(guān)注公眾號(hào),掃碼加入嵌入式交流群: