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