Smart City 項目總結 Postmortem(轉)

 

原貼地址:http://pku-group3.spaces.live.com/php

 

設想和目標面試

1. 咱們的軟件要解決什麼問題?是否認義得很清楚?是否對典型用戶和典型場景有清晰的描述?算法

隨着城市化的加速發展,城市交通問題也顯得越來 越突出,咱們提出要作一個智能交 通疏導系統和模擬系統。這個系統能夠經過地圖編輯來繪製不一樣的道路、路口,能夠 經過設定車輛數目來實現不一樣的路況,能夠用來測試不一樣的調度算法。從嚴格的意義上來講,它應該是一個帶有地圖編輯功能的調度算法模擬平臺。它支持用戶經過 編程方式來實現不一樣的調度算法,可 覺得交通控制理論的研究工做人員提供交通模型模擬和實驗數據,也能夠檢驗各類交通控制和調度算法的實際效果。編程

2. 是否有充足的時間來作計劃?  項目原來預計有多少用戶,實際有多少用戶爲何有如此落差?編輯器

3. 計劃的時間比較充足,預計的用戶不會不少,由於使用本軟件須要有必定的編程基礎和交通領域的相關知識,或是相關領域的研究工做者。他們使用本 軟件主要就是爲了測試實現的算法是否「智能」,固然,若是從長期效應來說,本軟件爲交通智能調度和算法研究提供了良好的工具。本軟件的預計下載量在30,實際下載量在40左右。工具

4. 團隊在計劃階段如何解決同事們對於計劃的不一樣意見的?  單元測試

主要經過開會討論來統一不一樣意見,開會後會得出一個你們都 一致接受的結論。學習

計劃測試

1. 你原計劃的工做是否最後都作完了若是有沒作完的,爲何?google

計劃的工做並無徹底作完,咱們定義了4scope而且預計實現其中的23個,最終實際完成了第一和第二個scope。沒有徹底完成的主要緣由仍是由於項目的時間吃緊,尤爲是到項目進行的後期。另一個緣由就是咱們缺乏熟悉交通領域知識的人來支持我 們完成系統的開發,不少交通領域的專業知識是咱們發現不足後臨時學習的,這也很大程度的拖慢了項目的進度。

2. 有沒有發現你作了一些過後看來不必,沒多大價值的事?

沒有。

3. 每一項任務都有清楚定義的和衡量的交付件?

大的任務咱們有清楚的定義和衡量,但並非具體到每個任 務都有定義,開發過程當中彈性很大。

4. 在項目的整個過程都按照計劃進行?

大致上是按照計劃來進行。在全組人員的共同努力下,項目按照原定計劃在623日發佈Beta版本, 並開始收集該版本的用戶反饋信息。在發佈Alpha版本以後的兩個星期,咱們陸續收到了用戶反饋信息。項目的進行基本按照計劃,在不影響版本發佈的前提下,對進度和任務作了一些必要的 調整。

5. 在計劃中有沒有留下緩衝區,緩衝區有做用麼?

留下了緩衝區,緩衝區主要是用來處理項目後期系統臨近發佈 時浮現出來的各類Bug

6. 未來的計劃會什麼修改? (例如: 緩衝區的定義,加班)?

應該不會有什麼修改。

資源

1. 咱們有足夠的資源來完成各項任務麼?

沒有,在項目過程當中,因爲組員本學期課業任務比較重,能投入項目的 時間並很少,因此項目時間比較緊張。

2. 各項任務所需的時間和其餘資源是如何估計的,精度如何?

項目中的各項任務都基本按照經驗來估計,放寬必定的緩衝 區,採用保守估計,如今看來,這個方法雖然估計精度不是很高,可是從結果來看仍是保證項目按照計劃如期交付。

3. 用戶測試的時間,人力和軟件/硬件資源是否足夠?

Alpha版本的測試時 間是2周,有點短,收集的用戶反饋深度不是很 夠;並且項目人力也存在問題軟硬資源獲得了 保障。

4. 你有沒有感到你作的事情可讓別人來作(更有效率)?

