嵌入式系统开发项目管理
項目生命周期五大階段
1、項目啟動階段
(1)項目可行性分析
一個成功的產(chǎn)品,應(yīng)該從以下3個方面來觀察評估:
-
設(shè)計產(chǎn)品:商業(yè)行為
產(chǎn)品設(shè)計前,要做好市場調(diào)查和評估,要考慮產(chǎn)品的時效性、市場需求和技術(shù)可行性;
產(chǎn)品設(shè)計結(jié)束后要寫下詳細(xì)的產(chǎn)品規(guī)格(技術(shù)層次、人力資源、開發(fā)費用、產(chǎn)品成本)
盡量避免中途更改產(chǎn)品規(guī)格;
凡事以最終用戶需求或體驗為準(zhǔn)。
-
管理項目:管理行為
- 項目經(jīng)理必須清楚了解其任務(wù)事在規(guī)定的期限內(nèi)完成質(zhì)量可接受的產(chǎn)品開發(fā),在此前提下必須衡量人力及其它相關(guān)資源,只做該做的事,能夠因時制宜。
-
開發(fā)系統(tǒng):技術(shù)行為
不要追求完美,只需達(dá)到在規(guī)定的時限,有限的資源條件下,設(shè)計開發(fā)出“足夠好”的滿足需求的產(chǎn)品就好。
設(shè)計工作一定要確實執(zhí)行,絕對要文件化。不能為了敢進(jìn)度而跳過設(shè)計直接進(jìn)行程序編寫。
需求管理者確定 ——> 需求分析&Review ——> 項目規(guī)模估算 ——> 項目風(fēng)險分析 ——> 初步項目執(zhí)行計劃&Review
(2)項目授權(quán)書
明確說明項目目標(biāo)與管理方向
明確對授權(quán)PM
任何與項目有關(guān)的信息
(3)理清必要的約束
確認(rèn)產(chǎn)品規(guī)格(成本/性能/質(zhì)量/。。。需求)
確認(rèn)產(chǎn)品限制
初步確認(rèn)將參與項目的公司與單位
確認(rèn)開發(fā)模式(S/W Development Life Cycle)
Waterfall Model
Prototype Model(初期需求不明確)
Spiral Model(Waterfall + Prototype的多次迭代)
。。。
2、項目規(guī)劃階段
初期規(guī)劃:是否該接這個項目?
沒規(guī)劃,一定掛!在確定接項目前,一定要做過極為仔細(xì)的分析。
完成不可能的任務(wù)!因為客戶交付的項目肯定不會太簡單。
(1)Scope/Time/Cost/Quality Plan
(2)Resource/Communication Plan
(3)Risk Plan
(4)Configuration Plan
(1)項目范圍(Scope)管理
妥協(xié)的藝術(shù):進(jìn)度 VS 規(guī)格
質(zhì)能守衡原則,如果客戶一再壓縮進(jìn)度,那只能降低規(guī)格;若客戶一再變更規(guī)格,那只能delay進(jìn)度。
當(dāng)項目啟動后,首先就是要花時間做好項目的范圍管理(哪些該做,哪些不該做),唯有定義出正確的范圍,之后做的進(jìn)度、成本和人力計劃才是有意義的。
項目管理工具——Work Breakdown Structure,WBS和變更管理
-
WBS
工作分解,其它項目計劃最重要的依據(jù)
-
分解的標(biāo)準(zhǔn):
按“功能組成”分解
按“項目生命周期”分解
按照“系統(tǒng)架構(gòu)”分解
WBS的最小分解單元(Work Package)要非常具體,至少拆分到一周或40HRs的工作量。
表述方式(樹狀圖+列表)
- image-20201110210209743
-
變更管理
所有的變更一定要經(jīng)過CCB(Change Control Board,變更管理委員會,即與此變更有關(guān)的關(guān)系人參與決策的會談)的同意,并造出新的計劃書,嚴(yán)禁接受客戶私下變更規(guī)格的請托。
- image-20201110211121028
(2)項目進(jìn)度(Time/Schedule)管理
時間與其他資源特性不同,它具有單向性、不可重復(fù)性、不可替代性。
-
規(guī)劃“進(jìn)度計劃”:
從WBS中取得所有的最小活動單元(樹狀圖中的葉節(jié)點leaf)
-
確認(rèn)各任務(wù)間的關(guān)系(持續(xù)時間、次序關(guān)系)
FS(Finish to Start):任務(wù)A結(jié)束后,任務(wù)B才可以開始;
FF(Finish to Finish):任務(wù)A結(jié)束后,任務(wù)B才可以結(jié)束;
SF(Start to Finish):任務(wù)A結(jié)束后,任務(wù)B才可以結(jié)束;
SS(Start to Start):任務(wù)A開始后,任務(wù)B才可以開始;
-
進(jìn)度管理圖表(Gantt圖+網(wǎng)絡(luò)圖)
甘特圖描述各任務(wù)的起訖時間,也可用來執(zhí)行“進(jìn)度追蹤”;
網(wǎng)絡(luò)圖描述各任務(wù)間的先后關(guān)系(節(jié)點代表任務(wù),箭頭指示任務(wù)次序,箭頭邊的數(shù)字代表所需時間),用來找到關(guān)鍵路徑CPM(圖中用時最長的路徑),唯有縮短關(guān)鍵路徑上任務(wù)的時間,才能縮短整個項目的周期。
-
管理預(yù)留
為整個項目預(yù)留時間(一般是整個項目周期的10-15%),不到不得已,不要拿出來用。
根據(jù)帕金森定律,不論你給員工多少時間,他總傾向于用完分配給他的時間。
-
需知道的原則
進(jìn)度計劃是用來遵守而不是修改的。當(dāng)延遲發(fā)生時,PM和主管應(yīng)該積極設(shè)法解決問題并設(shè)法趕上進(jìn)度,而不是修改進(jìn)度。
規(guī)劃進(jìn)度表時,應(yīng)該由粗到細(xì),協(xié)調(diào)并整合各單位的意見,切記閉門造車。
進(jìn)度與成本呈反比。
WBS分解的好壞直接影響項目進(jìn)度計劃
執(zhí)行時期必須不斷檢查項目計劃與實際進(jìn)度是否存在偏差,并及時追蹤和處理。
(3)項目成本(Cost)管理
軟件系統(tǒng)的項目成本預(yù)估永遠(yuǎn)不會很精確,只能依靠經(jīng)驗或業(yè)界共識來提高精度。
項目是商業(yè)行為,開發(fā)出一件不賺錢的產(chǎn)品不如不開發(fā)。一切要為成本讓步。
-
成本的幾個主要來源:
管理成本
硬件/結(jié)構(gòu)設(shè)計成本
生產(chǎn)&材料成本
軟件開發(fā)成本(代碼行、函數(shù)點、人月。。。)
COCOMO模型估算成本
- image-20201110225129815
-
成本估算誤差來源:
基礎(chǔ)數(shù)據(jù)不足,項目仍存在許多不定因素
項目成本對需求敏感
經(jīng)驗不足或低劣的成本估算技術(shù)
簽約前后不連貫
只有等WBS做出來后,且工作被分割的越細(xì),估算才能最接近實際。但往往實際工作做不可能等你做完WBS才報價。推薦《人月神話:軟件項目管理之道》。在嵌入式軟件項目中人力成本是總成本最主要的部分;
-
掙值管理
主要用于項目成本和進(jìn)度的監(jiān)控,它將目前為止所完成的工作與項目計劃里的估計值比較,以提供關(guān)于項目距離完成還有多遠(yuǎn)的估量,PM可以得到距離項目完成還需花費多少資源。
(4)項目質(zhì)量(Quality)管理
-
基本思想
質(zhì)量是規(guī)劃出來的,而不是檢查出來的,預(yù)防重于治療,要在規(guī)劃階段就做好“質(zhì)量計劃”,并明文公布;可以先粗線條定下baseline,再制定細(xì)則。
項目質(zhì)量是所有開發(fā)人員工作質(zhì)量之積;
質(zhì)量管理并非一次性活動,而是貫穿整項目生命周期;
質(zhì)量等級是相對的,以客戶需求和價格而定;
質(zhì)量管理是一種精神,并非通過ISO9000或CMM就能做出有質(zhì)量的產(chǎn)品。
質(zhì)量管理系統(tǒng):ISO9000或CMMI
- CMM的5級管理體系
-
QA(Quality Assurance)
專注在流程的正確性上,是一種管理職能。QA的主要目的就是確保產(chǎn)品在既定進(jìn)度與預(yù)算下,能達(dá)成預(yù)期質(zhì)量水平與可靠度目標(biāo)。QA的工具就是稽核(Audit),從計劃擬定、模塊設(shè)計、Code Review、測試計劃、生產(chǎn)流程、備料計劃等各階段都要進(jìn)行稽核。規(guī)劃階段的工作產(chǎn)品是制定質(zhì)量規(guī)劃書,明確項目采用的質(zhì)量標(biāo)準(zhǔn),確定如何滿足該標(biāo)準(zhǔn)的要求。特別是:
完成了某個里程碑
提出了變更要求
項目即將進(jìn)入下階段時
-
QC(Quality Control)
專注在流程bug的查找和追蹤上,是一種檢查職能。QC必須確定項目結(jié)果與質(zhì)量標(biāo)準(zhǔn)是否相符,同時查找不符的原因(bug)和跟蹤是否妥善解決(每個bug的處理流程都必須記錄下來)。規(guī)劃階段的工作產(chǎn)品是制定測試計劃。
質(zhì)量規(guī)劃流程圖
(5)項目人力資源(Human Resource)管理
人員的組織管理是否得當(dāng),是影響軟件項目的決定性因素。
MS有一個明確的規(guī)則——項目組的人員不要超過10人。
-
組織結(jié)構(gòu):
職能型組織(組織與項目利益可能沖突)
項目型組織(資源重復(fù),無法貫徹公司策略)
矩陣型組織(職能或部門經(jīng)理與項目經(jīng)理的沖突)
強(qiáng)矩陣組織
- 矩陣式組織圖
-
團(tuán)隊管理
創(chuàng)建由實際存在感的項目團(tuán)隊
建立獎勵機(jī)制
確立良好的人際關(guān)系
設(shè)定工作授權(quán)系統(tǒng)
激勵理論:因才適所、投其所好
(6)項目溝通(Communication)管理
管理中70%的錯誤是因為不善于溝通造成的,PM 80%以上的時間是用在溝通上。
-
溝通計劃:
溝通需求:哪些人、哪些時候、需要哪些需求?
溝通內(nèi)容:溝通的格式、內(nèi)容、詳細(xì)程度等
溝通方法:明確溝通方式與溝通管道(會議、bug管理軟件、工作報告)
溝通職責(zé):誰發(fā)送消息,誰接收消息
溝通安排:在項目計劃中必須包含重要溝通事件的Schedule。(例如review meeting)
溝通渠道計算:若項目中有N個人,那么需要建立N(N-1)/2條溝通渠道,相當(dāng)于溝通成本就很高。
(7)項目風(fēng)險(Risk)管理
-
Risk三要素:
是某個事件
有發(fā)生的概率
會對項目造成一定的影響
風(fēng)險管理最容易被忽略也是最難以管理的
-
風(fēng)險管理流程(循環(huán)往復(fù)):
-
風(fēng)險識別:列出風(fēng)險列表
項目缺乏可見度
新技術(shù)的吸引力
技術(shù)兼容性風(fēng)險
性能風(fēng)險:增加執(zhí)行設(shè)計階段的力度、制作原型(Prototype)等
倉促上線風(fēng)險
可用性問題
缺料、零件漲價
合約風(fēng)險:同法務(wù)詳細(xì)檢查合約內(nèi)容
需求變更風(fēng)險:提前以書面形式約定好變更處理流程
溝通不良風(fēng)險:項目溝通計劃制定與公布
缺乏高層支持風(fēng)險
進(jìn)度風(fēng)險:若Schedule無法調(diào)整,則盡量多獲取資源與預(yù)算,或者分階段交付產(chǎn)品。
質(zhì)量風(fēng)險:慎重制定項目質(zhì)量策略,成立質(zhì)控小組。
團(tuán)隊成員能力風(fēng)險:提前培訓(xùn)或變更成員。
團(tuán)隊合作風(fēng)險:目標(biāo)明確,績效制度公平。
人員流動風(fēng)險:核心工作分派給多人執(zhí)行。
協(xié)助廠商風(fēng)險:合作前即制定審核稽核與驗收流程。
-
風(fēng)險評估
-
定性分析
列出概率/嚴(yán)重性矩陣
對項目的薄弱環(huán)節(jié)有一定的了解
定量分析:基于定性分析成果的數(shù)學(xué)處理與表達(dá)
列出風(fēng)險排行榜(概率 X 嚴(yán)重性)
-
-
風(fēng)險規(guī)劃(處理)
回避風(fēng)險:主動放棄或拒絕使用導(dǎo)致風(fēng)險的方案,尋找替代方案
轉(zhuǎn)移風(fēng)險:將風(fēng)險轉(zhuǎn)移給外包公司
損失控制:減緩風(fēng)險發(fā)生時的危害程度
承擔(dān)風(fēng)險:對發(fā)生概率低或影響小的風(fēng)險,可選擇先不處理
風(fēng)險控制
-
(8)項目采購/合約管理
軟件外包:實際比自身開發(fā)的凈投資多15%至20%
-
外包項目的管理比自己開發(fā)更復(fù)雜:
技術(shù)難度
溝通復(fù)雜度
外包成本
-
外包項目注意事項:
溝通問題
做好詳細(xì)計劃
避免延誤
明確驗收標(biāo)準(zhǔn)(軟件規(guī)格與API。。。)
(9)項目配置(Configuration)管理
貫徹開發(fā)的全過程,目的是用于建立和維護(hù)產(chǎn)品的完整性和可追溯性
對應(yīng)軟件開發(fā)項目中成熟的版本控制流程
-
軟件配置管理——簡單說就是項目資產(chǎn)管理,對開發(fā)過程中的產(chǎn)品進(jìn)行標(biāo)識、追蹤、控制的過程,包括:
項目的全貌,包含產(chǎn)品規(guī)格與設(shè)計規(guī)格。
項目原始的計劃,以及項目運行期間所有曾做過的變更。
設(shè)計階段的任何重大轉(zhuǎn)折點、與項目運行期間技術(shù)上的重大突破。
軟件開發(fā)期間曾遇到哪些問題,解決的方式是什么?對應(yīng)的程序代碼是什么?
重要軟件版本或項目里程碑所代表的意義,以及該事件點項目狀況的快照
硬件設(shè)計與生產(chǎn)階段的問題履歷即解決方式。
3、項目執(zhí)行/控制階段
軟件工程與項目管理如何配合執(zhí)行?
- image-20201114130434239
軟件工程包含三個循環(huán)過程:
開發(fā)過程定義:包含軟件需求、軟件開發(fā)過程、軟件配置管理SCM
軟件開發(fā):包含軟件設(shè)計、軟件構(gòu)建、測試、維護(hù)和更新
軟件質(zhì)量保證:軟件質(zhì)量
項目管理過程包含三個循環(huán)過程:
項目規(guī)劃
項目實施
項目監(jiān)控
(1)產(chǎn)品規(guī)格設(shè)計
產(chǎn)品規(guī)格寫完,最后必須再讓客戶確認(rèn)一次并簽字!以后所有設(shè)計工作必須以此為模板。一旦客戶要將新的需求變成“規(guī)格”,必須改動已通過審查的正式文件,而這要經(jīng)過質(zhì)量管理體系的同意。
一般來說產(chǎn)品規(guī)格包含以下方面:
硬件規(guī)格簡介
產(chǎn)品設(shè)計理念、限制與應(yīng)用范圍
使用者功能說明書
操作流程圖
使用者界面與美工圖案
性能規(guī)定
特殊注意事項
(2)硬件設(shè)計
硬件設(shè)計階段的工作如下,除了外觀與結(jié)構(gòu)設(shè)計外,固件工程師應(yīng)盡量參與:
CPU選擇
主要芯片選擇
電路設(shè)計
Layout
零件、物料管理
產(chǎn)品外形設(shè)計
結(jié)構(gòu)設(shè)計
開模前的模型制作
在此階段輸出的文件有:
硬件設(shè)計規(guī)格書
BOM表
3D外觀圖
結(jié)構(gòu)圖
原理圖
Layout圖
(3)系統(tǒng)設(shè)計
根據(jù)項目大小或硬件環(huán)境,選擇合適的設(shè)計方法。如果是CPU主頻僅有幾十M,且內(nèi)存又很小,建議選擇結(jié)構(gòu)化方法設(shè)計,并選擇C語言進(jìn)行開發(fā)。如果項目較大,CPU主頻幾百M,且存儲資源豐富,則選擇面向?qū)ο蠓椒?#xff0c;語言上可選擇C++或Java語言。
(4)測試計劃設(shè)計
軟件測試也有標(biāo)準(zhǔn),IEEE 829詳細(xì)描述了測試計劃書的規(guī)定與注意事項,但實際情況是,要按照項目本身特點,傳承該標(biāo)準(zhǔn)的思想和精神。在測試前,需要著重了解較復(fù)雜的功能、新功能、客戶特殊的要求或規(guī)格書中描述較模糊的地帶,然后才設(shè)計測試個案testing case和計劃。
(5)風(fēng)險評估
最普遍的風(fēng)險有以下幾個:
進(jìn)度拖延
需求膨脹
人員流失
規(guī)格崩潰
績效低落
技術(shù)落差
文化差異
軟硬件整合
生產(chǎn)制造問題
風(fēng)險識別流程:
風(fēng)險識別流程圖面對風(fēng)險的4種處理方法:
回避:不去碰觸會產(chǎn)生風(fēng)險的部分
抑制:準(zhǔn)備足夠的時間與金錢,在風(fēng)險成型時砸下去
舒緩:在風(fēng)險成型前,就先采取某些措施
逃避:什么都不做,祈求老天保佑
(6)動手編碼前先寫設(shè)計文件
從項目開始就應(yīng)該準(zhǔn)備一個服務(wù)器存放并管理項目的所有文件,并讓所有項目成員都可以很容易取得所需的文件或記錄。
應(yīng)該被記錄的文件包含:
產(chǎn)品規(guī)格
schedule
硬件設(shè)計相關(guān)文件(CPU PIN腳配置圖、原理圖、Layout圖等)
技術(shù)文件-芯片的datasheet、3rd party軟件函式庫的API等
系統(tǒng)架構(gòu)設(shè)計規(guī)格書(包含各模塊API)
測試計劃書
測試報告及bug sheets
質(zhì)量文件
重要會議記錄
重要郵件備份
其它需要記錄的文檔
(7)設(shè)計審查(design review)
設(shè)計審查的原則:
設(shè)計審查必須師漸進(jìn)式的。且要貫穿設(shè)計的全過程
設(shè)計審查時要邀請該設(shè)計的客戶參加
越是大范圍的設(shè)計,越要召集所有項目人員參加。
(8)實作階段
當(dāng)所有設(shè)計文件都通過審查后,就可以進(jìn)入實作階段了。其包含以下內(nèi)容:
程序開發(fā)與調(diào)試
硬件(電子、結(jié)構(gòu))開發(fā)
軟件與硬件測試
質(zhì)量相同執(zhí)行
工廠試產(chǎn)
項目的每一個階段都應(yīng)該根據(jù)PDCA(Plan、Do、Chick、Act)循環(huán)。當(dāng)在程序編寫時發(fā)現(xiàn)設(shè)計有問題,切不可自行修改,必須暫時局部停下實作的腳步,找出對策,確認(rèn)影響范圍,通過相關(guān)單位的設(shè)計審查后,才可以再繼續(xù)實作。也即就是“設(shè)計變更”流程
嵌入式相同開發(fā)的成果最終要產(chǎn)品化,所以不可避免要和工廠打交道。
-
軟件工程師必須交付給工廠的項目有:
用來燒錄的Binary File
生產(chǎn)線專用自動測試程序與說明書
環(huán)境測試專用的測試程序
-
硬件、電子工程師必須交付給工廠的項目為:
電子電路
電氣工程規(guī)格
特殊規(guī)格測試說明(工廠之前沒生產(chǎn)過的功能)
-
結(jié)構(gòu)工程師必須交付給工廠的項目為:
組合圖(把所有零件一一展開)
特殊部品外形圖
特殊加工組合圖
4、項目結(jié)項階段
(1)對外合約結(jié)項
(2)對內(nèi)項目結(jié)項
項目資料歸檔
技術(shù)數(shù)據(jù)歸檔
記錄經(jīng)驗,累計企業(yè)的項目資產(chǎn)
close meeting,人員解散
在項目執(zhí)行期間,制定流程,并使用自動化工具,將項目開發(fā)的軌跡(包含程序、文件、bug管理、issue管理、變更管理等)記錄下來,并定期備份。
明確規(guī)定執(zhí)行項目結(jié)項流程的起訖時間,最好不超過一周,并于項目成員的部門主管以及現(xiàn)任的項目經(jīng)理溝通與協(xié)調(diào),請這些同事們在某段時間內(nèi)幫這個項目最后的忙。
總結(jié)
以上是生活随笔為你收集整理的嵌入式系统开发项目管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。