软件工程作业 - word count
(編程和軟件工程作業系列)
實踐最簡單的項目:WC
實踐是理論的基礎和驗證標準,希望讀者貫徹“做中學”的思想,動手實現下面的項目,并和別人的成績相比較,分析產生差距的原因。
1. 實現一個簡單而完整的軟件工具(源程序特征統計程序)。2. 進行單元測試、回歸測試、效能測試,在實現上述程序的過程中使用相關的工具。3. 進行個人軟件過程(PSP)的實踐,逐步記錄自己在每個軟件工程環節花費的時間。4. 使用源代碼管理系統 (GitHub, ?Coding.net, 等); 并使用項目管理系統,練習使用其中的事件跟蹤功能(選用TFS,Bugzilla 或者Trac, 等工具,了解其原理)。5. 進行最簡單的項目管理系統的定制,這個留給一部分能力較強的同學參與。(選用TFS 或別的項目管理系統,了解原理并實現定制。)
1 WC 項目要求
wc.exe 是一個常見的工具,它能統計文本文件的字符數、單詞數和行數。這個項目要求寫一個命令行程序,模仿已有wc.exe 的功能,并加以擴充,給出某程序設計語言源文件的字符數、單詞數和行數。當然,我們假設讀者都已經通過之前的練習,建立了源代碼控制工具并有基本的實踐經歷。實現一個統計程序,它能正確統計程序文件中的字符數、單詞數、行數,以及還具備其他擴展功能,并能夠快速地處理多個文件。具體功能要求:程序處理用戶需求的模式為:
wc.exe [parameter] [file_name]基本功能列表:
wc.exe -c file.c //返回文件 file.c 的字符數 wc.exe -w file.c //返回文件 file.c 的詞的數目 wc.exe -l file.c //返回文件 file.c 的行數擴展功能:? ? -s ? 遞歸處理目錄下符合條件的文件。
? ? -a ? 返回更復雜的數據(代碼行 / 空行 / 注釋行)。
? ? -f? ?說明這個文件是哪一種語言的。? 例如: C/Java/C++/JavaScript/Python/HTML,? 如果看不出屬于任何語言, 就輸出 TXT??
空行:本行全部是空格或格式控制字符,如果包括代碼,則只有不超過一個可顯示的字符,例如“{”。
代碼行:本行包括多于一個字符的代碼。
注釋行:本行不是代碼行,并且本行包括注釋。一個有趣的例子是有些程序員會在單字符后面加注釋:
? ? } //注釋在這種情況下,這一行屬于注釋行。
[file_name]: 文件或目錄名,可以處理一般通配符。高級功能:
?-x 參數。這個參數單獨使用。如果命令行有這個參數,則程序會顯示圖形界面,用戶可以通過界面選取單個文件,程序就會顯示文件的字符數、行數等全部統計信息。
需求舉例: wc.exe -s -a *.c
返回當前目錄及子目錄中所有*.c 文件的代碼行數、空行數、注釋行數。
2. 工作的細分
正如諺語所說:不能一口吃成個胖子。羅馬不是一天建成的。同樣,一個功能完備的程序也不是一蹴而就的。在這里,我們討論如何把大任務劃分為可操作的小任務,以及任務的次序。讀完項目的要求后,首先請估計完成整個項目需要多少時間?把估計記下來,并且寫成PSP 的形式。其次,如何逐步分解一個項目的需求?在這個項目中,各種需求已經通過各種參數表達得比較清楚了。
基本功能擴展功能高級功能
詳細地了解了需求后,我們再估計需要的時間并記錄 [ 估計值2]。最后,列出各類功能下面的詳細需求。
基本功能
支持 -c支持 -w支持 -l
擴展功能
支持 -s -f -a 參數支持各種文件的通配符(*,?)
高級功能
基本的Windows GUI 程序操作支持通過圖形界面選取文件支持通過圖形界面展現文件的信息
請在這個時候把每一個詳細功能所需的時間列出來,然后再把它們相加,得到 [ 估計值 3]。
同學相互之間比較估計值1、估計值2 和估計值3,看看差距是多少,有什么規律?對此有興趣的同學請參看本書第8 章“計劃和估計”一節。
3 如何保證質量— 回歸測試
如何保證在加入新功能的過程中,已有的功能可繼續工作?這就要求我們有一套標準的測試來保證基本功能的正確性。寫這樣的程序,用項目本身的源文件來做測試應該是比較酷的,但是源文件本身在不斷地變動,并不是一個很好的測試樣本,我們要建立起一系列測試文件。如下:
空文件只有一個字符的文件只有一個詞的文件只有一行的文件一個典型的 C 語言源文件
一個典型的 Java 語言源文件一個典型的 HTML 語言源文件一個典型的 C# 語言源文件
一個典型的 JavaScript 語言源文件
如何為這個程序做有效的測試,有以下幾種方法,自動化程度由低到高。
1. 手動測試,手工比較。2. 要做到不斷地測試,可以把WC 的主要功能封裝成一個類,然后測試程序調用這一個類的主要函數,得出結果并與標準作比較。3. 更進一步,把測試文件和正確的測試結果保存在文件中,測試驅動程序只要比較測試的輸出和標準結果就能得出答案。4. 再進一步,把自動構建腳本和構建驗證測試(Build Verification Test)結合起來。每一次構建之后,就自動運行測試,然后記錄出現的Bug。了解測試的需求后,每人估計需要的時間并記錄 [估計值4]。
4 標準測試集,正確性和速度評比
既然大家的程序都寫得差不多了,那就拉出來遛遛,看看是騾子是馬。以子目錄的形式把目前所有同學的程序都集中在一個總的測試目錄下,作為測試集合。然后大家看看各自的程序要花多少時間才能正確并且較快地完成任務。 在這里,同學們要記下滿足了標準測試集之后,每人實際花費的時間 [ 實際值],并且按照本章PSP 的表格統計自己在軟件開發的各個階段所花費的時間。
5 擴展,從源代碼服務器上讀文件
請看這個文章,你能實現類似的功能么? https://www.ybrikman.com/writing/2018/08/12/the-10-to-1-rule-of-writing-and-programming/??
總結
以上是生活随笔為你收集整理的软件工程作业 - word count的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 创新 - 王屋村的魔方们
- 下一篇: 邻接矩阵和邻接表_[力扣743] 带权邻