201671030120 王晶《英文文本統計分析》結對項目報告

  


項目 內容
課程名稱 2016級計算機科學與工程學院軟件工程(西北師範大學)
做業要求 實驗四 軟件工程結對項目
課程學習目標 熟悉軟件開發總體流程,提高自身能力
本次結對項目的意義 第一次體驗一個完整的工程

  


1、任務一

 兩兩自由結對,對結對方的《實驗二 軟件工程我的項目》的項目成果進行評價

  一、所在班級:2016級計算機科學與工程學院軟件工程(西北師範大學)

  二、所評博文:201671030125+詞頻統計軟件項目報告

  三、github連接地址:github

  四、點評內容:

     如下是我讀完這篇博文以後,本身的一些拙見。html

  • (1)、這篇博文總體結構佈局仍是很不錯的,能夠看出博主有對Markdown編輯器進行系統的瞭解和學習,但在一些細節方面還須要進一步完善。好比,我我的認爲各個模
         塊之間的空行有點多,能夠考慮只空出一行便可。
  • (2)、顯示詞頻和柱狀圖時,感受柱狀圖有點取巧,雖然用符號的個數表示柱狀圖是一個很不錯的想法,可是仍是但願能夠了解一下Java的可視化,用可視化界面實現柱狀
         圖,以此凸顯基本的專業素養。
  • (3)、設計實現部分作的挺好,能夠看出在詞頻統計軟件項目的需求分析階段有用心去作。
  • (4)、美中不足的是菜單循環結構部分,能夠參考其餘一些同窗的博文,進行適當的完善。
  • (5)、流程圖自己沒有邏輯上的問題,可是美觀度須要提升,按照規定開始符和結束符應該位於最頂端和最底端,且均獨立爲一行。
  • (6)、編碼時要注意代碼規範,切實可行,容易觀察和客觀檢驗,以便提升開發效率。博主在github中所提交的代碼基本符合現有的代碼規範,可是依舊存在一些細節問
         題。對於函數以及變量的命名須要進一步增強規範,爲了達到代碼自解釋的目標,任何自定義編程元素在命名時,都要使用盡可能完整的單詞組合來表達其意。括號的使
         用作的不錯,符合基本的代碼規範,只有少部分須要進行更改。還有其餘的一些問題,好比全部的類都必須添加建立者和建立日期;全部的枚舉類型字段必需要有注
         釋,說明每一個數據項的用途等,在博主的代碼中並未體現,建議仔細閱讀代碼規範,在之後編寫代碼的過程當中多多注意這些問題。
  • (7)、PSP中,在開發階段和具體編碼階段,計劃共完成須要的時間與實際完成須要的時間之間的差距比較大,博主本身總結緣由是對Java語言掌握不熟練,上機練習不
         夠。我本身也存在着一樣的問題,因爲基礎不紮實,對Java掌握的不熟練,所以致使寫代碼的過程很困難。但願咱們能夠一塊兒努力,多加練習,儘快解決這些問題。

  五、點評心得:

  不一樣的同窗有不一樣的思惟方式,對同一個問題的認知也有各自的獨特之處。經過閱讀其餘同窗的博文,我受益不淺,深入認識到了本身的不足之處,懂得了應該善於互相學習,汲取他人的精華,不斷改善本身的學習。同時,對於編碼規範有了必定的認識,之前編寫代碼的時候,會爲所欲爲地按照本身的方式來寫,經過閱讀代碼規範,發現本身存在不少問題,之後會多加註意去改正。此外,我對軟件工程的內涵有了更深入的體會,感覺到了文檔在項目開發過程當中的重要性。閱讀其餘同窗的博文,發現問題並進行適當的評價,實際上是一種很好的學習方式,從別人的問題中能夠反射出本身存在的問題。所以,咱們在日常的學習中,要善於去評價他人,評價本身。java

  


2、任務二

