CMMI3 PA之技術(shù)解決方案(TS) 過程域解釋和實(shí)施指南
項(xiàng)目工期緊,常常成為很多事情的理由。因?yàn)橼s時(shí)間,拿到需求后,不考慮哪種設(shè)計(jì)方案更合適,想到什么辦法就用什么辦法來做,甚至是沒有設(shè)計(jì)可言,直接編碼,寫設(shè)計(jì)文檔變成了浪費(fèi)時(shí)間的一個事情。不少人進(jìn)行設(shè)計(jì)的時(shí)候,眼光都放得不夠開,不知道公司提供了很多可重用的代碼,直接自己編碼實(shí)現(xiàn)數(shù)據(jù)操作、日志處理、權(quán)限認(rèn)證等事情,結(jié)果浪費(fèi)了時(shí)間,而且還不能保證自己的代碼是沒有問題的。很多公司的代碼都是經(jīng)過嚴(yán)格測試的,設(shè)計(jì)架構(gòu)良好的,可直接使用或者稍加修改則可以為自己所用。
概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)的設(shè)計(jì)準(zhǔn)則和規(guī)范要考慮增加復(fù)用和可擴(kuò)展性;要提高效率和質(zhì)量,考慮復(fù)用以提高生產(chǎn)率。
不知道您的工作中,在設(shè)計(jì)方面是否有這樣的一些問題:
1)無設(shè)計(jì)文檔
2)有設(shè)計(jì)文檔,但形同虛設(shè)
3)設(shè)計(jì)時(shí)沒有考慮可以重用以前項(xiàng)目或者第三方的代碼或組件
4)沒有用需求來驅(qū)動設(shè)計(jì)
5)設(shè)計(jì)沒有考慮多過一個的方案
6)沒有考慮清楚設(shè)計(jì)的原則和標(biāo)準(zhǔn)
7)設(shè)計(jì)的彈性不夠、架構(gòu)落后?
8)代碼與設(shè)計(jì)脫節(jié)?
9)到處都是面條式代碼
......
典型的大型項(xiàng)目的結(jié)構(gòu)化設(shè)計(jì)過程所需的設(shè)計(jì)階段:
1. 定義需求(需求定義)
2. 定義解決方案(系統(tǒng)規(guī)范)
3. 概念化的解決方案(系統(tǒng)概要設(shè)計(jì))
4. 劃分任務(wù)(產(chǎn)品說明)
5. 定義產(chǎn)品設(shè)計(jì)(產(chǎn)品概要設(shè)計(jì))
6. 將產(chǎn)品劃分為組件(組件規(guī)范)
7. 定義組件設(shè)計(jì)(組件概要設(shè)計(jì))
8. 將組件劃分為模塊(模塊規(guī)范)
9. 細(xì)化解決方案(模塊細(xì)化設(shè)計(jì))
10. 實(shí)施解決方案(模塊實(shí)施和測試)
技術(shù)解決方案這個PA,主要講述的是設(shè)計(jì)開發(fā)、實(shí)現(xiàn)方面的問題。在CMM中,對設(shè)計(jì)、開發(fā)、實(shí)現(xiàn)面的要求是比較簡單的。
技術(shù)解決方案(Technical Solution, TS) 的目的,為設(shè)計(jì)、開發(fā)及實(shí)現(xiàn)需求的解決方案。解決方案、設(shè)計(jì)結(jié)果及實(shí)現(xiàn)成品包括產(chǎn)品、產(chǎn)品組件,以及與產(chǎn)品相關(guān)生命周期的單一過程或適當(dāng)組合的過程。
提示:產(chǎn)品架構(gòu)、系統(tǒng)、子系統(tǒng)、性能、組件的解決方案,容易出現(xiàn)沒有記錄和文檔問題;
對于瀑布模型開發(fā)來說,系統(tǒng)或產(chǎn)品分解后,架構(gòu)不能經(jīng)常變;對于迭代模型開發(fā)來說,前一兩個迭代,系統(tǒng)或產(chǎn)品的架構(gòu)要確定;至于設(shè)計(jì),對新的產(chǎn)品或系統(tǒng),考慮如何設(shè)計(jì),對于舊的產(chǎn)品,考慮如何優(yōu)化設(shè)計(jì);
概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)的設(shè)計(jì)準(zhǔn)則和標(biāo)準(zhǔn)要描述和規(guī)范(基于提高復(fù)用性,可擴(kuò)展性;提高效率,質(zhì)量,考慮復(fù)用提高生產(chǎn)率。)設(shè)計(jì)準(zhǔn)則和標(biāo)準(zhǔn)選擇理由加以記錄;選擇的評估會議可以是非正式如周例會;
設(shè)計(jì)過程:分解到組件后,是自己做還是采購,考慮增加復(fù)用和可擴(kuò)展性;提高效率和質(zhì)量,考慮復(fù)用提高生產(chǎn)率。
特定目標(biāo)及實(shí)踐摘要
SG 1 選擇產(chǎn)品和產(chǎn)品組件解決方案
SP 1.1 開發(fā)備選解決方案及評選準(zhǔn)則
SP 1.2 選擇產(chǎn)品組件解決方案
SG 2 開發(fā)設(shè)計(jì):設(shè)計(jì)產(chǎn)品和產(chǎn)品組件
SP 2.1 設(shè)計(jì)產(chǎn)品或產(chǎn)品組件
SP 2.2 建立技術(shù)相關(guān)數(shù)據(jù)
SP 2.3 使用準(zhǔn)則設(shè)計(jì)接口
SP 2.4 執(zhí)行自制、購買或再用之分析
SG 3 實(shí)現(xiàn)產(chǎn)品設(shè)計(jì)
SP 3.1 實(shí)現(xiàn)設(shè)計(jì)
SP 3.2 建立產(chǎn)品支持文件
SG1: 選擇產(chǎn)品和產(chǎn)品組件解決方案:從候選方案中選擇產(chǎn)品或者產(chǎn)品組件的解決方案。
這個目標(biāo)的主要內(nèi)容就是制定選擇的標(biāo)準(zhǔn)(一般涉及成本、進(jìn)度、效益、風(fēng)險(xiǎn)、技術(shù)性能等),設(shè)計(jì)候選方案,針對產(chǎn)品規(guī)格,依據(jù)選擇標(biāo)準(zhǔn)從候選方案中選出合適的產(chǎn)品或產(chǎn)品組件解決方案。解決方案(有時(shí)稱為“設(shè)計(jì)方案”、“設(shè)計(jì)概念”或“初步設(shè)計(jì)”);初步設(shè)計(jì)或設(shè)計(jì)方案可能與產(chǎn)品需求和產(chǎn)品組件需求開發(fā)同步進(jìn)行并互動(在開發(fā)或獲取客戶需求之后)。
提示:產(chǎn)品架構(gòu)、系統(tǒng)、子系統(tǒng)、性能、組件的解決方案,容易出現(xiàn)沒有記錄和文檔問題;
SP1.1開發(fā)備選解決方案及評選準(zhǔn)則:開發(fā)詳細(xì)的候選方案及選擇的標(biāo)準(zhǔn)。
典型的工作產(chǎn)品
1.備選解決方案篩選準(zhǔn)則
2. 新技術(shù)的評估報(bào)告
3. 備選解決方案
4. 最終選擇的評選準(zhǔn)則
5. 對市場現(xiàn)有成品的評估報(bào)告
子實(shí)踐
1. 界定篩選準(zhǔn)則,以作為選擇備選解決方案的考慮因素
2.界定現(xiàn)有技術(shù)與具競爭優(yōu)勢的新產(chǎn)品技術(shù)
3.界定能滿足需求的備選現(xiàn)成品:供方
4. 產(chǎn)生備選方案
5. 取得每一備選解決方案的完整需求配置。
6. 開發(fā)選擇最佳備選解決方案的準(zhǔn)則
SP 1.2選擇產(chǎn)品組件解決方案:
選擇最符合要求的產(chǎn)品組件解決方案(設(shè)計(jì)方案)。針對每個產(chǎn)品組件描述操作概念、場景、環(huán)境、操作模式和操作狀態(tài)等選擇產(chǎn)品組件解決方案(設(shè)計(jì)方案)。
典型的工作產(chǎn)品
1. 產(chǎn)品組件選擇決策及理由
2. 需求及產(chǎn)品組件間相關(guān)性的記錄
3. 解決方案、評估及選擇理由的記錄
子實(shí)踐
1. 依據(jù)操作概念、操作方式及操作狀態(tài)所建立的評選準(zhǔn)則,評估各備選解決方案/解決方案組。針對每一個備選解決方案,開發(fā)產(chǎn)品操作及使用者互動的時(shí)序場景。
2. 依據(jù)備選解決方案的評估,評?評選準(zhǔn)則之適用性,必要時(shí),更新準(zhǔn)則。
3. 界定并解決與備選技術(shù)方案及需求有關(guān)的問題。
4. 選擇能滿足已建立之評選準(zhǔn)則的最佳解決方案。
5. 建立與所選擇之備選方案關(guān)聯(lián)的需求,此即為該產(chǎn)品組件的配置需求。
6. 界定將再用(重用)或取得的產(chǎn)品組件解決方案。
7. 建立并維護(hù)解決方案、評估及選擇理由的文件。維護(hù)選擇理由對后續(xù)決策十分重要,可以使后續(xù)干系人免于返工,也可在某些適用的應(yīng)用環(huán)境下,提供對技術(shù)應(yīng)用的深入見解。
SG1講述的是如何找出最合適的設(shè)計(jì)方案,我們很多開發(fā)人員,做編碼之前都不太喜歡認(rèn)真思考設(shè)計(jì)方案,迫于時(shí)間壓力,不仔細(xì)考慮設(shè)計(jì)方案是否合適,就直接開展工作,這樣做的風(fēng)險(xiǎn)是非常大的。
SP1.1講述的是先考慮好我們設(shè)計(jì)方案的選擇標(biāo)準(zhǔn),并找出可能的候選方案。SP1.2要求我們對產(chǎn)品的規(guī)格進(jìn)行詳細(xì)的表述,因?yàn)槲覀兊姆桨甘且獫M足這些規(guī)格的,也只有這樣,我們才能更好地找出合適的解決方案。根據(jù)選擇標(biāo)準(zhǔn)選出最佳方案。
有人可能有這樣的疑問,有些項(xiàng)目很簡單,或者設(shè)計(jì)方案很明確,沒有必要搞什么候選方案和選擇標(biāo)準(zhǔn),直接設(shè)計(jì)就可以了。設(shè)計(jì)方案除了針對整個項(xiàng)目的大的設(shè)計(jì)方案,還包括組成產(chǎn)品的各個組件的設(shè)計(jì)方案,絕大部分情況下,一個項(xiàng)目肯定會有部分地方技術(shù)不太明確需要仔細(xì)分析的。另外,不管怎樣,都應(yīng)該根據(jù)項(xiàng)目的實(shí)際情況,定出這個項(xiàng)目的設(shè)計(jì)標(biāo)準(zhǔn),就算只有一個方案,也需要用該設(shè)計(jì)標(biāo)準(zhǔn)來檢驗(yàn)該方案。大部分情況下,認(rèn)為不需要考慮多個設(shè)計(jì)方案、不考慮設(shè)計(jì)標(biāo)準(zhǔn),都是“懶惰”思想作怪,不做這樣的考慮,項(xiàng)目的風(fēng)險(xiǎn)是比較大的。
SG2: 開發(fā)設(shè)計(jì)
開發(fā)產(chǎn)品或者產(chǎn)品組件設(shè)計(jì)。最佳候選方案確定后,就可以開展具體的設(shè)計(jì)工作了。設(shè)計(jì)不僅是為了實(shí)現(xiàn),也是為了產(chǎn)品生命周期階段如修正、重新采購、維護(hù)、及安裝等。設(shè)計(jì)文件提供給相關(guān)的干系人,以方便對設(shè)計(jì)的相互了解提供參考,并在產(chǎn)品的開發(fā)與后續(xù)的生命周期階段設(shè)計(jì)上的改變。完整的設(shè)計(jì)描述,記錄與技術(shù)數(shù)據(jù)包內(nèi)。
SP2.1 設(shè)計(jì)產(chǎn)品或產(chǎn)品組件:開發(fā)產(chǎn)品或者產(chǎn)品組件的設(shè)計(jì)。產(chǎn)品設(shè)計(jì)一般包含兩個階段,在執(zhí)行上可能相互重疊:概要設(shè)計(jì)與詳細(xì)設(shè)計(jì)。
概要設(shè)計(jì)建立產(chǎn)品功能和框架,包含產(chǎn)品組成區(qū)塊、產(chǎn)品組件界定、系統(tǒng)狀態(tài)與模式、主要的內(nèi)外部接口和界面設(shè)計(jì)。常見的概要設(shè)計(jì)說明書問題有(功能模塊設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)包括邏輯設(shè)計(jì)和物理設(shè)計(jì)及安全性能設(shè)計(jì)、模塊接口和界面設(shè)計(jì)):軟件性能描述不具體;性能的解決方案沒有記錄和文檔;數(shù)據(jù)庫設(shè)計(jì)包括邏輯設(shè)計(jì)和物理設(shè)計(jì)及安全性能設(shè)計(jì)不具體等;
詳細(xì)設(shè)計(jì):完整定義產(chǎn)品組件的結(jié)構(gòu)和功能。詳細(xì)設(shè)計(jì)說明書是為編碼人員所寫,要詳細(xì)描述實(shí)現(xiàn)方法、算法;如是面向結(jié)構(gòu)或數(shù)據(jù)流方法,、數(shù)據(jù)結(jié)構(gòu)和處理流程(輸入、轉(zhuǎn)換、輸出數(shù)據(jù)流);如是面向?qū)ο蠓椒?,設(shè)計(jì)類的函數(shù)和成員變量,并明確對象之間的相互關(guān)系。常見問題是詳細(xì)設(shè)計(jì)說明書過于簡單,和概要設(shè)計(jì)一樣,接口(內(nèi)部和外部)設(shè)計(jì)不具體;
典型的工作產(chǎn)品
1. 產(chǎn)品架構(gòu)
2. 產(chǎn)品組件設(shè)計(jì)
子實(shí)踐
1. 建立并維護(hù)準(zhǔn)則,以評估設(shè)計(jì)。
2. 界定、開發(fā)或取得適合于產(chǎn)品的設(shè)計(jì)方法。選擇適合的方法并在一定的工具支持下對設(shè)計(jì)提供很大的幫助,一般常用的技術(shù)和方法:原型法、面向結(jié)構(gòu)化設(shè)計(jì)方法、面向?qū)ο笤O(shè)計(jì)方法、E-R模型、設(shè)計(jì)復(fù)用、設(shè)計(jì)模式等;
3. 確保設(shè)計(jì)遵循所應(yīng)用的設(shè)計(jì)標(biāo)準(zhǔn)與準(zhǔn)則。
4. 確保設(shè)計(jì)遵循已配置的需求。
5. 記錄設(shè)計(jì)。
SP2.2建立和維護(hù)技術(shù)數(shù)據(jù)包。
建立和維護(hù)技術(shù)數(shù)據(jù)包。這個Practice的字面意思比較難理解,其實(shí)意思很簡單,就是要建立和維護(hù)一套管理所有設(shè)計(jì)文檔、數(shù)據(jù)的方法或者體制,對設(shè)計(jì)過程的數(shù)據(jù)、文檔進(jìn)行有效的管理。技術(shù)數(shù)據(jù)包是給開發(fā)人員的做的(主要是需求、設(shè)計(jì)資料等),設(shè)計(jì)人員不想做,開發(fā)人員非常需要。完備的技術(shù)數(shù)據(jù)包為開發(fā)者提供了開發(fā)產(chǎn)品或組件的綜合性描述,還提供了有關(guān)產(chǎn)品類型的以下信息:產(chǎn)品架構(gòu)描述、分配需求、產(chǎn)品組件的描述、產(chǎn)品相關(guān)生命周期過程描述、關(guān)鍵產(chǎn)品特性、必需的物理特征和約束、接口需求、用于確保實(shí)現(xiàn)需求的驗(yàn)證準(zhǔn)則等。
SP2.3 使用準(zhǔn)則設(shè)計(jì)接口
根據(jù)所建立和維護(hù)的標(biāo)準(zhǔn),設(shè)計(jì)接口??紤]外部接口和內(nèi)部接口;與原來系統(tǒng)的關(guān)系;
典型的工作產(chǎn)品
1. 接口設(shè)計(jì)規(guī)格說明
2. 接口控制文件
3. 接口規(guī)格準(zhǔn)則
4. 所選之接口設(shè)計(jì)的理由
子實(shí)踐
1. 定義接口準(zhǔn)則。一般是組織過程資產(chǎn)的一部分
2. 界定與其它產(chǎn)品組件相關(guān)的接口。
3. 界定與外部相關(guān)的接口。
4. 界定介于產(chǎn)品組件與產(chǎn)品相關(guān)生命周期過程的介面。
5. 應(yīng)用準(zhǔn)則于接口設(shè)計(jì)的備選方案。
6. 記錄已選取的接口設(shè)計(jì)與理由。
SP2.4執(zhí)行自制、購買或再用之分析:根據(jù)制定的標(biāo)準(zhǔn)評估哪些產(chǎn)品組件需要開發(fā)、購買或者重用。
技術(shù)狀況是對開發(fā)或采購產(chǎn)品組件作出選擇的重要理由;在開發(fā)工作很復(fù)雜時(shí),可能以采購現(xiàn)有組件為佳,而擁有先進(jìn)工具及充足人員情況下則支持自己開發(fā)。畢竟有時(shí)購買現(xiàn)有的組件,可能不夠完備或不能完全滿足系統(tǒng)的需要。一旦作出采購現(xiàn)有組件(或外包開發(fā))的決定,就要在供應(yīng)商協(xié)議中進(jìn)行落實(shí)。
典型的工作產(chǎn)品
1. 設(shè)計(jì)與產(chǎn)品組件再用的準(zhǔn)則
2. 自制或采購分析
3. 選擇現(xiàn)有成品組件的指引
子實(shí)踐
1. 開發(fā)產(chǎn)品組件設(shè)計(jì)再用的準(zhǔn)則。
2. 分析設(shè)計(jì)以決定產(chǎn)品組件要自行開發(fā)、再用或采購。
3. 當(dāng)采購或選擇非開發(fā)的(現(xiàn)成品、政府的成品及再用)時(shí),分析維護(hù)所隱藏的代價(jià)。
SG3:實(shí)現(xiàn)產(chǎn)品設(shè)計(jì):實(shí)施產(chǎn)品設(shè)計(jì)并開發(fā)相應(yīng)的支持文檔。
SP3.1 實(shí)現(xiàn)設(shè)計(jì):實(shí)施產(chǎn)品組件的設(shè)計(jì),簡單地說就是依據(jù)設(shè)計(jì)進(jìn)行編碼活動了。
典型的工作產(chǎn)品
1. 已實(shí)現(xiàn)的設(shè)計(jì)
子實(shí)踐
1. 使用有效的方法實(shí)現(xiàn)產(chǎn)品組件。比如結(jié)構(gòu)化編程、面向?qū)ο缶幊獭⒆詣哟a生成、軟件代碼復(fù)用、應(yīng)用合適的設(shè)計(jì)模式等。
2. 遵循適當(dāng)?shù)臉?biāo)準(zhǔn)與準(zhǔn)則。比如編碼規(guī)范、過程及質(zhì)量標(biāo)準(zhǔn)、編碼時(shí)遵循模塊化、明確、簡單、可靠、安全、可維護(hù)等準(zhǔn)則;編碼規(guī)范描述內(nèi)容(如編碼模塊的復(fù)雜度和內(nèi)聚性等)
3.對選定的產(chǎn)品組件,執(zhí)行同行審查??梢酝ㄟ^代碼走查、測試等多種方式來實(shí)現(xiàn);單元測試是驗(yàn)證是否實(shí)現(xiàn)設(shè)計(jì);單元測試要提到接口測試;
4. 適當(dāng)時(shí)對產(chǎn)品組件執(zhí)行單元測試。 這里單元測試不局限于軟件,涵蓋個別硬件、軟件單元或先前已整合的相關(guān)組合;
5. 必要時(shí)修訂產(chǎn)品組件。在實(shí)現(xiàn)階段發(fā)生了未能與設(shè)計(jì)階段預(yù)見的問題,就是修訂產(chǎn)品組件時(shí)機(jī)的范例之一。
SP3.2建立產(chǎn)品支持文檔:開發(fā)和維護(hù)用于產(chǎn)品安裝、操作及維護(hù)的相關(guān)文檔,如用戶手冊、安裝手冊、管理員手冊、在線幫助等。
典型的工作產(chǎn)品
1. 終端使用者培訓(xùn)教材
2. 使用者手冊
3. 操作手冊
4. 維護(hù)手冊
5. 在線求助
子實(shí)踐
1. 審查需求、設(shè)計(jì)、產(chǎn)品及測試結(jié)果,以確保影響安裝、操作及維護(hù)等項(xiàng)文件的相關(guān)議題已被界定并解決。
2. 使用有效的方法,制作安裝、操作及維護(hù)的文件。
3. 遵循適當(dāng)?shù)奈募谱鳂?biāo)準(zhǔn)。如《技術(shù)文檔編制規(guī)范》
4. 在生命周期的初期階段就制作安裝、操作及維護(hù)等文件的初始版本,以供相關(guān)的干系人審查。
5. 執(zhí)行安裝、操作及維護(hù)等文件的同行審查。
6. 必要時(shí)修訂安裝、操作及維護(hù)文件。一般為需求、產(chǎn)品、設(shè)計(jì)、產(chǎn)品實(shí)現(xiàn)變更時(shí) 。