|
在《從IT方法論來談Scrum》中我談到了6Ways方法框架,本篇仍用6Ways方法框架來概括的談?wù)凴UP方法。
軟件開發(fā)過程描述了軟件構(gòu)造、部署和維護的一種方法。統(tǒng)一過程(Unified Process)是一種流行的構(gòu)造面向?qū)ο笙到y(tǒng)的軟件開發(fā)過程。RUP(Rational Unified Process)是對UP的詳細精化,并且已經(jīng)被廣泛采納。有些人可能一看到RUP提供這么多流程和工件,覺得不夠敏捷,我認為RUP本身其實是一個方法框架,本身也可以采納一些現(xiàn)在敏捷實踐。采用什么方法重要,但采用方法后的執(zhí)行更重要,對RUP來說,如果我們做得好就是敏捷,做不好就可能瀑布了。
The way of thinking
軟件開發(fā)中成功的項目比例很少,原因很多,如:沒有正確的理解用戶需求、沒有能力處理需求的改變、模塊不能集成、軟件很難維護和擴展、很晚才發(fā)現(xiàn)重要的項目缺陷、不好的軟件質(zhì)量、不能接收的軟件性能等。基于導(dǎo)致項目失敗的這些原因,RUP認為下面這些最佳實踐可以改善軟件的開發(fā)狀況:
- 在早期迭代中解決高風險和高價值的問題
- 不斷的讓用戶參與評估、反饋和需求
- 在早期迭代中建立內(nèi)聚的核心架構(gòu)
- 不斷地驗證質(zhì)量:提早、經(jīng)常和實際的測試
- 可視化軟件建模(使用UML)
- 仔細的管理需求
- 實行變更請求和配置管理
The way of working
迭代是UP最重要的思想。RUP重要的概念之一:周期(cycles),如下圖由多個周期構(gòu)成一個軟件開發(fā)生命周期。
對于每個周期,下圖展現(xiàn)了更為詳細的不同階段(Phase)和流程:
四個階段
- 初始階段(Inception):預(yù)見項目的范圍、構(gòu)想和業(yè)務(wù)案例 (Lifecycle Objective)
- 初始階段不是一個需求階段,而是類似與可行性階段,項目相關(guān)人員是否就項目的構(gòu)想達成基本的一致,項目是否值得繼續(xù)進行認真的研究
- 時間不應(yīng)超過一周,只需要確定這個項目是否值得認真研究,而不是真正去深入研究項目(這個工作留待細化階段進行)如果預(yù)選就決定項目必須進行,而且項目明顯是可行的,那么初始階段會很短,可能只包含一次需求研討會,并為第一次迭代執(zhí)行計劃,然后就快速的進入細化階段
- 主要實踐活動-用例建模
- 對于迭代開發(fā)的一個關(guān)鍵理解在于:過程中的工件在初始階段只是部分完成,在之后的迭代中在逐步精化提煉。例如,用例模型可以列舉大多數(shù)所需的用例和參與者,但其中可能只有10%的用例會被詳細描述,這樣就足以建立起有關(guān)系統(tǒng)的范圍、目標和風險的高層的大致構(gòu)想。
- 主要工件:是否意味著大量的文檔?工件是可選的,只需要從下面選擇對項目確實有價值的工件,放棄哪些不必要的工件,工件的關(guān)鍵不是文檔或圖表本身,而是其中蘊含的思想、分析和前期準備。
- 構(gòu)想和業(yè)務(wù)案例:描述高層的目標和約束、業(yè)務(wù)案例,并提供一個執(zhí)行摘要
- 用例模型:描述功能需求和相關(guān)的非功能需求
- 補充規(guī)范:描述其他需求
- 術(shù)語表:關(guān)鍵的領(lǐng)域術(shù)語
- 風險列表和風險管理計劃:描述業(yè)務(wù)、技術(shù)、資源和進度的風險,以及如何減輕這些風險或該如何應(yīng)對
- 原型和概念驗證:闡明構(gòu)想,驗證技術(shù)問題。
- 迭代計劃:描述在第一次細化迭代中該作什么
- 階段計劃和軟件開發(fā)計劃:對細化階段的持續(xù)時間和工作量進行低精度的猜測。開發(fā)涉及的工具、人員、培訓(xùn)和其他資源
- 開發(fā)案例:描述為本項目定制的統(tǒng)一過程的步驟和工件。在統(tǒng)一過程中,總需要為項目定制一些步驟或工件
- 細化階段(Elaboration):已精化的構(gòu)想,核心架構(gòu)的迭代實現(xiàn),高風險的解決,大多數(shù)需求和范圍的識別,更為現(xiàn)實的評估。 (Lifecycle Architecture)
- 細化階段不是一個需求或設(shè)計階段,而是一個迭代實現(xiàn)核心架構(gòu)并降低高風險的階段
- 構(gòu)造階段(Construction):迭代實現(xiàn)遺留下來的風險較低和比較容易的元素,準備部署 (Initial Operational Capability)
- 移交階段(Transition):beta測試,部署 (Product Release)
多個流程
- 業(yè)務(wù)建模:在開發(fā)單獨的應(yīng)用時,業(yè)務(wù)建模包括領(lǐng)域?qū)ο蠼!T趶氖麓笠?guī)模業(yè)務(wù)分析或業(yè)務(wù)過程再工程時,業(yè)務(wù)建模包括跨越整個企業(yè)的業(yè)務(wù)過程的動態(tài)建模。
- 需求:對應(yīng)用的需求分析,如寫出用例和識別非功能性需求
- 分析和設(shè)計:設(shè)計的所有方面,包括總體架構(gòu)、對象、數(shù)據(jù)庫、網(wǎng)絡(luò)連接等。分析強調(diào)的是對問題和需求的調(diào)查研究,而不是解決方案。設(shè)計強調(diào)的是滿足需求的概念上的解決方案,而不是其實現(xiàn)。分析和設(shè)計可以被概括為:作正確的事(分析)和正確的做事(設(shè)計)。
- 實現(xiàn):編程和構(gòu)建系統(tǒng),而不是部署系統(tǒng)
- 測試
- 配置和變更管理
- 項目管理
- 環(huán)境:指建立工具并為項目定制過程,也就是說,設(shè)置工具和過程環(huán)境。
1-5為核心工作流程,6-8為支持工作流程
The way of controlling
- 如何計劃和管理迭代:需要多少迭代?每次迭代多長時間?每次迭代的目的是什么?如何跟蹤每次迭代情況?
The Phase Plan (Project Plan):一個粗略的計劃,每個開發(fā)項目只有一份項目計劃。包括了一個周期(cycle)內(nèi)所有的環(huán)節(jié)(有時也可以包含多個周期)。計劃包含主要里程碑的時間,要求的資源。如果能夠明確分幾個iteratio,則需要標識時每個小里程碑的時間和目的。
- The Iteration Plan:迭代計劃,包含當前迭代的詳細計劃,包括時間、任務(wù)和資源分配,在當前迭代后半期還需要包含下一個迭代的計劃
- 風險管理
- 度量
The way of modeling
RUP在不同流程中會由不同模型支持,下圖為模型和流程對應(yīng)圖:
對于每個模型,RUP描述who在when時how做what。RUP使用五個主要元素來表達:
角色: the who
活動: the how
工件:the what
工作流: the when
規(guī)程(Disciplines): 組合前面四種元素
下圖為其中一個示例:
The way of supporting
Rational (現(xiàn)IBM)提供了對RUP的工具支持。
The way of communicating
RUP定義了一系列流程和工件,這些工作作為各角色間溝通的主要內(nèi)容,用例和架構(gòu)是RUP的兩個重要內(nèi)容。
- 用例驅(qū)動開發(fā):使用用例表達需求,對業(yè)務(wù)進行描述。用例作為整個開發(fā)流程的基礎(chǔ)。
- 架構(gòu)為中心流程:架構(gòu)使用多個、協(xié)調(diào)一致的視圖來表達系統(tǒng),作為概念、構(gòu)建、管理和演進系統(tǒng)的主要工件
其他
如何做一個成功的架構(gòu)師——玩轉(zhuǎn)RUP
Enterprise Unified Process(EUP) 一個RUP的擴展
Agile Modeling and the Rational Unified Process (RUP) EUP 引入了許多企業(yè)級別的規(guī)程,包括操作和支持以及七個企業(yè)規(guī)程:企業(yè)業(yè)務(wù)建模、組合管理、企業(yè)架構(gòu)、戰(zhàn)略重用、人員管理、企業(yè)管理、軟件流程改進。RUP 與 EUP 之間的一個基本區(qū)別在于后者處理完整的 IT 生命周期。RUP 僅處理該生命周期的軟件開發(fā)部分。
Making the Unified Process Work in Practice
The Agile Unified Process (AUP)
書籍
The Rational Unified Process: An Introduction, Third Edition
UP和XP
- UP建議增量的編寫用例和非功能性需求文檔(XP不是)
- UP建議在迭代開始,主要編程之前繪制更多的可視化設(shè)計圖(例如耗時半天或一天),XP建議用一點點時間來做可視化設(shè)計(例如30分鐘)
it知識庫:從IT方法論來談RUP,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。