標籤:style blog http color 使用 strong 2014 ar
第3部分 軟體研發工作總結
如何解決軟體故障?
在軟體產品的運營維護階段,軟體工程師的一項重要工作就是解決軟體的bug。在學校的時候,大家學完一門課程,然後考試通過就萬事大吉了。但在實際的軟體開發項目中,將軟體成功交付給客戶,只是“萬裡長征走完了第一步”,後面還有大量的工作要做,例如:解決軟體故障、新增功能、版本升級等。作為一名合格的軟體工程師,一定要學會準確、迅速地解決軟體出現的各種問題。
為什麼解決軟體問題的能力如此重要?因為軟體項目的成功率不容樂觀。國內某IT公司對本公司內軟體項目的成功率進行了長時間的追蹤,統計的結果1所示。
圖1 軟體項目的成功率統計結果
從圖1可以看出,軟體項目的成功率是很低的,大部分的軟體項目都會出現超期完成甚至是失敗的情況。既然出了問題,那麼就要及時將之解決掉。
1. 軟體故障的分類
根據軟體故障的嚴重程度,將其分為以下三類:
(1) 嚴重故障
這類故障一般會導致軟體產品無法正常使用,需要立即解決。
如果出現了此類問題,那麼軟體工程師就要放下手中的工作,全力以赴將問題處理掉。
(2) 一般故障
這類故障雖然不會導致軟體產品無法正常使用,但會影響某些功能流程,會影響到使用者的體驗。
如果出現了此類問題,那麼軟體工程師在手中任務不緊張的情況下,需要抽時間來處理掉,不能讓問題一直遺留下去。
(3) 輕微故障
這類故障幾乎不會對軟體產品產生不良影響,使用者也很少能夠感覺得到故障的存在。
對於追求高品質和良好使用者口碑的公司,在後續產品功能更新的時候,會附帶將該類問題一起處理掉。
2. 解決軟體故障所使用的通訊工具
不管出現了哪類軟體故障,作為負責任的軟體工程師,我們都要在盡量短的時間內將之解決掉,為自己贏得讚揚,同時也為公司贏得口碑。
一般說來,在解決軟體故障的過程中,所使用的通訊工具包括:手機/電話、即時通訊軟體(像QQ、Skype等)、郵箱等。根據軟體故障的不同等級,所使用通訊工具的優先順序2所示。
圖2 不同故障等級所使用的通訊工具的優先順序
(1) 軟體出現嚴重故障時
那麼此時情況就比較緊急,需要軟體工程師在第一時間裡將之解決掉,否則軟體無法正常運行。這個時候,很明顯手機或電話是最有效通訊工具。故障現場的人員在電話裡面將問題描述清楚,研發人員根據他們的描述來評估問題發生的一般位置,然後針對該問題進行修改。
如果使用即時通訊工具((像QQ、Skype等),那麼打字需要耽誤一定的時間,要把問題描述清楚又需要一定的時間。等研發工程師知道問題的原因,也許“花兒都謝了”,客戶早已投訴到公司相關部門。郵箱是最次的選擇,因為在緊急的情況下,想靜下心來寫一封郵件也是比較的困難。
順便說一句,很多大公司不許員工在辦公的電腦上安裝QQ軟體,防止他們將機密的資訊傳送出去。一定要使用公司允許的通訊工具,不要觸犯資訊安全的紅線。
(2) 軟體出現一般故障時
此時,事情不緊急,但還是需要儘快解決,否則長期存在就會演變為軟體嚴重故障。
使用即時通訊工具,研發工程師能夠知道軟體啟動並執行具體情況,針對現場技術服務人員的回複來安排工作計劃。同時,現場技術服務人員將軟體運行情況及產生的日誌通過郵箱發送回來,方便開發人員按圖索驥地找到程式的癥結所在。
軟體出現的故障,大都是一般性的問題,通過即時通訊工具和郵箱就能夠搞定。當然,如果要想詳細瞭解軟體問題,也可以通過手機/電話來詢問現場技術服務人員。
(3) 軟體出現輕微故障時
此時,軟體問題不足以影響到其功能流程,屬於可改可不改的類型。
現場技術服務人員可以將此類問題描述通過郵箱發送回來,開發人員將之記錄在一個備忘錄裡面,如果下次該軟體產品有新增功能或最佳化,就將備忘錄裡面的問題一併解決了。
在實際的軟體項目中,要根據具體情況,靈活地選擇通訊工具,其目的就是儘快解決問題。
3. 解決軟體故障的依據
在解決軟體故障的過程中,軟體工程師的所參照的東西包括:客戶回函的問題描述、本公司技術支援人員反饋的軟體問題描述、程式執行過程中所產生的日誌。
(1) 客戶回函的問題描述
這是軟體問題的最初來源。一般說來,客戶回函的問題都比較的籠統,對問題的細節描述得比較少。
根據客戶回函,研發人員能夠大致知道軟體的問題出在哪裡。但如果要準確定位問題,還需要有更詳細的反饋。
(2) 本公司技術支援人員反饋的軟體問題描述
如果軟體出現問題,本公司一般會派技術支援人員趕到現場,協助客戶解決問題。他們會將軟體問題進行詳細的描述,並通過郵箱和即時通訊工具等將這些描述返回給研發人員,供其分析時參考。
相對於客戶的反饋,本公司技術支援人員的反饋更加的具體,也更加具有參考的價值。對於研發人員來說,要對這些資訊進行仔細的分析,剔除不合理的部分。
(3) 程式執行過程中所產生的日誌
這是最重要的尋找問題的依據。通過對日誌進行分析,一般可以準確地定位到是哪段代碼出了問題,或是哪段代碼的邏輯有問題。
對於研發人員來說,在尋找問題原因之前,一定要叫現場技術服務人員將軟體出現故障時候的日誌儲存並發送回來。這樣可以對照著日誌閱讀代碼,大部分問題的原因就能夠很快找到了。
4. 解決軟體故障的注意事項
在解決軟體故障的過程中,我們需要注意以下幾點:
(1) 不管是通過郵箱來與現場交流,還是通過即時通訊工具來聯絡,都要讓自己的專案經理知道交流的內容(發送郵件時要記得把他們抄送上)。在出現問題的時候,也會有人和你一起分擔責任。
(2) 研發人員提供的解決方案,一定要經過驗證之後才提供給現場使用,不能將現場當成了測試站。如果方案不經驗證直接使用,會出現意想不到的後果,甚至會出現客戶的投訴。
(3) 在現場使用解決方案的時候,一定要隨時和現場配合,解決該過程中出現的各種意外情況。
(4) 在現場使用完解決方案之後,一定要要求現場技術服務人員將軟體運行狀態相關記錄和程式日誌發回來檢查一下,確保功能的正確性。
軟體問題在所難免,重要的是我們要有正確的態度,要及時將問題解決。此外,在日常工作中,我們要注意程式碼的品質,將可能會出現的bug消滅在萌芽狀態。
(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,號:245924426,歡迎關注!)