反思前行——工作後第一個模組覆盤總結
反思前行
——工作後第一個模組覆盤總結
近四個月的忙碌即將劃上句號,畢業後第一個參與的專案即將釋出。將近4個月的工作梳理總結思考如下。
專案涉及網頁尾本程式設計、Linux程式設計、Windows程式設計等方面內容,我主要負責Windows端程式的編寫,需要為瀏覽器提供介面,需要給另一端Linux裝置端進行網路通訊。
簡化邏輯如下:
一、總體流程
只說《軟體工程》書本上學習不到的:
第一點:預先研究,確立並選出可行性的方案,預先研究的成果直接影響專案的進度,整個開發中最難的點,預先都要研究出大致的思路和方案。
第二點:編碼的審查,工具掃描主要掃描出編譯器編譯後不能發現的一些低階錯誤,如:筆者遇到函式共四個引數,型別也完全相同,筆者把第四個和第三個寫成一樣了。程式碼覆蓋工具,主要通過自己測試案例檢測程式碼的哪些邏輯分支沒有跑到。覆蓋率越高,說明你的案例越詳盡;反之說明你程式碼中的有些邏輯案例沒有覆蓋,可以進一步思考其中的原因。如記憶體分配失敗、讀取登錄檔失敗、讀取系統盤使用者路徑(如C:\Users\Administrator),這種異常就會很難跑到。這些終究是自己參照程式碼審查、修正程式碼的白盒測試。個人白盒測試功能完善後轉交測試人員進行黑盒測試。
二、編碼反思
以上是我負責模組中的一小塊邏輯,但是當時就思考了好久(訪問入口、訪問許可權、資訊獲取等幾個方面)。細思整個編碼過程,以下幾點很重要。
(1)依照需求,又要高於需求
需求及設計文件是設計參考的核心依據,也是稽核編碼是否達成要求的依據。需求上內容要達成,在設計中發現的確需求有問題,要提出來大家評審看是否需要需求變更。
(2)場景考慮越全面越好
筆者涉及模組要考慮Windows系統的相容性(Winxp32位,win7 32位、64位,win8),Windows的所有使用者(Administrator使用者、標準使用者、Guest使用者),瀏覽器要涵蓋所有的IE瀏覽器(IE6——IE11)。比如以下幾個點就需要特別關注:
第一:Windows使用者的許可權,Vista系統後如Win7對不同的使用者就有不同的許可權,標準使用者、Guest賬戶的一些檔案是不允許寫入的;
第二:32位、64位地址空間的不同,不同的資料型別的長度是有區別的,所以開發時候,不要寫死,必須使用sizeof( )求型別的長度;
(3)異常處理考慮越全面越好
如在邏輯處理中,如果讀取到邊界值,使用斷言ASSERT判定,還是彈出訊息給使用者提示,還是其他處理?這點要考慮清楚,否則越到bug會很難排查。
對於一個獨立的傳參程序,必須傳入引數才能跑到我們寫的邏輯;要考慮使用者如果不輸入引數的情況的處理。
一些難查bug往往都是異常場景考慮不足導致的,如一些在特定環境可以執行,但是換臺機器或者環境就不能出現的非必現的bug舉例:DLL載入問題、機器配置系統版本相容性問題、配置檔案刪除問題等。
(4)對外的介面儘量處理的再完美一些
筆者遇到了從瀏覽器獲取指定的串,以彈視窗反饋給使用者的情況,取值的邊界值如果設定考慮的足夠多,那麼只要符合要求的串都能取出。
還遇到從瀏覽器下載檔案(URLDownloadToFile,Windwos API)出現瀏覽器卡死的情況,網上的解決方案時通過單獨執行緒負責下載。
三、階段小結
考慮的越全面會避免返工,雖然多花費了時間,但節省了後續改動bug的時間,還為未來的程式擴充套件提供了方便。
發現與大牛效率、思考、分析問題還有很大差距,尤其快速定位bug的能力,這點只有從實踐中積累鍛鍊才能提高,別無他法。
一些不熟悉的內容經典書中的某個角度獲取給了詳盡的答案(如記憶體對映的手動釋放)書要常讀常新。
四、常用工具
1.SuperFinder.exegrepWin.exeEverything.exe2.FileZilla 檔案伺服器3.Hash_1.0.4.exe4.Beyond Compare 3 5.Foxit Reader6.Windows覆蓋工具 TestCocoon7.WinMD5Sum8.Linux工具 SecureCRTPortable.exe xshell.exe pshell.exe9.Windows程序檢視器procexp.exeWindows資料流檢視器Tcpview.exe10.文字檢視器Uedit32.exe notepad++.exe11.編碼SourceInsight.exe 以及12.程式碼工具檢查cppcheck.exe c++test.exe13.Bug跟蹤TDExplorer8.exe14.虛擬化平臺工具VMware vSphere Client 5.5 6.015.PHP檢視工具Sublime Text 216. www.cplusplus.com2014-3-14 pm22:29
作者:銘毅天下
如果感覺本文對您有幫助,請點選‘頂’支援一下,您的支援是我堅持寫作最大的動力,謝謝!