主要是關於交通領域的專業知識咱們小組仍是有所欠缺,若是 有一個有這方面背景的人可以給予支持效果確定會好不少,至少能夠節約大量的時間。系統也能更加專業和貼近用戶的使用習慣。

變動管理

1. 每一個相關的員工都及時知道了變動的消息?

咱們經過SVN來管理代碼,每一個員 工都會受到變動消息。另外咱們還有QQ羣等輔 助手段來進行溝通。

2. 咱們採用了什麼辦法決定「推遲」和「必須實現」的功能?

咱們採用了劃分優先級的方式肯定了哪些功能必須實現,哪些 功能推遲實現。調度算法是推遲的功能,由於項目必須實現的是一個算法模擬的平臺,即平臺自己,而算法是能夠由用戶自行實現的。固然,咱們也致力於找到很好 的調度算法,目前,只實現了幾種簡單的調度供用戶參考使用。

3. 項目的出口條件 (Exit Criteria)是否獲得清晰的定義到底什麼叫 作 好了

咱們經過驗收測試來測試系統是否「作好了」,出口條件就是 開發出這個系統而且完成需求階段定義的90%以上的功能。

4. 對於可能的變動是否能制定應急計劃?

沒有應急計劃,項目變動時經過開會討論的方式來控制和處理 變動。

5. 員工是否可以有效地處理意料以外的工做請求?

員工基本能在完成本職工做的同時,完成意料以外的工做請 求,例如,文檔、BUG修復等等。團隊比較團結,組員積極性 較好。

設計/實現

1. 設計工做在何時,由誰來完成的?是合適的時間,合適的人麼?

第一週頭腦風暴肯定要作的系統爲:城市交通智能管理模擬系統,肯定主要的功能模塊爲:地圖編輯器和 路況監視器,並肯定每一個模塊要實現的具體功能,如地圖編輯器模塊的地圖保存功能,路況監視器中的局部查看功能,全局查看功能,局部放大功能,打印實時信息 功能等,頭腦風暴由全組人員參加。第二週討論具體的實現,由PM(瀋陽),一個DEV(何 建杉),一個TEST(萬成鋮)參加。

2. 設計工做有沒有碰到模棱兩可的狀況,團隊如何解決的?

沒有。

