<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Cyh的博客

    Email:kissyan4916@163.com
    posts - 26, comments - 19, trackbacks - 0, articles - 220

    筆記之《未雨綢繆》

    Posted on 2009-02-16 20:58 啥都寫點 閱讀(380) 評論(0)  編輯  收藏 所屬分類: 軟件工程

    什么是軟件配置管理

     “一套應用技術上和管理上的指導和監督的方法,用來:識別和記錄配置項的功能特征和物理特征;控制這些特征的變更;記錄和報告變更的處理和執行的狀態;以及驗證其是否符合特定的需求。”

    基本的版本控制:記錄版本,防止混亂

    2.2 建立公共存儲區

           公共存儲區是個星形結構

    2.3 防止版本覆蓋

          第一種方法 串行的方法(鎖定要修改的代碼)

          第二種方法 并行的方法

    按任務單元組織工作

    任務單元(Task)又稱活動(Activity)

    從源代碼的實際變動的角度看,任務單元對應于一個或多個文件上的一處或多處具體的代碼改動。這些改動組合在一起,通常管它叫一個變更集

    注意:每個任務單元所對應的工作量,不要太大。說對應的源代碼改動,不要太多。否則,不好查閱修改情況,也不好管理。如果是個很大的任務單元,那就要考慮把它劃分成若干小一些的任務單元

    3.3 適時的更新工作空間

    3.4 保證任務單元完成的質量

           保證任務單元完成的質量,進而保證整個產品的整體質量,是每一個程序開發者的責任,絕不僅僅是測試工程師、集成工程師等角色的責任。

        除了自測試外,有的團隊還會引入同行評審(Peer Review,又稱為代碼走查(Code Insepction.

           于此相關的是有些敏捷開發團隊采用結對編程(Pair Programming技術,目的之一也是提高程序質量

        作為軟件研發項目的協調者,管理者也需要做些事情,進到自己的職責,比如在產品即將上市,或進入維護期后,管理者要站出來,加強控制,加強評審,保證“讓產品趨于穩定,并且盡快上市”這樣的目標的實現

    提交后,版本庫里最新版本不能工作怎么辦??

       常用辦法:提交前,更新工作空間到當時產品的最新版本。然后,在工作空間里編譯鏈接,并作粗略的測試,證明程序可以運行。這之后,在提交。

    產品的整體版本

         4.1 記錄源代碼的整體版本

               整體版本,是項目開發的某一時刻的全部源代碼的一個“截圖”,行話叫“快照”(Snapshot)。

               基線(Baseline):被明顯地標識和記錄下來的源代碼整體版本。

         4.2 保存安裝包

               可以保存在共享目錄下,該共享目錄可在局域網上共享。

         4.3 開發—測試—發布

               在送交系統測試之前,除了保存源代碼的整體版本,還應該保存安裝包。

    第五章關注源代碼整體質量

    集成的步驟

    1、 應該確保開發人員都提交了相關的源代碼

    2、 凍結或者標識將要集成的源代碼

    3、 取出要集成的源代碼,最好是存放到一個全新的工作空間

    4、 編譯,鏈接和打安裝包。目的是由源代碼生成可以測試、發布的安裝包。這通常稱為構建(build)。

    5、 安裝并粗略測試。僅僅能通過構建,通常是不夠的。

    6、 標識和儲存集成成果。集成成果又兩個,一個事源代碼的整體版本,一個是生成的安裝包。它們都要被合理的標識和存儲

    7、 通知相關人員,本次集成完成。

    間接工作流(Non-immediateWorkflow):更新到基線而非最新源代碼上的方法。

    直接工作流(ImmediateWorkflow)總是更新到最新源代碼上的方法。

    每日構建(Daily Build/Nightly Build)及早和經常的集成

    持續集成(Continuous Integration)持續集成認為,集成應該更為繁瑣。

    什么時候用到分層集成:內部高聚合,外部松耦合的時候需要。

    第六章構件管理與環境設置                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        

    構建:簡單的說,就是從源代碼生產出安裝包的過程。

    從源代碼到安裝包這一生成轉換過程,要有足夠的管理,確保其可重復性。

    1、 原材料是固定和明確的。

    2、 工具是固定和明確的

    3、 參數設置也必須是固定和明確的。這在具體執行編譯、鏈接和打包的命令參數上體現出來

    4、 生產過程是固定和明確的。

    想要做到這一點,一個好的辦法是自動化,盡可能的自動化。

    全量構建與增量構建       

    全量構建:從頭來過,從每一個源文件的編譯開始

    增量構建:盡可能地利用上次構建的成果。增量構建的輸入,不僅包括原材料,還包括上次構件中,產生的中間產品,比如編譯產生的很多中間文件。

    記錄構建相關信息:

    1、 構建是怎么定的,怎么配的。

    2、 構建的執行情況。

    環境和設置:不止是在構建的時候

    軟件開發相關的環境:構建環境、開發環境、運行環境。

    管理是發現、傳播和共享的過程

    第七章分支:減少等待,分頭工作

    文件級分支

    產品級分支

    典型應用一:實現多層集成

    典型應用二:實現交迭

    分支為什么這樣有用:

    1、 適當隔離

    2、 適當共享

    工作空間:本質是以產品的一個整體版本為起點,再加上一個未完成的任務單元。

    工作空間支持隔離,支持共享

    分支和工作空間都支持隔離和共享,為什么同時需要這兩個:

        兩者各有優勢和劣勢,它們之間是相互配合、相互補充的關系,而不是相互替代的關系。

    1、 分支無法代替工作空間。工作空間可以容納未完成的任務單元,尚未檢入和提交的修改,正在時時刻刻不斷變化的修改,因此直接支持開發人員的日常工作。無論是否使用分支,一定要使用工作空間。

    2、 只使用工作空間,不使用分支,常常是不夠的。分支又3個優勢:

    A、可以同時容納多個已提交的任務單元,并以此和其他分支相區別----工作空間只能容納一個未完成的任務單元

    B、分支存儲在服務器上,比存儲在本地的工作空間要安全

    C、分支是所有人都能看見的,并且如果有必要,所有人都能在其上工作,而工作空間是單個開發人員自己的地盤,只有他可以在里面工作

    分支有個弱點,就是不能改變其起始點。    

    第八章管理文檔

    文檔的標識和存儲

     它們與源代碼的不同主要體現在兩方面:

    1、 “文責自負”,因此,對文檔的修改的協調,通常是用鎖機制,或者干脆就不提供自動機制。

    2、 “獨立成篇

      自帶的說明信息

          文檔常有明確的所有者,由他修改,其他人只是閱讀。文檔通常獨立成篇,文檔間的耦合性不強。因此文檔的傳遞和復制,通常管制比較松。這就要求,文檔本身的一些信息,比如版本信息等,要由它自身攜帶。

    文檔中起始的一到二頁,常常用來更全面地記錄和展現相關信息:

    1、 關于文檔的名稱,在文件名中,可能只是以縮寫體現的。在文檔中就應該給出文檔名稱的全名。

    2、 應該以某種方式,指出文檔的“出處”。

    文檔通常會有一定的密級,不同的文檔,密級可能不同。應該在文檔起始頁明確標出文檔的密級,讓使用者留意自己的行為。這是公司司法務部門特別關注的,他們同樣關注版權信息。這通常也明確標識在文檔的起始處。

    對于當前版本的信息,主要有三項:1、版本號 2、版本產生時間 3、版本目的或狀態 對于文檔也類似

    文檔的狀態,通常有如下三種:1、草稿(Draft) 2、評審中(InReview) 3、已發布(Released)

    文檔的作者和參與者的信息,也應該被記錄。比較全面的的記錄內容包括:

    l         誰是這份文檔的主人,對文檔的內容及文檔書寫的協調工作責任?

    l         哪些人是這份文檔的主要作者,書寫了這份文檔的絕大部分內容?對于中小型文檔,通常主要作者只有一個人,且他就是文檔的主人。

    l         哪些人為這份文檔做出了貢獻,包括正式的評審和非正式的建議等?

    l         如果這份文檔是已經被批準,正式發布的文檔,那么,是那些人批準的,以誰的名義發布的?

    關于版本歷史信息。每次修改并保存版本,通常要記錄如下信息

    l         修改后的版本號

    l         修改完成的時間

    l         本次修改的修改者

    l         這個版本的最終狀態

    l         對修改的簡單描述

    趨勢:WIKI

    如果想知道關注的特定內容在哪個文檔里,就得依次打開各個文檔,看其簡要介紹。為了去除這些不便之處WIKI產生

    WIKI首先是一種語言,一種像HTML一樣的既有內容,又有格式的語言。

    登陸WIKI系統,在特定頁面的可編輯區域里,用WIKI語言書寫,修改和保存。而在展現給別人的時候,WIKI系統會自動把它翻譯成了HTML語言,在瀏覽器中顯示。

    WIKI定位與“面向社群的協作式協作”。它很好的做到了這一點。

    趨勢:數據文件和數據庫

       更好的方法是用一套需求管理工具來管理需求信息。每個需求是一個條目,條目可以有各種屬性;條目有它的修改歷史;條目之間的關系被記錄,一旦一個條目被修改,相關的條目會被提醒要不要修改,等等。需求管理工具把這些數據,保存在特定各式的數據庫文件里,或者數據庫里。使用需求管理工具來記錄和管理需求,比用一般文檔文件來記錄和管理需求,要方便地多

    還有些工具,為軟件開發活動提供支持。這里,討論關于這些工具所保存和使用的數據的管理工作。這些數據,同樣是軟件項目的資產,同樣應該進行軟件配置管理。這主要通過兩種途徑實現:

    由相關工具本身提供一定的軟件配置管理功能。

    對數據文件或數據庫,進行外在的、整體的管理。

     途徑一和途徑二相輔相成。

    第九章       跟蹤缺陷,直到消滅

    Bug跟蹤系統,學名叫缺陷跟蹤系統(Defect Tracking System.

    發現了這個缺陷,并且報上來。(Reported已報告)

    大致看看這個缺陷,并分配給合適的程序員去處理。(Assigned已分配)

    解決這個缺陷,這道工序由程序員來完成。(Resolved已解決)

    確定這個缺陷真的被修復了(Closed已關閉)

    準確記錄,便于修復

    每條缺陷記錄,有一行標題Title,或者叫總結(Summary),簡述缺陷的內容。

    還有一些字段能起到類似作用,比如關鍵字(Key Words。

    對于真正修改源代碼以修復缺陷的程序員而言,它們需要對缺陷的詳細描述,這通常通過讓缺陷報告者填寫細節描述(Description)區域來實現

    對缺陷的詳細描述,一定要做到可以復現這個缺陷。要詳細記錄當時的操作環境,當時的操作步驟,以及當時的缺陷現象。 對缺陷的詳細描述,是處理缺陷和檢驗處理結果的依據,十分重要!

    在有些缺陷跟蹤跟蹤系統里,除了可以用文字詳細描述缺陷外,還可以上傳相關附件,比如,當時缺陷情況的截圖或使得程序保存的輸入數據文件等。

    救護是依據傷員布條的顏色,修復缺陷也有類似的屬性。它們是兩個:嚴重程度優先級

    我們需要遵循一個原則,那就是,避免帶著許多缺陷前進,缺陷應該盡快被消滅。

    關聯缺陷記錄與任務單元

       缺陷記錄與任務單元之間的關系,并不一定總是一對一的關系。有的缺陷的修復,需要對程序有比較大的調整,需要多個人一起配合,于是,需要有多個任務單元。而另一些時候,幾個相關的缺陷,可能是通過一個任務單元就都修復了

    分析統計缺陷相關數據

       在缺陷管理方面,我們有典型的三類統計。這三類統計,各有益處:

    用來回答缺陷是怎么分布、數量是多少。

    用來回答隨著時間的遷移,缺陷的總體趨勢是什么樣的。

    關于缺陷年齡的統計。

       另一種展現方式,是報表:報表的好處是,文字上的東西可以多些;具體的數字,可以看的更清楚些;交給領導,也更像樣子。

    第十章管理變更

       比缺陷更廣闊的話題,是變更請求,比變更請求更廣闊的話題,是變更。

       變更在不同的文檔中,在不同的上下文中,有不同的含義,而我們更關心的是功能需求上的變更請求,架構設計上的變更請求。

    管理細小的變更

      功能增強(Enhancement):指一些小小的請求,請求吧程序已有的功能,稍稍增強一點,或者稍稍改變一下。

    對這類請求的管理,就有點像缺陷的管理:缺陷的特點1、數量多,容易丟;2、通常每個涉及的改動工作量都不大,經常是一個任務單元就能完成;3、通常每個缺陷都能明確對應到源代碼的改動;4、通常缺陷之間相互獨立,不要通盤考慮。  正是因為這樣的特點,所以把缺陷按條目記錄,進而分別跟蹤、處理,直至解決。

    但是功能增強的處理流程,與缺陷的處理流程,也有所不同。這主要體現在兩點上:

    需要對功能增強有仔細的評估,進而確定是否要實現。

    功能增強所導致的修改,常常不僅是源代碼的修改。  

    在瀑布模型中管理變更

    瀑布模型希望能夠借助在傳統工程中的成功經驗,來實現軟件開發項目的成功。

    瀑布模型希望也能用這樣的方法進行軟件開發。

    在瀑布模型中,變更的管理很重要。其主要的關注點是:一但定下來的事,就要執行,不能亂改。要減少變更,變更不能隨意發生。所以,變更管理的核心是,嚴格控制變更。

    一個常見的做法,設立變更控制委員會(Change Control Board,CCB

     

    在迭代模型中管理變更

    它的思想核心是,盡早反饋。

    迭代式開發把一個大項目在時間軸分解成很多個小項目,每個小項目被稱作一個迭代(Iteration。幾乎每次迭代都會包含需求分析,系統設計,代碼實現,以及集成和測試。

    在每次迭代的過程中,通常不會接受新的變更,特別是比較大的變更。每次迭代的時間不長,一般只是三四個星期,應該集中精力在要做的事情上,而不是對要做什么猶豫不決。

    影響變更控制的因素

    作為嚴格的變更控制,需要在變更提出時,填寫足夠詳盡的相關信息。然后是足夠的變更評估,評估變更影響的方方面面。之后,做出變更決定。這也要經過充分討論,并最終取得一致。接著,是變更的實施,對源代碼和文檔的改動。變更實施后,要經過足夠的測試和驗證,保證變更真的發生了,真的正確地發生了。

    不是所有的變更,都要經歷這么嚴格的控制,那么,哪些因素會影響對變更的控制程度和控制流程呢?

    l         變更的類型

    l         變更的大小

    l         變更的影響面

    l         變更的風險

    l         變更發生的時間

    l         研發規模

    記錄產品版本間的差異

     發布給用戶的文檔,除了關于整個產品的描述文檔,比如使用手冊外,還要有關于版本間差異的說明。這通常在發布說明(Release Notes文檔中實現。

     現在,我們重點關注版本間差異的說明。我們如何產生這個說明?信息從哪兒來?

     有四個途徑:

    查看版本控制系統。

    查看變更請求數據庫

    查看項目計劃或迭代計劃

    查看需求數據庫或需求文檔

    控制產品版本間的差異

      在版本控制系統里,我們可以加一些控制,以保證程序員做且只做該做的事:

       第一種方法是,讓任務單元不是由程序員創建,而是由管理人員創建,然后指定給相應的程序員完成。

       第二種方法是事后控制。在程序員完成了任務單元后,如果想提交,需要得到某種批準。只有符合本次版本需要的任務單元,才可以提交。

    第十一章產品整個生命周期內的配置管理

    制定計劃

    計劃文檔的內容及詳略在不同的項目間有極大的差異。計劃文檔內容及繁簡,主要受以下幾方面因素的影響:

    組織級軟件配置管理系統建設的情況,包括工具

    特定項目“與眾不同”的程度。越是特殊的項目,越需要更多的計劃,并體現為計劃文檔的內容。

    特定項目的軟件配置管理的復雜性。

    軟件配置管理計劃中的內容,可能會隨著時間的推移、項目的進展而改變。應該積極面對這樣的變化,適當調整計劃,并反映在計劃文檔上。文檔需要持續維護。

    做好準備

       軟件配置管理系統,可大致分為工具、過程和人三個方面。要做好軟件配置管理系統的運行準備,就要做好這三個方面的準備

    監控、調整與改進

    軟件配置管理系統的運行,既需要參與者的深刻理解和自覺執行,也需要某種形式的監控。

    第一類調整:項目的軟件配置管理策略、方法,需要隨著項目的緊張進行調整。 

    第二類調整:在制定計劃時,不能準備地估計到項目對軟件配置管理的需求;不能準確地估計到在這個項目中,各項軟件配置管理工作應該怎么做,應該做到什么程度。

    隨著對軟件配置管理的認識不斷提高,會對流程進行調整;隨著新的軟件配置管理工具的選型、購買、安裝設置的完成,會對項目所用工具進行調整。這類以提

    升為主要特征的調整,通常被稱為改進。

    收尾

    在產品發布、項目收尾階段,軟件配置管理同樣需要進行收尾工作。這主要包括兩個方面,軟件資產的整理和歸檔工作、軟件配置管理本身的總結和共享工作。

    第十二章玄妙的學院派

    配置管理由配置識別、配置控制、配置狀態報告、配置審計四部分組成。

    配置識別(Configuration Identification

    包括選擇產品的配置項、為它們指定唯一的標識,并在技術文檔中記錄其功能和物理的特征。

    配置控制 (Configuration Control)

    包含評估、協調、批準/拒絕、實施對配置項的變更。這應該發生在正式的配置識別之后

    對于變更,還有協調的工作要做,這主要體現在三個方面:

    在不同的變更請求之間的關聯性。

    一個變更請求,可能會影響到不同的產品,因為它所進行的改動,是在一個公共組件上,這個組件被好幾個產品使用。

    體現在完成的先后順序上,有的請求比較緊急,有的請求比較重大,要優先安排人力資源去完成,有些則可以拖一拖。

    配置狀態報告 (Configuration Status Report)

    記錄和報告用來有效管理配置所需的必要信息。這些信息包括一個已批準的配置識別清單,變更請求當前的處理狀態,以及已批準的變更的實現情況。

    配置審計 (Configuration Audit)

    執行審計以驗證配置項符合特定的標準或需求

    配置審計定義中所說的審計,是指對象本身是否符合需求和相關的標準,而不是制作對象的過程。

    那么軟件配置項的審計,是指什么呢?

       首先,是要確保需求文檔反映了客戶的需求,設計文檔反映了需求文檔的要求,源代碼實現了設計文檔的目標。這樣一層層遞進,以確保跑起來的程序,就是客戶想要的。

       其次,在源代碼寫完之后,要進行單元測試;集成時,要做粗略測試;進而,由系統測試團隊進行系統測試;最后,由用戶或用戶代表進行接受測試。

    審計又被分為功能審計物理審計

    在相關標準里

      能力成熟度集成模型(Capability Maturity Model Integration,CMMI中,對包括軟件配置管理在內的配置管理工作,從如下角度進行了劃分。

    l         建立基線

           首先,識別配置項;接著,建立配置管理系統,用來存放配置項;最后,通過評審或測試后,由配置項組成基線,作為未來開發的基礎。

    l         建立并控制變更

    l         建立完整性

            首先,要對配置管理活動做足夠的記錄;其次,要進行配置審計。

     以上3個方面,是針對配置管理的要求。還有兩方面,使用于各方面的管理,配置管理也需要:

    l         制度化已管理過程

            在一個軟件研發項目中做配置管理,首先要建立配置管理計劃,然后確保有足夠的資源,包括工具、環境、也包括人員。在配置管理系統運轉過程中,要適當監控。

    l         制度化已定義過程

            要形成可以指導現在和未來多個軟件研發項目的配置管理過程規范。這樣的規范不是一成不變的。要收集相關的信息、數據和反饋,并基于此,進行軟件配置管理的持續的改進。

     軟件能力成熟度模型(Capability Maturity Model for Software,SW-CMM

    l         執行約定

    l         執行能力

    l         執行的活動

    l         度量和分析

    l         驗證實施



                                                                                                           --    學海無涯
            

    主站蜘蛛池模板: 啦啦啦手机完整免费高清观看 | 99在线精品免费视频九九视| 亚洲一区二区三区在线| 好男人看视频免费2019中文| 亚洲免费视频一区二区三区| 亚洲成人黄色在线| 亚洲一级特黄大片在线观看| 2021国内精品久久久久精免费| 亚洲日韩在线中文字幕综合| 久久精品国产亚洲av四虎| 好先生在线观看免费播放| 韩国免费A级毛片久久| 亚洲免费观看网站| 在线观看亚洲精品福利片| 无码人妻久久一区二区三区免费丨| 一级毛片a女人刺激视频免费| 91午夜精品亚洲一区二区三区| 免费国产高清视频| 7723日本高清完整版免费| 国产线视频精品免费观看视频| 亚洲色欲色欲www| 亚洲AV福利天堂一区二区三| 成人亚洲网站www在线观看| 在线观看亚洲天天一三视| 免费福利在线播放| 国产成人免费ā片在线观看老同学 | 无码人妻久久一区二区三区免费丨| 国产线视频精品免费观看视频| 亚洲gay片在线gv网站| 亚洲成年人电影网站| 亚洲美女又黄又爽在线观看| 精品国产麻豆免费网站| 1000部拍拍拍18免费网站| 东方aⅴ免费观看久久av| 看一级毛片免费观看视频| 亚洲第一成人在线| 亚洲最大的视频网站| 亚洲国产精品免费视频| 亚洲综合国产一区二区三区| 免费一级毛片不卡不收费| 在线a毛片免费视频观看|