1. 程式人生 > >軟件工程網絡15結對編程

軟件工程網絡15結對編程

工程 不同的 答案 記錄 死胡同 加減乘除 計時 git 沒有

軟件工程網絡15結對編程


鏈接

  • 201521123043 楊晨露

  • 201521123038 遊舒婷

  • 結對編程碼雲地址

  • 原 源代碼


1.需求分析

1.弱點分析:

  • 啟動程序,程序窗口定位在屏幕左上角,操作不是很方便。語言切換也不是以按鈕的形式,操作不明顯。

  • 變量名隨意,abcdefg,雖然知道是幹什麽的,但是進行後續擴寫操作邏輯會混亂。

  • 測試過程中出現過這種bug,因為源代碼沒有考慮過1/1的情況。
    技術分享圖片

  • 啟動復習功能,只是把當前的題目重置一遍,題目不變。並且復習時錯題會讀入存儲錯題的文檔,導致題目被重復讀入。並且這個文檔在全程代碼中沒有被讀出(雖然寫了讀出程序,但是沒有能夠觸發的條件,根本沒用)。

技術分享圖片

  • 當前題目支持多符號運算,基本上不是兩個數的加減乘除就是分數的加減乘除,重復的概率比較大。難度也基本上,小學初級。

  • 題目界面一定要把每個題目都進行回車提交操作才能結束計時,也就是說,即使不會做的題目,也要進行回車操作,非常不便。

2.新開發功能分析

  • 優化初始界面,將語言選擇功能改為選擇框。

  • 在題目界面加上“結束”功能,點擊時將顯示所有未做題目的答案。

  • 修改“復習”功能,將復習功能改為從錯題中隨機讀取,並保證每次讀取不重復。

  • 修改“再一次”功能,將功能設定為重回初始界面。

  • 增添括號操作符。

  • 增加平方操作。

  • 減少重復題目。這個暫時沒能做到,只能保證復習題不重復出題。為了相對優化先減小重復出題的概率。

2.程序設計

1.碼雲提交記錄

技術分享圖片

2.類圖

技術分享圖片

技術分享圖片

3.覆蓋率

技術分享圖片

需要測試覆蓋率,要嘗試把所有條件觸發。但是因為某些條件觸發概率太低,如下:

(1)隨機樹分母為0,測試過程中沒觸發成功

技術分享圖片

(2)因為做測試,所以做題時間不長,也就沒有觸發下列世界的判斷,特別是1小時的。

技術分享圖片

(3)關於文件存儲,測試時文件已存在,下圖新建文件代碼沒有觸發。

技術分享圖片

(4)代碼中存在必要的異常捕獲,沒有觸發。

技術分享圖片

4.邏輯圖,紅色為修改或新增部分

技術分享圖片

5.內存分析優化

技術分享圖片

技術分享圖片

技術分享圖片


3.代碼展示

以下僅暫時主要代碼,調用部分可能涉及到類的傳參判斷,暫時省略。

  • 隨機生成算式部分(部分)

技術分享圖片

  • Answer、Question分別存儲部分

技術分享圖片

  • 復習部分

技術分享圖片


4.程序運行

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片


5.小結感受

  • 有幸跟原作者交流了一下,果然是萬惡之源。

  • 結對編程能帶來1+1>2的效果。畢竟在編程的時候,當局者迷旁觀者清的情況很容易出現。交流過程中能理清思路,一個人在一個問題上糾結太久容易進入死胡同。

  • 我和我的隊友,經常相隔兩地,畢竟我們有不同的學習方向。所以除了在課堂上,基本靠通訊工具交流。(我相信經過Java課設合作我們已經很有默契了。)其實很多事情不需要面對面也能交流清楚。

  • 打代碼時,特別是在理算法的時候,千萬,不要,被打擾!慘痛的教訓。(我果然是親生的,媽媽我愛你。)

  • 技術部分還是有很多限制。比如樹的最小生成樹算法,基本上能看懂c++的算法,雖然只是在特定條件下的觸發情況。但是換成java就下不了手,嘗試寫了一下,對List之類的還不是很熟悉,就暫時沒用了。因為這次限制在10題,然後根據出題類裏的各種條件換算,重復率算了一下,真的很低。相比之下錯題重復的概率較大,所以先解決這個問題。順便我在找資料的時候鏈接到了北京大學ACM,感受到了差距。。。

  • 選擇這個源代碼是因為看到了顏文字,感覺,比較親和。然後,運行一遍發現很多問題,那就先修改這些bug吧,畢竟用戶體驗感還是很重要的。事實上我們兩個可能都有強迫癥吧,問題擺在面前不解決就很難受。然後理清楚了我們要做什麽,雖然有的設想是在做的過程中突然想到,“這樣做會不會比較好?”,但是基本上是按照原有的思路進行下去的。

  • 團隊合照。附個記錄吧。。。

技術分享圖片

技術分享圖片

  • PSP表格。。因為編碼時間比較淩亂,大概估了個實際時間。

技術分享圖片

軟件工程網絡15結對編程