原來在學習軟件工程中瞭解到軟件生命週期階段是可行性分析、需求、概要設計、詳細設計、編碼實現、測試、運行於維護等階段,在軟件工程中,把軟件生命週期中指導軟件開發的模型稱爲軟件開發模型或軟件生命週期模型,軟件開發典型的模型有:瀑布模型、快速原型模型、螺旋模型、迭代模型等。在軟件開發的過程中可以運用結構化的設計和分析方法以數據流爲驅動並結合以上軟件開發模型開進行軟件開發;也可以運用面向對象的設計和分析方法以事件爲驅動並結合以上軟件開發模型來進行軟件開發。但是後來學習了一門名爲《面向對象的方法與設計》的課後,接觸到RUP統一軟件過程和UML建模語言後,腦子裏就糊糊的,弄不清楚原來學習軟件工程中生命週期、生命週期模型、結構化設計方法、面向對象設計方法的關聯。
於是在網上查閱了許多資料後,腦子裏的概念清晰了許多,其實軟件的生命週期就好比人的生命週期——從嬰兒時期,幼兒時期,少年時期,青年時期,中年時期到老年時期以及最後死亡的過程一樣,軟件也有從生產期消亡期的過程。而統一軟件過程就是在軟件生命週期過程中以用例爲驅動、構架爲中心來進行一次一次的增量式的迭代,每次迭代都是以上一次迭代爲基礎並生成包括構件的源代碼體、需求說明、測試用例等的製品。每次的迭代又具體分爲四個階段:初始、細化、提交和轉移,而在每個階段又分爲五個工作流:需求、分析、設計、實現和測試。統一軟件開發過程是基於面向對象方法和UML統一建模語言的,用這種方法論來指導軟件開發主要可以解決兩個問題:1.軟件復用問題;2.需求變化問題。下面就是我整合資料和學習的過程!在這個過程中我認爲,做任何事情要有目標性,因此要帶着問題去研究,只有這樣自己纔會有收獲!
1.軟件過程:將用戶需求轉化爲軟件系統所需要的活動的集合。
2.統一軟件過程:不僅僅是一個簡單的軟件過程,而是一個通用的過程框架,可用於不同類型的應用系統、各種不同的應用領域、各種不同類型的組織、各種不同功能和規模的項目。它是基於構件(Component-based)的,即所構造的軟件系統是由軟件構件通過明確定義的接口相互鏈接所建造起來的。並且它使用統一建模語言(Unified Modeling Language,UML)來制定系統的所有藍圖。
(1)統一軟件過程的特點:用例驅動、以構架爲中心、迭代和增量的軟件過程框架。
1)統一過程是用例驅動的
用戶(User):軟件系統是爲瞭解決用戶的需求的,因此對於一個系統必須首先確定它的用戶(User),即參與者。這個User不僅僅指人,也可以是其他系統。即用戶是與系統進行交互的事物。
用例(User Case):是用戶對系統的業務需求,即用例是能夠像用戶提供有價值結果的系統中的一種功能。
所有的用戶和用例組合在一起就是用例模型,它描述了系統的全部功能。用例圖促使我們從系統對用戶的價值方面來考慮問題,是站在用戶的角度出發,以人爲本。並且用例圖不僅能確定用戶的需求,還可以驅動系統設計、實現和測試的進行,也就是說用例可以驅動開發過程。用例驅動表明開發過程是沿着一個流——一系列從用例得到的工作流前進的:用例被確定、用例被設計、最後用例又稱爲測試人員構造測試用例的基礎
2)統一過程是以構架爲中心的
什麼是軟件構架?
軟件構架的作用與建築構架所起的作用類似。軟件系統的構架是從不同的角度描述即將構造的系統。
注意:軟件架構(software architecture),是一系列相關的抽象模式,用於指導大型軟件系統各個方面的設計。軟件架構是一個系統的草圖。它描述的對象是直接構成系統的抽象組件,各個組件之間的連接明確和相對細致地描述組件之間的通訊。在實現階段,這些抽象組件被細化爲實際的組件,在面向對象領域中,組件之間的連接通常用接口來實現。
軟件構架包含了系統中最重要的靜態和動態特徵。構架刻畫了系統的整體設計,去掉了細節部分,突出了系統的重要特性,然而“究竟什麼是重要的”部分依賴於判斷,而判斷由來自於經驗,所以構架的價值也就依賴於執行該任務的人的素質,在構架的過程中可以幫助構架師確定正確的目標。
用例和架構之間是什麼關系?
每一種產品都具有功能和表現形式兩個方面,其中功能與用例相對應,表現形式與構架相對應。因此用例在實現時必須適應於構架,然而隨着系統的發展,用例也在不斷的進化,所以構架必須設計得使系統能夠進化,不僅要考慮系統的初始開發,而且要考慮將來的發展。爲了能夠找到這樣的一種表現形式(構架),構架師必須從全面瞭解系統的主要功能(即主要用例)入手,這些主要的用例構成了系統的核心功能。
構架應該遵循什麼步驟?
首先,從不是專門針對用例的那部分架構開始,如平臺,創建一個粗略的構架輪廓。
其次,着手處理已經確定重要的用例子集,這些用例代表着即將開發系統的主要功能,詳細描述每一個用例,並通過子系統、類和構件來實現。隨着用例的描述趨於完善,構架的更多部分便會顯現出來,從而也使更多的用例趨於完善。
最後,迭代這個工程直到確信得到一個穩定的構架爲止。
3)統一過程是迭代和增量的過程
軟降開發是一項複雜的過程,因此可以將這些項目劃分爲切實可行並能夠產生一個增量的迭代過程。
什麼是迭代和增量?
迭代:工作流中的步驟;
增量:產品中增加的部分。
迭代的原則是什麼?
爲了獲得最佳的效果,迭代過程必須是受控的(Controlled),也就是說他們必須按照計劃好的步驟有選擇地執行。
如何確定迭代過程中要實現的目標呢?
首先迭代過程就是用來處理一組用例的,這些用例組合起來就能夠擴展所開發產品的可用性。其次迭代過程要解決最突出的風險問題。只有這樣後續的迭代過程才能建立在前一次迭代過程的基礎上。
迭代的過程是什麼?
以選定的構架爲向導,用構件來實現設計前期已經標識並詳細描述好的有關用例。如果一次迭代達到了目的,就可以進入下一次迭代,如果一次迭代沒有帶到預期的目標,那麼必須重新審核前面的方法,並嘗試一種新的方法。
對增量的理解:一個增量不一定是對原有製品的增加,在生命週期初始期,增量是對最初簡單設計的完善和改進;而在以後的階段增量通常是對原有製品的增加。
3.統一過程的軟件生命週期
統一過程的軟件生命週期就是從軟件的產生到消亡期間進行的一次次迭代,每次迭代都會產生一個產品版本,並且本次迭代是基於上次迭代的。
1)什麼是產品?
產品是包括由能夠編譯和運行的構件的源代碼體、各種手冊和交付品。它不僅能夠運行還需要滿足客戶和產品相關人員的需求。
2)統一開發過程中的產品所依賴的模型有哪些?
產品就是軟件系統的一個構件,但是隻有這些是僅僅不夠的,因爲環境(操作系統、數據庫系統)在變化,此外隨着更好的理解任務,需求本身也在變化。因此統一開發過程中每次迭代要依據一些模型來產生產品。如下圖:
用例模型:包含用例與用戶之間的關系
分析模型:更詳細的提煉用例,將系統的行爲初步分配給提供行爲的一組對象
設計模型:將系統靜態結構定義爲子系統、類和接口,並定義由子系統、類和接口之間的協作所實現的用例。
實現模型:包括構件(表現爲源代碼)和類到構件的映射。
實施模型:定義計算機的物理節點和構件到這些節點的映射。
測試模型:描述用於驗證用例的測試用例。
業務模型:描述系統業務預警的領域模型。
所有的這些模型都是相關的,它們合起來表示整個系統。由上圖從上往下看,下面的模型對上面的模型有跟蹤依賴關系。這有利於系統的理解和修改。
3)統一開發過程每次迭代都包含哪些階段?
每次迭代分爲四個階段:初始、細化、構造和移交。
每次迭代都要經歷一定的時間,這個迭代的時間又可以分爲四個階段:初始、細化、構造和移交。而在每個階段,管理人員或開發人員又可以將本階段的工作進一步劃分爲多次迭代過程以及每次迭代過程所產生的增量。每個階段都以一個里程碑作爲結束標記,並可以獲得一組可用的製品來定義每個里程碑。
里程碑有什麼作用?
里程碑的關鍵用途是能夠幫助管理人員在進入下一個階段之前據此作出某些意義重大的決定。還可以跟蹤每個階段所投入的時間和其他開銷。這些對項目的控制和發展都是很有用的。
4)每次迭代的階段都要進行哪些工作?
迭代的每個階段通常又進一步細分爲多次迭代過程,一次典型的迭代階段(初始、細化、構造、移交)都要經歷五種工作流:需求、分析、設計、實現和測試。
5)每個階段的主要任務是什麼?
初始階段(inception phase)
主要回答下列問題:系統向它夫人每個主要用戶提供什麼基本功能?(確定參與者和用例)
該系統的基本粗略構架是什麼?(包括主要子系統的大致輪廓)
開發該產品的計劃是什麼?開銷多大?(可行性分析)
這個階段最主要的是確定項目的風險及其優先次序,並對細化階段進行詳細規劃和對整個項目進行粗略計算。
細化階段(elaborattion phase)
根據主要的用例描述設計出詳細的系統構架。構架包括了用例模型、分析模型、設計模型、實現模型(包含一些構件)和實施模型的視圖。
這個階段主要是解決用例、構架和計劃是否足夠穩定可靠,風險釋放得到充分控制,以便能夠按照合同的規定完成整個開發任務。
構造階段(construction phase)
將構造出最終產品。
移交階段(transition phase)
包括產品進入beta版後的整個階段。開發人員改正用戶報告產品的缺陷和不足。
4.總結
統一過程是基於構件的,它採用新的可視化建模標準,即統一建模語言(UML),它依賴三個關鍵概念——用例驅動、以構架爲中心及迭代和增量式的開發。爲了使這些概念能夠發揮作用,需要一個包括多個方面的過程,而統一過程就是一個考慮到生命週期、階段、工作流、風險緩解、質量監控、項目管理和配置管理的軟件開發過程。在這個過程中以用例驅動,以構架爲中心以及迭代和增量開發的概念是同等重要的。構架提供了一種結構來指導迭代過程中的工作,而用例則去頂了目標並驅動每次迭代的工作,去掉三個主要概念中的任何一個,都會嚴重降低統一過程的價值。
參考網址:http://www.cnblogs.com/xiaruyan/archive/2011/04/24/2026344.html