(一)、需求分析

  採用兩人合做方式,設計開發一個英文文本統計分析軟件,使之具備如下功能:

    一、實驗2要求的功能
    二、單詞頻數可視化柱狀圖
    三、統計該文本行數及字符數
    四、各類統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms)
    五、可處理任意用戶導入的任意英文文本
    六、人機交互界面要求GUI界面(WEB頁面、APP頁面均可)
    七、附加分功能1:統計文本中除冠詞、代詞、介詞以外的高頻詞
    八、附加分功能2:統計前10個兩個單詞組成的詞組頻率git

  


(二)、功能設計

    一、柱狀圖功能——單詞頻數可視化柱狀圖
    二、計時功能——各類統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms)
    三、顯示功能——人機交互界面GUI界面
    四、統計功能——統計文本行數、字符數、大小寫字母、漢字、數字、字節數等github

  


(三)、軟件設計——使用類圖

    一、本次項目設計一共使用了三個類,分別爲Main.java,Result.java,Histogram.java
    二、程序整體流程圖以下:
編程

  


(四)、結對過程

    一、首先咱們對實驗二中對方的代碼進行了仔細研讀,瞭解了對方的編碼習慣,根據老師所給的代碼規範肯定了本次項目的代碼規範。
    二、本次項目是在實驗二的基礎上添加、修改部分功能而實現的,所以在實驗二的基礎上,咱們對本次項目進行了需求分析,肯定了基本的框架。
    三、對統計文本行數、字符數、大小寫字母、漢字、數字、字節數等功能,計時功能,統計文本中除冠詞、代詞、介詞以外的高頻詞功能等進行了分工。
    四、共同編寫了GUI界面。
    五、代碼編寫結束後,咱們根據代碼規範進行了代碼複審。
    六、最後咱們根據完成該項目的實際狀況填寫了PSP中各個階段實際所用時間,並各自撰寫了博客。
  數組

  在討論、細化和編程時的結對照片

  


(五)、程序運行——程序運行時每一個功能界面截圖

  一、人機交互界面——GUI界面


  

  二、輸出詞頻和柱狀圖


  

  

  

  三、輸出前N個高頻詞


  

  

  四、詞頻導出到文件


  

  

  

  五、對文本行數、字符數、大小寫字母、漢字、數字、字節數等進行統計

  


(六)、核心功能代碼展現

  • 一、單詞頻數可視化柱狀圖

public void paint(Graphics g) 
    { 
        int Width = getWidth(); 
        int Height = getHeight(); 
        int leftMargin = 50;//柱形圖左邊界 
        int topMargin = 50;//柱形圖上邊界 
        Graphics2D g2 = (Graphics2D) g; 
        int ruler = Height-topMargin; 
        int rulerStep = ruler/20;//將當前的高度平分爲20個單位 
        g2.setColor(Color.WHITE);//繪製白色背景 
        g2.fillRect(0, 0, Width, Height);//繪製矩形圖 
        g2.setColor(Color.BLACK); 
        for(int i=0;i<rulerStep;i++){ 
        g2.drawString((3000-150*i)+"個", 8, topMargin+rulerStep*i);//繪製Y軸上的數據 
        } 
        g2.setColor(Color.YELLOW); 
        int m=0; 
        for (Entry<String, Integer> entry : map.entrySet())  
            {  
            int value =entry.getValue(); 
            int step = (m+1)*40;//設置每隔柱形圖的水平間隔爲40 
            g2.fillRoundRect(leftMargin+step*2,Height-value/50-5, 40, value, 40, 10);//繪製每一個柱狀條 
            g2.drawString(entry.getKey(), leftMargin+step*2, Height-value/50-5);    //標識每一個柱狀條        
             m++; 
          }  
          
    }

  

  • 二、計時功能

long time=System.currentTimeMillis() - start; 
            JOptionPane.showConfirmDialog(null,print+"\n"+"所用時間爲:"+(System.currentTimeMillis() - start)+"ms","結果",JOptionPane.DEFAULT_OPTION); 
                            Histogram histogram=new Histogram(map1,input.length);

  

  • 三、統計文本行數、字符數、大小寫字母、漢字、數字、字節數等功能

