https://github.com/JarrySmith/WordCountProjava
PSP2.1 | PSP 階段 | 預估耗時(分鐘) | 實際耗時(分鐘) |
---|---|---|---|
Planning | 計劃 | 10 | 15 |
· Estimate | · 估計這個任務須要多少時間 | 10 | 15 |
Development | 開發 | 205 | 315 |
· Analysis | · 需求分析 (包括學習新技術) | 15 | 20 |
· Design Spec | · 生成設計文檔 | 10 | 30 |
· Design Review | · 設計複審 (和同事審覈設計文檔) | 15 | 30 |
· Coding Standard | · 代碼規範 (爲目前的開發制定合適的規範) | 15 | 30 |
· Design | · 具體設計 | 15 | 10 |
· Coding | · 具體編碼 | 60 | 60 |
· Code Review | · 代碼複審 | 15 | 15 |
· Test | · 測試(自我測試,修改代碼,提交修改) | 60 | 120 |
Reporting | 報告 | 65 | 80 |
· Test Report | · 測試報告 | 45 | 60 |
· Size Measurement | · 計算工做量 | 10 | 10 |
· Postmortem & Process Improvement Plan | · 過後總結, 並提出過程改進計劃 | 10 | 10 |
合計 | 280 | 410 |
在包project中建立輸入類InputProcess,其包含方法processInput(),該方法會拋出異常IOException和IllegalArgumentException,該方法輸入參數爲一個String[]類型字符串數組,返回值爲一個String類型字符串。git
根據接口定義搭建框架以下:github
package project; public class InputProcess{ public String processInput (String[] args) throws IOException,IllegalArgumentException{ String filePath=null; //一系列判斷args是否符合規範的條件判斷語句 ......; return filePath; } }
processInput方法僅判斷輸入參數是否合法,判斷傳入的文件是否包含非法字符。數組
經過if語句判斷字符串數組args的個數是否爲一,args[0]內是否存放合法的文件名,然後按字符讀取文件內容,經過對每一個字符的ASCII碼進行處理來判斷文件內的字符是否都是合法字符。框架
若args不符合規定,或文件內包含非法字符,則拋出異常:ide
...... throw new IllegalArguementException("參數個數只能爲1"); ...... throw new IllegalArgumentException("待處理文件不是txt類型"); ...... throw new IllegalArgumentException("待處理文件內包含非法字符"); ......
本項目使用集成開發環境IntelliJ IDEA進行開發,使用junit4測試框架進行測試工具
根據白盒測試的思想,儘可能實現條件覆蓋和語句覆蓋,設計了編號爲一、四、1三、15的測試用例,根據黑盒測試的思想設計了其他的測試用例。性能
由於被測試的模塊較爲簡單,在對測試效率上能夠不作特別要求。
測試用例詳見GitHub內的測試腳本和測試用例EXCEL表格。單元測試
運行測試用例的結果如圖所示:學習
被測模塊的質量較高,由測試結果可知測試效率較高,但沒有檢測全部非法字符輸入狀況,所以測試質量通常。
項目開發語言是Java,選定《阿里巴巴Java開發手冊》做爲開發規範。
評審同組成員徐江南的代碼,除了發現一處變量命名不符合lowerCamelCase命名風格外,沒有發現其它不符合規範的地方。
使用的掃描工具是「Alibaba Java Coding Guidelines」。
該工具是一個idea插件,其GitHub項目地址:https://github.com/alibaba/p3c/tree/master/idea-plugin
工具的下載地址:https://plugins.jetbrains.com/plugin/10046-alibaba-java-coding-guidelines
使用掃描工具掃描我的所有代碼後運行結果如圖所示:
依據掃描結果改進代碼後再次運行單元測試,發現結果沒有明顯區別,多是模塊簡單所致,但修改後的代碼的可讀性的確大爲提升。
使用掃描工具進行代碼檢測後發現小組代碼存在多處不規範。這些不規範的地方雖然暫時不妨礙項目的正確運行,但它阻礙了其餘開發人員閱讀代碼,讓項目的維護變難了。修改事後的代碼更符合規範,也更容易找出代碼中隱藏的bug。
考慮到"WcPro.exe"的功能是統計詞頻,所以用一個12MB的txt文本做爲輸入,進行測試。
由全體組員參與,組員徐江南主持,全部人一同評審小組的所有代碼,通過討論,一致認定在循環內定義變量會增長額外開銷。另外,在讀取txt內容時只會讀取合法字符,對非法字符判斷反而會影響效率。
將代碼循環內定義的變量外提,刪去對非法字符判斷等工做後,程序效率大約提高了20%,與同行評審的結論一致。
在軟件開發之中,只有自始至終貫徹軟件測試,纔有可能在項目臨近結尾時獲得一個過得去的項目成果。
經討論,小組貢獻分爲0.22