軟件工程網絡15結對編程做業(201521123082)

標籤(空格分隔): 軟件工程html


0.結對編程成員:

戴志斌(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

1.結對編程照片:

P)GE9K4$WSH}0ZX8Q4R5POH.jpg

2.改進現有代碼

需求分析:針對現有代碼的改進分析,新開發功能的分析。

(1)clone項目,檢查大部分主要類之間的關係,畫出類圖

ANSWER:
圖片.pngpython

圖片.png

(2)瀏覽全部代碼考慮代碼質量和測試覆蓋率

ANSWER:
單元測試以下:
圖片.png
測試覆蓋率:
圖片.pnggit

圖片.png

(3)肯定當前設計的一個弱點,經過重構,確保在這個地方已有測試覆蓋並保證重構沒有改變已有的功能

ANSWER:
圖片.png
1.不能實現負數的加減乘除;
2.不能實現3個數字以上的加減乘除;
3.不能實現乘方的功能;
4.不能實現括號的功能;
5.不能實現小數的加減乘除;
6.沒法自動生成計算式並完成計算
7.代碼重複量,出現代碼邏輯泥球程序員

算法能夠參考:https://www.cnblogs.com/dragondove/p/6445850.html算法

(4)修改代碼後,檢查代碼覆蓋,看單元測試是否須要修改?測試用例是否須要增長?

ANSWER:
單元測試須要本身修改,由於咱們用python進行重構了,單元測試確定要修改,測試用例因爲功能增長也要增長。express

3.功能改進與擴展

增長一個運算符,程序應該有怎樣的改變?不得不扔掉所有重寫麼,仍是能夠只改部分模塊?基於模塊化設計的思想,考慮在現有程序中作什麼樣的修改,才能讓程序更好地實現新的需求
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"

(1)增長括號操做符、減小重複題目、增長一個運算符(乘方)

程序一次運行生成的題目不能重複,即任何兩道題目不能經過有限次交換+和×左右的算術表達式變換爲同一道題目。例如,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代碼實現:
TIM圖片20180325151945.pngdom

TIM圖片20180325151953.png

(2)測試和分析

ANSWER:
1.單元測試圖片以下:
圖片.png
2.覆蓋率測試以下:
圖片.png
圖片.png
圖片.png
圖片.png
3.在開發新功能時避免損壞舊的功能,以確保新的功能不與原有功能衝突,在確認修改的功能正確以後再簽入代碼。

(3)效能分析工具使用(這是對原程序的分析)

<1>效能分析工具:http://www.oschina.net/p/jprofiler ,使用方法: http://www.cnblogs.com/bjlhx/p/6668888.html
ANSWER:
1,Telemetries 監控信息
查看JVM的運行信息
圖片.png
2,Live memory 內存剖析
JProfiler 的內存視圖部分能夠提供動態的內存使用情況更新視圖和顯示關於內存分配情況信息的視圖。全部的視圖都有幾個彙集層而且可以顯示現有存在的對象和做爲垃圾回收的對象。
圖片.png

4.在兩人合做的過程

(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>請根據構建之法書上編碼規範裏提到的那些要點整理一份大家在結對編程時使用的代碼規範,把大家約定的編碼規範文檔也提交到碼雲
圖片.png

(2)代碼複審:
參考:http://drysaltery.com/2015/06/15/Rainy-Days/
圖片.png

(3)給人提意見的方式——送一個漢堡包
參考:http://www.cnblogs.com/xinz/archive/2011/08/22/2148776.html
圖片.png

(4)理解領航員和駕駛員兩種角色關係,並在結對編程中兩我的輪流作對方的角色。兩人都必須參與本次做業的編碼工做,並在git提交日誌上體現這點。
碼雲提交記錄:
圖片.png
圖片.png

5.PSP:

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

6.小結感覺:結對編程真的可以帶來1+1>2的效果嗎?經過此次結對編程,請談談你的感覺和體會:

ANSWER: 結對編程,有利於兩我的對於同一個項目的交流。由一開始拿到項目時的需求分析,兩我的都會不一樣的想法,經過協商和交流,達成共同的想法。因爲兩我的的代碼規範有些許不一樣,經過統一規範,能夠達到代碼風格一致。在重構的過程當中兩我的能夠交替更換領航員和駕駛員的身份,更有利於完善項目需求。在這期間咱們兩我的都有本身的PSP,可以按照實際狀況完成填寫,我以爲這個表格有利於更好地完成項目。結對編程,對於咱們學生來講可能更重要的是一點是互幫互助,因此效果多是1+1=2左右,而對於未來從事開發並具備必定水平的程序員來講,1+1>2。

相關文章
相關標籤/搜索