O研發(fā)管理系統(tǒng)。
3、開發(fā)自動化體系的建立。
相對于過程信息化而言,開發(fā)自動化體系的建立容易被忽視。其實(shí),隨著計算機(jī)技術(shù)的不斷發(fā)展,在開發(fā)自動化支持方面已經(jīng)有了不少成熟的解決方案。對軟件開發(fā)而言,最典型的莫過于自動構(gòu)建與持續(xù)集成,其它還包括代碼自動走查,自動測試工具等。對硬件而言,也有不少自動測試手段,研發(fā)在生產(chǎn)加工的自動化支持方面同樣有不少工作可做。其實(shí),這里之所以提出自動化體系的建立,是指研發(fā)團(tuán)隊?wèi)?yīng)該不停審視所有的研發(fā)過程,盡量將能夠自動化的過程自動化。如果能夠通過一個系統(tǒng)或計算機(jī)自動完成,就不要用人工的方法來完成這個工作。盡管很多研發(fā)過程自動化的建立相對而言比較耗費(fèi)時間,但是為企業(yè)研發(fā)團(tuán)隊帶來的效率的提升卻往往非常明顯。當(dāng)然,自動化體系的建立是一個長期而艱苦的過程,但是真正優(yōu)秀的公司的研發(fā)核心競爭力也往往會體現(xiàn)在這個方面。
對于文檔體系和信息化體系的建立,我想不用過多的闡述大家都很容易理解,但是對于“開發(fā)自動化體系的建立”的這個概念,或許只是我的一點(diǎn)個人看法,為了便于大家理解,我這里就用一個對電子通訊和儀器儀表等行業(yè)研發(fā)團(tuán)隊在嵌入式軟件開發(fā)領(lǐng)域非常適用的具體實(shí)例來闡述一下何謂開發(fā)自動化思想,如果您負(fù)責(zé)的團(tuán)隊正好也包含嵌入式軟件研發(fā),我想你會更加容易理解下面的內(nèi)容:
對嵌入式軟件來說,堆棧空間有嚴(yán)格的大小限制,而堆棧的使用狀況對編程人員來說又不能夠直觀的被觀察,這直接導(dǎo)致在嵌入式軟件系統(tǒng)中經(jīng)常會遇到堆棧溢出問題,一些低水平的開發(fā)人員總是容易在這上面犯錯。而這種問題一旦被引入到最終的產(chǎn)品中,其隱蔽性強(qiáng),導(dǎo)致的后果嚴(yán)重,且不易跟蹤重現(xiàn)。我們具體來分析一下原因,從事過嵌入式軟件開發(fā)的人都知道,函數(shù)參數(shù)和函數(shù)內(nèi)的局部變量以及函數(shù)的遞歸調(diào)用層次等在函數(shù)運(yùn)行時都會對堆棧的占用產(chǎn)生影響,而一些編程經(jīng)驗不足的開發(fā)人員往往容易在函數(shù)實(shí)現(xiàn)時在內(nèi)部定義空間要求過大的局部變量(諸如多維數(shù)組)。大多數(shù)研發(fā)團(tuán)隊的解決思路是:將這個定義成編程規(guī)范,或者寫成經(jīng)典案例,或者將這個檢查作為代碼審查的CheckList的一部分。但是,我要說的是這些方法都不是最優(yōu)的終極解決方案。這里我推薦我以前負(fù)責(zé)的研發(fā)團(tuán)隊中采用的一種做法給大家參考:函數(shù)對堆棧的大小依賴是可以被靜態(tài)檢查的,在函數(shù)編譯的中間過程文件中,你可以分析一下里面的匯編語言,然后通過正則表達(dá)式匹配找出函數(shù)實(shí)現(xiàn)的地方,并分析出函數(shù)對堆棧的使用情況。通過寫一小段堆棧使用檢測的掃描腳本,在每次軟件編譯后,自動運(yùn)行該腳本,然后將掃描的異常結(jié)果發(fā)給相關(guān)人review。這個自動處理的過程在我們的系統(tǒng)中引入后,幾乎再也沒有出現(xiàn)過堆棧耗盡溢出問題。我總結(jié)一下上面的過程:開發(fā)人員checkin代碼->自動構(gòu)建腳本運(yùn)行->構(gòu)建完成后自動運(yùn)行代碼靜態(tài)掃描腳本(這里可以是任何靜態(tài)檢查工具,如PCLINT和C++Test以及我上面提到的堆棧檢測掃描代碼)->自動運(yùn)行測試腳步(如冒煙測試,Unit測試等)->自動保存build結(jié)果供后續(xù)人工測試。上面的任何步驟失敗都會自動通知相關(guān)人。 以上過程說復(fù)雜也有些復(fù)雜,說簡單也簡單,畢竟你要做的僅僅是整合各種現(xiàn)成的工具,然后開發(fā)一點(diǎn)點(diǎn)自動腳本,但是這條自動生成線一旦建立,卻能夠切實(shí)提升研發(fā)效率。
我上面只提到一個軟件開發(fā)的實(shí)例,其實(shí)在開發(fā)過程中,有很多具體的環(huán)節(jié)都可以通過一些自動化的手段顯著提高研發(fā)效率。如何發(fā)現(xiàn)哪些研發(fā)過程需要或可以自動化呢?這個需要仔細(xì)觀察團(tuán)隊的實(shí)際工作情況,找出開發(fā)過程中重復(fù)的手工勞動比重大的工作,然后研究一下自動化是否可行,然后實(shí)施推廣。
上述三個方面的內(nèi)容談的都非?;\統(tǒng),任何一方面的工作展開來探討都是一大堆內(nèi)容,希望今后有機(jī)會能夠與大家共同探討一下這些方面的工作如何開展。