201671030103 仇素龍 實驗四軟件工程結對項目

項目 內容
這個做業屬於哪一個課程 任課教師首頁連接
這個做業的要求在哪裏 做業連接地址
課程學習目標 熟悉軟件開發總體流程,提高自身能力
本次做業在哪一個具體方面幫助咱們實現目標 第一次體驗一個完整的工程

任務一:

  • 點評做業的博客:https://www.cnblogs.com/jsj-hxl/p/10561076.html
  • github連接地址: https://github.com/Queey/WordCount
  • 點評內容:
    本篇博文結構清晰,分別從需求分析、功能設計、設計實現和測試運行作了詳細分析,內容比較完整,可是也有必定的缺點,好比在需求分析中指出指定單詞詞頻統計功能可顯示對應單詞在文本中出現的次數和柱狀圖,可是博文裏面沒有實現柱狀圖。博文結構與PSP中「任務內容」列存在對應關係,PSP中的數據能夠明確顯示這個項目計劃、開發和完成報告的時間分配狀況,PSP中「計劃共完成須要的時間」與「實際完成須要的時間」有些任務能夠在計劃完成的時間內完成,而有些任務超出了計劃完成任務的時間,其主要緣由與項目自己密切相關,一方面項目有必定的難度,另外一方面因爲自身經驗不足,完成項目的時候缺少經驗,致使實際完成項目的時間超出了預期完成項目的時間。
  • 點評心得:
    經過運行博主的代碼,對方代碼在書寫方面符合代碼書寫規範,命名格式徹底符合代碼規範要求,代碼格式整潔,註釋部分也很詳細。對比本身的博文和代碼,我仍是有不少不足之處,所以,在接下來的實驗中我會慢慢改善本身的不足,儘可能寫出結構清晰、內容完整的博文。html

    任務二:

    (一)需求分析

    按照《構建之法》第2章中2.3所述PSP流程,使用JAVA編程語言,結對完成英文文本詞頻統計的軟件開發。軟件基本功能要求以下:
    (1)實驗2要求的功能;
    (2)單詞頻數利用可視化柱狀圖;
    git

(3)統計該文本行數及字符數;
(4)各類統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms);
(5)可處理任意用戶導入的任意英文文本;
(6)人機交互界面要求GUI界面(WEB頁面、APP頁面均可);
(7)附加分功能:統計文本中除冠詞、代詞、介詞以外的高頻詞;github

(二)軟件設計:

類圖
編程

(三)核心功能代碼展現:

(1)單詞頻數利用可視化柱狀圖實現dom

public JFreeChart ShowCountHistogram(BufferedReader bufferedReader) throws IOException {                
    CategoryDataset dataset = getDataSet(bufferedReader);
    JFreeChart chart = ChartFactory.createBarChart3D(
                         "英文文本詞頻統計圖",           // 圖表標題
                        "單詞名稱",                     // 目錄軸的顯示標籤
                        "次數",                       // 數值軸的顯示標籤
                        dataset,                    // 數據集
                        PlotOrientation.VERTICAL,   // 圖表方向:水平、垂直
                        true,                       // 是否顯示圖例(對於簡單的柱狀圖必須是false)
                        false,                      // 是否生成工具
                        false                       // 是否生成URL連接
                        );                                                  
    CategoryPlot plot=chart.getCategoryPlot();      //獲取圖表區域對象
    CategoryAxis domainAxis=plot.getDomainAxis();   //水平底部列表
     domainAxis.setLabelFont(new Font("黑體",Font.BOLD,14));       //水平底部標題
     domainAxis.setTickLabelFont(new Font("宋體",Font.BOLD,12));   //垂直標題
     ValueAxis rangeAxis=plot.getRangeAxis();//獲取柱狀
     rangeAxis.setLabelFont(new Font("黑體",Font.BOLD,15));
      chart.getLegend().setItemFont(new Font("黑體", Font.BOLD, 15));
      chart.getTitle().setFont(new Font("宋體",Font.BOLD,20));     //設置標題字體
    return chart;
}

(2)統計文本中除冠詞、代詞、介詞以外的高頻詞的實現編程語言

