軟體工程 個人專案

2022-08-11 09:03:15 字數 3384 閱讀 1961

專案內容

這個作業屬於哪個課程

2020春季計算機學院軟體工程(羅傑 任健)

這個作業的要求在**

個人專案作業

我在這個課程的目標是

學習軟體工程的開發知識,培養工程化開發能力

這個作業在哪個具體方面幫助我實現目標

通過實操掌握psp開發基礎

目錄4 模型設計

5 **分析與效能分析

6 **說明

關於效能和挑戰性任務的一些思考(todo)

教學班級:006

專案位址

psp 2.1

個人軟體階段

psp2.1

personal software process stages

預估耗時(分鐘)

實際耗時(分鐘)

planning

計畫· estimate

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

1010

development

開發· analysis

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

120150

· design spec

· 生成設計文件

6030

· design review

· 設計複審 (和同事審核設計文件)--

· coding standard

· **規範 (為目前的開發制定合適的規範)

3020

· design

· 具體設計

6040

· coding

· 具體編碼

120150

· code review

· **複審

3030

· test

· 測試(自我測試,修改**,提交修改)

240210

reporting

報告· test report

· 測試報告

6050

· size measurement

· 計算工作量55

· postmortem & process improvement plan

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

1530

合計750

725兩個不同的點決定一條直線,給定點\((x_1, y_1)\)和\((x_2, y_2)\),可以得出一條直線的形式為\(ax + by + c = 0\)(其中,a和b不能夠同時為0):

對於兩條直線\(a_1x+b_1y+c_1=0\)和\(a_2x+b_2y+c_2=0\),根據運算,可以得到交點的表示式為:

\[x= \frac

\]\[y= \frac

\]計算機以離散資料形式處理內容,雖然給定的點座標為整數,但其交點不一定為整數。因此,本問題中需要考慮小數問題,在分析了數學模型的公式形式後,權衡c++庫中的預設double、float類尚存在一定的精度誤差,因此我決定設計自定義的分數類rational用於資料的記錄,並自定義分數支援的四則運算符和比較操作,以支援該問題所需的操作。

基於物件導向的思想,主要設計了有理數、點和線三個和平面幾何有關的類,他們之間的聯絡見下圖:

首先,使用visual studio自帶的**分析工具對所編寫的**進行了檢查,得到沒有issue發現的狀態如下圖所示:

而後,使用了vs的效能分析工具,將所參與的直線數量調整至最大輸入量n=500000,進行效能分析執行,執行60秒後中斷分析結果,定位到目前的消耗最大的函式是line類的靜態方法get_intersection(),再具體來說,是在生成交點時,自定義的rational分數類之間的四則運算操作開銷很大,具體來說有一下兩個方面:

對於實現的**,可以按以下檔案進行組織:

├─header

│ algorithmrunner.h

│ line.h

│ point.h

│ rational.h

│ utils.h

└─source

│ algorithmrunner.cpp

│ intersect.cpp

│ utils.cpp

└─geometry

line.cpp

point.cpp

rational.cpp

專案基於物件導向的方式編寫,在.h標頭檔案中定義類的成員與方法,在每個.cpp檔案中定義了類方法的具體實現。

下面我以編寫的有理數(分數)和二維座標點為例子,進行具體的**說明:

// 有理數類的實現

class rational

;

對於二維座標點類,其用於表示用於確定直線的點和記錄交點:

class point

;

由於類方法封裝得比較好,因此單元測試比較方便,以每個類為具體如下:

(補充)測試策略:

類方法種類

測試邏輯

rational(有理數)

生成方法

分數化簡(分子分母分別為負零正)

比較方法(==,

@負零正三類數字中大小比較;未化簡分數比較;@hash方法的正確性;hash碰撞;@指標和物件比較區分。

運算方法

負零正數之間涉及四則運算;運算的交換律;零至少作為乙個運算元;零作為結果。

point(二維點)

比較方法(

設計跨越四個象限的正方形四個點,自身、兩兩比較。

查詢方法

查詢正常情況;查詢空值情況。

line(直線)

生成方法

投入相同座標點的異常;兩點排序正常檢驗。

交點求解

功能驗證(相交、平行);變數邊界溢位運算檢驗。

軟體工程個人專案

耗費的時間。psp 2.1 personal software process stages time plan time actual planning 計畫 estimate 估計這個任務需要多少時間 1min 1min development 開發 analysis 需求分析 包括學習新技術 ...

軟體工程個人專案 數獨

專案位址 github倉庫 psp 2.1 personal software process stages 預計耗時 分鐘 實際耗時 分鐘 planning 計畫50 60estimate 估計這個任務需要多久 300360 development 開發240 270analysis 需求分析 2...

軟體工程個人作業

題目 寫乙個程式,分析乙個文字中各個詞出現的頻率,並且把頻率最高的10個詞列印出來。我覺得這個問題主要是讀取檔案,然後統計個數和排序幾個點。以前也做過類似的讀檔案,我直接用的以前讀文字的方式,即ifstream方式,使用完檔案還需關閉,然後使用了結構體和類定義單詞,這樣方便在文字中尋找,不用判斷前後...