項目 | 內容 |
---|---|
課程名稱 | 2016級計算機科學與工程學院軟件工程(西北師範大學) |
做業要求 | 實驗四 軟件工程結對項目 |
課程學習目標 | 熟悉軟件開發總體流程,提高自身能力 |
本次結對項目的意義 | 第一次體驗一個完整的工程 |
如下是我讀完這篇博文以後,本身的一些拙見。html
不一樣的同窗有不一樣的思惟方式,對同一個問題的認知也有各自的獨特之處。經過閱讀其餘同窗的博文,我受益不淺,深入認識到了本身的不足之處,懂得了應該善於互相學習,汲取他人的精華,不斷改善本身的學習。同時,對於編碼規範有了必定的認識,之前編寫代碼的時候,會爲所欲爲地按照本身的方式來寫,經過閱讀代碼規範,發現本身存在不少問題,之後會多加註意去改正。此外,我對軟件工程的內涵有了更深入的體會,感覺到了文檔在項目開發過程當中的重要性。閱讀其餘同窗的博文,發現問題並進行適當的評價,實際上是一種很好的學習方式,從別人的問題中能夠反射出本身存在的問題。所以,咱們在日常的學習中,要善於去評價他人,評價本身。java
一、實驗2要求的功能
二、單詞頻數可視化柱狀圖
三、統計該文本行數及字符數
四、各類統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms)
五、可處理任意用戶導入的任意英文文本
六、人機交互界面要求GUI界面(WEB頁面、APP頁面均可)
七、附加分功能1:統計文本中除冠詞、代詞、介詞以外的高頻詞
八、附加分功能2:統計前10個兩個單詞組成的詞組頻率git
一、柱狀圖功能——單詞頻數可視化柱狀圖
二、計時功能——各類統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms)
三、顯示功能——人機交互界面GUI界面
四、統計功能——統計文本行數、字符數、大小寫字母、漢字、數字、字節數等github
一、本次項目設計一共使用了三個類,分別爲Main.java,Result.java,Histogram.java
二、程序整體流程圖以下:
編程
一、首先咱們對實驗二中對方的代碼進行了仔細研讀,瞭解了對方的編碼習慣,根據老師所給的代碼規範肯定了本次項目的代碼規範。
二、本次項目是在實驗二的基礎上添加、修改部分功能而實現的,所以在實驗二的基礎上,咱們對本次項目進行了需求分析,肯定了基本的框架。
三、對統計文本行數、字符數、大小寫字母、漢字、數字、字節數等功能,計時功能,統計文本中除冠詞、代詞、介詞以外的高頻詞功能等進行了分工。
四、共同編寫了GUI界面。
五、代碼編寫結束後,咱們根據代碼規範進行了代碼複審。
六、最後咱們根據完成該項目的實際狀況填寫了PSP中各個階段實際所用時間,並各自撰寫了博客。
數組
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自增 } } }
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的深入內涵。此外,還體會到告終對編程能夠提升設計質量和代碼質量以及兩我的合做解決問題的能力,同時能夠互相交流學習經驗,提升本身的總體水平。「一千個讀者眼中就有一千個哈姆雷特」,經過兩我的思想的交融,最終的成果纔會顯得更加有意義。編輯器