public Map<String, Integer> selectExceptFunctionWord(BufferedReader bufferedReader) throws IOException {
    Map<String, Integer> map = this.selectWordCountByDOrder(bufferedReader);
    Map<String, Integer> exceptFunction = new LinkedHashMap<String, Integer>();
    for (Map.Entry<String, Integer> w :map.entrySet())  {
        if(!w.getKey().equals("the")&&!w.getKey().equals("is")&&!w.getKey().equals("you")&&!w.getKey().equals("yourself")&&!w.getKey().equals("your")&&!w.getKey().equals("them")&&!w.getKey().equals("their")&&!w.getKey().equals("to")&&!w.getKey().equals("by")&&!w.getKey().equals("is")&&!w.getKey().equals("a")&&!w.getKey().equals("and")&&!w.getKey().equals("was")&&!w.getKey().equals("has")&&!w.getKey().equals("had")&&!w.getKey().equals("I")&&!w.getKey().equals("for")&&!w.getKey().equals("my")&&!w.getKey().equals("me")&&!w.getKey().equals("with")&&!w.getKey().equals("of")&&!w.getKey().equals("in")&&!w.getKey().equals("on")&&!w.getKey().equals("that")&&!w.getKey().equals("it")&&!w.getKey().equals("The")&&!w.getKey().equals("at")&&!w.getKey().equals("which")&&!w.getKey().equals("he")&&!w.getKey().equals("as")
                 &&!w.getKey().equals("but")&&!w.getKey().equals("his")&&!w.getKey().equals("from")&&!w.getKey().equals("some")&&!w.getKey().equals("be")&&!w.getKey().equals("were")&&!w.getKey().equals("not") &&!w.getKey().equals("they")&&!w.getKey().equals("this")&&!w.getKey().equals("an")&&!w.getKey().equals("no")&&!w.getKey().equals("into")&&!w.getKey().equals("It")&&!w.getKey().equals("there")&&!w.getKey().equals("But")&&!w.getKey().equals("him")&&!w.getKey().equals("could")&&!w.getKey().equals("been")&&!w.getKey().equals("would")&&!w.getKey().equals("she")&&!w.getKey().equals("then")&&!w.getKey().equals("Then")&&!w.getKey().equals("have"))
                {
            
            exceptFunction.put(w.getKey(), w.getValue());
        }}
    

    return exceptFunction;
}

(3)讀取文本獲取降序詞頻ide

public Map<String, Integer> selectWordCountByDOrder(BufferedReader bufferedReader) throws IOException {
    Map<String, Integer> map = this.AllWordCount(bufferedReader);
    List<Map.Entry<String, Integer>> nlist = new LinkedList<Map.Entry<String, Integer>>(map.entrySet());
    Collections.sort(nlist, new Comparator<Map.Entry<String, Integer>>()
    {
        @Override
        public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2)
        {
            int compare = (o1.getValue()).compareTo(o2.getValue());
            return -compare;
        }
    });

    Map<String, Integer> result = new LinkedHashMap<String, Integer>();
    for (Map.Entry<String, Integer> entry : nlist) {
        result.put(entry.getKey(), entry.getValue());
    }
    
    return result;
     }

(四)程序運行:

(1)實驗2要求的功能
主界面
工具

統計該文本行數及字符數
學習

讀取文本獲取詞頻,按照字典排序
測試

(2)單詞頻數利用可視化柱狀圖

(3)讀取文本獲取指定單詞出現的次數


(4)讀取文本獲取指定前K個高頻詞

(5)讀取文本獲取降序詞頻

(6)統計文本中除冠詞、代詞、介詞以外的高頻詞

(五)描述結對的過程,提供兩人在討論、細化和編程時的結對照片(非擺拍)

(六)PSP

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

(七)總結

經過此次結對項目,我深入的理解了1+1>2的含義。在編寫此次項目的過程當中因爲咱們兩個的編程水平都不太好,須要學習的東西太多,因此在學習心得技術和具體實現的時候花費了不少的時間,可是兩我的在學習和討論的效率明顯大於一我的的,咱們能夠互相講解本身看懂的或者學懂得技術,這樣節約了大量的時間。可是在結對項目的過程當中也存在不少的缺點,好比溝通很差兩我的就會重複作事情,這樣反而下降了項目的進度,因此在兩我的的合做中良好的溝通顯得格外重要。最後,在此次的結對項目中我學會了不少的知識,咱們也從彼此的身上學到了各自的優勢,很開心和她合做。

(八)本次項目源碼在這裏查看

相關文章
相關標籤/搜索