qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          為什么沒有一個軟件質量保證的RUP工作流程

           本文來自于 Rational Edge:軟件開發組織執行SEI的能力成熟度模型(CMM)可能會由于在 Rational 統一過程或RUP中缺乏一個軟件質量保證(SQA)工作流而失敗。本文描述了一個虛擬的 SQA 工作流,其源自于 Leslee Probasco 的RUP的十點要素。
            存在有九個RUP工作流程,包括了需求、項目管理、配置 & 變更管理,甚至還有業務建模——但是沒有一個是用于軟件質量保證(SQA)的。這種明顯的疏忽對尋求SEI的軟件成熟度模型(CMM)的項目和組織是非常棘手的1,因為SQA的關鍵過程域(KPA)承載了成熟度模型的重要工作。自從有了需求管理的KPA,其可以精細地映射到Rational 統一過程?或RUP?的需求工作流,還有項目管理(包括計劃和監控)和配置管理的關鍵過程域同樣分別精細地映射到RUP的項目管理以及配置和變更管理的工作流,難道只是對SQA沒有嗎?
            我開始回答這個問題,并且沿著這條路揭示了CMM以及RUP實質的SQA工作流中的質量的真正含義。
            SQA和CMM
            軟件工程協會(SEI)將軟件質量保證設置為CMM的基礎級別2。他們也將所有其它關鍵過程域的驗證和確認放在了質量保證中。此外,CMM反復強調高級管理人員必須“保護個人履行SQA責任”,因為這有可能會給發現不一致問題的職員帶來管理上的問題。如此強調 SQA活動和需求,為什么沒有一個SQA工作流,以及更重要的是在RUP中沒有一個SQA角色呢?一個SQA工作流會提供活動,還有工件,以及在其它RUP流程里提供個人執行SQA的各自的檢查點。
            虛擬的SQA工作流
            為了解決這個迷惑,我尋找什么是已經被證實了的RUP里有效解決問題的實踐。RUP是通過軟件工程過程權威(SEPA)進行質量保證--盡管理論上是SQA,這是一個組的職責,而不是一個個體的角色。我做了一個練習,創建了RUP的一個視圖,以滿足SQA角色的需要,如同在CMM中所確定的那樣。我特別實行了Leslee Probasco在“RUP的十點要素--一個有效開發過程的精髓”中所描述的建議,3來創建一個真實的SQA工作流。在她的論文(在此以后用RUP10來指代),Probasco推薦形成一個有標簽的筆記本4,每個標簽代表每個要素(V-PRI-BAPE-CU),用來管理一個項目的基本元素。所以我創建了一個這樣的筆記本,每個標簽包括了RUP的必要工件描述,復制了相關活動以產生RUP已經定義的元素和所有的檢查點,還有個人記錄和元素以支持各自的要素。
            例如,對于必要元素 #1,遠景(Vision),我插入了遠景工件的副本,還有RUP中用于產生遠景的三個活動:開發遠景,管理依賴關系,以及評估概念構架的生存能力。我也包括了遠景和涉眾請求檢查點的一個副本。接著我執行了這些活動,將結論文檔化,并且正如Probasco建議的那樣,我產生了很多記錄。5在我對RUP和CMM有了更多認識時,我增加了更多的工件、活動、檢查點以及指南到相應的標簽中。
            遠景
            遠景的開發包括了很多的便箋,因為眾多的遠景都會成為想法。遠景必須有效地針對涉眾所面對的問題。SQA工程師既不是一個RUP角色,也沒有一個所描述活動和定義工件的工作流視圖。為了更好地理解我的涉眾-SQA工程師的需要,我借用了Alan Cooper的The Inmates Are Running the Asylum及其開發“角色”的實踐。6我的SQA工程師角色是一位名叫Ginger的女性。她在RUP和CMM的訓練方面屬于中級水平的工程師。在對分配給她的項目上涉及到的過程不一致發出錯誤警告上,她并不是資歷較淺的,但是在期望她挑戰那些擁有更多過程或領域專門知識上也并不是經驗豐富的。
            Cooper 這樣形容“消極角色”:某些人,對于他們,過程不是在被構建,而是需要更好地理解過程需求。這些消極的角色代表了30多個的RUP角色,這些角色是Ginger必須接口的,因為她提供了對產生的工件產品和執行的活動的客觀評審。這些個人在軟件開發實踐方面接受了更細致的訓練和練習。Ginger不在項目中,并且沒有涉及到所有的項目活動,因此對她來說,很容易遺漏或誤解一些事情。當 Ginger足夠成熟來理解她的個人職責時,她被期望知道在什么時間和執行哪些驗證和確認活動,她不被期望能夠強制過程一致性(就是SEPA)。進一步的,與CMM一致的是,當她嘗試“逐步升高項目外部的偏差”到可執行級時,她被保護以免于可能的“敵對人員行為”。
            計劃
            對于Ginger,計劃就是遵循RUP10,并產生一個虛擬的SQA工作流程。過程規模度量的搜集、分析和報告是Gingre必需進行的工作。她知道在RUP里有多少工件、活動、角色評審和評估的步驟,因此能夠更好地計劃和安排她的任務時間表。在沖突解決領域,她知道工件的所有人和活動的產生者不是相同的角色這種情況,她或許能通過確保這些工件的檢查點或規格特征在每個團隊成員間達成一致。這些在RUP10素材筆記本里的表述幫助Ginger知道了什么、在哪里以及如何開始她的質量審核。她的工作流程將會遵循RUP過程相關的素材和圖表,作為RUP的工件和活動集合。我也會進一步使用RUP10來配置一個過程,集中在質量和使用的規模度量上(通過階段和角色來統計工件和活動)。
            風險
            對Ginger而言,計算風險意味著將場景腳本化。成功和可選場景揭示了在項目中沖突可能出現的地方。CMM通過重復使得履行SQA角色的個人需要得到保護這點非常清晰。因此,虛擬的SQA工作流程需要揭示潛在的危險領域。如果Ginger的老板是項目經理,對她的職業生涯有什么影響?如果她識別了一個不一致問題,但是項目不能按照過程來解決它,那么她必須把這個問題進行上報到這個經理之上。此風險的緩解包括確保過程是明確的,并且在沖突可能出現的區域,在C級別(CIO,COO,等)上得到管理委員會的批準。
            問題
            對Ginger而言關鍵問題是術語。RUP和CMM都有大量的詞匯。當在審計期間發現過程中有一個不一致問題時,在挑選出什么是必需的和什么僅僅是方針上可能會有一些困難。當不一致的問題在項目中出現時,開發過程就變成了存儲庫,每個人都從中尋找為他們自己辯護或攻擊其他人的東西。過程的機械模仿變成了會議和電子郵件中的標準操作流程。管理是強迫的、迫不得已的,間歇前進。因此,“捕獲一個公共詞匯表”的RUP活動--特別是評價結果的步驟--需要非常仔細地來解決這個問題。所有過程的涉眾--經理,實施人員,以及Ginger--必需同意 1)什么是過程所必需的,2)在項目開始前什么只是一個方針。
          業務用例
            識別業務用例是簡單的。組織的高級管理人員建立業務用例來完成CMM的合格證明。這依次變成個人、項目和組織過程所有者的業務用例。
            構架
            所有構件設計模式的來源,模型-視圖-控制器8,是此項任務的理想構架設計模式。在這個經典模式中,模型是過程(RUP),視圖是Ginger的,并且控制器是質量活動(包括測試)。質量活動必須使成本和進度處于項目的控制之下,以滿足CMM的精神。其它設計模式也在過程定義里也有一席之地,也就是維護和支持。這些模式包括反射(變更工作產品以變更開發者的行為),仲裁人(解決沖突--對SEPA有益),以及命令鏈(提升遠離項目的不一致)。
            產品
            Ginger的一個虛擬SQA工作流包括了RUP工件及其檢查點、活動及其步驟的度量和總結,和計劃不同CMM活動的角色總結。她也有一個RUP10要素的筆記本,分別按照RUP和CMM的相關項進行了裁剪,包括了將RUP映射到CMM的IBM白皮書。她現在可能正用這項信息來計劃并執行其工件的過程審計。這個視圖讓她知道:
            1)哪些RUP的產品工件有檢查點;
            2)哪些工件推薦為必需的,哪些工件對于一個給定的階段是可選的;
            3)哪些活動具有稱為“結果的評估和驗證”的步驟,以及誰來驗證它們。
            例如,軟件需求規格說明書(SRS)工件是需求詳細說明人負責的。它有定義的檢查點,是詳細說明軟件需求活動的結果,也是由需求詳細說明人執行的。它是定義測試方法活動的一個輸入,定義測試方法活動包含評估和驗證你的結果(對于測試設計人員)和確認測試動因(由測試經理)。Ginger需要確保擔任測試設計人員和測試經理角色的個人被包含在需求的評審中,并且她可能使用檢查點來執行分別的產品審計。Ginger現在知道如何有效地和高效地報告產品和過程度量給SEPA。
            評估項目管理者聯盟
            Ginger對過程的評估需要檢查在開始的時候先檢查利己主義(她的和我的)。我們必需保持關注,并且為了避免被她的批評觀點所泄氣,我需要對他們加以分類,或者是 1)一個過程的誤傳,這需要修正,或者 2) 一個過程需求的誤傳,這需要澄清。同樣地,當在她的項目中發現偏離時,Ginger必需將她的評估展現為建設性的批評;出于同樣原因,當她發現指示一致時,她必須提供積極的反饋。所有這些都需要進一步發展和改進過程。
            變更
            管理材料的變更是非常不正式的,并且及時地根據Ginger的需要進行管理。簡單的日期和時間標注還有電子郵件日志這樣指示變更的基本解釋是不足的。
            用戶支持
            對Ginger提供支持如此簡單,就象是重新建立特定的RUP工作流、角色、活動、工件或CMM關鍵實踐。RUP10論文展示了過程建立、配置和監控的一個清晰路徑。
            結束語
            使用RUP10為Ginger建立一個虛擬的SQA工作流是富于挑戰性的和有益的,因為正如我所發現的,質量的概念出現在RUP的任何地方。關于SQA工作流的一個明顯之處是在測試工作流和要求評估的已定義活動中。然而,帶有檢查點以及工件和活動集合在測試或其它流程中的地方的工件數量,以及涉及到的多個角色,要求每個人想到Ginger。質量活動不是被限制為由一個指定的角色執行的一個單一活動或一組活動。而且,SQA角色是在所有的角色中共享的,而不是從這個包中分離出去的。組織必需依靠其所有的員工來在每個點上確保質量,一個產品就是在這些點上被定義、設計、實現、配置、評審、測試和發布的。Ginger只不過是這個負責質量的抽象角色的實現--一個使用Cooper術語“角色”:當所有的角色都執行分配給他們的活動時,我們必須考慮這個角色的多個方面。
            備注
            1 因為質量保證被植入了CMM和集成CMM(CMMI)的階段,因此在本文的上下文中,區分對于區別兩個模型不是必需的。我簡單地查閱了整個“CMM”。有關CMM和軟件CMMI更多的信息,以及關鍵過程域。
            2 帶有特別是級別1的CMM過程成熟度的基礎等級(2)。
            3 參見“The Ten Essentials of RUP:The Essence of an Effective Development Process”,Leslee Probasco, IBM Rational 白皮書

          posted on 2014-10-30 11:28 順其自然EVO 閱讀(155) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年10月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 安远县| 洞头县| 洪泽县| 鄱阳县| 磐安县| 剑川县| 奉新县| 余干县| 永新县| 樟树市| 尤溪县| 文成县| 大安市| 搜索| 融水| 平昌县| 宁都县| 高阳县| 军事| 双江| 剑阁县| 南通市| 玉屏| 湖口县| 哈巴河县| 田阳县| 鲜城| 宁德市| 习水县| 朔州市| 麻江县| 麻阳| 晋城| 湘潭市| 晴隆县| 玉屏| 乌苏市| 景泰县| 临漳县| 和龙市| 营口市|