標籤(空格分隔): 軟件工程html
戴志斌(201521123083)博客:http://www.cnblogs.com/daizhibin/
黃華林(201521123082)博客:http://www.cnblogs.com/moyi-h/
結對編程碼雲地址:https://gitee.com/smoyi/softwarePairingProject
原源代碼地址:https://coding.net/u/Belong033/p/java-third/git
原題目要求(以下):
http://www.cnblogs.com/happyzm/p/6472120.html
http://www.cnblogs.com/happyzm/p/6509116.html
http://www.cnblogs.com/happyzm/p/6558307.html
通過咱們兩我的協商,決定將題目的客觀題答案進行比較留下比較好的回答,而後主觀題按照本身的理解做答。java
ANSWER:
python
ANSWER:
單元測試以下:
測試覆蓋率:
git
ANSWER:
1.不能實現負數的加減乘除;
2.不能實現3個數字以上的加減乘除;
3.不能實現乘方的功能;
4.不能實現括號的功能;
5.不能實現小數的加減乘除;
6.沒法自動生成計算式並完成計算
7.代碼重複量,出現代碼邏輯泥球程序員
ANSWER:
單元測試須要本身修改,由於咱們用python進行重構了,單元測試確定要修改,測試用例因爲功能增長也要增長。express
增長一個運算符,程序應該有怎樣的改變?不得不扔掉所有重寫麼,仍是能夠只改部分模塊?基於模塊化設計的思想,考慮在現有程序中作什麼樣的修改,才能讓程序更好地實現新的需求
ANSWER:
咱們決定用python進行重構來更方便實現新的需求。編程
def generExpress(): express = list() express.append(str(random.randint(-10,10))) for i in range(random.randint(1,5)): if "^" not in express: oper = random.choice(['+','-','*',"/","^"]) else: oper = random.choice(['+','-','*',"/"]) express.append(oper) if oper == "^": express.append(str(random.randint(1,5))) else: express.append(str(random.randint(1,3))) if "+" not in express and "-" not in express: return "".join(express) index = -1 while index == -1: try: index = express.index(random.choice(["+","-"])) except: index= -1 express.insert(index-1,"(") express.insert(index+3,")") return "".join(express).replace("--","+").replace("+-","-")
def parseExpress(Express): Express=Express.replace("^","**") # print(Express) try: return eval(Express) except Exception as e: return "Error"
程序一次運行生成的題目不能重複,即任何兩道題目不能經過有限次交換+和×左右的算術表達式變換爲同一道題目。例如,23 + 45 = 和45 + 23 = 是重複的題目,6 × 8 = 和8 × 6=也是重複的題目。3+(2+1)和1+2+3這兩個題目是重複的,因爲+是左結合的,1+2+3等價於(1+2)+3,也就是3+(1+2),也就是3+(2+1)。可是1+2+3和3+2+1是不重複的兩道題,由於1+2+3等價於(1+2)+3,而3+2+1等價於(3+2)+1,它們之間不能經過有限次交換變成同一個題目。用符號^表示乘方,例如:4^2=16app
ANSWER:
以下python代碼實現:
dom
ANSWER:
1.單元測試圖片以下:
2.覆蓋率測試以下:
3.在開發新功能時避免損壞舊的功能,以確保新的功能不與原有功能衝突,在確認修改的功能正確以後再簽入代碼。
<1>效能分析工具:http://www.oschina.net/p/jprofiler ,使用方法: http://www.cnblogs.com/bjlhx/p/6668888.html
ANSWER:
1,Telemetries 監控信息
查看JVM的運行信息
2,Live memory 內存剖析
JProfiler 的內存視圖部分能夠提供動態的內存使用情況更新視圖和顯示關於內存分配情況信息的視圖。全部的視圖都有幾個彙集層而且可以顯示現有存在的對象和做爲垃圾回收的對象。
(1)知足代碼風格規範和代碼設計規範(參考書第4章4.1-4.3內容)http://www.cnblogs.com/xinz/archive/2011/11/20/2255971.html
ANSWER:
<1>咱們兩我的要有口頭上的溝通:「好的,咱們一塊兒在開發中遵照一塊兒承認的編碼規範」,按照編碼標準和規範進行分模塊編碼。
<2>使用工具:
checkstyle http://blog.csdn.net/maritimesun/article/details/7668718
Findbugs
PMD
<3>請根據構建之法書上編碼規範裏提到的那些要點整理一份大家在結對編程時使用的代碼規範,把大家約定的編碼規範文檔也提交到碼雲
(2)代碼複審:
參考:http://drysaltery.com/2015/06/15/Rainy-Days/
(3)給人提意見的方式——送一個漢堡包
參考:http://www.cnblogs.com/xinz/archive/2011/08/22/2148776.html
(4)理解領航員和駕駛員兩種角色關係,並在結對編程中兩我的輪流作對方的角色。兩人都必須參與本次做業的編碼工做,並在git提交日誌上體現這點。
碼雲提交記錄:
PSP2.1 | 我的開發流程 | 預估耗費時間(分鐘) | 實際耗費時間(分鐘) |
---|---|---|---|
lanning | 計劃 | 15 | 10 |
· Estimate | 明確需求和其餘相關因素,估計每一個階段的時間成本 | 15 | 10 |
Development | 開發 | 90 | 100 |
· Analysis | 需求分析 (包括學習新技術) | 10 | 15 |
· Design Spec | 生成設計文檔 | 15 | 15 |
· Design Review | 設計複審 | 5 | 10 |
· Coding Standard | 代碼規範 | 5 | 5 |
· Design | 具體設計 | 10 | 10 |
· Coding | 具體編碼 | 30 | 30 |
· Code Review | 代碼複審 | 5 | 5 |
· Test | 測試(自我測試,修改代碼,提交修改) | 10 | 10 |
Reporting | 報告 | 10 | 8 |
· | 測試報告 | 5 | 4 |
· | 計算工做量 | 2 | 1 |
· | 並提出過程改進計劃 | 3 | 3 |
ANSWER: 結對編程,有利於兩我的對於同一個項目的交流。由一開始拿到項目時的需求分析,兩我的都會不一樣的想法,經過協商和交流,達成共同的想法。因爲兩我的的代碼規範有些許不一樣,經過統一規範,能夠達到代碼風格一致。在重構的過程當中兩我的能夠交替更換領航員和駕駛員的身份,更有利於完善項目需求。在這期間咱們兩我的都有本身的PSP,可以按照實際狀況完成填寫,我以爲這個表格有利於更好地完成項目。結對編程,對於咱們學生來講可能更重要的是一點是互幫互助,因此效果多是1+1=2左右,而對於未來從事開發並具備必定水平的程序員來講,1+1>2。