Deadline:##
2017-3-8 12:00AM,以博客發表日期為准。
評分基准:##
- 按時交 - 有分,檢查的項目包括后文的四個方面
- 題目要求
- 個人軟件過程耗時估計與統計表
- 代碼提交
- 博文規范
- 晚交 - 0分
- 遲交兩周以上 - 倒扣本次作業分數
- 抄襲 - 倒扣本次作業分數
題目描述:##
看了大家對於本課程的目標和規划,很多同學都希望能提高自己的實踐能力,沒有捷徑可走,就是練習、練習再練習!那么就從第一個個人項目開始吧,用一周的時間完成一個基於控制台的四則運算程序,實現一個自動生成小學四則運算題目的命令行程序
從《構建之法》第一章的 “程序” 例子出發,像阿超那樣,花二十分鍾寫一個能自動生成小學四則運算題目的命令行 “軟件”,滿足以下需求:
- 除了整數以外,還要支持真分數的四則運算,真分數的運算,例如:1/6 + 1/8 = 7/24
- 運算符為 +, −, ×, ÷
- 並且要求能處理用戶的輸入,並判斷對錯,打分統計正確率。
- 要求能處理用戶輸入的真分數, 如 1/2, 5/12 等
- 使用 -n 參數控制生成題目的個數,例如執行下面命令將生成10個題目
Myapp.exe -n 10
個人軟件過程:##
-
在開始實現程序之前,理解下Personal Software Process Stages(http://www.cnblogs.com/xinz/archive/2011/10/22/2220872.html)
-
在開始實現程序之前,請使用以下PSP表格,在第3列填上自己對每個環節的估計時間(單位:分鍾).
-
在做每個環節的過程中,請在第4列填上對應環節的實際消耗時間(單位:分鍾).
-
在軟件開發中,掌握估計時間是一項重要的技能,請通過PSP表格做到
a.厘清開發的完整環節,爭取在每個環節都有實際的工作,一開始邊界不清楚是正常的,但請嘗試按自己的理解去努力在對應環節做實際的工作。
b.預估每個環節的時間,並真實統計這些環節的耗時,在完成后輸出完整的PSP耗時估計表。
c.注意:該表格是給自己看的,不要偽造數據!
d.PSP模版表格如下,第3列和第4列分別對應第2列條目的估計時間和真實時間,模版表格里的時間只是示意。
PSP2.1 | Personal Software Process Stages | Time Senior Student | Time |
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 |
· | 測試報告 | 3 | 2 |
· | 計算工作量 | 2 | 1 |
· | 並提出過程改進計划 | 3 | 3 |
代碼提交:##
-
提交你的源代碼和可執行程序至你的coding.net地址
a.怎樣使用git提交代碼到coding.net? 參考,考驗你強大自學能力的時刻到了:
- http://rogerdudler.github.io/git-guide/index.zh.html
- http://www.cnblogs.com/hebau-may/p/6382743.html
b.需要提交的應該有
- 項目的工程文件,例如Eclipse的項目文件
- 項目的源代碼
- 一些必要的配置
- 單獨創建一個public子目錄,存放編譯后的可執行程序,這不是標准的軟件發布的做法,但是目前你這樣先提交可以。
c.不應該提交的有:
- bin目錄
- obj目錄
- 可以在根目錄下創建一個.gitignore文件,把需要忽略的文件夾和文件相對路徑逐行添加進去,這樣git 提交的時候就會忽略這些子目錄和子文件。
-
博文的一開始需要寫明你注冊的 coding 地址
博文規范##
-
提交的博客必須完整包含下面五個部分
a.需求分析,即使老師已經給出了題目,也要對題目的需求做分析,需求分析可以是自己的思考分析,也可以是找小學老師,學生甚至家長調查后挖掘出更細致的需求,別小看這個過程,請真實的做這個過程。
b.功能設計,題目的需求,以及從真實調研里獲得的需求后,要對程序做基本的功能設計,有同學會問:“不就是出題嘛,有啥好設計的?”,其實, 題目里要求的只是基本的要求,自己思考和調研會有超出題目要求的需求,甚至你有天才的設計,作出特色的功能。因此,功能會有:- 基本功能
- 擴展功能
- 高級功能
c.設計實現,設計包括代碼如何組織,你會有哪些Java類,這些類分別負責什么功能,他們之間的關系怎樣?你會設計哪些重要的函數,關鍵的函數是否需要畫出流程圖?
d.代碼說明,你一定花了最多時間在代碼的編寫與調試上,那么,這個環節請把你的重要代碼展示出來,代碼的排版請做好。
e.測試運行,你的程序必須是可運行的,請展示你的程序運行的截圖,包括題目要求的所有需求,都有運行的截圖。說明你的程序確實完成了所有需求,如果有實現了擴展需求或者高級需求,也請大方秀出來。 -
展示PSP,這個環節重要的是讓自己看到自己的估計和實際消耗時間,哪個環節耗時最多,哪個環節估計失敗?為什么?
-
小結。如果,如果所有的環節你都認真做了,那么,此處你應該會有很多經驗願意與大家分享。