研發(fā)執(zhí)行過程注意事項(xiàng)
為了規(guī)范研發(fā)過程,提高研發(fā)交付物的質(zhì)量,保證需求、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試的完整鏈路可追蹤,保障生產(chǎn)部署的正確性、可靠性、實(shí)時(shí)性以及自動(dòng)化程度,對(duì)研發(fā)過程及產(chǎn)出物作以下要求:
需求階段
需求階段應(yīng)進(jìn)行充分需求溝通,給出明確的需求集合、準(zhǔn)確的需求描述并文檔化;應(yīng)關(guān)注諸多非功能性需求或達(dá)成共識(shí);應(yīng)當(dāng)給出需求優(yōu)先級(jí)及驗(yàn)收標(biāo)準(zhǔn)(包括但不限于UI風(fēng)格標(biāo)準(zhǔn)、界面交互標(biāo)準(zhǔn)、功能性標(biāo)準(zhǔn)、性能標(biāo)準(zhǔn))。
應(yīng)規(guī)范需求變更并將變更文檔化,階段性分析變更原因,持續(xù)優(yōu)化需求過程以降低變更頻率、減小變更范圍。
設(shè)計(jì)階段
應(yīng)進(jìn)行需求與設(shè)計(jì)的分離和邊界界定,以明確區(qū)分需求變更與設(shè)計(jì)變更,尤其是系統(tǒng)間接口、交互方式變更。
關(guān)鍵系統(tǒng)架構(gòu)、接口、流程、數(shù)據(jù)模型、系統(tǒng)間交互應(yīng)進(jìn)行完整描述并文檔化:
- 系統(tǒng)架構(gòu)設(shè)計(jì)應(yīng)清晰描述系統(tǒng)整體架構(gòu)、模塊劃分、交互、與外圍系統(tǒng)的關(guān)系及交互,系統(tǒng)部署拓?fù)鋺?yīng)與架構(gòu)設(shè)計(jì)保持一致;
- 接口變化應(yīng)拋出進(jìn)行討論、設(shè)計(jì)不合理部分也應(yīng)拋出由小組討論達(dá)成一致,接口設(shè)計(jì)應(yīng)由上下游評(píng)審并形成紀(jì)要;評(píng)審后接口變更及時(shí)與上線游溝通;
- 數(shù)據(jù)模型定義應(yīng)有一致的風(fēng)格和行為習(xí)慣,應(yīng)保證不同表之間的一致性;邏輯模型應(yīng)與研發(fā)過程中的物理模型保持一致;數(shù)據(jù)模型變更應(yīng)告知研發(fā)小組成員;數(shù)據(jù)模型應(yīng)腳本化維護(hù)并進(jìn)行版本管理;
研發(fā)階段
研發(fā)階段與測(cè)試階段同步進(jìn)行,研發(fā)與測(cè)試人員應(yīng)同步與PO確認(rèn)需求。
- 研發(fā)給出接口定義、數(shù)據(jù)模型定義并將關(guān)鍵部分拋出討論確認(rèn);
- 測(cè)試給出測(cè)試方案、思維導(dǎo)圖并于PO、研發(fā)確認(rèn)溝通;
- 若設(shè)計(jì)與開發(fā)為不同成員,則設(shè)計(jì)人員也應(yīng)參與討論;開發(fā)與設(shè)計(jì)人員需做好充分溝通以防出現(xiàn)遺漏、偏差等;
開發(fā)
開發(fā)前務(wù)必獲取最新代碼、提交前務(wù)必獲取最新代碼并解決沖突,代碼提交應(yīng)遵循敏捷管理要求。
開發(fā)過程中應(yīng)關(guān)心代碼結(jié)構(gòu)和效率:實(shí)現(xiàn)應(yīng)盡量簡(jiǎn)單;避免頻繁或大規(guī)模數(shù)據(jù)庫(kù)操作;避免冗長(zhǎng)及高耦合性代碼。
開發(fā)完整功能提交后應(yīng)關(guān)注編譯部署是否成功,及時(shí)通知測(cè)試并關(guān)閉相應(yīng)task。
配置、數(shù)據(jù)庫(kù)腳本、部署腳本應(yīng)與開發(fā)代碼同步提交,并滿足下述要求。
配置要求
配置項(xiàng)增加調(diào)整應(yīng)同步修改開發(fā)、測(cè)試、集成、生產(chǎn)等環(huán)境,具體配置值可以留空。
數(shù)據(jù)庫(kù)腳本要求
數(shù)據(jù)庫(kù)(變更)應(yīng)采用腳本維護(hù)并通過svn進(jìn)行版本管理,集成環(huán)境發(fā)布一定要使用腳本進(jìn)行。腳本應(yīng)滿足以下要求:
- 變更前數(shù)據(jù)備份
- 可重入
- 變更后正確性驗(yàn)證
- 升級(jí)失敗后的恢復(fù)機(jī)制
- 規(guī)避腳本對(duì)執(zhí)行環(huán)境的依賴(防止目標(biāo)機(jī)上腳本執(zhí)行失?。?/li>
部署腳本要求
開發(fā)、測(cè)試環(huán)境應(yīng)通過Jenkins直接部署;集成、生產(chǎn)環(huán)境應(yīng)通過部署腳本部署,腳本應(yīng)通過svn進(jìn)行版本管理,部署腳本應(yīng)滿足如下要求:
- 腳本可重復(fù)執(zhí)行
- 提供標(biāo)準(zhǔn)命名腳本:deploy.sh、start.sh、restart.sh
- 部署包在不同環(huán)境的發(fā)布不應(yīng)該對(duì)腳本內(nèi)容進(jìn)行修改,環(huán)境變量參數(shù)化
- 完全自動(dòng)化,不應(yīng)出現(xiàn)手動(dòng)文件移動(dòng)等人為操作
- 執(zhí)行結(jié)果自檢
測(cè)試
- 測(cè)試應(yīng)關(guān)注需求變更,并負(fù)責(zé)需求變更的記錄;
- 測(cè)試應(yīng)繪制思維導(dǎo)圖并于需求映射以提供完整的需求及驗(yàn)證視圖,思維導(dǎo)圖應(yīng)與需求同步修改。
- 自動(dòng)化測(cè)試腳本應(yīng)可重入、不依賴系統(tǒng)數(shù)據(jù)、不影響系統(tǒng)數(shù)據(jù);
- 自動(dòng)化測(cè)試腳本應(yīng)與思維導(dǎo)圖對(duì)應(yīng),并最終映射到原始需求;
- 測(cè)試人員應(yīng)保持獨(dú)立性,完整記錄系統(tǒng)缺陷、未實(shí)現(xiàn)功能、無法測(cè)試功能等;
延伸
DevOps標(biāo)準(zhǔn)實(shí)踐
代碼提交->review->構(gòu)建->自動(dòng)化測(cè)試->自動(dòng)發(fā)布(發(fā)布策略)
集成&生產(chǎn)環(huán)境下多系統(tǒng)級(jí)聯(lián)構(gòu)建、依賴發(fā)布
前期
立項(xiàng)
需求分析&設(shè)計(jì)
資源準(zhǔn)備
人員
外圍資源及系統(tǒng)
1、前期工作
2、
工作量評(píng)估
軟件工作量評(píng)估方法:http://www.cnblogs.com/yzbt/p/5266759.html
story point 評(píng)估法
敏捷估算方法,比較主觀
功能點(diǎn)分析方法
CMMI標(biāo)準(zhǔn)采用
工具無關(guān)、項(xiàng)目無關(guān)
僅適用于功能性需求工作量評(píng)估
適用于管理系統(tǒng)、業(yè)務(wù)系統(tǒng)等傳統(tǒng)領(lǐng)域研發(fā),不適合創(chuàng)意型產(chǎn)品、非功能需求為主產(chǎn)品(如平臺(tái)、框架)、包含復(fù)雜算法和核心技術(shù)產(chǎn)品
基于功能點(diǎn)(FP)的工作量估算,是從用戶的角度來度量軟件。進(jìn)行工作量估算時(shí),先估計(jì)出軟件項(xiàng)目的功能點(diǎn)數(shù),然后將功能點(diǎn)數(shù)(FP)轉(zhuǎn)換為人天數(shù)。其中,估算功能點(diǎn)數(shù)的主要方法有3種:IFPUG法、MarkⅡ法、COSMIC FFP法。這三種方法現(xiàn)在都已經(jīng)成為國(guó)際標(biāo)準(zhǔn),并有詳細(xì)的操作手冊(cè)。
將功能點(diǎn)(FP)轉(zhuǎn)換成人天數(shù)主要有2種方法。
1)生產(chǎn)率法:要求有開發(fā)商每人天開發(fā)的功能點(diǎn)數(shù),估算出功能點(diǎn)數(shù)后,直接利用功能點(diǎn)數(shù)÷功能點(diǎn)/天,即得工作量人天數(shù)。對(duì)于開發(fā)商每人天開發(fā)的功能點(diǎn)數(shù),SPR有統(tǒng)計(jì),中國(guó)的值大約在5.5個(gè)功能點(diǎn)/人月。
2)經(jīng)驗(yàn)?zāi)P头?br>
可以依照本企業(yè)的歷史數(shù)據(jù)得到關(guān)于功能點(diǎn)和工作量的統(tǒng)計(jì)方程;也可以采用已有的經(jīng)驗(yàn)?zāi)P停纾篊OCOMOⅡ模型
分類
數(shù)據(jù)
- ILF:Internal Logical File內(nèi)部邏輯文件
可以理解為業(yè)務(wù)對(duì)象,對(duì)應(yīng)多個(gè)數(shù)據(jù)表 - EIF: External Interface File外部接口文件
其它應(yīng)用系統(tǒng)提供的接口數(shù)據(jù)
操作/邏輯 - EI: External Input外部輸入
對(duì)應(yīng)表單提交等 - EO: External Output外部輸出
僅僅輸出,如導(dǎo)出、報(bào)表、打印等 - EQ: External Inquiry外部查詢
先要輸入,根據(jù)輸入計(jì)算輸出
數(shù)據(jù)和操作應(yīng)分開計(jì)算
調(diào)整因子
實(shí)際評(píng)估非功能性需求對(duì)工作量的影響,已整體調(diào)整因子的形式使用
代碼行估算
基于代碼行(SLOC)的工作量估算,是從開發(fā)者的技術(shù)角度出發(fā)來度量軟件。代碼行數(shù)是軟件開發(fā)者最早進(jìn)行規(guī)模測(cè)量的主要方法。進(jìn)行工作量估算時(shí),先采用WBS法、類比法等統(tǒng)計(jì)出軟件項(xiàng)目的代碼行數(shù),然后將代碼行數(shù)轉(zhuǎn)換為人天數(shù)。其中,將代碼行(SLOC)轉(zhuǎn)換成人天數(shù)主要有2種方法。
(1)生產(chǎn)率方法:要求有開發(fā)商每人天開發(fā)的代碼行數(shù),估算出代碼行數(shù)后,直接利用代碼行數(shù)÷SLOC/人天,即得工作量人天數(shù)。
(2)參數(shù)模型法:利用模型,將代碼行數(shù)轉(zhuǎn)換成人天數(shù)。
常見的模型有:
Putnam模型
Putnam1978 年提出的一種動(dòng)態(tài)多變量模型。估算工作量的公式是:K = L3/(Ck3*td^4)
其中:L 代表源代碼行數(shù)(以行計(jì)),K代表整個(gè)開發(fā)過程所花費(fèi)的工作量(以人年計(jì)),td 表示開發(fā)持續(xù)時(shí)間(以年計(jì)),Ck表示技術(shù)狀態(tài)常數(shù),它反映“妨礙開發(fā)進(jìn)展的限制”,取值因開發(fā)環(huán)境而異。
COCOMOⅡ模型
COCOMOⅡ模型指出,軟件開發(fā)工作量與軟件規(guī)模呈指數(shù)關(guān)系,并且工作量受16個(gè)成本驅(qū)動(dòng)因子的影響。COCOMO Ⅱ的計(jì)算步驟如下:
1)估算軟件規(guī)模Size,這里以千代碼行(KSLOC)計(jì)。
2)評(píng)估比例因子SF,求指數(shù)E。
3)求成本驅(qū)動(dòng)因子值EMi。求標(biāo)稱進(jìn)度工作量PM:
IBM模型
IBM模型是1977年IBM公司的Walston和Felix提出的。其中估算工作量的公式如下:E=5.2×L^0.91 ,L是源代碼行數(shù)(以千行計(jì)),E是工作量(以人月計(jì))
專家法估算
即組織專家對(duì)任務(wù)/拆分后的子任務(wù)進(jìn)行規(guī)模評(píng)估,最終得到多數(shù)認(rèn)可的軟件規(guī)模。
- 每位專家提出3個(gè)規(guī)模的估計(jì)值:最小值ai、最大可能值mi、最大值bi
- 組織者整理,計(jì)算每位專家的平均值Ei = ( ai +4 mi + bi )/6 ;計(jì)算期望值:E = (E1+……+En)/n
- 綜合結(jié)果后,再次填寫表格,比較估算偏差,找出原因
- 重復(fù)多次,最終獲得一個(gè)多數(shù)認(rèn)可的軟件規(guī)模
WBS估算法
WBS:work breakdown structure
適合瀑布模型,在敏捷的迭代中也可使用;更多取其思想
拆分后任務(wù)工作量可采用專家評(píng)估法進(jìn)行
1)尋找類似的歷史項(xiàng)目,進(jìn)行項(xiàng)目的類比分析,根據(jù)歷史項(xiàng)目的工作量憑經(jīng)驗(yàn)估計(jì)本項(xiàng)目的總工作量;
2)進(jìn)行WBS分解,力所能及地將整個(gè)項(xiàng)目的任務(wù)進(jìn)行分解;
3)參考類似項(xiàng)目的數(shù)據(jù),采用類比法或?qū)<曳?,估?jì)WBS中每類活動(dòng)的工作量;
4)匯總得到項(xiàng)目的總工作量;
5)與第1)步的結(jié)果進(jìn)行印證分析,根據(jù)分析結(jié)果,確定估計(jì)結(jié)果。
非功能性需求
SNAP:Software Non-functional Assessment Process
APM:Assessment Practices Manual
http://www.ifpug.org/about-ifpug/about-function-point-analysis/