評價博文連接:http://www.javashuo.com/article/p-whaerzlf-kn.html
1.缺點:博文結構不太清晰,排版能夠在美化一些,博文的內容中對程序功能的描述不太齊全,能夠在加一下本身作的軟件功能的截圖,博文結構設計凌亂,對一些功能的描述比較的淺。因爲咱們之間沒有養成對細緻軟件書寫規範,在對PSP的設計與時間的掌握有着很大差異。
2.優勢:功能實現的比較完整,對柱形圖的實現也比較的完美。在博客中基體現了軟件的各類需求,軟件實現過程當中人機交互書寫的比較的好。
評價源代碼連接:https://github.com/runju/WordCount
1.優勢:最值得表揚的是代碼的規範,該同窗有着良好的書寫代碼的習慣,各類類與方法命名見名思意,有着良好書寫代碼的習慣
2.缺點:在代碼方面須要注意的是功能模塊的強化,對代碼質量的提升,例如在封裝類的時候注意封裝的方法。html
在閱讀完改同窗的代碼與博客以後,值得我學習的地方是該同窗書寫代碼的習慣,對項目功能可以見名思意,因爲是咱們結對須要完成的做業,也在評價該同窗代碼的時候向改同窗請教了一些我本身不足的問題。
GitHub的使用過程當中存在的一些問題:
對GitHub的不熟悉,練習了好幾回才學會對GitHub的克隆、Pull request、Merge pull reques等一些操做,對結對方的代碼進行下載與修改的時候也存在過一些問題,在網上查找一些資料解決問題。java
爲了練習軟件的我的開發流程,設計一個關於詞頻統計的小程序,在詞頻統計的小程序中須要實現的功能具體有:git
咱們組主要是利用web網頁的方式來實現這次項目的功能,服務器是經過Tomcat來支撐項目的實現。採用的是最簡單的servlet來傳遞參數,將全部的方法封裝在一個WordCount類,在這個類裏面每一個功能的核心實現存放在不一樣的方法裏面,將此類進行封裝。在servlet中直接調用封裝好的方法,經過請求(request)與響應(response)的方式來與jsp頁面進行傳遞。
這次的項目一共有三個類
2.1 WordCount.java 類:對全部功能的方法的一個封裝
2.2 WordCountServlet.java :與web頁面相聯繫的servlet類,是java內容與web交互的一個java封裝好的類
2.3 WordCount.jsp:一個前臺頁面,須要在網頁中展現的頁面
項目類圖:github
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //請求與響應的編碼格式 request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); PrintWriter out=response.getWriter(); String id=null; //接受頁面數據 fileName = request.getParameter("fileName");//文件名 String words = request.getParameter("word");//指定單詞 String wordnum = request.getParameter("wordnum");//高頻數 String wordlines = request.getParameter("wordlines");//行數 String result = request.getParameter("result");//存放 id=request.getParameter("id");//功能編號的獲取 if(id.equals("0")){ //文件的上傳 WordCount wordCount = new WordCount(); map=wordCount.count(fileName); out.print("<script>alert('上傳成功!!');location.href='html/WordCount.jsp'</script>"); }else if(id.equals("1")){ //指定單詞的查找 //開始時間 long startTime=System.currentTimeMillis(); TreeMap<String,Integer> map1 = new TreeMap<String, Integer>(); WordCount wordCount = new WordCount(); map1= wordCount.bijiao(map, words); //結束時間 long endTime=System.currentTimeMillis(); float excTime=(float)((endTime-startTime)/1000)*1000; //向jsp頁面傳參數 request.setAttribute("map1", map1); request.setAttribute("excTime", excTime); System.out.println("執行時間:"+excTime+"ms"); request.getRequestDispatcher("html/WordCount.jsp").forward(request, response); }else if(id.equals("2")){ //高頻詞的統計 //開始時間 long startTime=System.currentTimeMillis(); WordCount wordCount = new WordCount(); int k=Integer.parseInt(wordnum); ArrayList gaopin=wordCount.gaopin(map, k); //結束時間 long endTime=System.currentTimeMillis(); float excTime2=(float)((endTime-startTime)/1000)*1000; request.setAttribute("gaopin", gaopin); request.setAttribute("excTime2", excTime2); request.getRequestDispatcher("html/WordCount.jsp").forward(request, response); }else if(id.equals("3")){ //行數統計 //開始時間 long startTime=System.currentTimeMillis(); WordCount wordCount = new WordCount(); List list=wordCount.statistics(fileName); //結束時間 long endTime=System.currentTimeMillis(); float excTime3=(float)((endTime-startTime)/1000)*1000; request.setAttribute("excTime3", excTime3); request.setAttribute("list", list); request.getRequestDispatcher("html/WordCount.jsp").forward(request, response); }else if(id.equals("4")){ //寫入文件 //開始時間 long startTime=System.currentTimeMillis(); WordCount cunfang = new WordCount(); cunfang.cunfang(map); //結束時間 long endTime=System.currentTimeMillis(); float excTime1=(float)((endTime-startTime)/1000)*1000; request.setAttribute("excTime1", excTime1); out.print("<script>alert('存儲成功!!');location.href='html/WordCount.jsp'</script>"); request.getRequestDispatcher("html/WordCount.jsp").forward(request, response); } }
文件上傳首先須要獲取的是文件的名字,經過文件名來獲取文件的內容,將文件內容存放在TreeMap集合中。web
在上傳的文件中查找指定單詞算法
高頻詞的統計是須要指定所須要查找單詞的個數,每一個功能都有時間的統計,須要在調用方法前設置時間,在結束後設置一個時間,先後時間相減。小程序
柱狀圖是經過繼承JFrame可視化界面來實現的,這個方法中須要傳遞存放文件的集合和指定單詞的數組,調用java已有的方法來繪製柱狀圖,二維的柱狀圖方法是Graphics2D。數組
在項目開發過程當中,遇到了不少的問題,主要是在前臺與後臺的交互,包括前臺頁面中文件名上傳以後再後臺獲取文件名的問題,在el表達式的操做過程當中數據從servlet中拿不到值,主要在servlet中數據獲取後調用方法飯後的集合類型的數據在jsp中遍歷的空難,經過重定位的方式轉接到jsp頁面,在JavaScript中經過forEach的方式遍歷servlet傳來的數據集合,一些必要的jar包的支持,例如standard.jar,jstl.jar等一些jar包。這次項目中還用到了Tomcat服務器來做爲運行項目的一個小型的支撐服務器。經過結對項目的過程,體會到團隊的重要性,合做工做過程當中會有一些分歧,例如各自見解與想法的不一樣。經過無數次的實驗與測試纔會有此次的項目。服務器
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 |
經過這次的項目認識到本身代碼的不足以及對以前知識的回顧,以前全部的項目經驗都是經過jsp頁面來寫的,這次因爲時間問題也利用了以前學過的jsp網頁的形式來實現,對於一些知識點有一些忘記,經過這次試驗認識到軟件開發須要時常的練習,不能遺忘,勤動手,多練習一些算法。jsp