現代軟體過程概述

2021-05-23 20:55:02 字數 3870 閱讀 4048

來自: http://www.anymobile.org

1、軟體過程

隨著軟體系統的規模和複雜性的增加,其開發成本和風險隨之增加,軟體的質量問題已成為制約軟體發展的關鍵因素之一。

所謂軟體過程,即軟體專案的開發過程,是指軟體生命週期中,用於開發和維護軟體產品的一系列過程,它與團隊的組織管理以及開發技能相輔相成,全面提公升軟體產品的質量。

近年來,軟體過程日益得到重視,國際軟體界的敏捷、統一熱也在持續公升溫。 與傳統的開發過程相比,敏捷過程更強調快速靈活反應,主動迎接和適應變化,主張更緊密的客戶與開發商協作,以人為本的可持續發展,典型的有 xp (極限程式設計)、 fdd (特徵驅動開發)等;統一軟體過程以 rup 為代表,採用 oo 技術對軟體開發過程本身進行業務建模,整合了迭代開發、用例驅動、 uml 視覺化建模、 ooad 、架構設計、專案管理等許多主流先進的當代軟體工藝。

在軟體專案開發過程中,應該能夠識別、分析不同軟體專案的特點,採用相對適合的開發實踐來適應軟體開發過程,保證對軟體開發的有效支援,如 rup 與xp 的融合。

2、

xp ,極限程式設計

極限程式設計( extreme propgramming , xp )是由 kent beck 在 1996 年開創,是一種演進式的原型化方法,以最大化發揮人的能量為核心目標,以「小步快走」的邏輯指導開發,具有溝通高效、設計簡單、反饋迅速等特點,是一種輕量級、敏捷的過程方法。

極限程式設計基於四個價值目標:溝通( communication )、簡化 (simplicity) 、反饋 (feedback) 和勇氣 (courage) ,由 12 個最佳實踐為這四個價值提供支援。

極限程式設計的生命週期包括 4 個基本活動:編碼 (coding) 、測試 (testing) 、聆聽 (listening) 、設計 (designing) 。

2.14個價值目標

溝通:讓開發人員集體負責所有**並結隊工作,鼓勵與客戶及團隊內部保持溝通。

簡化:鼓勵只開發當前的功能,避免過多的文件,專注於最小化解決方案,做好為為新特性改變設計,在系統隱喻和**規範下不斷重構的準備。

反饋:通過單元測試和功能測試獲得快速反饋。

勇氣:提倡積極面對現實和處理問題的勇氣,擁抱變化。

2.212個最佳實踐

(1 xp最佳實踐)

有計畫的開發:通過結合使用優先順序「故事」和技術估算,確定下一版本的功能。

小型發布:以小的增量版本經常向客戶發布軟體。

系統隱喻:隱喻是乙個高層次的系統構想;需要不斷的細化架構,來指導全部開發。

簡單設計:通過保持**簡單從而保證設計簡單。不斷的在**中尋找複雜點並且立刻進行移除。

測試驅動:「先測試,後編碼」。使用者編寫測試內容以對 " 故事 " 進行測試。程式設計師編寫測試內容來發現**中的任何問題。在編寫**前先編寫測試內容。

重構:這是一項簡化技術,用來移除**中的重複內容和複雜之處。

結對程式設計:團隊中的兩個成員使用同一臺計算機開發所有的**。乙個人編寫**或者驅動,另乙個人同時審查**的正確性和可理解性。

集體**所有權:任何人都擁有所有的**。提高**透明度,增強團隊合作精神。

持續整合:每天按任務多次建立和整合系統,隨著需求變化,進行不斷的回歸測試。

每週 40 小時工作制:程式設計師在疲勞時無法保證最高效率。連續兩周加班是絕對不允許的,否則會影響工作效率。

現場客戶:至少有一名真實的客戶全天候工作於開發環境中,幫助定義系統、編寫測試內容並回答問題。

編碼規範:程式設計師採用統一的編碼規範。

總體來說, xp 部分滿足了 cmm2~3 級關鍵過程域 (kpa) 的要求, xp 側重與過程和技術, cmm 更注重組織和管理。

3、fdd ,特徵驅動開發

特徵驅動開發( feature drive develop , fdd ), together 創始人 peter coad 所創。通過特徵來制定開發計畫,以每日構建為核心,強調按特徵分步開發和交付。乙個特徵就是乙個小的、具有客戶價值的功能,通常表示為  。

