博文連接:http://www.javashuo.com/article/p-ewpunqcc-ge.html
對博文的點評:
1.博文結構:她的博文結構主要是先根據要求給出了我的項目的需求分析,先是作到了目標明確,而後進行了各個功能的詳細設計,每一個步驟都很詳細,也說明了每一個步驟應用到的知識點,進行了說明,一目瞭然,結構很簡單,博文設置的很整齊,樣式很好看。恰好老師也評價了個人博文設計不太整齊,確實也是我應該學習的地方。
2.博文內容:她的博文內容主要詳細的介紹了試驗二各個功能的需求,進行一一的解釋,包括文件讀入功能的實現、單個單詞個人個數查找、單詞頻數存入指定文件、柱狀圖的顯示。還有重點代碼的截取以及截取緣由,後面psp的展現,最後對最終的試驗以及對本身的總結。博文結構基本上是按照"任務內容"的各個環節進行展開的,比較緊湊,可是仍是有些列沒有展現的實現,包括一些在程序設計中可能會忽視的一些問題,還有一些報告的設計作到了不到位或者是實現。
3.在兩我的共同探討的過程當中,其實發現了不少的問題,在psp設計中,就計劃共完成須要的時間與實際共完成的時間,自己就存在很大的差別性,計劃時間只是在她的計劃時的設定內,並無時間展開行動,也並無考慮到一些客觀的因素,其實在醒目在實際開發的過程當中是遇到不少現實的問題,就好比剛開始的java環境的配置就會佔據必定的時間,再加上一些本身自己對項目開發的能力,包括對java學習的知識基礎,還有一些客觀緣由,這都是致使計劃時間與實際開發時間存在差別的根本緣由。
對源代碼的點評:
github連接:https://github.com/yanglulu-yang/WordCount
1.軟件結構:閱讀完對方同窗的代碼,她的思想是主要設計了三個類,WordCount、WordEntrty和test1,其實她真正用到了兩個類,Test1沒用到,多是因爲粗心,致使了多餘的類以及多餘的代碼。她在WountCount中包含了主方法,是整個程序的和核心,也是程序運行的入口,起到了人機交互的做用,也實現了方法的調。
2.代碼規範:首先,從她的代碼中能夠看出,命名是沒有作到太準確的規範,比較隨意的命名,其實這對之後代碼的複審以及修改都會形成很大的影響,對於其餘程序員的瀏覽和閱讀都會形成較大的困難。再就是類的結構,WordCount主要設涉及到了運行該項目的主流程,但其中也包括了一些方法、WordEntrty中主要實現了方法的封裝,是否是將方法的使用所有封裝在WordEntrty中,該類實現對方法的具體以及專門的封裝,對各個功能的實現,專門爲WordCount提供可調用的方法,爲WordCount簡介代碼,結構清晰,使程序員一目瞭然,爲之後代碼的維護提供必定的方便性,固然也包括在Test1中的代碼。因此本身也得注意本身書寫代碼的規範以及結構的設計和類的設計以及方法的封裝,爲別人的瀏覽提供了很大的方便性,經過閱讀她的代碼,想到了換位思考。
3.功能實現:閱讀完對方同窗的代碼,雖然在代碼結構的設計上有一些缺陷,可是基本上實現了老師所要求的基本功能,包括一些本身以前學習沒涉及到的知識點,本身也學到了不少,是值得本身學習的。
4.人機交互:其實和對方同窗的人機交互界面的實現是有類似性的,都是經過java控制檯經過用戶輸入功能編號的形式來展現指定的功能的,本身也知道這對於真正的、團隊項目以及軟件項目的開發是絕對不現實的,不只用戶體驗度低,並且僅適用於專門開發人員對於軟件工程開發的一個過程,是絕對不適用於成品的。因此在接下來的學習中,咱們將會結對編程實現人機界面,使用web前端技術,在必定程度上會大大提升用戶體驗度的。javascript
她的github倉庫源碼連接:https://github.com/yanglulu-yang/WordCount
1.需求分析:
(1)讀入Word.txt文本實現英文文本詞彙的統計。
(2)指定單詞的查找出現的頻數用柱狀圖的形式統計,柱狀圖的形式必須和要求的形式同樣。
(3)包括高頻詞彙的個數統計,將統計結果存放至result.txt中。
(4)統計該文本行數及字符數;
(5)各類統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms);
(6)可處理任意用戶導入的任意英文文本;
(7)人機交互界面要求GUI界面(WEB頁面、APP頁面均可);
2.類圖的設計
軟件設計:
2.1 WordCount.java 類:對全部功能的方法的一個封裝
2.2WordServlet.java :與web頁面相聯繫的servlet類,是java內容與web交互的一個java封裝好的類
2.3WordCount.jsp:一個前臺頁面,須要在網頁中展現的頁面
類圖:
html
3.核心代碼: 咱們組主要經過前端web頁面的實現,前臺與後臺的緊密聯繫與實現主要經過Servlet類來實現,應用請求與響應技術,包括session會話技術來主要實現,也使用了TomCat服務器,應用jsp頁面,使用重定位技術實現頁面的跳轉,實現了主要的功能。 代碼以下:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //編碼格式的設置 PrintWriter out=response.getWriter(); request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); //獲取前臺頁面的值 String FileName=request.getParameter("FileName"); String words=request.getParameter("word"); String wordnum=request.getParameter("wordnum"); String wordlines=request.getParameter("wordlines"); String result=request.getParameter("result"); String id=request.getParameter("id"); //建立WordCount對象 WordCount wordCount = new WordCount(); if(id.equals("0")){ //文件的上傳 map=wordCount.Count(FileName); out.print("<script>alert('上傳成功!!');location.href='html/WordCount.jsp'</script>"); }else if(id.equals("1")){ long startTime=System.currentTimeMillis(); //指定單詞的查找 TreeMap:map str=wordCount.one(words, map); //System.out.println(str); Iterator<String> it1 = map.keySet().iterator(); //遍歷 while(it1.hasNext()){ //鍵值對的形式存放 String key = (String) it1.next(); Integer value = map.get(key); } long endTime=System.currentTimeMillis(); float excTime=(float)((endTime-startTime)/1000)*1000; //存放至session對話中 request.setAttribute("map", map); //耗時 request.setAttribute("excTime",excTime); request.getRequestDispatcher("html/WordCount.jsp").forward(request, response); }else if(id.equals("2")){ long startTime=System.currentTimeMillis(); //高頻詞的統計 返回單詞和個數 ArrayList:map1 int num=Integer.parseInt(wordnum); map1=wordCount.two(map,num); long endTime=System.currentTimeMillis(); float excTime=(float)((endTime-startTime)/1000)*1000; request.setAttribute("map1", map1); request.setAttribute("excTime",excTime); //request.setAttribute("num", num); request.getRequestDispatcher("html/WordCount.jsp").forward(request, response); }else if(id.equals("3")){ //統計文本行數以及字符數 long startTime=System.currentTimeMillis(); List<String> lines=wordCount.statistics(FileName); for (int i = 0; i < lines.size(); i++) { System.out.println(lines.get(i)); } long endTime=System.currentTimeMillis(); float excTime=(float)((endTime-startTime)/1000)*1000; request.setAttribute("excTime",excTime); request.setAttribute("list", lines); //頁面跳轉 request.getRequestDispatcher("html/WordCount.jsp").forward(request, response); }else if(id.equals("4")){ long startTime=System.currentTimeMillis(); //寫入至result.txt中 wordCount.three(map); long endTime=System.currentTimeMillis(); float excTime=(float)((endTime-startTime)/1000)*1000; request.setAttribute("excTime",excTime); out.print("<script>alert('存放成功');location.href='html/WordCount.jsp'</script>"); } }
4.程序運行(截圖): 4.1文件的上傳:
4.2指定單詞的查找:
4.3高頻單詞的查找
4.4文本行數以及字符數的統計
. 4.5文件的存放
前端
4.6柱形圖的顯示
5.描述結對的過程,提供兩人在討論、細化和編程時的結對照片(非擺拍) 在項目開發的過程當中,兩人進行了不少次的討論,包括最開始的環境配置,主要是TomCat的添加,其次後面的主要功能大多數的難題就是前臺頁面和後臺頁面的交互,參數的傳遞、全局變量和局部變量的設置,以及servlet向jsp頁面傳遞數據和jsp向servlet中傳遞數據,以el表達式,jstl的使用、javascript的使用,在這些知識點方面都到很大的問題。可是,此次結對項目爲本身也帶了很大的幫助,不只回顧了一些之前的知識點,也懂的了團隊的力量,隊友的一些想法和個人徹底不一樣,讓本身意識到原來問題也能夠這樣解決,打破了本身的思路,意識到散發思惟的重要性。除此以外,對eclipse的一些環境爲配置有了瞭解,咱們此次主要用了standard.jar,jstl.jar等jar包,在jar包的支持下,完成了本次的項目。
6.PSP展現:
PSP2.1 | 任務內容 | 計劃共完成須要的時間(min) | 實際完成須要的時間(min) |
Planning | 計劃 | 6 | 5 |
Estimate | 估計這個任務須要多少時間,並規劃大體工做步驟 | 10 | 14 |
Development | 開發 | 200 | 400 |
Analysis | 需求分析 (包括學習新技術) | 3 | 5 |
Design Spec | 生成設計文檔 | 5 | 10 |
Design Review | 設計複審 (和同窗一塊兒審覈設計文檔) | 5 | 7 |
Coding Standard | 代碼規範 (爲目前的開發制定合適的規範) | 3 | 3.5 |
Design | 具體設計 | 14 | 20 |
Coding | 具體編碼 | 180 | 420 |
Code Review | 代碼複審 | 6 | 10 |
Test | 測試(自我測試,修改代碼,提交修改) | 6 | 10 |
Reporting | 報告 | 10 | 15 |
Test Report | 測試報告 | 6 | 15 |
Size Measurement | 計算工做量 | 5 | 10 |
Postmortem & Process Improvement Plan | 過後總結 ,並提出過程改進計劃 | 5 | 10 |
7. 小結感覺:兩人合做真的可以帶來1+1>2的效果嗎?經過此次結對合做,請談談你的感覺和體會。 總結:經過此次合做,體會到了開發一個項目,團隊合做的重要性,團隊的合做狀況會直接影響項目的質量,這對項目開發有很大的影響。儘管在合做的時候會遇到不少的分歧,但只要經過交流、溝通,理性對待,包括試驗和測試最終選擇一個合適的解決方法。團隊合做還有另一個好處就是對一個問題會有多種解決方法和多種思路,對解決負複雜問題是有很大的幫助的,在項目開發的過程當中會節約大量的時間,多種方案能夠選擇最優的一個,提升項目的質量。
個人github源代碼連接:https://github.com/runju/project4java