軟工第一次個人作業 需求分析、模塊規劃與時間規劃
阿新 • • 發佈:2018-03-25
查表 找最大值 搜索 bsp 簡單 不同 選擇 功能 而且
目標功能:
- 統計文件的字符數
- 統計文件的單詞總數
- 統計文件的總行數
- 統計文件中各單詞的出現次數
- 對給定文件夾及其遞歸子文件夾下的所有文件進行統計
- 統計兩個單詞(詞組)在一起的頻率,輸出頻率最高的前10個。
需求分解:
- 能從命令行中獲取參數。
- 對給定文件夾及其遞歸文件夾裏的文件進行讀取,並有一定的容錯能力。疑問:遞歸是強制功能還是可選功能?)
- 能夠判斷單詞的定義。
- 能夠快速存取單詞出現次數與詞組次數。
- 對字符流中的字符按照不同規則進行統計。疑問:不同規則的統計是否要拆解成不同功能?)
- 對字符流中的單詞進行統計。
- 對統計的出現次數進行排序,篩選出最高的10個。
- 對結果進行輸出。
模塊分解:
- 文件的讀取模塊。具體需求:遍歷給定文件夾,依次讀取每個文件。
- 簡單的字符和行數的統計功能,作為一個模塊。具體需求:統計字符流的字符與行數。
- 將單詞的判斷條件封裝為一個獨立的類。具體需求:對於給定的字符,可以判斷是否為單詞、為哪個單詞。
- 單詞的統計功能。具體需求:統計字符流中的單詞數、詞組數。
- 表單功能。具體需求:提供查表功能,盡量快速地查找與修改每個單詞的統計數目。另外提供查找最大值的功能。思路:使用stl,哈希表或字典樹。查找最大值可以通過維護一個最大值表(較慢)、直接搜索(較慢)或者采用特定的數據結構(是否與前述矛盾?)疑問:3.4.5.模塊是否劃分過於細致?
- 輸出模塊。具體需求:從給定數據給出輸出。
- 主模塊。具體需求:從命令行讀取數據,調用各模塊完成工作。
疑問:
各個字符、單詞的統計是一次性、一起統計,還是多次訪問文件、分別統計?若是前者,恐怕耦合嚴重。若是後者,讀文件可能效率不高。假如用buff暫時存儲字符串從而多次統計過於浪費資源,而且可能出現溢出,還會將字符流劃分成多段,可能帶來問題。為了方便編碼,先使用後者多次讀文件完成,後期進行效率優化。
進度規劃:
由於其他任務,今天才開始進行這個作業。因此之後必須加緊時間。
上述模塊分解只是一個初步分解,仍然有很多不妥之處。個人打算先分別完成各個模塊的初步功能,再根據問題進行調整。因此,進度規劃只能大概規劃,無法太細致。
進度計劃:
模塊1. 和7. 的命令行讀取:較為簡單,首先盡快解決,盡量增強健壯性。
模塊6. :今天之內完成。完成這些之後,大體框架就能夠運行了。
模塊2. :今天之內完成。
模塊3. :盡量今天之內完成。至少周一之內完成。
模塊4. 5. :周一完成初步
模塊5. :周一、周二更改方案,選擇最合適的方案。
性能測試:周三進行。
語言:c++
平臺:visual studio
單元測試:
vs有自帶的單元測試模塊,但是過於龐大,所以我打算自己寫簡單的單元測試類。
軟工第一次個人作業 需求分析、模塊規劃與時間規劃