1、結對做業(祁晨2016012057,王曉哲2016012052)項目地址:https://git.coding.net/lvgx/wsz.gitgit
2、PSP:算法
PSP2.1數據庫 |
任務內容編程 |
計劃共完成須要的時間(min)併發 |
實際完成須要的時間(min)框架 |
Planning函數 |
計劃性能 |
15單元測試 |
15學習 |
Estimate |
估計這個任務須要多少時間 並規劃大體工做步驟 |
15 |
15 |
Development |
開發 |
4225 |
5350 |
Analysis |
需求分析 (包括學習新技術) |
15 |
20 |
Design Spec |
生成設計文檔 |
10 |
10 |
Coding Standard |
代碼規範 (爲目前的開發制定合適的規範) |
10 |
15 |
Design |
具體設計 |
25 |
45 |
Coding |
具體編碼 |
4000 |
5000 |
Code Review |
代碼複審 |
45 |
60 |
Test |
測試 (自我測試,修改代碼,提交修改) |
120 |
200 |
Reporting |
報告 |
55 |
60 |
Test Report |
測試報告 |
15 |
15 |
Size Measurement |
計算工做量 |
10 |
5 |
Postmortem & Process Improvement Plan |
過後總結, 並提出過程改進計劃 |
30 |
40 |
3、說明在結對編程中是如何利用這些方法(Information Hiding, Interface Design, Loose Coupling)對接口進行設計的?
經過查詢資料瞭解到 information-hiding(信息隱藏):採用MATLAB實現圖像信息隱藏。將文本信息,經過DCT和LSB算法嵌入到二維圖像中實現信息隱藏。 interface_design(接口設計):提供給其餘模塊或者系統使用的一種約定或者規範。Loose Coupling(鬆散耦合):意味着DM系統將使用DB或DW系統的某些設施,從這些系統管理的數據庫中提取數據,進行數據挖掘,而後將挖掘的結果存放到計算機中。
4、
在模塊接口的設計與實現過程當中,咱們兩人在編程時一共用了7個類和9個函數。
其中Main函數做爲程序執行的起點,程序是從main函數開始執行的,從而負責接收參數判斷參數是否合法。
在咱們的程序中,Operation類是生成並計算不帶括號的式子,Operation1類是生成帶括號而且帶乘除的式子,Operation2類是生成並計算帶括號只帶加減的式子。
而且在GUI(圖形用戶界面指採用圖形方式顯示的計算機操做用戶界面)中,咱們分別使用了複選框監聽器和按鈕監聽器。複選框監聽器,建立複選框按鍵,並設置快捷鍵和選定, 而且設置一個panel,將複選框放入同一個panel,最後添加複選框的監聽事件。按鈕監聽器,定義爲靜態變量以便main使用,
該面板用來放置按鈕組件,
定義按鈕組件,
新建按鈕,
添加按鈕到面板。
5、
從目前完成進度來講,咱們此次做業完成度只有百分之六七十左右。畢竟能力有限,並且編程這種技術性極高的能力也不是一朝一夕可以增強的。但在以後補充時,咱們花費了4個小時左右,在此咱們還界面程序的性能進行分析,和優化,改進,儘可能減小除法中隨機數,以減小代碼因隨機數生成的無效循環,按F4再一次查看,內存佔用率明顯減小,可是仍有內存沒釋放,咱們會繼續改進的。
6、
在這次項目中,對五個類進行了測試,採用結合或者獨立的測試方法,下面是代碼覆蓋率的展現;
7、
一、判斷輸入的出題數、運算符個數、範圍等是否合法或者超出其範圍(展現了對數的範圍的處理,代碼結果以下)
try{ r=Integer.parseInt(args[i+1]); r1=Integer.parseInt(args[i+2]); if(r<=0||r>100) { System.out.println("r不在範圍[1,100]內"); return; } if(r1<50||r1>1000) { System.out.println("r1不在範圍[50,1000]內"); return; } } catch(Exception e) { System.out.println("r的輸入不合法,請從新輸入"); } }
二、文件處理異常:點擊出題時,若是文件生成錯誤,將再也不生成。
try{ PrintStream file=newPrintStream("../result.txt"); System.setOut(file); } catch(Exception e) { System.out.println("文件生成錯誤"); }
8、
使用GUI設計該程序出題、答題界面public static void main(String[] args) { Gui frame=new Gui(); frame.pack(); frame.setSize(500, 300); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); frame.setVisible(true); }
9、
一、出題界面:經過按鈕監聽器——出題按鈕實現
二、作題界面:經過按鈕監聽器——下一題按鈕實現,而且在此按鈕下進行判斷、繼續出題,最重要的是根據此按鈕調用統計界面
三、最終界面:經過按鈕監聽器——提交按鈕實現,出現最終頁面,展現作題總數、正確數以及你所用的時間,而且在下面展現整個卷面
10、
我(祁晨)與我結對做業的隊友(王曉哲)是同一個寢室的室友,所以咱們在老師發佈這個做業的時候,就不約而同的選擇了對方。由於是室友,因此咱們在一塊兒的時間比較多,對於此次做業的討論與交流也會比較方便。因爲個人項目經驗不足,因此這次項目中的結構框架、所用的技術等等都是由個人隊友主要負責,而我就負責對於項目的測試,以及一些簡單的編碼。
11、說明結對編程的優勢和缺點
現代軟件產業通過幾十年的發展,一個軟件由一我的單槍匹馬完成,已經不多見了,軟件都是在相互合做中完成的。合做的最小單位是兩我的,兩個工程師在一塊兒,作的最多的事情就是「看代碼」,每一個人都能看「別人的代碼」,並發表意見。 ————《構建之法》第四章
經過此次兩人結對項目也讓我親身體會到了上面這句話的意思,而且在此次項目中也感覺到了更多的道理。那麼下面我就說一說我經過此次結對做業對結對編程的感覺。
結對編程的優勢:提升了工做效率,一個編程項目從一我的變爲兩我的去完成,不只減輕了每一個人的工做負擔,也提升了編程的效率。更多奇思妙想的碰撞,一我的的想法也許比較單一,可是有兩我的協力去思考就會發現一條不同凡響的道路。編程氛圍變得有趣,一我的的枯燥不見了,取而代之的是兩我的的彼此鼓勵與交流,出現任何的負面情緒也再也不孤單,有人去傾聽你的煩惱,你也可以幫助你的隊友解決憂愁。
結對編程的缺點:奇思妙想的碰撞容易摩擦出火花,每一個人的思考不一樣,頗有可能對彼此的意見產生疑問與抗拒。而且每一個人的編程習慣不一樣,若是不能很好地融合就會致使彼此的代碼之間出現間隙。最重要的是,有了隊友以後本身容易出現依賴心理,全權依靠隊友本身什麼事情都不作。從而,致使工做效率下降,甚至項目沒法完成。
12、指出結對的每個人的優勢和缺點在哪裏 (要列出至少三個優勢和一個缺點)?
一、 隊友優勢:工做能力超強,對於她的part老是完成的及時而且有質量;十分勤奮,對於她不懂的問題肯花時間、費心思的去查閱資料和詢問老師同窗;頗有本身的想法,對於項目的每一步都有思考。
隊友缺點:過於細緻。
二、自身優勢:隊友安排的工做盡全力完成;可以及時與隊友溝通交流本身的想法與問題;氣氛擔當。
自身缺點:缺少項目經驗,沒法給予隊友更多的幫助。