實驗二 軟件工程個人項目
實驗時間 2018-3-7/8
Deadline:2018-3-20 10:00,以博客發表日期為准
評分標准:
- 按時交 ,滿分100分,代碼和博客各50分。檢查項目包括:
- 未提交項目源碼到Github上,代碼部分不得分;未提交博客到班級博客上,博客部分不得分;
- 根據項目完成質量累計加分,完成基本功能原則上不超過滿分100分,完成軟件的附加功能,給予加分
- 代碼提交(代碼規范,否則倒扣分)
- 博文規范(行文清晰流暢,如果行文中涉及代碼,請使用博客園代碼控件,或使用MarkDown語法塊)
- 抄襲 - 倒扣本次作業分數,關於抄襲:[http://www.cnblogs.com/ZCplayground/p/8511250.html]
1、實驗目的與要求
(1)掌握軟件項目個人開發流程。
(2)掌握Github上發布軟件項目的操作方法。
2、實驗內容和步驟
任務1:嘗試按照《構建之法》第2章中2.3所述PSP流程,使用JAVA編程語言,獨立完成一個英文文本詞頻統計的軟件開發。軟件基本功能要求如下:
1.程序可讀入任意英文文本文件,該文件中英文詞數大於等於1個。
2.程序需要很壯健,能讀取容納英文原版《哈利波特》10萬詞以上的文章。
3.指定單詞詞頻統計功能:用戶可輸入從該文本中想要查找詞頻的一個或任意多個英文單詞,運行程序的統計功能可顯示對應單詞在文本中出現的次數和柱狀圖。
4.高頻詞統計功能:用戶從鍵盤輸入高頻詞輸出的個數k,運行程序統計功能,可按文本中詞頻數降序顯示前k個單詞的詞頻及單詞。
5.統計該文本所有單詞數量及詞頻數,並能將單詞及詞頻數按字典順序輸出到文件result.txt。
任務2:將包含任務1源碼的完整工程文件提交到你注冊Github賬號下的項目倉庫中。
開發須知:
- 測試機為Windows環境,所有提交到Github上的項目必須包含src文件夾,在src文件夾中必須包含名為Main.java文件,且Main.java中包含 public static void main(String[] args) 方法。同時請注意以下三點:
- 生成文件時請使用相對路徑(也就是說,不要帶任何C:\ 這樣的路徑),生成的 result.txt 文件需在項目的根目錄下。如何自測:在windows系統中打開命令行界面(Linux/Mac 使打開終端,后續操作一致),進入項目所在根目錄下,使用 javac src/Main.java,然后再使用 java src/Main 1,生成的results.txt在當前目錄下。
- 使用的JDK版本為 jdk8u161,windows版下載鏈接:http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-windows-x64.exe;
- 使用的JRE版本為jre8u161,windows版下載鏈接:http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jre-8u161-windows-x64.exe
- 本次項目較為簡單,故不得使用除限定版本jdk與jre外的額外依賴包。
- 一個示例組織目錄如下所示:
/src Main.java (主程序,可以從命令行接收參數) Lib.java (自定義函數,名字可不一樣) /result.txt(運行程序后生成的文件) |
任務3:完成個人項目報告博文作業
博文名稱要求:學號+詞頻統計軟件項目報告;
博文中要有任務1源碼在Github的倉庫主頁鏈接地址;
博文作為個人項目實施過程的文字資料,請完整包含下面7個部分:
1.需求分析,即使老師已經給出了題目,也要對題目的需求做分析。
2. 功能設計,題目的需求,以及從真實調研里獲得的需求后,要對程序做功能設計,有同學會問:“不就是出題嘛,有啥好設計的?”,其實,題目要求的只是項目基本的功能要求,自己思考和調研會有超出題目要求的需求,甚至你有天才的設計,作出特色的功能。因此,功能會有:
- 基本功能
- 擴展功能
3. 設計實現,設計包括你會有哪些類,這些類分別負責什么功能,他們7之間的關系怎樣?你會設計哪些重要的函數,關鍵的函數是否需要畫出流程圖?函數之間的邏輯關系如何?
4. 測試運行,你的程序必須是可運行的,請展示程序的運行截圖,包括題目要求實現功能對應的運行截圖。這些截圖說明你的程序確實完成了項目需求,如果程序實現了擴展需求,也請大方秀出來。
5. 粘貼自己覺得比較獨特的或滿意的代碼片段,用博客園正確的代碼控件來顯示。(提示:要有必要的注釋說明,提示:不要貼所有代碼!不符合規定的要倒扣分)
6. 總結:你設計的程序如何實現軟件設計的“模塊化”原則。
7. 展示PSP,這個環節重要的是讓自己看到自己的估計和實際消耗時間,哪個環節耗時最多,哪個環節估計和實踐相差巨大?為什么?
PSP參考:http://www.cnblogs.com/xinz/archive/2011/10/22/2220872.html
PSP2.1 |
任務內容 |
計划共完成需要的時間(min) |
實際完成需要的時間(min) |
Planning |
計划 |
8 |
6 |
· Estimate |
· 估計這個任務需要多少時間,並規划大致工作步驟 |
8 |
6 |
Development |
開發 |
82 |
88 |
·· Analysis |
需求分析 (包括學習新技術) |
6 |
10 |
· Design Spec |
· 生成設計文檔 |
5 |
6 |
· Design Review |
· 設計復審 (和同事審核設計文檔) |
4 |
6 |
· Coding Standard |
代碼規范 (為目前的開發制定合適的規范) |
3 |
3 |
· Design |
具體設計 |
10 |
12 |
· Coding |
具體編碼 |
36 |
21 |
· Code Review |
· 代碼復審 |
7 |
9 |
· Test |
· 測試(自我測試,修改代碼,提交修改) |
13 |
21 |
Reporting |
報告 |
9 |
6 |
·· Test Report |
· 測試報告 |
3 |
2 |
· Size Measurement |
計算工作量 |
2 |
1 |
· Postmortem & Process Improvement Plan |
· 事后總結 ,並提出過程改進計划 |
3 |
3 |
如果所有的環節你都認真做了,那么,此處你應該會有很多經驗願意與大家分享。