個人專案部落格作業1

2022-04-09 07:13:16 字數 3564 閱讀 8697

psp2.1

personal software process stages

time(**/實際)

planning

計畫

3天· estimate

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

3天development

開發

· analysis

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

半天/半天

· design spec

· 生成設計文件

2小時/1小時

· design review

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

null/null

· coding standard

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

1小時/1小時

· design

· 具體設計

3小時/2小時

· coding

· 具體編碼

1天半/1天半

· code review

· **複審

半天/半天

· test

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

半天/一天

reporting

報告

· test report

· 測試報告

null/1小時

· size measurement

· 計算工作量

null/10分鐘

· postmortem & process improvement plan

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

null/半小時

合計2.效能分析(...)

3.共享測試的10個樣例

正確的格式舉例:

(1)正確的格式舉例1:-r 10 -n 10 或者 -n 10 -r 10 

(2)正確的格式舉例2:-e 檔案 -a 檔案 或者 -a 檔案 -e 檔案  -e exercise.txt -a answer.txt

(3)-r 10 -n -10 int i=0;i(4)引數輸入錯誤:未按照規定的格式輸入,程式會無法執行直到正確輸入引數

(5)-n 100000 -r-10 超範圍的算式數量,由於程式效率不是很高,所以程式會死,加入乙個輸入數判斷語句後可以解決這個問題

(6)-e 空 -r 空 指定的路徑沒有檔案,開啟檔案失敗,程式無法繼續執行

(7)exercises.txt (100道題)和answer.txt  (200道題)兩個檔案的題目數目不一樣,由於是首先讀exercises然後再堵answer,判斷eof也是以exercises為基準的,所以answer比exercises多的話是沒有問題的

(8)exercises.txt (200道題)和answer.txt  (100道題)根據(5)的原因,程式執行到100道題之前是完全沒有問題的,當answer不夠的時候,由於判斷的條件所致,101到200判斷條件都不滿足,所以直接一路false到exercises的eof結束,結果是後100道題算wrong。

(9)-n 10000 -r 1 n輸入大,r輸入小  我的程式並沒有計算給定r之後n的最大值,只是不斷通過隨機來盡量擴大生成算式的規模,但是1是無論如何生成不了10000個式子的,所以程式無法繼續執行。

(10)-n 10000 -r 1000 雖然n很大,但是r的值很大,所以隨機遍歷的結果很多,可生成的算式很多,可以遍歷完全

4.個人專案設計思路

首先先粘一下各個函式頭和main(),函式命名都是很直接的,所以一眼就能看懂函式是幹什麼的

首先,先講-n -r 的部分。輸入引數-n -r 之後會呼叫createtofile,也就是將算式生成到檔案當中。

一開始的分析有多種考慮:

(1)生成表示式的型別:字尾還是中綴呢,中綴可以直接輸出,字尾便於計算

(2)查重複算式的要求

(3)運算過程中不能出現負數的要求

(4)極限測試,給定r之後n的最大值

一開始,比較偏向與生成中綴,因為既可以直接輸出,中綴計算也不是很複雜,只要像往常的中綴轉字尾算一下就可以了。接下來考慮(2)(3),查重的話,產生重覆式子的原因主要有兩個,括號改變計算順序和+×的交換律

①中綴判斷起來的話需要很麻煩,因為生成的過程中需要直接生成括號。但是字尾表示式就沒有這個麻煩,字尾表示式沒有括號,一旦表示式確定,計算順序就確定了,這樣就省去了括號的煩惱。

②交換律的問題,如果保證生成的時候只有一種的話就沒有問題了,所以我的解決方法是決定生成的運算數是有大小順序的,降序排列,這樣就保證只有一種情況了,而且這樣的話能夠保證減法的過程中沒有負數的產生,這樣就同時保證了兩個限制條件

③極限測試的要求,一開始我還想算出給定r的時候n的最大值,然後限制住,但是發現算起來有點麻煩,而且由於我①②的限制規則,我捨棄掉了好多算式,更無法保證最大值。而且計算的過程中發現,哪怕r很小的話,事實上n的限定值也可以很大的,因為可生成的算式實在是太多了。哪怕僅僅是3、4,可生成的算式也能夠超過1萬(我捨棄掉了好多,所以太小的滿足不了了,但是r給10生成1萬的話還是能夠保證的)

生成的細節就不敘述了,規則確定之後生成就不是很複雜了。

生成之後需要計算,由於是支援分數的計算的,所以索性計算的過程中直接就先全部轉化為分數計算,0的話也轉換成0/1一起計算。分數計算的細節也不講了,簡單的很,加減就是先通分-計算-約分,乘除就直接乘除然後約分。

計算之後需要print出來,所以還是要轉成中綴表示式列印出來,字尾轉中綴只需要用一點棧的知識就可以解決,括號也直接跟隨著就生成了

接下來,講一下-e -a 的部分,有了前一部分的基礎,這一部分就很簡單了,只需要將exercises中的計算出來之後和answers中的逐個對比就可以了,然後生成grades。計算的過程就是中綴表示式的計算,資料結構就講過,所以這一部分只是算出結果之後簡單的對比即可。

5感受及收穫

1.首先,是第一次按照psp裡面的順序開發程式,雖然其中有的過程沒有經歷,**中也填的是null,比如寫規範的設計文件之類的暫時沒有了,但是設計的過程還是很完整的,這樣的過程對以後專案的開發是很有幫助的,而且這樣的話,看似很繁瑣,但是效率卻比以往要高出許多。

2.其次,就是這個程式本身了,剛開始留這個作業的時候,看起來很簡單,但是寫起來的過程中卻發現了好多難題。後來和同學討論的過程中也發現,由於設計思路不同,產生的難題也不太相同,比如說查重的問題,如果是直接生成中綴表示式的話,我想查重應該是很麻煩的(自己沒寫但是分析過),而我的程式由於直接生成的就是字尾,所以查重這一方面的好了許多。

3,還有,第一次寫c++額,雖然寫的和c沒有什麼大區別,寫的也只是面向過程的程式,但是了解到了好多c++的函式以及庫,也就是了解了好多c++語言本身的特性之類的,而且由於有上學期oo的基礎,所以我想再了解點c++的語法知識之後,寫出「」真正的「c++應該不是很難的。而且現在c++ 的使用也相當廣泛,所以掌握這門語言本身來說對我也是很有幫助的。

個人部落格作業Week1

一.1.敏捷開發中有哪些常用的方法?2.瀑布模型是否已經不適應現在的軟體開發模式?3.乙個軟體開發團隊裡程式設計能力參差不齊如何合理地給他們分配角色和任務?4.開發 測試由不同的人擔任真的合適嘛?開發的人被指出bug後產生怨氣影響關係怎麼辦?5.pm是不是乙個團隊裡要求能力最強的角色?二.軟體和軟體...

IT專案管理 個人作業1

案例討論projects programs和portfolio之間的關係以及對企業成功的貢獻 以及與operations以及opm之間的關係。畫圖 畫圖 從書本上截圖的 假設乙個人以 投資回報最大化 為戰略目標的某基礎設施公司,可以把油氣 供電 道路 鐵路和機場等專案歸併成乙個專案組合。在這些歸併的...

個人專案部落格

專案內容 這個作業屬於哪個課程 課程鏈結 這個作業的要求在 作業鏈結 教學班級 006專案位址 github位址 psp2.1 personal software process stages 預估耗時 分鐘 實際耗時 分鐘 planning 計畫 estimate 估計這個任務需要多少時間 101...