馬鴻超
【摘 要】目前的軌道交通信號(hào)系統(tǒng)開(kāi)發(fā)過(guò)程中,一般以V模型作為完整的開(kāi)發(fā)流程。V模型以其驗(yàn)證和確認(rèn)過(guò)程為核心,在系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)過(guò)程中,逐層地對(duì)產(chǎn)出進(jìn)行檢查,以保證產(chǎn)品和產(chǎn)出物的正確性。但在這一模型中仍然存在一些由流式開(kāi)發(fā)模型導(dǎo)致的效率問(wèn)題。本文以新興的敏捷開(kāi)發(fā)思維和工具來(lái)嘗試解決現(xiàn)有模型帶來(lái)的問(wèn)題和風(fēng)險(xiǎn),提高開(kāi)發(fā)效率。本文亦對(duì)兩種開(kāi)發(fā)方式進(jìn)行對(duì)比,并指出這一過(guò)程中遇到的問(wèn)題和難點(diǎn),并提出一些解決辦法,將這一過(guò)程中產(chǎn)生的經(jīng)歷與經(jīng)驗(yàn)進(jìn)行簡(jiǎn)要的闡述、分享和探討。
【關(guān)鍵詞】V模型;敏捷開(kāi)發(fā);效率;對(duì)比
在各種原因下,我們的信號(hào)系統(tǒng)開(kāi)發(fā),仍然在使用相對(duì)較老的管理方式和技術(shù)中。大量的信號(hào)系統(tǒng)開(kāi)發(fā)團(tuán)隊(duì),在面對(duì)這一問(wèn)題時(shí),通常采取增加培訓(xùn)、強(qiáng)化制度等傳統(tǒng)方式嘗試解決。結(jié)果上而言,這只是讓更多的人適應(yīng)當(dāng)前的狀況,而沒(méi)有從源頭上嘗試解決問(wèn)題,付出的成本不菲,而收效甚微,很難稱得上有效的解決方案。
相對(duì)而言,同樣部分源自計(jì)算機(jī)科學(xué),互聯(lián)網(wǎng)行業(yè)則是這一方面的優(yōu)勢(shì)選手。近年來(lái),無(wú)論是管理技術(shù)、培訓(xùn)技術(shù)、工作流技術(shù),互聯(lián)網(wǎng)公司都創(chuàng)造了相當(dāng)多寶貴的特質(zhì)化技術(shù)和經(jīng)驗(yàn),低耗高效地優(yōu)化了自身。另一方面,這些方面的變革也明顯吸引了更多的畢業(yè)生等新鮮血液。在這樣的趨勢(shì)下,如何從互聯(lián)網(wǎng)項(xiàng)目的成功經(jīng)驗(yàn)中總結(jié)經(jīng)驗(yàn)、優(yōu)化自身,已經(jīng)成為了傳統(tǒng)領(lǐng)域項(xiàng)目共同的話題。
本文從項(xiàng)目管理的方向上,對(duì)軌道交通信號(hào)系統(tǒng)的項(xiàng)目管理進(jìn)行反思總結(jié),并結(jié)合自身經(jīng)驗(yàn),粗淺地探討吸收敏捷開(kāi)發(fā)思維,化為己用,優(yōu)化自身的過(guò)程中的收獲與問(wèn)題。
1.采用V模型進(jìn)行項(xiàng)目開(kāi)發(fā)的現(xiàn)狀
V模型作為一種源自瀑布模型的改良版本,對(duì)于項(xiàng)目成員而言,最為明顯的特點(diǎn)之一,便是其開(kāi)發(fā)流程中各個(gè)開(kāi)發(fā)任務(wù)的粒度。開(kāi)發(fā)過(guò)程中,尤其是早期階段,相關(guān)人員始終以整個(gè)產(chǎn)品的視角出發(fā),進(jìn)行詳細(xì)的分析、研討等工作。這樣的視角和粒度帶來(lái)的問(wèn)題之一,是項(xiàng)目成員承擔(dān)的負(fù)載是不均等的。例如,第一線的軟件開(kāi)發(fā)人員,在進(jìn)行具體功能的詳細(xì)設(shè)計(jì)前,一直處于工作負(fù)載較低的狀態(tài),直到前置產(chǎn)出物完成。
V模型的線性工作流帶來(lái)的另一個(gè)問(wèn)題則是開(kāi)發(fā)過(guò)程中的壓力累積。即使投入了V模型的驗(yàn)證和確認(rèn)過(guò)程,在單個(gè)階段結(jié)束后仍然無(wú)法保證萬(wàn)無(wú)一失。而線性工作流下,更為有效的驗(yàn)證過(guò)程往往被前置階段阻塞,導(dǎo)致一些較為隱蔽的問(wèn)題無(wú)法被快速發(fā)現(xiàn)。而軟件工程中,問(wèn)題的排除一般無(wú)法估算具體的時(shí)間。這樣的狀況會(huì)導(dǎo)致項(xiàng)目組開(kāi)啟下個(gè)迭代的時(shí)間延后。
2.吸取敏捷開(kāi)發(fā)思維以解決效率問(wèn)題
在探索前述問(wèn)題的解決方案時(shí),目前十分流行的敏捷開(kāi)發(fā)引起了我們的注意。概念上來(lái)說(shuō),敏捷開(kāi)發(fā)并沒(méi)有特別準(zhǔn)確的定義,但其特點(diǎn)是業(yè)內(nèi)一致認(rèn)定的——快速迭代,快速反饋,擁抱變化。我們?nèi)匀槐A袅嗽萔模型的驗(yàn)證和確認(rèn)過(guò)程,而在設(shè)計(jì)過(guò)程中采用了少量多次迭代的方針,降低每個(gè)任務(wù)的粒度。相比之下,少量多次迭代帶來(lái)的優(yōu)勢(shì)是,每個(gè)項(xiàng)目成員都能夠很快開(kāi)始自己的工作,在整個(gè)項(xiàng)目中的工作壓力相對(duì)均衡,每個(gè)迭代需要完成的任務(wù)和產(chǎn)生的問(wèn)題有所減少。
在工作流方面,我們沒(méi)有做非常大的改動(dòng),轉(zhuǎn)而在優(yōu)化工作粒度的基礎(chǔ)上進(jìn)行改進(jìn)。調(diào)整工作流之后,對(duì)每個(gè)任務(wù)更為精準(zhǔn)的驗(yàn)證確認(rèn)可以更早開(kāi)始,問(wèn)題可以被更早發(fā)現(xiàn)和處理。更為重要的是,因?yàn)橄到y(tǒng)當(dāng)時(shí)的復(fù)雜度相對(duì)更低,問(wèn)題的排查和處理也變得更容易。
我們還在項(xiàng)目推進(jìn)過(guò)程中增加了一些溝通環(huán)節(jié)。我們?cè)O(shè)立了頻率更高、耗時(shí)更少的進(jìn)度溝通,在每個(gè)階段也讓更多角色參與進(jìn)來(lái)。在推行一段時(shí)間后,我們發(fā)現(xiàn),定期的溝通更容易發(fā)現(xiàn)開(kāi)發(fā)過(guò)程中每個(gè)成員遇到的問(wèn)題,而更多角色的參與則減少了設(shè)計(jì)上的問(wèn)題和反復(fù)返工的現(xiàn)象。我們還發(fā)現(xiàn),在這樣的模式下,更多的項(xiàng)目成員反饋稱,他們更有信心順利完成每個(gè)迭代結(jié)點(diǎn),在工作過(guò)程中也有了更大的提升感。
3.投入敏捷開(kāi)發(fā)的難點(diǎn)和解決方案
在推行過(guò)程中,我們的主要難點(diǎn)之一是對(duì)“敏捷”的理解不足。在粒度較細(xì)的設(shè)計(jì)過(guò)程中,因?yàn)閳F(tuán)隊(duì)過(guò)早地思考了非當(dāng)前迭代的內(nèi)容,花費(fèi)時(shí)間進(jìn)行了設(shè)計(jì)。而之后的開(kāi)發(fā)證明,當(dāng)時(shí)做出的設(shè)計(jì)已經(jīng)不再適用,這產(chǎn)生了額外的開(kāi)發(fā)成本。在研討后發(fā)現(xiàn),如果在當(dāng)前迭代只考慮相關(guān)的設(shè)計(jì),反而會(huì)減少類似的問(wèn)題。與此類似的是,我們發(fā)現(xiàn),在完全不修改之前迭代的情況下進(jìn)行持續(xù)開(kāi)發(fā)會(huì)產(chǎn)生額外的問(wèn)題。在這個(gè)方面,我們通過(guò)周期性的溝通、研討和簡(jiǎn)單復(fù)盤,付出一定的學(xué)習(xí)成本之后,這些問(wèn)題都有明顯的改進(jìn)。
另一個(gè)問(wèn)題是,面對(duì)全新的工具鏈,每個(gè)人都需要進(jìn)行額外的學(xué)習(xí),尤其是相關(guān)工具的搭建、修改和維護(hù)方面。在每個(gè)工具的投入前,我們都進(jìn)行了詳盡的調(diào)研,避免投入過(guò)多的系統(tǒng),無(wú)謂地增加全體成員的學(xué)習(xí)成本。決定投入后,我們還提前準(zhǔn)備了完整的培訓(xùn)方案,并構(gòu)建了一定的實(shí)戰(zhàn)用例。結(jié)果上,我們做出的準(zhǔn)備收獲頗豐,在工具的投入確實(shí)降低了出錯(cuò)的概率。而工具的選擇和自定義方面,也因?yàn)槌浞值恼{(diào)研和調(diào)整,盡可能簡(jiǎn)化操作成本。得益于此,項(xiàng)目組很快地投入了實(shí)戰(zhàn)生產(chǎn),只產(chǎn)生了少量的操作問(wèn)題。
4.對(duì)兩種開(kāi)發(fā)模式的對(duì)比與探討
V模型作為傳統(tǒng)的項(xiàng)目生命周期模型,其逐級(jí)推進(jìn)的工作方式在項(xiàng)目整體的全局把控方面十分出色。此外,作為V模型的標(biāo)志,每個(gè)階段都有對(duì)應(yīng)的驗(yàn)證和確認(rèn)過(guò)程這一特性,一定程度上確保了項(xiàng)目整體的推進(jìn)方向。
而投入敏捷開(kāi)發(fā)后,整體的項(xiàng)目推進(jìn)則更多地關(guān)注具體的任務(wù)和功能,快速迭代使得項(xiàng)目成員的壓力分布更為均勻,每個(gè)迭代的目標(biāo)更為明確簡(jiǎn)單,在推進(jìn)過(guò)程中簡(jiǎn)潔輕快,每個(gè)人都有足夠的參與度和更為明確的目標(biāo)。
本次嘗試中,我們只嘗試了將敏捷開(kāi)發(fā)中很小的一部分與V模型結(jié)合的方式。雖然在嘗試的過(guò)程中,仍然繞了一些彎路,我們?nèi)匀桓冻隽艘欢ǖ脑囧e(cuò)成本和學(xué)習(xí)成本,結(jié)果而言,項(xiàng)目的推進(jìn)速度有所提升,開(kāi)發(fā)過(guò)程出現(xiàn)的問(wèn)題有所減少,效果比較明顯。
【參考文獻(xiàn)】
[1]賈子河,段永剛,蔣博,段珊珊.輕松Scrum之旅—敏捷開(kāi)發(fā)故事[M].電子工業(yè)出版社,2009(1).
[2]張文勝,陳宏.基于ThinkPHP模型的敏捷WEB開(kāi)發(fā)的應(yīng)用與實(shí)踐[J].軟件工程.2016.v.19;NO.20103:45-48