3. 團隊是否運用單元測試(unit test), 測試驅動的開發(TDD, UML, 或者其餘工具來幫助設計和實現?這些工具備效麼? 

在開發的過程當中進行了單元測試,可是是經過直接編寫測試代碼進行的,沒有用到專門的工具。

4. 什麼功能產生的bug 最多,爲何? 

汽車自主控制功能,包括當前的車道,當前所處的路口,前方是否有車輛阻擋,前方是否爲路口,相位是 否已打開等等。由於汽車所處的狀態是一直變化的,不一樣車道的行爲時不一樣的,並且有隨機行爲,因此比較容易出現問題。

5. 代碼複審 (Code Review)是如何 進行的,是否嚴格執行了代碼規範? 

因爲時間限制,對關鍵模塊的代碼由測試人員進行了人工走查。

測試/發佈

1. 團隊是否有一個測試計劃?爲何沒有?

測試工做開始的初期就制定了測試計劃,測試計劃就肯定了軟 件的特性和測試範圍而且決定進行如下測試

Code Reviews

Blackbox Testing

Fault Injection

Stability Testing

在開發過程當中由開發人員完成了基本的單元測試和白盒測試。

2. 是否進行了正式的驗收測試?

在需求階段咱們定義了4scope,目前咱們實現到第二個scope而且發佈了相應的Beta版。根據需求階段定義的系統特性咱們進行了驗收測試來確保系統實 現了預期的功能。咱們找不到最終用戶來幫助咱們進行驗收測試,因此是由軟件測試人員完成。

3. 團隊是否有測試工具來幫助測試?

系統開發主要使用MFC技術,咱們沒有找到 比較適合的針對MFC程序的開源或者免費的測 試工具,更沒有時間來開發鑽用的測試工具,因此全部的測試代碼都是由開發人員和測試人員手動編寫。系統的特殊性決定了咱們很難找到合適的測試工具。

4. 團隊是如何測量並跟蹤軟件的效能的?從軟件實際運行的結果來看,這些測試工做有用麼?應該有哪些改進?

對軟件效能的測試主要是經過運行系統而且觀察結果來完成 的,軟件運行之後效能必須在用戶能夠接受的範圍之內,從軟件實際運行的結果來看這些測試工做仍是頗有效的,咱們前後爭對效能進行過兩次改進,每次改進都有 明顯提升運行效率。

5. 在發佈的過程當中發現了哪些意外問題?

在發佈過程當中遇到的意外問題就是上傳的資源意外CSDN刪除,或者是因爲CSDN資源站不穩定致使用戶下載資源是出現「當前資源不存在」的提 示。咱們發現後又從新上傳了對應版本。

6月23日

Smart City 用戶使用說明

    用戶下載Smart City 任意版本之後能夠直接運行 Release目錄下的 SmartCity.exe來運行程序。源文件咱們也會隨release一塊兒發佈,在目錄SmartCity下。
    功能介紹以及使用說明
地圖編輯器編輯程序
    1,點擊鼠標左鍵而且拖動鼠標進行畫圖,
    2,點擊鼠標右鍵切換貼圖
    3,按住shift和鼠標左鍵進行組合直線繪圖
    4,按住ctrl並點擊鼠標右鍵選取上一幅貼圖
    5,按住ctrl+shift+點擊鼠標左鍵或者拖動刪除當前的貼圖
導入已經建立的地圖
    1,點擊「操做」=》「導入地圖」
    2,系統默認建立了3張地圖分別爲大(Large.map 16個路口)、中(Medium.map 8個路口)、小(Small.map 4個路口)。
    3,選擇相應的map文件之後系統會自動初始化車輛而且運行
觀察車輛運行狀況(可使用鼠標滾輪控制局部放大倍數)
VIP車輛的設置:
    在輸入框輸入VIP車輛的編號便可
系統顯示當前全部路口的相位信息
選擇調度算法,目前爲相位輪轉法和一個簡單的相位動態調整算法
設置 車輛的數目
設置車輛數目
設置相關屬性在configure文件中設置,參考屬性以下:
    CAR_NUM = 800; //地圖中車輛的總數
    TIMER_TIME = 40;//定時器觸發時間間隔,單位爲毫秒,數值越大每一個時間週期越長,車行走得越慢
    INTERSECTION_CYCLE = 5000;//路口的時間週期,單位爲毫秒
    調度算法在CIntersection::manipulateIntersection()中設置
程序運行截圖

Smart City - Intelligent Traffic System (Beta) 發佈

項目簡介:
這是一個使用VC++編 寫的城市交通疏導系統模擬平臺,用戶能夠在這個平臺的基礎上開發本身的路口調度算法,很是適合交通相關專業學者發表論文,或作畢業設計時進行實驗模擬。
該 資源爲北京大學軟件實現技術課程(微軟精品課程)的研究項目,上傳的是release運行版本,未附加代碼。
若是您下載下來並運行程序,給出意見 或建議,便可免費得到源碼。
同時請您保證該源碼只用於學術研究,不用於任何商業用途。
您能夠直接在資源評論中發表意見或建議並留下您的 email地址,也能夠發送意見或建議到如下郵箱索要實現代碼:
pku_smartcity@163.com
北京大學SmartCity團隊感謝您的關注!
 
距Alpha版本發佈已經將近兩個星期了,在這兩個星期的時間裏,咱們不斷地從組內和用戶那裏獲得針對產品的改進意見和建議,在這裏,咱們要感 謝那些給過咱們批評和鼓勵的人們。正是有了這些意見和建議,咱們對Alpha版本進行了一系列改進,今天,Beta版本終於發佈了...
 
Beta版中的改進有:
 
1 VIP車輛:針對實際狀況中警車、救護車、消防車的讓道問題
 
2 改進了車輛碰撞檢測算法,流暢運行3000輛
 
3 實現了簡單的調度算法
   a 按照相位輪詢
   b 按照相位權重分配時間
   c 按照相位車輛分配時間
 
Beta版本發佈方式
新聞投遞 CnBeta 等待審覈

延伸閱讀: