BUAA 軟體工程個人作業

2022-07-13 22:33:31 字數 2051 閱讀 1023

專案內容

這個作業屬於哪個課程

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

這個作業的要求在**

個人專案作業

我在這個課程的目標是

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

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

通過實操掌握psp開發基礎

psp2.1

personal software process stages

預估耗時(分鐘)

實際耗時(分鐘)

planning

計畫10

10· estimate

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

1010

development

開發280

520· analysis

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

3040

· design spec

· 生成設計文件

3040

· design review

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

1020

· coding standard

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

1020

· design

· 具體設計

60100

· coding

· 具體編碼

60120

· code review

· **複審

2060

· test

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

60120

reporting

報告70

70· test report

· 測試報告

4040

· size measurement

· 計算工作量

1010

· postmortem & process improvement plan

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

2020

合計360

600嘗試在網路上找到複雜度低於o(n^2)的演算法,找到乙個涉及線段與線段交點的o(nlogn),關於直線搜尋無果

寫**前,並未找到優秀的演算法,於是選擇暴力求解,即讀入一條直線,立即與前n條直線進行相交求解,每乙個求解得到的點都需要進行去重處理,即便理vector尋找相同點,複雜度極高。

將點的橫縱座標組成string,形成key,選取雜湊儲存,即橫縱座標成為雜湊列表的key值,value值為點這個結構體,這是寫**前的想法

由於是較為簡單的c++**,並沒有刻意使用物件導向的思路

pair: node(存放點的typedef,並未使用結構體,而是用了pair)

struct:line (存放直線的結構體,包括兩個點的橫縱座標,使用long儲存,以及ax + b = cy中的a, b, c)

struct:circle(存放圓的結構體,包括圓心node以及半徑r)

根據總cpu時間分配,可以看出主要占用時間的函式

可以看出set.insert函式,消耗最大,也可以理解,而第一版**中使用的hashmap,由於需要double轉string,其消耗極大,甚至超過了向hashmap中插入的消耗,因此改進為使用set,紅黑樹儲存,既可以保證不出現重複,又可以減少不必要的消耗,而向set中插入pair的方法,我並沒有太多的好辦法進行優化。

BUAA 2020 軟體工程 個人部落格作業

author 17373051 郭駿 專案內容 這個作業屬於哪個課程 2020春季計算機學院軟體工程 羅傑 任健 這個作業的要求在 個人部落格作業 我在這個課程的目標是 學習軟體工程的開發知識,培養工程化開發能力 這個作業在哪個具體方面幫助我實現目標 閱讀教材,對軟體工程有整體上的了解 1.快速看完...

BUAA 2020 軟體工程 熱身作業

author 17373051 郭駿 專案內容 這個作業屬於哪個課程 2020春季計算機學院軟體工程 羅傑 任健 這個作業的要求在 第一次作業 熱身!我在這個課程的目標是 學習軟體工程的開發知識,培養工程化開發能力 這個作業在哪個具體方面幫助我實現目標 從過去 現在和將來剖析自己,更加了解自己 作業...

軟體工程個人作業

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