-- 寫(xiě)在前面,軟件架構(gòu)評(píng)估是一個(gè)大型項(xiàng)目成功的保證,不管是否完全按照書(shū)中的操作來(lái)完成,但這總是一個(gè)必須的過(guò)程。老外的技術(shù)方面的書(shū)一般都很實(shí)在,在提出一定的事實(shí)和相應(yīng)的理論基礎(chǔ)后,一般就會(huì)列出些很具體的方法,可操作性都比較強(qiáng),當(dāng)然,其實(shí)其理論在我們看來(lái)也沒(méi)什么高深之處,可能是思維方式和長(zhǎng)期教育環(huán)境的不同造成的,在我看來(lái),他們的理論就是對(duì)自己的觀點(diǎn)或者方法的一個(gè)形而上的邏輯證明,但恰恰這就是最重要的,如果在邏輯上就不具有可推導(dǎo)性,具體的方法再怎么說(shuō)得天花亂墜也沒(méi)有可信度,另外翻譯得也不錯(cuò),不象有些書(shū),根本就是外行瞎折騰,翻譯出來(lái)只有鬼才看得懂,不如直接去看原版。

          建議有空詳讀原文,我把這些摘錄下來(lái)是希望能有所參照。 


          《軟件架構(gòu)評(píng)估》學(xué)習(xí)筆記

          〈Evluating Software Architectures〉   Authors:  Paul Clements, Rick Kazman, Mark Klein
             清華大學(xué)出版社  孫學(xué)濤  朱衛(wèi)東 趙凱 譯

          概念:

          架構(gòu)方法:    就是一組架構(gòu)決策,各個(gè)架構(gòu)決策互相協(xié)調(diào),共同實(shí)現(xiàn)所期望的質(zhì)量屬性目標(biāo)。

          架構(gòu)評(píng)估:    架構(gòu)來(lái)自許多離散的決策,而這些決策是可以被分析和審查的。

          ATAM:  架構(gòu)權(quán)衡分析方法
          Architectures Trade-off Analysis Method

          ATAM方法步驟:
          共4大部分,9個(gè)步驟

          部 分
          步 驟
          主 要活動(dòng)者
          活 動(dòng) 目 的
          1.  表述
          1> ATAM方法的表述;
          評(píng)估負(fù)責(zé)人
          向評(píng)估參與者介紹ATAM方法并回答問(wèn)題。
          a. 評(píng)估步驟介紹
          b. 用于獲取信息或分析的技巧:效用樹(shù)的生成、基于架構(gòu)方法的獲取和分析、對(duì)場(chǎng)景的集體討論及優(yōu)先級(jí)的劃分
          c.  評(píng)估的結(jié)果:所得出的場(chǎng)景及其優(yōu)先級(jí),用以理解和評(píng)估架構(gòu)的問(wèn)題、描述架構(gòu)的動(dòng)機(jī)需求并給出帶優(yōu)先級(jí)的效用樹(shù)、所確定的一級(jí)架構(gòu)方法、所發(fā)現(xiàn)的有風(fēng)險(xiǎn)決 策、無(wú)風(fēng)險(xiǎn)決策、敏感點(diǎn)和權(quán)衡點(diǎn)等
          使參與者對(duì)該方法形成正確的預(yù)期
          2> 商業(yè)動(dòng)機(jī)的表述;
          項(xiàng)目發(fā)言人
          (項(xiàng)目經(jīng)理或系統(tǒng)客戶)
          闡述系統(tǒng)的商業(yè)目標(biāo)
          a. 系統(tǒng)最重要的功能
          b. 技術(shù)、管理、政治、經(jīng)濟(jì)方面的任何相關(guān)限制
          c. 與項(xiàng)目相關(guān)的商業(yè)目標(biāo)和上下文
          d. 主要的風(fēng)險(xiǎn)承擔(dān)者
          e. 架構(gòu)的驅(qū)動(dòng)因素(即促使形成該架構(gòu)的主要質(zhì)量屬性目標(biāo))
          說(shuō)明采用該架構(gòu)的主要因素
          (如:高可用性,極高的安全性或推向市場(chǎng)的時(shí)機(jī))
          3> 架構(gòu)的表述;
          架構(gòu)設(shè)計(jì)師
          對(duì)架構(gòu)做出描述
          a. 技術(shù)約束條件,諸如要使用的操作系統(tǒng),硬件,中間件之類的約束
          b. 該系統(tǒng)必須要與之交互的其他系統(tǒng)
          c. 用以滿足質(zhì)量屬性的架構(gòu)方法
          d. 對(duì)最重要的用例場(chǎng)景及生長(zhǎng)場(chǎng)景的介紹
          重點(diǎn)強(qiáng)調(diào)該架構(gòu)是怎樣適應(yīng)商業(yè)動(dòng)機(jī)的
          2. 調(diào)查和分析
          4> 確定架構(gòu)方法
          架構(gòu)設(shè)計(jì)師
          確定所用的架構(gòu)方法,但不進(jìn)行分析

          5>  生成質(zhì)量屬性效用樹(shù)

          生成質(zhì)量屬性效用樹(shù),詳細(xì)的
          根結(jié)點(diǎn)為效用,一直細(xì)分到位于葉子節(jié)點(diǎn)的質(zhì)量屬性場(chǎng)景, 質(zhì)量屬性場(chǎng)景的(優(yōu)先級(jí),實(shí)現(xiàn)難度)用高(H)、中(M)、低(L)描述;不必精確
          得出構(gòu)成系統(tǒng)效用的質(zhì)量屬性(性能、可用性、安全性、可修改性、使用性 等);
          具體到場(chǎng)景--刺激--響應(yīng)模式,并劃分優(yōu)先級(jí)
          6> 分析架構(gòu)方法

          根據(jù)上一步得到的高優(yōu)先級(jí)場(chǎng)景,得出應(yīng)對(duì)這一場(chǎng)景的架構(gòu)方法并對(duì)其進(jìn)行 分析
          要得到的結(jié)果包括:
          a. 與效用樹(shù)中每個(gè)高優(yōu)先級(jí)的場(chǎng)景相關(guān)的架構(gòu)方法或決策;
          b. 與每個(gè)架構(gòu)方法相聯(lián)系的待分析問(wèn)題;
          c.  架構(gòu)分析師對(duì)問(wèn)題的解答;
          d.  有風(fēng)險(xiǎn)決策,無(wú)風(fēng)險(xiǎn)決策、敏感點(diǎn)和權(quán)衡點(diǎn)的確認(rèn)。
          確定架構(gòu)上的有風(fēng)險(xiǎn)決策、無(wú)風(fēng)險(xiǎn)決策、敏感點(diǎn)、權(quán)衡點(diǎn)等
          3. 測(cè)試
          7> 集體討論,確定場(chǎng)景優(yōu)先級(jí)

          根據(jù)所有風(fēng)險(xiǎn)承擔(dān)者的意見(jiàn)形成更大的場(chǎng)景集合
          場(chǎng)景分類:
          a.  用例場(chǎng)景: 描述風(fēng)險(xiǎn)承擔(dān)者對(duì)系統(tǒng)使用情況的期望。
          b.  生長(zhǎng)場(chǎng)景: 描述期望架構(gòu)能在較短時(shí)間內(nèi)允許的擴(kuò)充與更改。
          c.  探察場(chǎng)景: 描述系統(tǒng)生長(zhǎng)的極端情況,即架構(gòu)在某些更改的重壓的情況。
          注: 最初的效用樹(shù)是由架構(gòu)設(shè)計(jì)師和關(guān)鍵開(kāi)發(fā)人員創(chuàng)建的。在對(duì)場(chǎng)景進(jìn)行集體討論的過(guò)程和設(shè)置優(yōu)先級(jí)的過(guò)程中,有很多風(fēng)險(xiǎn)承擔(dān)者參與其中,與最初的效用樹(shù)相比,兩 者之間的不匹配可以揭露架構(gòu)設(shè)計(jì)師未曾注意到的方面,從而使得我們發(fā)現(xiàn)架構(gòu)中的重大風(fēng)險(xiǎn)。
          由所有風(fēng)險(xiǎn)承擔(dān)者通過(guò)表決確定這些場(chǎng)景的優(yōu)先級(jí)
          8> 分析架構(gòu)方法

          對(duì)第6步重復(fù),使用的是在第7步中得到的高優(yōu)先級(jí)場(chǎng)景,這些場(chǎng)景被認(rèn)為 是迄今為止所做分析的測(cè)試案例
          發(fā)現(xiàn)更多的架構(gòu)方法,有風(fēng)險(xiǎn)決策、無(wú)風(fēng)險(xiǎn)決策、敏感點(diǎn)、權(quán)衡點(diǎn)等
          4. 形成報(bào)告
          9> 結(jié)果的表述
          評(píng)估小組
          根據(jù)在ATAM評(píng)估期間得到的信息(方法、場(chǎng)景、針對(duì)質(zhì)量屬性的問(wèn)題、 效用樹(shù)、有風(fēng)險(xiǎn)決策、無(wú)風(fēng)險(xiǎn)決策、敏感點(diǎn)、權(quán)衡點(diǎn)等),向與會(huì)的風(fēng)險(xiǎn)承擔(dān)者報(bào)告評(píng)估結(jié)果。
          最重要的是如下ATAM結(jié)果:
          a.  已經(jīng)編寫(xiě)了
          文檔的架構(gòu)方法;
          b.  若干場(chǎng)景及其優(yōu)先級(jí);
          c.  基于質(zhì)量屬性的若干問(wèn)題;
          d.  效用樹(shù);
          e.  所發(fā)現(xiàn)的有風(fēng)險(xiǎn)決策;
          f.  已編寫(xiě)文檔的無(wú)風(fēng)險(xiǎn)決策;
          e.  所發(fā)現(xiàn)的敏感點(diǎn)和權(quán)衡點(diǎn)。


          以上步驟并不是固定的, 有時(shí)必須對(duì)評(píng)估規(guī)劃做某些動(dòng)態(tài)的更改,以容許人員或架構(gòu)信息的改變。

          ATAM評(píng)估方法的的階段:
          第0階段
          建立評(píng)估小組, 建立評(píng)估組織和待評(píng)估組織間的合作關(guān)系

          第1階段
          以架構(gòu)為中心,重點(diǎn)獲取架構(gòu)信息并對(duì)其進(jìn)行分析。
          評(píng)估階段,上面的9 個(gè)步驟
          在這時(shí)完成
          第2階段
          以風(fēng)險(xiǎn)承擔(dān)者中心,重點(diǎn)為獲取風(fēng)險(xiǎn)承擔(dān)者的觀點(diǎn),并對(duì)第1階段的結(jié)果進(jìn) 行驗(yàn)證。
          第3階段
          后續(xù)階段,形成最終報(bào)告,對(duì)后續(xù)活動(dòng)做出規(guī)劃,評(píng)估組織在此階段實(shí)現(xiàn)文 檔和經(jīng)驗(yàn)的更新。


          評(píng)估小組各成員的角色及其職責(zé)
          角色
          職責(zé)
          理想的 人員素質(zhì)
          評(píng)估小組負(fù)責(zé)人
          準(zhǔn)備評(píng)估;與評(píng)估客戶協(xié)調(diào);保證滿足客戶的需要;簽署評(píng)估合同;
          組建評(píng)估小組;負(fù)責(zé)檢查最終報(bào)告的生成和提交;
          善于協(xié)調(diào)、安排,有管理技巧。善于與客戶交流;能按時(shí)完成任務(wù)。
          評(píng)估負(fù)責(zé)人
          負(fù)責(zé)評(píng)估工作;促進(jìn)場(chǎng)景的得出;管理場(chǎng)景的選擇及設(shè)置優(yōu)先級(jí)的過(guò)程;促 進(jìn)對(duì)照架構(gòu)的場(chǎng)景評(píng)估;為現(xiàn)場(chǎng)評(píng)估提供幫助
          能在眾人面前表現(xiàn)自如。善于指點(diǎn)迷津。對(duì)架構(gòu)問(wèn)題有深刻的理解,富有架 構(gòu)評(píng)估的實(shí)踐經(jīng)驗(yàn)。能夠從冗長(zhǎng)的討論中得出有價(jià)值的發(fā)現(xiàn),或能夠判斷出何時(shí)討論已無(wú)意義、應(yīng)進(jìn)行調(diào)整。
          場(chǎng)景書(shū)記員
          在得到場(chǎng)景的過(guò)程中負(fù)責(zé)將場(chǎng)景寫(xiě)到活動(dòng)掛圖或白板上,務(wù)必用以達(dá)成一致 的措辭來(lái)描述,未得到準(zhǔn)確措辭就繼續(xù)討論
          寫(xiě)一手好字,能夠在未搞清楚某個(gè)問(wèn)題之前堅(jiān)持要求繼續(xù)討論,能夠快速理 解所討論的問(wèn)題并提取出其要點(diǎn)
          進(jìn)展書(shū)記員
          以電子形式記錄評(píng)估的進(jìn)展情況。捕獲原始場(chǎng)景。捕獲促成場(chǎng)景的每個(gè)問(wèn) 題。捕獲與場(chǎng)景對(duì)應(yīng)的架構(gòu)解決方案。打印出要分發(fā)給各參與人員所采用場(chǎng)景的列表
          打字速度快,質(zhì)量高。工作條理性好。從而能夠快速查找信息。對(duì)架構(gòu)問(wèn)題 理解透徹。能夠融會(huì)貫通地快速搞清技術(shù)問(wèn)題。勇于打斷正在進(jìn)行的討論以驗(yàn)證對(duì)某個(gè)問(wèn)題的理解,從而保證所獲取信息的正確性
          計(jì)時(shí)員
          幫助評(píng)估負(fù)責(zé)人保證評(píng)估工作按進(jìn)度進(jìn)行。在評(píng)估階段幫助控制用在每個(gè)場(chǎng) 景上的時(shí)間
          敢于不顧情面地中斷討論,宣布時(shí)間已到。
          過(guò)程觀察員
          記錄評(píng)估工作的哪些地方有待改進(jìn)或偏離了原計(jì)劃。通常不發(fā)表意見(jiàn),也可 能偶爾在評(píng)估過(guò)程中向評(píng)估負(fù)責(zé)人提出基于過(guò)程的建議。在評(píng)估完成后,負(fù)責(zé)匯報(bào)評(píng)估過(guò)程,指出應(yīng)該吸取哪些教訓(xùn),以便在未來(lái)的評(píng)估中加以改進(jìn)。還負(fù)責(zé)向整個(gè) 評(píng)估小組匯報(bào)某次評(píng)估的實(shí)踐情況
          善于觀察和發(fā)現(xiàn)問(wèn)題,熟悉評(píng)估過(guò)程,曾參加過(guò)采用該架構(gòu)評(píng)估方法進(jìn)行評(píng) 估
          過(guò)程監(jiān)督者
          幫助評(píng)估負(fù)責(zé)人記住并執(zhí)行評(píng)估方法的每個(gè)步驟
          對(duì)評(píng)估方法的各個(gè)步驟非常熟悉。愿意并能夠以不連續(xù)的方式向評(píng)估負(fù)責(zé)人 提供指導(dǎo)
          提問(wèn)者
          提出風(fēng)險(xiǎn)承擔(dān)者或許未曾想到的關(guān)于架構(gòu)的問(wèn)題
          對(duì)架構(gòu)和風(fēng)險(xiǎn)承擔(dān)者的需求具有敏銳的觀察力。了解同類系統(tǒng)。勇于提出可 能有爭(zhēng)議的問(wèn)題,并能不懈地尋求其答案。熟悉相關(guān)的質(zhì)量屬性。


          商業(yè)目標(biāo)分析結(jié)果表: 
                       


          內(nèi)容列表
          詳細(xì)備注
          主要商業(yè)目標(biāo)
          為跨學(xué)科的地球科學(xué)研究提供支持


          大批量數(shù)據(jù)的并發(fā)攝入、處理和分配

          次要商業(yè)目標(biāo)
          為外部開(kāi)發(fā)的科學(xué)算法/應(yīng)用程序提供支持


          科學(xué)數(shù)據(jù)再處理

          其他商業(yè)目標(biāo)
          采用自動(dòng)化操作,以盡可能減少操作成本



          系統(tǒng)質(zhì)量屬性列表:

          質(zhì)量屬性目標(biāo)
          標(biāo)識(shí)號(hào)(數(shù)字表示效用樹(shù)中的子序號(hào))
          針對(duì)質(zhì)量屬性的要求
          可維護(hù)性
          M1
          更改某個(gè)子系統(tǒng)時(shí)不要求改動(dòng)其他子系統(tǒng)

          M2
          把子系統(tǒng)的部署要求分別降到最低

          M3
          把回歸測(cè)試時(shí)間從5天減少到1天



          可靠性
          R1
          不至于因?yàn)閿?shù)據(jù)輸入輸出而導(dǎo)致某個(gè)系統(tǒng)資源崩潰或等待較長(zhǎng)時(shí)間,如超過(guò) 10分鐘

          R2
          請(qǐng)求(輸入出)中的某一部分?jǐn)?shù)據(jù)錯(cuò)誤不會(huì)妨礙其他部分的正常使用

          R6
          因系統(tǒng)崩潰或備份造成的無(wú)法提供服務(wù)的時(shí)間不能超過(guò)1小時(shí)
          可操作性
          O10
          系統(tǒng)應(yīng)該能在20分鐘內(nèi)根據(jù)用戶類型、數(shù)據(jù)類型、介質(zhì)類型、目的地或用 戶對(duì)1000項(xiàng)定單重新設(shè)置優(yōu)先級(jí)

          O14
          應(yīng)該能在不需要操作干涉的情況下,通過(guò)V0網(wǎng)關(guān)為1000個(gè)并發(fā)請(qǐng)求提 供服務(wù)
          可擴(kuò)展性
          S2
          能同時(shí)支持50個(gè)場(chǎng)站

          S3
          能夠支持來(lái)自100個(gè)數(shù)據(jù)源的輸入



          性能
          P1
          在某種查詢算法下,對(duì)Landsat L-7查詢可使響應(yīng)速度能提高5倍







          第一階段獲得的帶優(yōu)先級(jí)的效用樹(shù):
          第1層: 效用

          第2層:質(zhì)量屬性
          第3層:質(zhì)量屬性求精
          第4層:質(zhì)量屬性場(chǎng)景
          重要性
          難度
          累加和
          可維護(hù)性
          M1:對(duì)一個(gè)子系統(tǒng)的更改不要求改動(dòng)其他子系統(tǒng)
          M1.1:部署下一個(gè)科學(xué)數(shù)據(jù)服務(wù)器版本,實(shí)現(xiàn)對(duì)當(dāng)前版本的更新。升級(jí) 應(yīng)該在8小時(shí)以內(nèi)完成,并且不應(yīng)影響其他子系統(tǒng)及查找、瀏覽或預(yù)定功能的使用。
          30
          30
          60

          M2:獨(dú)立地回退子系統(tǒng)的部署
          M2.1:使科學(xué)數(shù)據(jù)服務(wù)器從M1回退
          20
          20
          40






          可操作性
          O10:系統(tǒng)應(yīng)該能在20分鐘內(nèi)根據(jù)用戶類型、數(shù)據(jù)類型、介質(zhì)類型、目 的地或用戶對(duì)1000項(xiàng)定單重新設(shè)置優(yōu)先級(jí) O10.1:積壓任務(wù)管理-- 在系統(tǒng)連續(xù)24小時(shí)不能正常工作后,應(yīng)在30分鐘內(nèi)為所積壓的任務(wù)設(shè)置優(yōu)先級(jí),以保證各任務(wù)能夠按優(yōu)先級(jí)得以處理且正常的操作能夠得以維持,不會(huì)在恢復(fù)正 常操作狀態(tài)后降低吞吐量
          30
          20
          50

          O14:應(yīng)該能在不需要操作干涉的情況下,通過(guò)V0網(wǎng)關(guān)為1000個(gè)并 發(fā)請(qǐng)求提供服務(wù) O14.1:MODAPS連續(xù)24小時(shí)不能正常工作,恢復(fù)并請(qǐng)求2天的 數(shù)據(jù);按優(yōu)先級(jí)進(jìn)行處理
          20
          20
          40


          O14.2:接收100個(gè)并發(fā)查詢請(qǐng)求,不拒絕高優(yōu)先級(jí)的請(qǐng)求,在性能 允許的情況下完成處理,不使系統(tǒng)過(guò)載
          20
          20
          40






          可靠性/可用性
          Ra1:失敗的或掛起時(shí)間超過(guò)10分鐘的數(shù)據(jù)輸入輸出不占用系統(tǒng)資源
          Ra1.1:L-7按預(yù)定用FTP方式把數(shù)據(jù)推到某個(gè)FTP服務(wù)器已經(jīng) 崩潰的節(jié)點(diǎn),在第一個(gè)請(qǐng)求未能成功處理的10分鐘內(nèi)系統(tǒng)被掛起,在請(qǐng)求被掛起期間內(nèi)所有資源可用,不影響其他節(jié)點(diǎn)的分配。
          30
          10
          40






          可擴(kuò)展性
          Sc2:系統(tǒng)能夠支持50個(gè)節(jié)點(diǎn)
          Sc2.1:跨節(jié)點(diǎn)訂單可記錄50個(gè)節(jié)點(diǎn),跨5節(jié)點(diǎn)訂單歷時(shí)2分鐘。
          Sc2.2:跨節(jié)點(diǎn)用戶注冊(cè)在24個(gè)小時(shí)內(nèi)經(jīng)歷50個(gè)節(jié)點(diǎn)。
          20
          20
          30
          30
          50
          50












          性能
          P1:把Landsat L-7搜索的響應(yīng)速度提高5倍
          P1.1:正常情況下Landsat L-7搜索100次命中的時(shí)間不超過(guò)30秒
          30
          20
          50
























































          注:這些難度等級(jí)只是粗粒度的劃分,不必過(guò)于認(rèn)真




          場(chǎng)景分析表:

          1.  場(chǎng)景描述:
          場(chǎng)景號(hào):M1.1
          場(chǎng)景:(M1.1)部署下一個(gè)科學(xué)數(shù)據(jù)服務(wù)器版本,實(shí)現(xiàn)對(duì)當(dāng)前版本的更 新。升級(jí)應(yīng)該在8小時(shí)以內(nèi)完成,并且不應(yīng)影響其他子系統(tǒng)及查找、瀏覽或預(yù)定功能的使用。
          質(zhì)量屬性
          可維護(hù)性
          環(huán)境
          常規(guī)維護(hù)
          刺激
          部署下一個(gè)科學(xué)數(shù)據(jù)服務(wù)器版本,實(shí)現(xiàn)對(duì)當(dāng)前版本的更新,并添加對(duì)經(jīng)緯度 的支持。
          響應(yīng)
          升級(jí)應(yīng)該在8小時(shí)以內(nèi)完成,并且不應(yīng)影響其他子系統(tǒng)及查找、瀏覽或預(yù)定 功能的使用。

           
          架構(gòu)決策
          有風(fēng)險(xiǎn)決策
          敏感點(diǎn)
          權(quán)衡點(diǎn)
          無(wú)風(fēng)險(xiǎn)決策
          AD1:接口的向后兼容性
          R1



          AD2:客戶占位程序在服務(wù)器中的靜態(tài)連接
          R2



          AD3:關(guān)鍵運(yùn)行數(shù)據(jù)庫(kù)的單個(gè)副本
          R3
          S1
          T1,T2

          AD4:關(guān)于分布在整個(gè)系統(tǒng)中的數(shù)據(jù)類型的信息
          R4,R5,R6
          S2


          AD5:獨(dú)立于子系統(tǒng)的名稱


          T3

          AD6:采用穩(wěn)定、簡(jiǎn)單API的分布式對(duì)象



          NR1
          AD7:源文件間末受控制的依賴性
          R7



          推理:定性的或量化的關(guān)于為什么這組架構(gòu)決策能夠滿足此場(chǎng)景所表達(dá)的每個(gè)質(zhì)量屬 性要求的基本原理。
          架構(gòu)圖: 一個(gè)或多個(gè)表示架構(gòu)視圖的圖形,標(biāo)注出支持上述推理的架構(gòu)信息,必要的可加上解釋性文字描述。


          ARID評(píng)估方法
                ----   Active Reviews for Intermediate Design

                   ATAM和SAAM都是適用于對(duì)軟件的完整架構(gòu)進(jìn)行評(píng)估的方法。但是,架構(gòu)經(jīng)常是要經(jīng)歷很長(zhǎng)時(shí)間,階躍式地逐漸完善,而不是一開(kāi)始就以最終確定的完美形式 出現(xiàn)的。
                   在架構(gòu)設(shè)計(jì)過(guò)程中,對(duì)已經(jīng)完成的部分逐步進(jìn)行評(píng)審,及時(shí)發(fā)現(xiàn)某些部分的錯(cuò)誤,不一致性或者是考慮不周的地方,而且在大多數(shù)項(xiàng)目開(kāi)發(fā)中經(jīng)常需要對(duì)系統(tǒng)的每個(gè) 大組件或子系統(tǒng)進(jìn)行這種評(píng)審。這一階段需要的是一種簡(jiǎn)單易用的評(píng)估方法,應(yīng)該重點(diǎn)關(guān)注適宜性,以一種風(fēng)險(xiǎn)承擔(dān)者能夠接受的方式展示設(shè)計(jì)方案,并能在缺少詳 細(xì)文檔的情況下進(jìn)行架構(gòu)評(píng)估,這時(shí)就要用到ARID方法,active reviews for Intermediate Design。ARID最適合于對(duì)尚不完善的架構(gòu)進(jìn)行評(píng)估,在這一階段,設(shè)計(jì)人員就是想搞清楚從要求使用該設(shè)計(jì)架構(gòu)的其他部分的角度來(lái)看,所采用的設(shè)計(jì)方 案是否合適。或許設(shè)計(jì)中的這個(gè)框架的潛在采用者/重用者想要搞清楚該怎樣使用這一框架。

          傳統(tǒng)設(shè)計(jì)評(píng)審和積極設(shè)計(jì)評(píng)審中所用的指令對(duì)比

          傳統(tǒng)設(shè) 計(jì)評(píng)審問(wèn)題
          積極設(shè) 計(jì)評(píng)審中所用的指令
          每個(gè)程序是否都定義了例外情況
          寫(xiě)出每個(gè)程序可能出現(xiàn)的例外情況。
          每個(gè)程序是否都定義了正確的例外情況?
          寫(xiě)出每個(gè)參數(shù)合法值的范圍或集合,寫(xiě)出在哪些狀態(tài)下調(diào)用程序是非法的。
          是否定義了數(shù)據(jù)類型?
          對(duì)每個(gè)數(shù)據(jù)類型,請(qǐng)寫(xiě)出:
           1. 該數(shù)據(jù)類型直接量的表示;
          2.  該類型變量的聲明;
          3.   該數(shù)據(jù)類型的最大值和最小值。
          這些程序是否充分?
          編寫(xiě)按該方案實(shí)現(xiàn)某已定義任務(wù)的一小段偽代碼。
          是否對(duì)某個(gè)應(yīng)用程序的性質(zhì)都做了足夠詳細(xì)的說(shuō)明?
          對(duì)每個(gè)應(yīng)用程序,寫(xiě)出其最長(zhǎng)執(zhí)行時(shí)間,并列出它可能消耗的共享資源。




          ATAM,SAAM,ARID的比較
          ITEM
          ATAM
          SAAM
          ARID
          涉及的質(zhì)量屬性
          不面向任何具體的質(zhì)量屬性,但據(jù)其歷史,它更側(cè)重于可修改性,安全性, 可靠性和性能。
          主要是可修改性和功能。
          設(shè)計(jì)方法和適宜性。
          分析的對(duì)象
          架構(gòu)方法或樣式;闡述過(guò)程、數(shù)據(jù)流、使用、物理或模塊視圖的架構(gòu)文檔。
          架構(gòu)文檔,特別是闡述邏輯或模塊視圖的部分。
          組件的接口規(guī)范。
          適用階段
          在架構(gòu)設(shè)計(jì)方法已經(jīng)選定之后。
          在架構(gòu)已經(jīng)將功能分配到各個(gè)模塊中以后。
          在架構(gòu)設(shè)計(jì)期間。
          采用的方法
          利用效用樹(shù)和對(duì)場(chǎng)景的集體討論來(lái)搞清楚質(zhì)量屬性需求。通過(guò)對(duì)架構(gòu)方法的 分析確定出敏感點(diǎn)、權(quán)衡點(diǎn)和風(fēng)險(xiǎn)。
          利用對(duì)場(chǎng)景的集體討論搞清楚質(zhì)量屬性需求。通過(guò)來(lái)驗(yàn)證功能或?qū)Ω某杀? 作出估計(jì)。
          積極評(píng)審設(shè)計(jì),對(duì)場(chǎng)景進(jìn)行集體討論。
          資源需求
          一般用3天的時(shí)間,另外還有預(yù)先的準(zhǔn)備時(shí)間和之后的總結(jié)時(shí)間。參評(píng)人員 有客戶、架構(gòu)設(shè)計(jì)師、風(fēng)險(xiǎn)承擔(dān)者和4人評(píng)估小組。
          一般用2天時(shí)間,另外還有之后的總結(jié)時(shí)間,參評(píng)人員有客戶、架構(gòu)設(shè)計(jì) 師、風(fēng)險(xiǎn)承擔(dān)者和3人評(píng)估小組。
          一般用2天時(shí)間,另外還有預(yù)先的準(zhǔn)備時(shí)間和之后的總結(jié)時(shí)間。參評(píng)人員有 架構(gòu)設(shè)計(jì)師、設(shè)計(jì)人員、風(fēng)險(xiǎn)承擔(dān)者和2人評(píng)估小組。

          所有的評(píng)估方法至少要用下列兩種技巧:

            --  提問(wèn)技巧。         用問(wèn)卷、檢查列表或場(chǎng)景來(lái)調(diào)查某個(gè)架構(gòu)滿足其質(zhì)量屬性需求的方式。架構(gòu)評(píng)估中所用的提問(wèn)技巧通常涉及到要做某些“思維實(shí)驗(yàn)”,以預(yù)期系統(tǒng)的表現(xiàn),因?yàn)榇藭r(shí) 系統(tǒng)還不存在。
            --  度量技巧。          要用某個(gè)工具對(duì)軟件產(chǎn)品進(jìn)行度量。度量技巧包括要運(yùn)行所評(píng)估架構(gòu)對(duì)應(yīng)系統(tǒng)的模擬程序,以搞清系統(tǒng)的某些情況。要選擇恰當(dāng)?shù)膯挝弧?duì)復(fù)雜性、耦合度和內(nèi)聚性 的度量通常用來(lái)得出可修改性的結(jié)論。對(duì)數(shù)據(jù)流的度量(即度量沿通信通道的數(shù)據(jù)量的大小及其頻率)則可用來(lái)對(duì)系統(tǒng)性能或性能瓶頸做出預(yù)測(cè)。


          應(yīng)注意的危險(xiǎn)信號(hào):

          • 架構(gòu)必須與當(dāng)前的組織結(jié)構(gòu)相對(duì)應(yīng)。因?yàn)橛邢鄳?yīng)的組織而添加 不必要的部分。
          • 最頂層的架構(gòu)組件超過(guò)了25個(gè)。過(guò)于復(fù)雜,架構(gòu)設(shè)計(jì)師可能 難以進(jìn)行明智的控制,負(fù)責(zé)實(shí)現(xiàn)架構(gòu)的設(shè)計(jì)人員那當(dāng)然也無(wú)法做到這一點(diǎn)。
          • 設(shè)計(jì)方案的剩余部分受某一項(xiàng)需求的左右。架構(gòu)是以滿足極高的可用性需求為目標(biāo)的。如果降低這一需求,整個(gè)架構(gòu)就會(huì)顯得過(guò)于復(fù)雜。過(guò)分強(qiáng)調(diào)某一 需求可能會(huì)使其他需求得不到重視。
          • 架構(gòu)信賴操作系統(tǒng)中的可變部分。這樣使架構(gòu)受到操作系統(tǒng)升級(jí)的影響;這一明顯的設(shè)計(jì)缺陷在實(shí)際中經(jīng)常出現(xiàn),其頻度令人驚訝。
          • 在可用標(biāo)準(zhǔn)組件的地方卻使用了專用組件,使整個(gè)架構(gòu)信賴于某個(gè)供應(yīng)商。
          • 組件的定義是根據(jù)硬件劃分確定的。硬件會(huì)隨著系統(tǒng)的演進(jìn)而變化,硬件組件可能會(huì)合并成更通用的處理器,或分解成專用的設(shè)備。如果軟件獨(dú)立于硬 件結(jié)構(gòu),就可使其免受硬件變化的影響。
          • 有超出可靠性要求之外的冗余。這表明設(shè)計(jì)人員意見(jiàn)不一,導(dǎo)致不必要的復(fù)雜性,也會(huì)使系統(tǒng)維護(hù)的難度加大。
          • 設(shè)計(jì)方案受例外情況的左右;重點(diǎn)強(qiáng)調(diào)的是可擴(kuò)充性而不是共核部分。
          • 開(kāi)發(fā)組織不能確定出誰(shuí)是系統(tǒng)架構(gòu)設(shè)計(jì)師。
          • 構(gòu)架設(shè)計(jì)師或項(xiàng)目經(jīng)理在確定該架構(gòu)的風(fēng)險(xiǎn)承擔(dān)者時(shí)感到很困難,這可能意味著他們根本就沒(méi)有考慮關(guān)于風(fēng)險(xiǎn)承擔(dān)者的問(wèn)題。
          • 開(kāi)發(fā)人員在對(duì)某兩個(gè)組件的組件的交互進(jìn)行編程時(shí)有過(guò)多的選擇余地。出現(xiàn)這種情況的原因可能是架構(gòu)上提供了太大的選擇自由,或者沒(méi)有考慮這一問(wèn) 題。意味著架構(gòu)還要進(jìn)一步完善。
          • 當(dāng)要求架構(gòu)設(shè)計(jì)師提供文檔時(shí),除了類圖外,拿不出任何其他材料。
          • 當(dāng)要求架構(gòu)設(shè)計(jì)師提供文檔時(shí),拿出的是大量的由某一工具自動(dòng)生成的文檔,但這些文檔根本沒(méi)人看過(guò)。
          • 所提供的架構(gòu)文檔陳舊,顯然已經(jīng)過(guò)時(shí)。
          • 當(dāng)要求對(duì)架構(gòu)做出表述時(shí),設(shè)計(jì)人員或編程人員或者不能做出表述,或者所做的表述與架構(gòu)設(shè)計(jì)師所講的內(nèi)容存在很大的差別。
          • there must be more as the process progressed.
          對(duì)項(xiàng)目開(kāi)發(fā)威脅最大的管理問(wèn)題:
          • 沒(méi)有清楚地確定出風(fēng)險(xiǎn)承擔(dān)者
          • 項(xiàng)目開(kāi)發(fā)中沒(méi)有相關(guān)領(lǐng)域?qū)<业膮⑴c
          • 項(xiàng)目資金沒(méi)有真正落實(shí)
          • 沒(méi)有指定項(xiàng)目經(jīng)理或項(xiàng)目負(fù)責(zé)人
          • 沒(méi)有制定出項(xiàng)目計(jì)劃或規(guī)劃
          • 部署日期不實(shí)際
          • 沒(méi)有明確的衡量?jī)?yōu)劣的標(biāo)準(zhǔn)
          • 沒(méi)有選定軟件的架構(gòu)
          • 雖然在每個(gè)層面上都有一位架構(gòu)設(shè)計(jì)師,但沒(méi)有人對(duì)總體架構(gòu)負(fù)責(zé)
          • 沒(méi)有編寫(xiě)總體架構(gòu)計(jì)劃
          • 沒(méi)有獨(dú)立的負(fù)責(zé)編寫(xiě)需求的小組存在
          • 沒(méi)有硬件和安裝規(guī)則
          • 沒(méi)有合適而獨(dú)立的性能研究計(jì)劃
          • 沒(méi)有合適的質(zhì)量保證組織
          • 沒(méi)有制定出系統(tǒng)測(cè)試計(jì)劃
          • more
          影響項(xiàng)目開(kāi)發(fā)成敗的性能方面的問(wèn)題:
          • 最終用戶沒(méi)有確定出性能需求
          • 未收集與性能相關(guān)的數(shù)據(jù)
          • 沒(méi)有確定性能開(kāi)銷
          • 所期望的通信速率未能得到證實(shí)
          • 未采用任何用以度量處理時(shí)間的機(jī)制或處理數(shù)量未得到證實(shí)
          • 未采用任何評(píng)估手段來(lái)保證能夠處理所要求的吞吐量
          • 未采用任何評(píng)估手段來(lái)保證硬件上能夠滿足處理的需要
          • 沒(méi)有性能模型
          • more
          附A:

           風(fēng)險(xiǎn)承擔(dān)者列表:
          風(fēng)險(xiǎn)承 擔(dān)者
          定義
          所關(guān)心 的問(wèn)題
          系統(tǒng)的生產(chǎn)者
          軟件架構(gòu)設(shè)計(jì)師
          負(fù)責(zé)系統(tǒng)的架構(gòu)以及在相互競(jìng)爭(zhēng)的質(zhì)量需求間進(jìn)行權(quán)衡的人
          對(duì)其他風(fēng)險(xiǎn)承擔(dān)者提出的質(zhì)量需求所要進(jìn)行的解釋和調(diào)停
          開(kāi)發(fā)人員
          設(shè)計(jì)或編程人員
          架構(gòu)描述的清晰和完整、
          各部分的內(nèi)聚性和受限耦合、
          清楚的交互機(jī)制
          維護(hù)人員
          系統(tǒng)初次布署完成后對(duì)系統(tǒng)進(jìn)行更改的人
          可維護(hù)性、確定某個(gè)更改發(fā)生后必須對(duì)系統(tǒng)中哪些地方進(jìn)行改動(dòng)的能力
          集成人員
          負(fù)責(zé)組件集成或者組裝的人員
          與開(kāi)發(fā)人員相同
          測(cè)試人員
          負(fù)責(zé)系統(tǒng)測(cè)試的開(kāi)發(fā)人員
          集成、一致的錯(cuò)誤處理協(xié)議;
          受限的組件耦合、組件的高內(nèi)聚性、概念完整性
          標(biāo)準(zhǔn)專家
          負(fù)責(zé)搞清所開(kāi)發(fā)軟件必須滿足的標(biāo)準(zhǔn)(現(xiàn)有的或未來(lái)的)細(xì)節(jié)的開(kāi)發(fā)人員
          對(duì)所關(guān)心問(wèn)題的分離、可修改性、互操作性
          性能工程師
          分析系統(tǒng)的工作產(chǎn)品以確定系統(tǒng)是否滿足其性能及吞吐量需求的人員
          易理解性、概念完整性、性能、可靠性
          安全專家
          負(fù)責(zé)保證系統(tǒng)滿足其安全性需求的人士
          安全性
          項(xiàng)目經(jīng)理
          負(fù)責(zé)為各小組配置資源、保證開(kāi)發(fā)進(jìn)度、保證不超出預(yù)算的人士,負(fù)責(zé)與客 戶打交道
          架構(gòu)層次上結(jié)構(gòu)清楚,便于組建小組;任務(wù)劃分結(jié)構(gòu)、進(jìn)度標(biāo)志和最后期限 等
          產(chǎn)品線經(jīng)理或“擁有重用權(quán)的人”
          設(shè)想該架構(gòu)和相關(guān)資產(chǎn)怎樣在該組織的其他開(kāi)發(fā)中得以重復(fù)利用的人
          可重用性、靈活性
          系統(tǒng)的消費(fèi)者
          客戶
          系統(tǒng)的購(gòu)買者
          開(kāi)發(fā)進(jìn)度、總體預(yù)算、系統(tǒng)的有用性、滿足用戶(或市場(chǎng))需求的情況
          最終用戶
          所實(shí)現(xiàn)系統(tǒng)的使用者
          功能性、可用性、沒(méi)有易用性?
          應(yīng)用開(kāi)發(fā)者(對(duì)產(chǎn)品架構(gòu)而言)
          利用該架構(gòu)及其他已有可重用組件,通過(guò)將其實(shí)例化而構(gòu)建產(chǎn)品的人
          架構(gòu)的清晰性、完整性、簡(jiǎn)單交互機(jī)制、簡(jiǎn)單剪裁機(jī)制
          任務(wù)專家、任務(wù)規(guī)劃者
          知道系統(tǒng)將會(huì)怎樣使用以實(shí)現(xiàn)戰(zhàn)略目標(biāo)的客戶代表,視野比最終用戶更為開(kāi) 闊
          功能性、可用性、靈活性
          系統(tǒng)服務(wù)人員
          系統(tǒng)管理員
          負(fù)責(zé)系統(tǒng)運(yùn)行的人(如果區(qū)別于用戶的話)
          容易找到可能出現(xiàn)問(wèn)題的地方
          網(wǎng)絡(luò)管理員
          管理網(wǎng)絡(luò)的人員
          網(wǎng)絡(luò)性能、可預(yù)測(cè)性
          服務(wù)代表
          為系統(tǒng)在該領(lǐng)域中的使用和維護(hù)提供支持的人
          使用性、可服務(wù)性、可剪裁性
          接觸系統(tǒng)或與系統(tǒng)交 互的人
          該領(lǐng)域或團(tuán)體的代表 類似系統(tǒng)或所考察系統(tǒng)將要在其中運(yùn)行的系統(tǒng)的構(gòu)建者或擁有者
          可互操作性
          系統(tǒng)架構(gòu)設(shè)計(jì)師
          整個(gè)系統(tǒng)的架構(gòu)設(shè)計(jì)師;負(fù)責(zé)在軟硬件之間進(jìn)行權(quán)衡并選擇硬件環(huán)境的人
          可移植性、靈活性、性能和效率
          設(shè)備專家
          熟悉該軟件必須與之交互的硬件的人;能夠預(yù)測(cè)硬件技術(shù)的未來(lái)發(fā)展趨勢(shì)的 人
          可維護(hù)性、性能



          以上就是所有的風(fēng)險(xiǎn) 承擔(dān)者的角色及其關(guān)注的問(wèn)題。

          軟件架構(gòu)評(píng)估的質(zhì)量在很大程度上取決于為評(píng)估召集起來(lái)的風(fēng)險(xiǎn) 承擔(dān)者的素質(zhì)。


          Feedback

          # re: 《軟件架構(gòu)評(píng)估》讀書(shū)筆記  回復(fù)  更多評(píng)論   

          2007-11-18 21:26 by 顧強(qiáng)
          謝謝你的筆記。老師布置一個(gè)ATAM評(píng)估的作業(yè),本來(lái)想買“軟件架構(gòu)評(píng)估”這邊書(shū)來(lái)看看的,時(shí)間比較緊,正好那你的筆記拿來(lái)參考,呵呵!

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          posts - 44, comments - 43, trackbacks - 0, articles - 5

          Copyright © 小李飛刀

          涉足江湖,廣交朋友
          尋找有共同興趣愛(ài)好者一起開(kāi)創(chuàng)掌上移動(dòng)應(yīng)用!


          歡迎光臨!您是第 hit counter 位訪客。
          主站蜘蛛池模板: 遵义市| 龙井市| 合肥市| 德兴市| 突泉县| 大足县| 康定县| 射阳县| 夏邑县| 三台县| 固原市| 遂宁市| 正阳县| 儋州市| 周宁县| 上高县| 正镶白旗| 石景山区| 迭部县| 安阳市| 民县| 阿克| 盐边县| 青冈县| 冕宁县| 体育| 浦江县| 洮南市| 平江县| 综艺| 姜堰市| 忻城县| 类乌齐县| 丹凤县| 桓仁| 永清县| 基隆市| 彝良县| 普安县| 长汀县| 义乌市|