1 問題描述最近工作負責2個模塊的軟件任務,在經過設計實現和編碼之後提交使用測試,發現實現與實際要求差距很大,需要返回重新修改,提交使用發現問題再修改……如此反復多次,直到最後暫時沒有問題,消耗了大量的時間和熱情。並產生如下疑問:為什麽會造成如此多次的反復?最初的需求和最終的實現之間為什麽會產生很大的差距?產品設計人員的想法是否準確的傳遞給了研發人員?設計人員在研發人員開始動手寫代碼之前如何確認他已經明確自己要幹什麽了? 2 問題分析06年曾經做過壹個測試,四十個人,十個人排成壹列,***四列,壹位同事把壹張紙條交給四隊的第壹位隊員看過之後,讓大家小聲把這句話傳到隊尾,看哪個隊又快又準確,結果是每列傳到最後壹個人時話都變了模樣,稍好的是誤差了幾個字,嚴重的是意思都變化了。問題出在什麽地方?是說話的人並沒有確認聽話者是否正真明白了自己的意思。在實際的工作流程中經常需要“傳話”,傳話的方法也很多,高效的團隊應該努力找到最有效的壹個。 從軟件工程角度講,壹個軟件產品從構思到實現需要經過以下壹系列嚴格的流程,1:產品設計 2:軟件設計 3:軟件實現4:測試並發布;通常這幾個步驟都是不同的團隊完成的,所以重點就是確保設計思想壹步步落實!產品設計思想通常是市場人員提出的,軟件設計人員在產品設計思想基礎上進行設計,編碼人員在軟件的設計基礎上開發,測試人員在軟件上進行測試, 如果把研發比做傳話遊戲的話,從編碼人員的角度,我遇到的問題是:我並不理解傳給我的話的意思,也不確定傳給我的話是否就是紙條上的那句,造成的結果是,我並不熟悉自己設計並完成的模塊,完成了軟件心裏面也不踏實,因為當編碼完成發布之後,使用的人員很容易發現“顯而易見”的錯誤,而我自己卻不知道修改的方向,使用人員見到產品才發現問題,返工,再測試,再發現問題,再返工,再測試……這的確是正規軟件的流程,但是否使用的太多了?如何才能提高效率,減少返工?怎樣才能讓軟件使用人員在的壹眼看到研發的作品之後說:好,這就是我想要的東西。 3 解決方案 3.1兩種典型的研發方法方法壹:重視編碼傳統的研發方法是輕視設計,重視編碼,大量的時間用於編碼,代碼任務很快完成,但是從產品整體角度講,研發團隊如果沒有真正理解產品設計思想,很容易造成軟件設計和開發的偏差,造成很多問題在產品完成時才發現,它們應該在沒有動筆寫代碼之前就被避免,從而陷入無限制的發布,修改bug,再發布……的恐怖循環。 方法二:重視設計 正確的合理的設計和研發計劃中,設計和理解設計是占很大的壹部分時間的,大概應該是完成產品總時間的30%~40%,之後是研發人員的理解和完成測試文檔,我喜歡測試優先的想法,因為實際效果很省力,最後才是編碼,編碼時間占30%~40%,從產品整體角度講,這是被證明的,有效率有效果的方法。 3.2 重視設計的成功經驗 這是07年我參加的壹個研發團隊的研發步驟,總工是是壹位有豐富經驗的工程師(40歲),2個研發組,核心人員平均年齡33歲以上, 軟件研發工作經驗在7~16年 第壹步:市場的產品設計,團隊中核心人員參與人員討論,確定產品方向; 第二步:研發團隊核心人員,討論確定研發的計劃和預見技術難點,確定研發計劃,討論技術難點的解決步驟,做到心中有數; 第三步:把研發計劃告知給研發工程師,並要求研發工程師花時間理解需求和設計,遇到難點溝通反饋,總工程師開會統壹解決研發疑問,沒有疑問之後,研發開始寫測試文檔。 第四步:研發工程師講述自己的測試文檔,研發核心團隊評審,提出不足與改進意見,把研發過程種造成的偏差扼殺在寫代碼之前。 第五步:研發工程師在動手開發之前,頭腦裏面已經很清楚自己要做的任務,之後的工作就是按照測試文檔實現功能點就可以了。 按照以上步驟開發,結果是減少了研發人員的bug,提高了研發的效率,減少了測試回合;這樣的開發方式要求研發團隊的核心人員,腦中有清楚的產品模樣,有清楚的開發思路,並且把實現要求貫徹給研發人員,並確認研發人員真正理解了自己想做的事情而不會產生偏差。 3.3 怎樣提高研發效率 根據以往的工作經驗,從研發角度看,流行的有效的解決辦法 我認為是:第壹:壹份研發人員自己寫的測試文檔(也就是常說的極限編程,研發自己的測試方案在寫代碼之前完成);或者別的有被實踐證明簡便有效的方法;第二:teamleader需要確認研發人員是否真懂得了自己要做的東西;至於如何確認,我的經驗是研發人員在認為自己理解了設計文檔之後,自己給設計和產品詳細講壹下到底要做什麽東西,做出來是什麽樣子;或者別的被實踐證明簡便有效果的方法。 4 經驗總結軟件研發的本質是軟件工程師用程序語言表達出產品的設計思想,軟件產品的好壞在於創造產品的工程師們對於產品設計思想的理解程度。優秀的研發團隊中,很重要的壹個特點是:在沒有開始工作之前,思想中已經有了產品清楚的模樣,並提早預見各種各樣的困難,有足夠的方案解決困難;對於研發工程師,很重要的壹點就是在沒有開始動手寫代碼之前,腦子裏面應該有清楚的軟件實現後的模樣。無論公司、研發團隊還是研發工程師,無論做何種職業,清晰的思路都是很重要的事情,我認為這也是提升效率的根本保證。
上一篇:2008年小學五年級數學上學期和期中試卷。下一篇:食品備案許可證如何辦理流程