1. 程式人生 > >軟體工程第二次作業—個人專案

軟體工程第二次作業—個人專案

軟體工程第二次作業個人專案

1. 程式碼倉庫地址:https://gitee.com/liumangxiaozi/software_engineering.git

2. PSP表格

PSP2.1

Personal Software Process Stages

預估耗時(分鐘)

實際耗時(分鐘)

Planning

計劃

 5

 10

· Estimate

· 估計這個任務需要多少時間

 10

 5

Development

開發

 10

 15

· Analysis

· 需求分析 (包括學習新技術)

 200

 300

· Design Spec

· 生成設計文件

 60

 100

· Design Review

· 設計複審

 20

 20

· Coding Standard

· 程式碼規範 (為目前的開發制定合適的規範)

 10

 5

· Design

· 具體設計

 20

 20

· Coding

· 具體編碼

 500

 500

· Code Review

· 程式碼複審

 200

 250

· Test

· 測試(自我測試,修改程式碼,提交修改)

 200

 200

Reporting

報告

 40

 40

· Test Repor

· 測試報告

 40

 40

· Size Measurement

· 計算工作量

 10

 10

· Postmortem & Process Improvement Plan

· 事後總結, 並提出過程改進計劃

 20

 20

 

合計

 1345

 1535

3. 學習日誌

學習時段2018.1229.0800-0930

學習內容python對文字檔案的讀取

收穫體會在學習過程中效率很低,主要原因在於自己對於python的整體的程式設計能力的不足,我在自己的D盤內設定有a.txt檔案,但是我在編碼的過程中採用的呼叫格式一直也只是a.txt,到最後一直無法對檔案進行操作,最後發現,應該在a.txt後面再加一個.txt,這麼一個小的錯誤花費了一個小時才解決

自我效率評價:

 

學習時段20198.0102.1900-2030

學習內容文字處理-字串

收穫體會找了一本python基礎的書,對其中字串處理模組進行了學習,由於是對著書本學習,邊學習邊編寫,所以感覺整體效率還算不錯。

自我效率評價:較高

 

學習時段20198.0104.1400-1730

學習內容編寫詞頻統計程式

收穫體會參考了https://www.cnblogs.com/Eudemines/p/9764409.html博文的內容和方法,對自己的程式設計有了一個整體的規劃,在緩衝區的處理部分,暫時採用了該博主提供的方法,但是整個程式還是有bug沒消掉。

自我效率評價:較低

 

學習時段20198.0105.1400-1700

學習內容編寫詞頻統計程式

收穫體會參考了社群大神的許多建議和方法,針對bug進行處理,解決了bug,並優化了部分的程式結構。

自我效率評價:較低

4. 解題思路描述

將文字儲存為一個字串形式,統計字串的長度,文字的行數;

將字串內所有的大寫字母轉為小寫字母;

將字串中緩衝區進行處理;

將字串分離為單個的單詞

統計單詞的詞頻

輸出詞頻在前十的單詞

對特定的功能點檢查自己實現的功能點的缺陷,一個一個優化

5. 設計思路過程

                                                                                                                        測試用例

功能

測試文字

輸出

純英文字元

The to the

長度:10,行數:1 ‘the’2‘to’1

數字英文混合

行數檢測

the123 1the

長度:14,行數:2‘the123’1‘to’1

大小寫檢測

The the

長度:7,行數:1‘the’2

空行處理

the

 

the

長度:13,行數:2‘the’2

首尾空格

  The the

長度:10,行數:1 ‘the’2

漢字處理

the

長度:4,行數:1 ‘the’1

特殊字元處理

@#$ the

長度:7,行數:1 ‘the’1

字母數字混合

The123the

長度:9,行數:1 ‘the123the’1

 

6. 效能分析

 

  通過程式對四段英文字串進行處理,程式執行一共花費了接近0.121

7. 關鍵程式碼

def main():

 

    dst = "a.txt.txt"

    bvffer = process_file(dst)

    word_freq = process_buffer(bvffer)

    output_result(word_freq)

 

if __name__ == "__main__":

    import cProfile

    import pstats

    cProfile.run("main()", "result")

    # 直接把分析結果列印到控制檯

    p = pstats.Stats("result")  # 建立Stats物件

    p.strip_dirs().sort_stats("call").print_stats()  # 按照呼叫的次數排序

    p.strip_dirs().sort_stats("cumulative").print_stats()  # 按執行時間次數排序

    p.print_callers(0.5, "process_file")  # 如果想知道有哪些函式呼叫了process_file,小數,表示前百分之幾的函式資訊

    p.print_callers(0.5, "process_buffer")  # 如果想知道有哪些函式呼叫了process_buffer

    p.print_callers(0.5, "output_result")  # 如果想知道有哪些函式呼叫了output_res

8心路歷程和收穫

  本次開發過程比較坎坷,中間還穿插著一門矩陣理論的考試課,所以總體的時間還是很緊張,自己編寫的軟體中存在許多的不足,譬如沒能實現老師要求的對以英文和數字混合字元的識別和統計,只是對純英文文字進行處理,同時對其他字元的處理只是簡單的採用了識別和替換的方法,若是輸入超出我的編寫程式的範圍可能會導致軟體的奔潰,不管其他,最終還是做出來了一個小小的軟體,基本實現了其功能,感悟有三點:一、自己的程式設計技術太low,需要加強、加強、再加強;二、軟體工程中各個部分的工作加起來遠比程式設計多得多;三、學到了許多實用的技能。