USTC《現代軟件工程》春季學期——第一次我的做業:詞頻統計

截止日期

2018年3月29日23:59 php

要求html

1. 對源文件(*.txt,*.cpp,*.h,*.cs,*.html,*.js,*.java,*.py,*.php等,文件夾內的全部文件)統計字符數、單詞數、行數、詞頻,統計結果以指定格式輸出到默認文件中,以及其餘擴展功能,並可以快速地處理多個文件。java

2. 使用性能測試工具進行分析,找到性能的瓶頸並改進git

3. 對代碼進行質量分析,消除全部警告github

http://msdn.microsoft.com/en-us/library/dd264897.aspx編程

4. 設計10個測試樣例用於測試,確保程序正常運行(例如:空文件,只包含一個詞的文件,只有一行的文件,典型文件等等)windows

5. 使用Github進行代碼管理編程語言

6. 撰寫博客 工具

 

基本功能post

1. 統計文件的字符數(只須要統計Ascii碼,漢字不用考慮)

2. 統計文件的單詞總數

3. 統計文件的總行數(任何字符構成的行,都須要統計)

4. 統計文件中各單詞的出現次數,輸出頻率最高的10個。

5. 對給定文件夾及其遞歸子文件夾下的全部文件進行統計

6. 統計兩個單詞(詞組)在一塊兒的頻率,輸出頻率最高的前10個。

7. 在Linux系統下,進行性能分析,過程寫到blog中(附加題) 

注意:

a) 空格,水平製表符,換行符,均算字符

b) 單詞的定義:至少以4個英文字母開頭,跟上字母數字符號,單詞以分隔符分割,不區分大小寫。

英文字母:A-Z,a-z

字母數字符號:A-Z,a-z,0-9

分割符:空格,非字母數字符號

例如:」file123」是一個單詞,」123file」不是一個單詞。file,File和FILE是同一個單詞。

若是兩個單詞只有最後的數字結尾不一樣,則認爲是同一個單詞,例如,windows,windows95和windows7是同一個單詞,iPhone4和IPhone5是同一個單詞,可是,windows和windows32a是不一樣的單詞,由於他們不是僅有數字結尾不一樣

輸出按字典順序,例如,windows95,windows98和windows2000同時出現時,輸出windows2000

詞組的定義:windows95 good, windows2000 good123,能夠算是同一種詞組。按照詞典順序輸出。三詞相同的情形,好比good123 good456 good789,根據定義,則是 good123 good123 這個詞組出現了兩次。

c) 輸入文件名以命令行參數傳入。須要遍歷整個文件夾時,則要輸入文件夾的路徑。

d) 輸出文件result.txt

characters: number

words: number

lines: number

<word>: number

<word>爲文件中真實出現的單詞大小寫格式,例如,若是文件中只出現了File和file,程序不該當輸出FILE,且<word>按字典順序(基於ASCII)排列,上例中程序應該輸出File: 2

e) 根據命令行參數判斷是否爲目錄

f) 將全部文件中的詞彙,進行統計,最終只輸出一個總體的詞頻統計結果。

 

項目管理

1. 分析整理需求,完成PSP表格

PSP是卡耐基梅隆大學(CMU)的專家們針對軟件工程師所提出的一套模型:Personal Software Process (PSP, 我的開發流程,或稱個體軟件過程)。

一個功能完備的程序不是一蹴而就的。經過將詞頻統計的需求劃分爲4個部分,可將一個大任務劃分爲可操做的小任務,同時最好按照任務難度或緊急程度指定各個任務的完成次序。所以,在動手開發以前,要先估計將在程序各模塊開發所需耗費的時間,以及完成整個項目所需的時間,將這個[估計值]記錄下來,寫成PSP 的形式。

PSP的目的是:記錄工程師如何實現需求的效率,和咱們使用項目管理工具(例如微軟的Project Professional,或者禪道等)進行項目進度規劃相似。

有關PSP的更多內容,請自行閱讀鄒欣老師的博客:

http://www.cnblogs.com/xinz/archive/2011/10/22/2220872.html

PSP可用teambition工具製做

https://www.teambition.com/

 

2. 使用Github進行代碼管理

使用PSP作好規劃以後,第二步固然是進行編碼實現,此時,除了選擇合適的編程語言,還須要學會良好的源代碼管理。

請閱讀鄒欣老師的博客:源代碼管理,瞭解源代碼管理的10個實踐問題。

本次做業要求使用Github進行源代碼管理,代碼有進展即簽入Github。簽入記錄不合理的項目會被助教抽查詢問項目細節。

對代碼簽入的具體要求以下:根據需求劃分功能後,每作完一個功能,編譯成功後,應至少commit一次。本例中,至少應區分基本功能和擴展功能,即分別針對基本功能、擴展功能,編譯成功後,總共至少應commit兩次。具體的功能劃分,請自行定義,並在撰寫博客時體現出來,遵循本身對需求的功能劃分來提交代碼便可。

對Commit不是很熟悉的話,請閱讀阮一峯的博客:Commit message 和 Change log 編寫指南,瞭解更多細節。

 

3. 設計測試用例,編寫單元測試

做爲一門測試的課程,測試纔是重點。請根據本身以往積累的測試經驗,結合本週介紹的測試用例設計方法,在編碼完成以後,提交產品以前,設計測試用例,並編寫單元測試,對本身的項目進行測試。

首先,至少應採用白盒測試用例設計方法來設計測試用例,其餘測試方法不限。其次,要設計至少10個測試用例,確保你的程序可以正確處理各類狀況。最後,結合測試評估的要求,對本身的測試設計進行評價,這些測試用例能知足該程序測試的要求嗎?

另外一個重要的措施是要把單元測試自動化,這樣每一個人都能很容易地運行它,而且可使單元測試天天都運行。每一個人均可以隨時在本身的機器上運行。團隊通常是在每日構建中運行單元測試的,這樣每一個單元測試的錯誤就能及時被發現並獲得修改。

推薦閱讀鄒欣老師關於單元測試和迴歸測試的博客:

http://www.cnblogs.com/xinz/archive/2011/11/20/2255830.html

 

博客要求

1. 需求分析,估計各部分所需時間,給出PSP表格

2. 記錄實際完成各部分時間

3. 對代碼質量和性能進行分析

4. 測試用例設計和分析過程

5. 描述你在次項目中得到的經驗

 

評分標準

1. 統計文件的字符數(2分)

2. 統計文件的單詞總數(2分)

3. 統計文件的總行數(2分)

4. 統計文件中各單詞的出現次數(2分)

5. 對給定文件夾及其遞歸子文件夾下的全部文件進行統計(4分)

6. 統計兩個單詞(詞組)在一塊兒的頻率,輸出頻率最高的前10個(4分)

以上六個結果輸出錯誤則對應子任務得-2分,所有輸出正確則按運行時間肯定排名(用時按升序前30%得滿分16分,30%-70%得15分,後30%得14分)。

7. 博客撰寫(代碼實現過程,性能分析、優化報告等)(4分)

8. 在Linux系統下,進行性能分析,過程寫到blog中(附加題,2分)

 

代碼提交地址:

https://github.com/eudaem/homework1

 

注意:做業延遲,1周內補交,0分;不交做業-10分。

相關文章
相關標籤/搜索