軟件工程網絡15結對編程
軟件工程網絡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結對編程