while ((str = in.readLine())!= null) {//readLine()方法, 用於讀取一行,只要讀取內容不爲空就一直執行
            i++;//每循環一次就進行一次自增,用於統計文本行數
            c += str.length();//用於統計總字符數
            byte[] bytes=str.getBytes();//求出該行的字節數組
            d += bytes.length;//用於統計總字節數
            for (int j = 0; j < str.length(); j++) {//for循環的條件,當j小於該行長度時就一直循環並自增
                b = Character.toString(str.charAt(j));//返回一個字符串對象
                if (b.matches("[\\u4e00-\\u9fa5]")) {//if語句的條件,判斷是否爲漢字
                        c1++;//若爲漢字則c1自增
                } else if(b.matches("[A-Z]")){//if語句的條件,判斷是否爲大寫字母
                    c2++;//若爲大寫字母則c2自增
                } else if(b.matches("[a-z]")){//if語句的條件,判斷是否爲小寫字母
                    c3++;//若爲小寫字母則c3自增
                } else if(b.matches("[0-9]")){//if語句的條件,判斷是否爲數字
                    c4++;//若爲數字則c4自增
                } else {//不然可判斷爲其餘字符
                    c5++;//若爲其餘字符則c5自增
                }
            }
        }

  


(七)、PSP展現

PSP2.1 任務內容 計劃共完成須要的時間(min) 實際完成須要的時間(min)
Planning 計劃 15 10
Estimate 估計這個任務須要多少時間,並規劃大體工做步驟 8 10
Development 開發 130 150
Analysis 需求分析 (包括學習新技術) 18 20
Design Spec 生成設計文檔 10 12
Design Review 設計複審 15 10
Coding Standard 代碼規範 (爲目前的開發制定合適的規範) 20 15
Design 具體設計 15 20
Coding 具體編碼 250 280
Code Review 代碼複審 20 20
Test 測試(自我測試,修改代碼,提交修改) 25 30
Reporting 報告 20 20
Test Report 測試報告 10 15
Size Measurement 計算工做量 12 15
Postmortem & Process Improvement Plan 過後總結 ,並提出過程改進計劃 20 20

  


(八)、總結

  「他們並排坐在一臺電腦前,面對同一個顯示器,使用同一個鍵盤,同一個鼠標一塊兒工做。他們一塊兒分析,一塊兒設計,一塊兒寫測試樣例,一塊兒編碼,一塊兒作單元測試,一塊兒作集成測試,一塊兒寫文檔,等等。」
                                                                                                      ——《構建之法》框架

  本次實驗是第一次結對項目實驗,所以感觸頗深。兩人結對完成一個軟件工程項目首先須要進行需求分析,對項目需求研究理解到位,對一個項目有總體的認知,而後再由兩人分工互助實現所需的功能。因爲每一個人都有本身編寫程序的習慣和風格,所以爲了不實驗過程當中產生分歧,首先咱們對實驗二中對方的文檔和代碼進行了仔細研讀和評價,瞭解了對方的編碼習慣,分析並指出了各自項目的優勢和不足,最終達成了一致的代碼規範。在具體的實現過程當中也遇到了不少問題,可是經過咱們一塊兒討論,相互協助,反覆修改反覆測試,最終都解決了這些問題。經過本次結對項目,本身的我的能力有所提高,同時明白了兩人合做的重要性以及1+1>2的深入內涵。此外,還體會到告終對編程能夠提升設計質量和代碼質量以及兩我的合做解決問題的能力,同時能夠互相交流學習經驗,提升本身的總體水平。「一千個讀者眼中就有一千個哈姆雷特」,經過兩我的思想的交融,最終的成果纔會顯得更加有意義。編輯器

  


    該英文文本統計分析軟件的源代碼可在此處查看

相關文章
相關標籤/搜索