4、rup , rational 統一過程

迭代軟體開發的發展背景:軟體的不確定和高風險等特性,使得傳統的瀑布式開發力不從心;迭代有助於盡快發現和解決風險;迭代有助於控制專案的節奏,加快反饋,增強專案的控制力度,實現過程的有序化;迭代符合人們對事物的認識逐步加深,解決問題的能力隨經驗逐步提高。 

rational 統一過程( rational unified process , rup ),是用例驅動、以體系結構為中心,迭代、增量的軟體開發過程。適合大、中型專案。

rup 強調採用現代軟體開發的一些最佳實踐,作為一種降低開發新軟體所帶來的內在風險的方式。這些最佳實踐包括:

1) 迭代開發;

2) 管理需求;

3) 使用基於元件的構架;

4) 可視建模;

5) 持續的質量驗證;

6) 控制變更。

rup 是乙個迭代過程,確定了任何軟體開發專案的四個階段:初始階段、精化階段、構建階段和交付階段。每個階段包括一次或多次迭代;每一次迭代都會生成更加接近最終產品的可執行版本。 

a 、初始階段:識別和規避專案的主要風險,建立用例模型框架,並制定里程碑日期的階段計畫;

b 、精化階段:分析問題領域,建立健全的體系結構基礎,編制專案計畫,淘汰專案中最高風險的元素,完成部分優先順序最高的用例開發;

c 、構建階段:分為多個迭代,逐步完成不同優先順序的用例開發,核心 case-> 高風險 case-> 次核心 case-> 其它 case ;

d 、交付階段:進行各種功能、效能測試,進行產品化、部署,完成整個系統的開發工作。 

(2 rup概述圖)

rup迭代開發過程

a 、第一次迭代

1)   捕獲需求

2)   建立初始的領域模型

3)   建立用例模型框架

4)   制定開發計畫

b 、第二次迭代

1)   關鍵用例的 robustness 分析與互動建模

2)   體系結構設計

3)   建立類模型

4)   關鍵用例的開發與測試

5)   完善用例模型

c 、第 n 次迭代

完成所有用例的分析、設計與開發。

d 、最後的迭代

1)   整體測試:進行各種功能、效能和壓力測試。

2)   部署與安裝:生成相應的部署圖。

3)   產品化:進行一些產品化的包裝。

注:每一次迭代之後,都應該交付乙個可以執行的中間版本。 

(3 rup迭代流)

5、

spp ,精簡並行過程

精簡並行過程( simplified parallel process , spp ),對 cmmi 3 級以內各過程域的內容和要求作了「精簡」處理,包括 19 個過程域、 40 餘個規程和近 60 個文件模板 。強調在產品生命週期之內,專案管理過程、專案研發過程和機構支撐過程「並行」開展。 

(4 spp)

軟體過程改進解決方案( spis )――林銳發明。

核心組成部分

1) 軟體過程改進諮詢服務;

2) 軟體工程與專案管理培訓;

3) 基於 web 的整合化專案管理工具, future 。

future 採用 cmmi 和 spp 為參考標準。主要功能包括專案規劃、專案監控、質量管理、配置管理、需求管理、日常工作管理等。

Map Reduce過程概述

map reduce的過程首先是由客戶端提交乙個任務開始的。提交任務主要是通過jobclient.runjob jobconf 靜態函式實現的 public static runningjob runjob jobconf job throws ioexception finally finally...

現代軟體工程 備份

自我介紹一下,我叫鄒欣,是微軟亞洲研究院 創新工程中心 首席研發主管 principal development manager 我 和同事們一起把研究成果轉化為商業軟體產品和服務。近期主要專注於垂直搜尋,企業搜尋,軟體開發工具和數字娛樂等領域。在工作之餘,我也寫書 移山之道,程式設計之美 寫部落格...

軟體效能概述

1.1.1 軟體效能的概念 軟體效能是與軟體功能相對應的一種非常重要的非功能特性,表明了軟體系統對時間及 時性及資源經濟性的要求。1.1.2 不同角色對軟體效能的理解 1 系統使用者 響應時間。使用者執行乙個功能操作後,到軟體把本次操作的結果完全展示給使用者所消耗的時間。2 系統運維人員 穩定,可擴...