1. 程式人生 > >軟工第一次個人作業 需求分析、模塊規劃與時間規劃

軟工第一次個人作業 需求分析、模塊規劃與時間規劃

查表 找最大值 搜索 bsp 簡單 不同 選擇 功能 而且

目標功能

  1. 統計文件的字符數
  2. 統計文件的單詞總數
  3. 統計文件的總行數
  4. 統計文件中各單詞的出現次數
  5. 對給定文件夾及其遞歸子文件夾下的所有文件進行統計
  6. 統計兩個單詞(詞組)在一起的頻率,輸出頻率最高的前10個。

需求分解

  1. 能從命令行中獲取參數。
  2. 對給定文件夾及其遞歸文件夾裏的文件進行讀取,並有一定的容錯能力。疑問:遞歸是強制功能還是可選功能?)
  3. 能夠判斷單詞的定義。
  4. 能夠快速存取單詞出現次數與詞組次數。
  5. 對字符流中的字符按照不同規則進行統計。疑問:不同規則的統計是否要拆解成不同功能?)
  6. 對字符流中的單詞進行統計。
  7. 對統計的出現次數進行排序,篩選出最高的10個。
  8. 對結果進行輸出。

模塊分解

  1. 文件的讀取模塊。具體需求:遍歷給定文件夾,依次讀取每個文件。
  2. 簡單的字符和行數的統計功能,作為一個模塊。具體需求:統計字符流的字符與行數。
  3. 將單詞的判斷條件封裝為一個獨立的類。具體需求:對於給定的字符,可以判斷是否為單詞、為哪個單詞。
  4. 單詞的統計功能。具體需求:統計字符流中的單詞數、詞組數。
  5. 表單功能。具體需求:提供查表功能,盡量快速地查找與修改每個單詞的統計數目。另外提供查找最大值的功能。思路:使用stl,哈希表或字典樹。查找最大值可以通過維護一個最大值表(較慢)、直接搜索(較慢)或者采用特定的數據結構(是否與前述矛盾?)疑問:3.4.5.模塊是否劃分過於細致?
  6. 輸出模塊。具體需求:從給定數據給出輸出。
  7. 主模塊。具體需求:從命令行讀取數據,調用各模塊完成工作。

疑問

各個字符、單詞的統計是一次性、一起統計,還是多次訪問文件、分別統計?若是前者,恐怕耦合嚴重。若是後者,讀文件可能效率不高。假如用buff暫時存儲字符串從而多次統計過於浪費資源,而且可能出現溢出,還會將字符流劃分成多段,可能帶來問題。為了方便編碼,先使用後者多次讀文件完成,後期進行效率優化。

進度規劃

由於其他任務,今天才開始進行這個作業。因此之後必須加緊時間。

上述模塊分解只是一個初步分解,仍然有很多不妥之處。個人打算先分別完成各個模塊的初步功能,再根據問題進行調整。因此,進度規劃只能大概規劃,無法太細致。

進度計劃:

模塊1. 和7. 的命令行讀取:較為簡單,首先盡快解決,盡量增強健壯性。

模塊6. :今天之內完成。完成這些之後,大體框架就能夠運行了。

模塊2. :今天之內完成。

模塊3. :盡量今天之內完成。至少周一之內完成。

模塊4. 5. :周一完成初步

模塊5. :周一、周二更改方案,選擇最合適的方案。

性能測試:周三進行。

語言:c++

平臺:visual studio

單元測試:

vs有自帶的單元測試模塊,但是過於龐大,所以我打算自己寫簡單的單元測試類。

軟工第一次個人作業 需求分析、模塊規劃與時間規劃