版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
軟體工程第1章概論2/151電腦軟體電腦軟體指電腦系統中的程式及其文檔程式是計算任務的處理對象和處理規則的描述任務:以電腦為處理工具的任務都是計算任務處理對象:數據(如數據、文字、圖形、圖像、聲音等,它們只是表示,而無含義)或資訊(數據及有關的含義)處理規則一般指處理的動作和步驟。程式必須裝入電腦內才能工作文檔是為了便於瞭解程式所需的闡明性資料,文檔一般是給人看的,不一定裝入電腦3/151軟體的發展
1946-1956年從電腦問世到實用的高級程式語言出現前存儲容量比較小,運算速度比較慢採用個體工作方式,用低級語言編寫程式應用領域主要是以數值數據處理為主的科學計算,其特點是輸入、輸出量較小衡量程式品質的標準主要是功效,即運行時間省、佔用記憶體小主要研究內容是科學計算程式、服務性程式和程式庫,研究對象是順序程式4/1511956-1968年
從實用的高級程式語言出現到軟體工程出現前記憶體容量大,週邊設備得到迅速發展,出現了高級程式設計語言應用領域包括數據處理(非數值數據),其特點是計算量不大,但輸入、輸出量卻較大高速主機與低速週邊設備的矛盾突出,出現了操作系統、併發程式、資料庫及其管理系統20世紀60年代初提出了軟體一詞,開始認識到文檔的重要性研究高級程式設計語言、編譯程序、操作系統、支持編程的工具及各種應用軟體工作方式逐步從個體方式轉向合作方式出現軟體危機5/1511968年-至今從軟體工程出現到現在硬體向巨型機和微型機二個方向發展,出現了電腦網絡,軟體方面提出了軟體工程,出現了“電腦輔助軟體工程”(CASE)電腦的應用領域滲透到各個業務領域,出現了嵌入式應用,其特點是受制於它所嵌入的宿主系統開發方式逐步由個體合作方式轉向工程方式軟體工程方面的研究主要包括軟體開發模型、軟體開發方法及技術、軟體工具與環境、軟體過程、軟體自動化系統等軟體方面研究以智能化、自動化、集成化、並行化、以及自然化為標誌的軟體開發新技術6/151軟體危機
許多軟體專案不能滿足客戶的要求許多軟體專案超出預算和時間安排7/151軟體危機的表現對軟體開發成本和進度的估計常常很不正確用戶對“已完成的”軟體系統不滿意的現象經常發生軟體產品的品質往往靠不住軟體常常是不可維護的軟體通常沒有適當的文檔資料軟體成本在電腦系統總成本中所占的比例逐年上升軟體開發生產率提高的速度遠遠跟不上電腦應用迅速普及深入的趨勢8/151軟體危機的原因軟體是邏輯產品,開發進度、成本難以估計缺乏或不完整、不一致的文檔給維護帶來困難用戶對軟體需求的描述往往不夠精確,有遺漏,有二義軟體開發人員對需求的理解與用戶的本來願望有差異大型軟體專案需多人協同完成,缺乏管理經驗開發人員不能有效地、獨立自主地處理大型軟體的全部關係缺乏有力的方法學和工具的支持軟體專案的特殊性和人類智力的局限性9/151克服軟體危機的途徑消除錯誤的概念和做法推廣使用成功的開發技術和方法使用軟體工具和軟體工程支持環境加強軟體管理10/151軟體的特點軟體是一種邏輯實體,而不是有形的系統元件,其開發成本和進度難以準確地估算軟體是被開發的或被設計的,它沒有明顯的製造過程,一旦開發成功,只需複製即可,但其維護的工作量大軟體的使用沒有硬體那樣的機械磨損和老化問題11/15112/151其他特點:軟體的開發和運行常受到電腦硬體的限制,對電腦硬體有著不同程度的依賴性軟體的開發至今尚未完全實現自動化軟體成本相當昂貴相當多的軟體工作涉及到社會因素13/15114/151軟體的分類系統軟體:屬於電腦系統中最靠近硬體的一層,其他軟體一般都通過系統軟體發揮作用,它與具體的應用領域無關。如操作系統、編譯程序等。支持軟體:支持軟體的開發和維護的軟體。如數據庫管理系統、網路軟體、軟體開發環境等。應用軟體:特定應用領域專用的軟體。如實時軟體、嵌入式軟體、科學和工程計算軟體、事務處理軟體、人工智慧軟體等。15/151
按軟體工作方式劃分:即時處理軟體分時軟體互動式軟體批處理軟體按軟體服務對象的範圍劃分:專案軟體產品軟體
16/151
按使用的頻度進行劃分:
一次使用頻繁使用按軟體失效的影響進行劃分:
高可靠性軟體一般可靠性軟體17/151軟體語言
softwarelanguage
軟體語言是用於書寫電腦軟體的語言。它主要包括:
需求定義語言功能性語言設計性語言實現性語言(即程式設計語言)文檔語言18/151需求定義語言
requirementsdefinitionlanguage需求定義語言用來書寫軟體需求定義。軟體需求定義是軟體功能需求和非功能需求的定義性描述。軟體功能需求刻畫軟體“做什麼”,軟體非功能需求刻畫諸如功能性限制、設計限制、環境描述、數據與通信規程及專案管理等典型的需求定義語言有PSL語言(ProblemStatementLanguage問題陳述語言)19/151功能性語言
functionallanguage功能性語言用來書寫軟體功能規約(functionalspecification)軟體功能規約是軟體功能的嚴格而完整的陳述。通常它只刻畫軟體系統“做什麼”的外部功能,而不涉及系統“如何做”的內部演算法。典型的功能性語言有廣譜語言、Z語言。20/151設計性語言
designlanguage設計性語言用來書寫軟體設計規約(designspecification)軟體設計規約是軟體設計的嚴格而完整的陳述。一方面,它是軟體功能歸約的演算法性細化,刻畫軟體“如何做”的內部演算法,另一方面,它是軟體實現的依據。典型的設計性語言有PDL語言(ProgramDesignLanguage)21/151實現性語言
實現性語言用來書寫電腦程式實現性語言也稱編程語言或程式設計語言(programminglanguage)程式設計語言可按語言的級別、對使用者的要求、應用範圍、使用方式、成分性質等多種角度進行分類
22/151
按語言級別分:低級語言和高級語言
低級語言是與特定電腦體系結構密切相關的程式設計語言,如機器語言、組合語言。其特點是與機器有關,功效高,但使用複雜,開發費時,難維護。
高級語言是不反映特定電腦體系結構的程式設計語言,它的表示方法比低級語言更接近於待解問題的表示方法。其特點是在一定程度上與具體機器無關,易學、易用、易維護。但高級語言程式經編譯後產生的目標程式的功效往往較低。23/151
按用戶要求分:過程式語言和非過程式語言
過程式語言(procedurallanguage)是通過指明一列可執行的運算及運算次序來描述計算過程的程式設計語言。如FORTRAN、COBOL、C等。
非過程式語言(nonprocedurallanguage)是不顯式指明處理過程細節的程式設計語言。在這種語言中儘量引進各種抽象度較高的非過程性描述手段,以期做到在程式中增加“做什麼”的描述成分,減少“如何做”的細節描述。如第四代語言(4GL)、函數式語言、邏輯式語言。24/151也可稱:命令式語言和申述式語言
命令式語言(imperativelanguage)即過程式語言。
申述式語言(declarativelanguage)是著重描述要處理什麼,而非描述如何處理的語言。申述式語言程式是關於問題解的約束陳述,這些約束迫使含於實現中的演算法處理機制生成一個解或一組解。如函數式語言、邏輯式語言。25/151
函數式語言(functionalprogramminglanguage)中函數是構造程式的基本成分,它提供一些設施用於構造更為複雜的函數。程式人員根據提出的問題去定義求解函數(即主程序),其中可能包含一些輔助函數。如Lisp語言。
邏輯式語言(logicprogramminglanguage)的基本運算單位是謂詞。謂詞定義了變元間的邏輯關係。例如,Prolog語言的基本形式是Horn子句,其程式圍繞著某一主題的事實、規則和詢問三類語句組成。這三類語句分別用來陳述事實、定義規則和提出問題。26/151
按應用範圍分:通用語言和專用語言
通用語言指目標非單一的語言,如FORTRAN、COBOL、C等。
專用語言指目標單一的語言,如自動數控程式APT。27/151
按使用方式分:互動式語言和非互動式語言
互動式語言指具有反映人機交互作用的語言,如BASIC。
非互動式語言指不反映人機交互作用的語言,如FORTRAN、COBOL。28/151
按成分性質分:順序語言、併發語言、分佈語言
順序語言指只含順序成分的語言,如FORTRAN、C。
併發語言指含有併發成分的語言,如Modula、Ada、併發Pascal。
分佈語言指考慮到分佈計算要求的語言,如Modula。29/151文檔語言
documentationlanguage
文檔語言用來書寫軟體文檔。電腦軟體文檔是電腦開發、維護和使用過程的檔案資料和對軟體本身的闡述性資料。通常用自然語言或半形式化語言書寫。30/151內容摘要電腦軟體軟體工程軟體過程軟體過程模型敏捷軟體開發CASE工具與環境31/151軟體工程定義1968年NATO(北大西洋公約組織)會議上首次提出FritzBauer:軟體工程是為了經濟地獲得可靠的和能在實際機器上高效運行的軟體而建立和使用的好的工程原則IEEE:軟體工程是(1)將系統化的、規範的、可度量的方法應用於軟體的開發、運行和維護的過程,即將工程化應用於軟體中;(2)(1)中所述方法的研究電腦科學技術百科全書:軟體工程是應用電腦科學、數學及管理科學等原理,以工程化的原則和方法製作軟體的工程32/151軟體工程的框架
目標:生產具有正確性、可用性以及價格合宜的產品
正確性反映軟體產品實現相應功能規約的程度;
可用性反映軟體的基本結構、實現及其文檔為用戶可用的程度;
價格合宜反映軟體開發與運行的總代價滿足用戶要求的程度。33/151
過程(Process):生產一個最終滿足需求且達到工程目標的軟體產品所需要的步驟軟體工程過程包括:開發過程、運作過程、維護過程、管理過程、支持過程、獲取過程、供應過程、剪裁過程等34/151
原則:選取適宜的開發模型採用合適的設計方法提供高質量的工程支持重視軟體工程的管理35/151軟體生存週期
(softwarelifecycle)軟體有一個孕育、誕生、成長、成熟、衰亡的生存過程。這個過程即為電腦軟體的生存週期軟體生存週期大體可分為如下幾個活動:電腦系統工程、需求分析、設計、編碼、測試、運行和維護36/151電腦系統工程電腦系統包括電腦硬體、軟體、使用電腦系統的人、資料庫、文檔、規程等系統元素。電腦系統工程的任務:確定待開發軟體的總體要求和範圍,以及它與其它電腦系統元素之間的關係進行成本估算,做出進度安排進行可行性分析,即從經濟、技術、法律等方面分析待開發的軟體是否有可行的解決方案,並在若干個可行的解決方案中作出選擇。37/151軟體需求分析主要解決待開發軟體要“做什麼”的問題確定軟體的功能、性能、數據、介面等要求,生成軟體需求規約。38/151軟體設計主要解決待開發軟體“怎麼做”的問題。軟體設計通常可分為系統設計(也稱概要設計或總體設計)和詳細設計。系統設計的任務是設計軟體系統的體系結構,包括軟體系統的組成成分、各成分的功能和介面、成分間的連接和通信,同時設計全局數據結構;詳細設計的任務是設計各個組成成分的實現細節,包括局部數據結構和演算法等。39/151編碼
用某種程式設計語言,將設計的結果轉換為可執行的程式代碼。測試發現並糾正軟體中的錯誤和缺陷。測試主要包括單元測試、集成測試、確認測試和系統測試。運行和維護在軟體運行期間,當發現了軟體中潛藏的錯誤或需要增加新的功能或使軟體適應外界環境的變化等情況出現時對軟體進行修改。40/151內容摘要電腦軟體軟體工程軟體過程軟體過程模型敏捷軟體開發CASE工具與環境41/151軟體過程軟體過程是軟體生存週期中的一系列相關的過程。過程是活動的集合,活動是任務的集合。軟體過程有三層含義:個體含義,即指軟體產品或系統在生存週期中的某一類活動的集合,如軟體開發過程,軟體管理過程等;整體含義,即指軟體產品或系統在所有上述含義下的軟體過程的總體;工程含義,即指解決軟體過程的工程,它應用軟體工程的原則、方法來構造軟體過程模型,並結合軟體產品的具體要求進行實例化,以及在用戶環境下的運作,以此進一步提高軟體生產率,降低成本。42/151ISO12207軟體生存週期過程ISO/IEC12207標準把軟體生存週期中可以開展的活動分為5個基本過程,8個支持過程和4個組織過程。每一個過程劃分為一組活動,每項活動進一步劃分為一組任務。43/151
基本(primary)過程供各當事方在軟體生存週期期間使用。包括:獲取(acquisition)過程:確定需方和組織向供方獲取系統、軟體或軟體服務的活動。供應(supply)過程:確定供方和組織向需方提供系統、軟體或軟體服務的活動。開發(development)過程:確定開發者和組織定義並開發軟體的活動。運作(operation)過程:確定操作者和組織在規定的環境中為其用戶提供運行電腦系統服務的活動。維護(maintenance)過程:確定維護者和組織提供維護軟體服務的活動。44/151
支持(supporting)過程用於支持其他過程,它有助於軟體專案的成功和品質提高。包括:文檔編制(documentation)過程:確定記錄生存週期過程產生的資訊所需的活動。配置管理(configurationmanagement)過程:確定配置管理活動。品質保證(qualityassurance)過程:確定客觀地保證軟體和過程符合規定的要求以及已建立的計畫所需的活動。驗證(verification)過程:根據軟體專案要求,按不同深度確定驗證軟體所需的活動。45/151確認(validation)過程:確定確認軟體所需的活動。聯合評審(jointreview)過程:確定評價一項活動的狀態和產品所需的活動。審計(audit)過程:確定為判斷符合要求、計畫和合同所需的活動。問題解決(problemresolution)過程:確定一個用於分析和解決問題的過程。46/151
組織(organizational)過程用於軟體組織建立和實現構成相關生存週期的基礎結構和人事制度,並不斷改進這種結構和過程。包括:管理(management)過程:確定生存週期過程中的基本管理活動。基礎設施(infrastructure)過程:確定建立生存週期過程基礎結構的基本活動。改進(improvement)過程:確定一個組織為建立、測量、控制和改進其生存週期過程所需開展的基本活動。培訓(training)過程:確定提供經適當培訓的人員所需的活動。47/151ISO/IEC12207為軟體生存週期過程建立了一個公共框架,它提供了一組標準的過程、活動和任務。對於一個軟體專案,可根據其具體情況對標準的過程、活動和任務進行剪裁,即刪除不適用的過程、活動和任務。ISO/IEC12207標準的附錄A中的剪裁(tailoring)過程規定了在針對該標準進行剪裁時所需要的基本活動(包括:明確專案環境;請求輸入;選擇過程、活動和任務;把剪裁決定和理由寫成文檔),剪裁過程的輸出是:剪裁決定和理由記錄。附錄B就剪裁要點提供簡要說明,並列出一些關鍵要素,可以根據這些要素作出剪裁決定。48/151能力成熟度模型CMMCMM(CapabilityMaturityModel)即能力成熟度模型,是美國卡耐基梅隆大學軟體工程研究所(SEI)在美國國防部資助下於二十世紀八十年代末建立的,用於評價軟體機構的軟體過程能力成熟度的模型。此模型在建立和發展之初,主要目的在於提供一種評價軟體承接方能力的方法,為大型軟體專案的招投標活動提供一種全面而客觀的評審依據。而發展到後來,又同時被軟體組織用於改進其軟體過程。49/151軟體組織的成熟與不成熟1.不成熟的軟體組織軟體過程一般並不預先計畫,而是在專案進行中由實際工作人員及管理員臨時計畫有時,即使軟體過程已計畫好,仍不按計畫執行沒有一個客觀的基準來判斷產品品質,或解決產品和過程中的問題對軟體過程步驟如何影響軟體品質,一無所知,產品品質得不到保證。而且,一些提高品質的環節,如檢查、測試等經常由於要趕進度而減少或取消產品在交付前,對客戶來說,一切都是不可見的50/151沒有長遠目標,管理員通常只關注解決任何當前的危機由於沒有實事求是地估計進度、預算,因此他們經常超支、超時。當最後期限臨近,他們往往在功能性和品質上妥協,或以加班加點方式趕進度51/1512.成熟的軟體組織具有全面而充分的組織和管理軟體開發和維護過程的能力管理員監視軟體產品的品質以及生產這些產品的過程制定了一系列客觀基準來判別產品品質,並分析產品和過程中的問題進度和預算可以按照以前積累的經驗來制定,結果可行。預期的成本、進度、功能與性能和品質都能實現,並達到目的能準確及時地向工作人員通報實際軟體過程,並按照計畫有規則地(前後一致,不互相矛盾)工作凡規定的過程都編成文檔52/151軟體過程和實際工作方法相吻合。必要時,過程定義會及時更新,通過測試,或者通過成本-效益分析來改進過程。全體人員普遍地、積極地參與改進軟體過程的活動。在組織內部的各項目中,每人在軟體過程中的職責都十分清晰而明確,每人各守其責,協同工作,有條不紊,甚至能預見和防範問題的發生。53/151軟體過程成熟度等級CMM提供了一個成熟度等級框架:1級-初始級、2級-可重複級、3級-已定義級、4級-已管理級和5級-優化級。1.初始(initial)級:軟體過程的特點是無秩序的,甚至是混亂的。幾乎沒有什麼過程是經過妥善定義的,成功往往依賴於個人或小組的努力。2.可重複(repeatable)級:建立了基本的專案管理過程來跟蹤成本、進度和功能特性。制定了必要的過程紀律,能重複早先類似應用專案取得的成功。54/1513.已定義(defined)級:己將管理和工程活動兩方面的軟體過程文檔化、標準化,並綜合成該機構的標準軟體過程。所有專案均使用經批准、剪裁的標準軟體過程來開發和維護軟體。4.已管理(managed)級:收集對軟體過程和產品品質的詳細度量值,對軟體過程和產品都有定量的理解和控制。5.優化(optimizing)級:整個組織關注軟體過程改進的持續性、預見及增強自身,防止缺陷及問題的發生。過程的量化回饋和先進的新思想、新技術促使過程不斷改進。55/1515.優化級4.已管理級3.已定義級2.可重複級1.初始級標準、一致的過程有紀律的過程可預測的過程持續改進的過程軟體過程成熟度的5個等級56/151成熟度等級關鍵過程域共同特性關鍵實踐包含劃分為包含過程能力表明目標實現實施或制度化解決活動或基礎設施描述CMM結構能力成熟度模型的結構57/151能力成熟度模型的結構
成熟度等級表明了一個軟體組織的過程能力的水準。除初始級外,每個成熟度等級都包含若干個關鍵過程域(KeyProcessArea,簡稱KPA)(見表1.2)達到某個成熟度級別,該級別(以及較低級別)的所有關鍵過程域都必須得到滿足,並且過程必須實現制度化。58/151CMM提供了18個關鍵過程域,每個關鍵過程域都有一組對改進過程能力非常重要的目標,並確定了一組相應的關鍵實踐
目標說明了每一個關鍵過程域的範圍、界限和意義。
關鍵實踐描述了建立一個過程能力必須完成的活動和必須具備的基礎設施,完成了這些關鍵實踐就達到了相應關鍵過程域的目標,該關鍵過程域也就得到了滿足。每個關鍵過程域的關鍵實踐都是按照五個共同特性(執行約定,執行能力,執行活動,測量和分析,驗證實現)進行組織的,主要解決關鍵實踐的實施或制度化問題。59/151
共同特性將描述關鍵過程域的關鍵實踐組織起來。共同特性是一些屬性,指明一個關鍵過程域的執行和規範化是否有效、可重複和可持續。共有5個共同特性:執行約定,執行能力,執行活動,測量和分析,驗證實現。執行約定:執行約定描述機構為確保過程的建立和持續而必須採取的一些措施。典型內容包括建立機構策略和領導關係。60/151執行能力:執行能力描述了專案或機構完整地實現軟體過程所必須有的先決條件。典型內容包括資源、機構結構和培訓。執行活動:執行活動描述了執行一個關鍵過程域所必需的活動、任務和規程。典型內容包括制定計畫和規程、執行和跟蹤以及必要時採取糾正措施。測量和分析:測量和分析描述了為確定與過程有關的狀態所需的基本測量實踐。這些測量可用來控制和改進過程。典型內容包括可能採用的測量實例。61/151驗證實現:驗證實現描述了為確保執行的活動與已建立的過程一致所採取的步驟。典型內容包括管理部門和軟體品質保證組實施的評審和審核。在執行活動這個共同特性中的實踐描述了建立一個過程能力所必須完成的活動。所有其他實踐共同形成了一個使機構能將執行活動中描述的實踐進行規範化的基礎。各關鍵過程域的詳細描述,參見《能力成熟度模型(CMM):軟體過程改進指南》,卡耐基梅隆大學軟體工程研究所編著,劉孟仁等譯,電子工業出版社出版。62/151缺陷預防技術更新管理過程更改管理優化級定量過程管理軟體品質管理已管理級機構過程焦點機構過程定義培訓大綱綜合軟體管理軟體產品工程組間協調同行評審已定義級需求管理軟體專案計畫軟體專案跟蹤和監督軟體分包合同管理軟體品質保證軟體配置管理可重複級初始級能力成熟度級別中的關鍵過程域63/151關鍵過程域實例機構過程焦點第3級的關鍵過程域:已定義級
機構過程焦點的目的是,為能改進機構整體軟體過程能力的軟體過程活動建立機構的職責。
機構過程焦點包括,建立和維護機構軟體過程和專案軟體過程的默契關係,並協調有關評估、開發、維護和改進這些過程的活動。機構提供長期的約定和資源,以協調現在和將來的軟體專案的軟體過程的開發和維護。該項工作由某個小組實施,例如軟體工程過程組。它負責機構的軟體過程活動,特別是負責開發和維護機構標準軟體過程和相關過程資源(如在機構過程定義關鍵過程域中說明的),並協調軟體專案的過程活動。64/151目標目標1:機構內部軟體過程的制定和改進活動協調一致。目標2:相對於過程標準,所使用的軟體過程的優勢和薄弱環節標識清楚。目標3:機構級的過程開發和改進活動有計畫。65/151執行約定約定1:機構遵循書面的管理策略,協調整個機構範圍內的軟體過程開發和改進活動。
該策略一般規定:1.建立一個小組,負責機構級的軟體過程活動,使這些活動與各項目協調一致。
2.定期評估專案所使用的軟體過程,以確定其優勢和薄弱環節。
3.對機構標準軟體過程進行合理地剪裁,以得到專案使用的軟體過程。
關於機構標準軟體過程,參見綜合軟體管理關鍵過程域的活動1。
4.每個專案的軟體過程、工具和方法的改進和其他有用資訊,可用於其他專案。66/151約定2:上級管理部門宣導和支持機構的軟體過程開發和改進活動。
上級管理部門:
1.向機構成員和負責人說明有關軟體過程活動的約定。
2.制定資金、人員配備和其他資源的長期計畫和約定。
3.制定管理和執行有關軟體過程開發和改進活動的策略。約定3:上級管理部門監督機構的軟體過程開發和改進活動。
l.確保機構標準軟體過程滿足企業目標和策略。
2.提出關於軟體過程開發和改進活動優先次序的建議。
3.參與制定軟體過程開發和改進計畫。
a.上級管理部門與更高層人員和負責人共同協調軟體過程需求及問題
b.上級管理部門與該機構負責人進行協調,以獲得負責人和機構成員的支持和參與67/151執行能力能力1:有一個負責機構的軟體過程活動的小組。
一個小組是一些部門、負責人和人員的組合,負責一組任務和活動。小組的規模可以不同,既可以是單個兼職的人,也可以是多個來自不同部門的兼職人員,也可以由幾個專職人員組成。組成小組時考慮的因素包括:分派的任務和活動、專案規模、機構結構和機構文化。某些小組,如軟體品質保證組,集中關注專案活動;而其他一些小組,例如軟體工程過程組,集中關注機構範圍內的活動。
1.條件可能時,小組成員以專職工作的軟體專業人員為核心,並盡可能有其他的兼職人員支持。
該小組最一般的例子是軟體工程過程組(SEPG)。
2.小組成員中有軟體工程及軟體相關科目的代表。68/151
軟體工程及軟體相關科目的實例有:軟體需求分析軟體設計程式編碼軟體測試軟體配置管理軟體品質保證69/151能力2:為實施機構的軟體過程活動提供了充足的資源和資金。
1.委派在特定領域具有特長的人員支持該小組。特定領域的實例有:軟體重用電腦輔助軟體工程技術(CASE)測量培訓課程開設
2.有支持該機構軟體過程活動的工具。支持工具的實例有:統計分析工具桌面出版工具資料庫管理系統過程建模工具70/151能力3:負責機構軟體過程活動的小組成員接受過實施這些活動所需的培訓。培訓的實例有:軟體工程實踐過程控制技術機構過程變動管理軟體過程計畫、管理和監督技術轉變參見培訓大綱關鍵過程域能力4:軟體工程組和其他軟體相關小組的成員接受過機構軟體過程活動及其在這些活動中的任務方面的定向培訓。
參見培訓大綱關鍵過程域71/151執行活動活動1:定期評估軟體過程,並根據評估結果制定行動計畫。
評估一般每隔一年、一年半至三年進行一次。評估可針對機構中所使用的所有軟體過程,也可通過對過程和專案進行抽樣評估。評估機構軟體過程能力的方法實例之一是SEI軟體過程評估方法。行動計畫標識:涉及哪些評估結果針對評估結果實施更改軟體過程的準則負責實施更改的小組或個人72/151活動2:機構制定和維護它的軟體過程開發和改進活動的計畫。該計畫:以軟體過程評估後的行動計畫和其他的機構過程改進倡議為基礎。確定要實施的活動及實施這些活動的進度。確定負責這些活動的小組和個人。確定所需的資源,包括人員配備和工具。初始發佈和有大改動時通過同行評審。
參見同行評審關鍵過程域。
6.機構的軟體負責人和上級負責人評審認可。73/151活動3:在機構級協調關於機構和專案的軟體過程的開發和改進活動。涉及的軟體過程有:
1.機構標準軟體過程。關於機構標準過程,參見機構過程定義關鍵過程域的活動1和活動2。
2.專案定義的軟體過程。關於專案定義的軟體過程。參見綜合軟體管理關鍵過程域的活動1和活動2。活動4:在機構級協調有關軟體過程資料庫的使用。機構的軟體過程資料庫用來收集機構和專案的軟體過程以及生成的軟體產品的資訊。關於機構的軟體過程資料庫,參見機構過程定義關鍵過程域的活動5。74/151活動5:監控和評價機構中限制使用的新過程、方法和工具。合適時,推廣到機構的其他部分。活動6:在機構內協調機構和專案的軟體過程的培訓。
1.制定有關機構和專案軟體過程的專題培訓計畫。
2.合適時,培訓由負責機構軟體過程活動的小組(如軟體工程過程組)或培訓小組準備和實施。參見培訓大綱關鍵過程域。活動7:向與實施軟體過程有關的小組通報機構和專案中軟體過程開發和改進活動的情況。通報方式的實例有:過程電子公告板過程諮詢委員會工作小組資訊交流會調查過程改進組日常討論75/151測量和分析測量1:測量機構的軟體過程開發和改進活動的狀態測量的實例有:機構在過程評估、開發和改進活動中已完成的工作、工作量和耗費的資金,與計畫相比較每次軟體過程的評估結果,與以前的評估結果和建議相比較76/151驗證實現驗證1:上級管理部門定期評審軟體過程開發和改進活動。上級管理部門實施定期評審的主要目的是適當地、及時地掌握軟體過程活動。在滿足機構需求的前提下,只要有適當的機制來報告異常情況,評審的時間間隔就盡可能長些。
1.對照計畫,評審有關開發和改進軟體過程活動的進展和狀態。
2.討論低層不能解決的衝突和問題。
3.指定和評審行動措施,並跟蹤到關閉。
4.編寫評審的總結報告,並分發給相關的小組和個人。77/151能力成熟度模型集成CMMI
CapabilityMaturityModelIntegrationCMM的成功導致了各種模型的衍生,每一種模型都探討了某一特定領域中的過程改進問題SW-CMM:適用於軟體開發SE-CMM:系統工程能力成熟度模型SA-CMM:適用於軟體獲取SECAM:系統工程能力評估模型PeopleCMM:討論軟體組織吸引、開發、激勵、組織和留住人才的能力EIA/IS731:替代SW-CMM和SECAMIPD-CMM:適用於集成化產品開發FAA-iCMM:集成了SE-CMM、SA-CMM、SW-CMM78/151相應的國際標準:ISO/IEC12207(軟體生存週期過程)、ISO/IEC15288(系統生存週期過程)、ISO/IEC15504(軟體過程評估)模型的繁衍導致模型框架、術語等方面的矛盾和不一致包含在當代工程中各種各樣的學科和工程是密切交叉在一起的,應用不同模型時效率低下且容易混淆,常常要付出極其昂貴的代價美國國防部、美國國防工業委員會和SEI/CMU於1998年啟動CMMI專案,希望CMMI是若干過程模型的綜合和改進,是支持多個工程學科和領域的系統的、一致的過程改進框架,能適應現代工程的特點和需要,能提高過程的品質和工作效率79/1512000年發佈第一個CMMI模型CMMI-SE/SW/IPPDV1.0:集成了SW-CMM、EIA/IS731、IPDCMMV0.982002年1月發佈CMMI-SE/SW/IPPDV1.1,美國國防工業委員會在第一屆CMMI國際研討會上宣佈,CMMIV1.1將至少穩定五年不變CMMI模型為每個學科的組合都提供兩種表示法:階段式模型和連續式模型80/151階段式模型階段式模型的結構類同於軟體CMM,它關注組織的成熟度,其成熟度等級如下圖所示5.優化的4.定量管理的3.已定義的2.已管理的1.初始的過程不可預測且缺乏控制過程為專案服務過程為組織服務過程已度量和控制集中於過程改進階段式成熟度等級81/151階段式模型的成熟度等級結構過程域2過程域n成熟度等級過程域1執行的能力執行的承諾定向實現驗證實現特定目標共性目標特定實踐共性實踐公共特徵82/151CMMIV1.1的24個過程域的分組如下:成熟度等級過程域已管理的需求管理REQM,專案計畫PP,專案監督和控制PMC,供應商合同管理SAM,度量和分析MA,過程和產品品質保證PPQA,配置管理CM已定義的需求開發RD,技術解決方案TS,產品集成PI,驗證VER,確認VAL,組織級過程焦點OPF,組織級過程定義OPD,組織級培訓OT,集成化專案管理IPM,風險管理RSKM,集成化建組IT,決策分析和解決方案DAR,組織級集成環境OEI定量管理的組織級過程性能OPP,專案定量管理QPM優化的組織級改革和實施OID,因果分析和解決方案CAR83/151連續式模型連續式模型關注每個過程域的能力,一個組織對不同的過程域可以達到不同的過程域能力等級(Capabilitylevel,CL)。CMMI中包括六個過程域能力等級,等級號為0~5。能力等級表明了單個過程域中組織執行的好壞程度。允許組織對連續式模型的過程域進行剪裁,也允許對不同的過程域採用不同的能力等級下圖給出了某組織的過程域能力等級84/151能力等級特徵示意圖CL0未完成的CL1已執行的CL2已管理的CL3已定義的CL4定量管理的CL5優化的過程域RSKMIPMSAMPMCPPITQPM85/151能力等級包括共性目標及相關的共性實踐,這些實踐在過程域內被添加到特定目標和實踐中。當組織滿足過程域的特定目標和共性目標時,就說該組織達到了那個過程域的能力等級。能力等級2~5的名字與成熟度等級2~5同名,但含義不同。能力等級可以獨立地應用於任何單獨的過程域,任何一個能力等級都必須滿足比它等級低的能力等級的所有準則,各能力等級的含義簡述如下:86/151CL0未完成的:過程域未執行或未達到CL1中定義的所有目標。CL1已執行的:其共性目標是過程將可標識的輸入工作產品轉換成可標識的輸出工作產品,以實現支持過程域的特定目標。CL2已管理的:其共性目標集中於已管理的過程的制度化。根據組織級政策規定過程的運作將使用哪個過程,專案遵循已文檔化的計畫和過程描述,所有正在工作的人都有權使用足夠的資源,所有工作任務和工作產品都被監控、控制和評審。87/151CL3已定義的:其共性目標集中於已定義的過程的制度化。過程是按照組織的剪裁指南從組織的標準過程集中剪裁得到的,還必須收集過程資產和過程的度量,並用於將來對該過程的改進上。CL4定量管理的:其共性目標集中於可定量管理的過程的制度化。使用測量和品質保證來控制和改進過程域,建立和使用關於品質和過程執行的定量目標作為管理準則。CL5優化的:使用量化(統計學)手段改編和優化過程域,以對付客戶要求的改變和持續改進計畫中的過程域的功效。88/151連續式模型將24個過程域劃分為過程管理、專案管理、工程和支持四個過程組:連續式分組過程域過程管理組織級過程焦點OPF,組織級過程定義OPD,組織級培訓OT,組織級過程性能OPP,組織級改革和實施OID專案管理專案計畫PP,專案監督和控制PMC,供應商合同管理SAM,集成化專案管理IPM,風險管理RSKM,集成化建組IT,專案定量管理QPM工程需求管理REQM,需求開發RD,技術解決方案TS,產品集成PI,驗證VER,確認VAL支持配置管理CM,過程和產品品質保證PPQA,度量和分析MA,決策分析和解決方案DAR,組織級集成環境OEI,因果分析和解決方案CAR89/151內容摘要電腦軟體軟體工程軟體過程軟體過程模型敏捷軟體開發CASE工具與環境90/151軟體過程模型軟體過程模型是軟體開發全部過程、活動和任務的結構框架也稱軟體開發模型或軟體生存週期模型91/151軟體過程模型典型的軟體過程模型有:瀑布模型(waterfallmodel)演化模型(evolutionarymodel)增量模型(incrementalmodel)原型模型(prototypingmodel)螺旋模型(spiralmodel)噴泉模型(waterfountainmodel)基於構件的開發模型(component-baseddevelopmentmodel)形式方法模型(formalmethodsmodel)92/151瀑布模型系統工程需求分析與規約設計與規約編碼與單元測試集成測試系統測試運行與維護93/1511970年W.Royce提出瀑布模型
特徵接受上一階段的結果作為本階段的輸入利用這一輸入實施本階段應完成的活動對本階段的工作進行評審將本階段的結果作為輸出,傳遞給下一階段
缺點缺乏靈活性,難以適應需求不明確或需求經常變化的軟體開發開發早期存在的問題往往要到交付使用時才發現,維護代價大94/151許多軟體專案在開發早期對軟體需求的認識是模糊的、不確定的,因此軟體很難一次開發成功。可以在獲取了一組基本的需求後,通過快速分析構造出該軟體的一個初始可運行版本,稱之謂原型(prototype),然後根據用戶在試用原型的過程中提出的意見和建議、或者增加新的需求,對原型進行改造,獲得原型的新版本,重複這一過程,最終得到令客戶滿意的軟體產品。演化模型的開發過程就是從構造初始的原型出發,逐步將其演化成最終軟體產品的過程。演化模型適用於對軟體需求缺乏準確認識的情況。典型的演化模型有:增量模型、原型模型、螺旋模型。演化模型95/151增量模型專案日曆時間軟體功能性和特徵12345第2次增量發佈增量212345第n次增量發佈增量n12345第1次增量發佈增量1┇5部署(發佈,回饋)4構造(編碼,測試)3建模(分析,設計)2計畫1交流96/151增量模型將軟體的開發過程分成若干個日程時間交錯的線性序列,每個線性序列產生軟體的一個可發佈的“增量”版本,後一個版本是對前一版本的修改和補充,重複增量發佈的過程,直至產生最終的完善產品。增量模型融合了瀑布模型的基本成分(重複地應用)和演化模型的迭代特徵增量模型強調每一個增量都發佈一個可運行的產品97/151增量模型特別適用於:需求經常變化的軟體開發市場急需而開發人員和資金不能在設定的市場期限之前實現一個完善的產品的軟體開發增量模型能有計畫地管理技術風險,如早期增量版本中避免採用尚未成熟的技術98/151原型(prototype)是預期系統的一個可執行版本,它反映了系統性質(如功能、計算結果等)的一個選定的子集。一個原型不必滿足目標軟體的所有約束,其目的是能快速、低成本地構建原型。原型方法從軟體工程師與客戶的交流開始,其目的是定義軟體的總體目標,標識需求。然後快速制訂原型開發的計畫,確定原型的目標和範圍,採用快速設計的方式對其建模,並構建原型。被開發的原型應交付給客戶試用,並收集客戶的回饋意見,這些回饋意見可在下一輪迭代中對原型進行改進。在前一個原型需要改進,或者需要擴展其範圍的時候,進入下一輪原型的迭代開發。原型模型99/151部署交付和回饋構建原型交流快速設計方式建模快速計畫原型模型100/151原型的類型:探索型(exploratoryprototyping)其目的是要弄清目標系統的要求,確定所希望的特性,並探討多種方案的可行性實驗型(experimentalprototyping)其目的是驗證方案或演算法的合理性,它是在大規模開發和實現前,用於考核方案是否合適,規格說明是否可靠。演化型(evolutionaryprototyping)其目的是將原型作為目標系統的一部分,通過對原型的多次改進,逐步將原型演化成最終的目標系統。101/151原型的使用策略:廢棄(throwaway)策略主要用於探索型和實驗型原型的開發。這些原型關注於目標系統的某些特性,而不是全部特性,開發這些原型時通常不考慮與探索或實驗目的無關的功能、品質、結構等因素,這種原型通常被廢丟,然後根據探索或實驗的結果用良好的結構和設計思想重新設計目標系統。追加(addon)策略主要用於演化型原型的開發。這種原型通常是實現了目標系統中已明確定義的特性的一個子集,通過對它的不斷修改和擴充,逐步追加新的要求,最後使其演化成最終的目標系統。原型可作為單獨的過程模型使用,它也常被作為一種方法或實現技術應用於其他的過程模型中。102/151B.Boehm於1988年提出是瀑布模型和演化模型的結合,並增加了風險分析螺旋模型沿著螺線旋轉,在四個象限上分別表達四個方面的活動,即:制定計畫:確定軟體目標,選定實施方案,弄清專案開發的限制條件風險分析:評價所選的方案,識別風險,消除風險工程實施:實施軟體開發,驗證工作產品客戶評估:評價開發工作,提出修正建議螺旋模型103/151
104/151螺旋模型出現了一些變種,它可以有3到6個任務區域。螺旋模型指引的軟體專案開發沿著螺線自內向外旋轉,每旋轉一圈,表示開發出一個更為完善的新軟體版本。如果發現風險太大,開發者和客戶無法承受,則專案就可能因此而終止。多數情況下沿著螺線的活動會繼續下去,自內向外,逐步延伸,最終得到所期望的系統。105/151噴泉模型106/151噴泉模型是一種支持面向對象開發的模型體現迭代和無間隙特徵迭代:各開發活動常常重複工作多次,相關的功能在每次迭代中隨之加入演進的系統無間隙:開發活動之間不存在明顯的邊界107/151支持軟體複用(reuse)利用預先包裝好的軟體構件(包括組織內部開發的構件和現存商品化構件COTS)來構造應用系統基於構件的開發模型108/151領域分析構件可變性分析構建可複用構件領域模型領域基準體系結構圖可複用構件庫分析體系結構設計獲取構件構件特化和修改評價構件組裝和測試開發未找到構件的部分應用系統工程應用系統領域工程109/151領域工程的目的是構建領域模型、領域基準體系結構和可複用構件庫。領域分析分析該領域中各種應用系統的公共部分或相似部分,構建領域模型和領域基準體系結構(referencearchitecture),標識領域的候選構件。對候選構件進行可變性分析,以適應多個應用系統的需要。構建可複用構件,經嚴格測試和包裝後存入可複用構件庫(稱為構件工程)。110/151應用系統工程的目的是使用可複用構件組裝應用系統。分析待開發的應用系統,設計應用系統的體系結構,標識應用系統所需的構件。在可複用構件庫中查找合適的構件(也可購買第三方的構件)。特化選中的構件,必要時作適當的修改,以適應該應用系統的需要。開發那些未找到合適構件的應用部分。組裝應用系統。評價構件的複用情況,以改進可複用構件,同時對新開發的部分進行評價,並向構件工程推薦候選構件。111/151根據AT&T、Ericsson、HP公司的經驗,有的軟體複用率高達90%以上,產品上市時間可縮短2~5倍,錯誤率減少5~10倍,開發成本減少15%~75%。僅管這些結論出自一些較好使用基於構件開發的實例,但毫無疑問,基於構件的開發模型對提高軟體生產率、提高軟體品質、降低成本、提早上市時間起到很大的作用。112/151形式方法模型形式化方法(formalmethods)是建立在嚴格數學基礎上的一種軟體開發方法。軟體開發的全過程中,從需求分析、規約、設計、編程、系統集成、測試、文檔生成、直至維護各個階段,凡是採用嚴格的數學語言,具有精確的數學語義的方法,都稱為形式化方法。形式化方法用嚴格的數學語言和語義描述功能規約和設計規約,通過數學的分析和推導,易於發現需求的岐義性、不完整性和不一致性,易於對分析模型、設計模型和程式進行驗證。通過數學的演算,使得從形式化功能規約到形式化設計規約,以及從形式化設計規約到程式代碼的轉換成為可能。113/151淨室過程模型系統工程需求收集代碼審查盒結構規約形式化設計正確性驗證代碼生成統計使用測試認證測試計劃增量1需求收集代碼審查盒結構規約形式化設計正確性驗證代碼生成統計使用測試認證測試計劃需求收集代碼審查盒結構規約形式化設計正確性驗證代碼生成統計使用測試認證測試計劃增量2增量3114/151內容摘要電腦軟體軟體工程軟體過程軟體過程模型敏捷軟體開發CASE工具與環境115/151敏捷軟體開發軟體開發的新挑戰快速的市場進入時間,要求高生產率快速變化的需求快速發展的技術傳統的軟體開發方法強調過程強調文檔開發人員負擔過重稱為重載(Heavyweight)方法116/151針對上述問題,產生了一系列輕載(Lightweight)方法,如XP、SCRUM等。2001年2月,新方法的一些創始人在美國猶他州成立了敏捷軟體開發聯盟,簡稱Agile聯盟。Agile聯盟起草了一個敏捷軟體開發宣言,該宣言由四個價值觀聲明組成,並提煉出敏捷軟體開發方法必須遵循的12條原則。Agile方法是在保證軟體開發有成功產出的前提下,儘量減少開發過程中的活動和製品的方法。籠統的講就是,“剛剛好”(Justenough),即開發中的活動及製品既不要太多也不要太少。117/151Agile方法的價值觀個人和交互高於過程和工具不是否定過程和工具的重要性,而是更強調軟體開發中人的作用和交流的作用。軟體是由人組成的團隊來開發的,與軟體專案相關的各類人員通過充分的交流和有效的合作,才能成功地開發出得到用戶滿意的軟體。如果光有定義良好的過程和先進的工具,而人員的技能很差,又不能很好地交流和協作,軟體是很難成功地開發的。118/151可運行軟體高於詳盡的文檔通過執行一個可運行的軟體來瞭解軟體做了什麼,遠比閱讀厚厚的文檔要容易得多。敏捷軟體開發強調不斷地快速地向用戶提交可運行的軟體(不一定是完整的軟體),以得到用戶的認可。好的必要的文檔仍是需要的,它能幫助我們理解軟體做什麼,怎麼做以及如何使用,但軟體開發的主要目標是創建可運行的軟體。119/151與客戶協作高於合同(契約)談判只有客戶才能明確說明需要什麼樣的軟體,然而,大量的實踐表明,在開發的早期客戶常常不能完整地表達他們的全部需求,有些早期確定的需求,以後也可能會改變。要想通過合同談判的方式,將需求固定下來常常是困難的。敏捷軟體開發強調與客戶的協作,通過與客戶的交流和緊密合作來發現用戶的需求。120/151對變更及時做出反應高於遵循計畫任何軟體專案的開發都應該制訂一個專案計畫,以確定各開發任務的優先順序和起止日期。然而,隨著專案的進展,需求、業務環境、技術等都可能變化,任務的優先順序和起止日期也可能因種種原因會改變。因此,專案計畫應具有可塑性,有變動的餘地。當出現變化時及時做出反應,修訂計畫以適應變化。121/151Agile方法的指導原則(1)最優先的是通過儘早地和不斷地提交有價值的軟體使客戶滿意(2)歡迎變化的需求,即使該變化出現在開發的後期,為了提升對客戶的競爭優勢,Agile過程利用變化作為動力(3)以幾周到幾個月為週期,儘快、不斷地發佈可運行軟體(4)在整個專案過程中,業務人員和開發人員必須天天一起工作122/151(5)以積極向上的員工為中心建立專案組,給予他們所需的環境和支持,對他們的工作予以充分的信任(6)專案組內效率最高、最有效的資訊傳遞方式是面對面的交流(7)測量專案進展的首要依據是可運行的軟體(8)敏捷過程提倡可持續的開發,專案發起者、開發者和用戶應能長期保持恒定的速度123/151(9)應時刻關注技術上的精益求精和好的設計,以增強敏捷性(10)簡單化是必不可少的,這是盡可能減少不必要工作的藝術(11)最好的構架、需求和設計出自於自我組織的團隊(12)團隊要定期反思怎樣才能更有效,並據此調整自己的行為124/151Agile方法的適用範圍MartinFowler認為:新方法不是到處可適用的適合採用Agile方法的情況:需求不確定、易揮發(Volatile,意指今天的要求明天就不需要了)有責任感和積極向上的開發人員用戶容易溝通並能參與125/151Agile的典型方法ExtremeProgramming(簡稱XP)SCRUMCrystalMethodologies(簡稱Crystal)FeatureDrivenDevelopment(簡稱FDD)DynamicSystemsDevelopmentMethodology(簡稱DSDM)AdaptiveSoftwareDevelopment(簡稱ASD)PragmaticProgramming等126/151XP方法由KentBeck提出,是Agile方法中最引人注目的一個XP最初實踐於1997年Crysler公司的C3專案(Smalltalk開發)適用於10人以下專案組、開發地點集中的場合廣泛用於需求模糊和揮發性強的場合IONA公司的Obix技術支持小組在採用了XP方法後,軟體生產率提高了67%127/151XP方法的4個價值觀交流(Communication)實踐表明,專案失敗的重要原因之一是交流不暢,使得客戶的需求不能準確地傳遞給開發人員,造成開發人員不能充分理解需求;模型或設計的變動未能及時告知相關人員,造成系統的不一致和集成的困難所有專案相關人員之間充分的有效的交流是軟體開發成功所必不可少的XP方法提倡面對面的交流,這是一種有效的也是效率最高的交流方式128/151簡單(Simplicity)指在確保得到客戶滿意的軟體的前提下,做最簡潔的工作(簡單的過程、模型、文檔、設計和實現)在開發中不斷優化設計,時刻保持代碼簡潔、無冗餘體現了敏捷開發的“剛剛好(Justenough)”思想,即開發中的活動及製品既不要太多也不要太少,剛好即可129/151回饋(Feedback)及時有效的回饋能確定開發工作是否正確,及時發現開發工作的偏差並加以糾正。強調各種形式的回饋,如非正式的評審(走查,Walkthrough)、小發佈等130/151勇氣(Courage)採用敏捷軟體開發需要勇氣:信任合作的同事,也相信自己做能做到的最簡單的事只有在絕對需要的時候才創建文檔讓業務人員制定業務決策,技術人員制定技術決策用可能的最簡單的工具,例如白板和紙,只有在複雜建模工具能提供可能的最好價值時才去使用它們相信程式員能制定設計決策,不需要給他們提供過多的細節需要勇氣來承認自己是會犯錯誤的,需要勇氣來相信自己明天能克服明天出現的問題。131/151XP方法的12個核心實踐1.完整的團隊(WholeTeam)所有的小組成員應在同一個工作地點工作成員中必須有一個現場用戶(On-siteUser)由他提出需求,確定開發優先順序通常還設一個“教練”(Coach)角色
教練指導XP方法的實施,以及與外部的溝通和協調2.計畫對策(PlanningGame)
包括兩類:發佈計畫和迭代(Iteration)計畫132/1513.系統比喻(Metaphor)
系統比喻是待開發軟體的一個每個成員都熟悉的形象化比喻,相當於一個粗略的軟體體系結構4.小發佈(Smallrelease)
經常、不斷地發佈可運行的、具有商業價值的小軟體版本,供現場用戶評估或最終使用
5.測試(testing)
XP方法提倡測試優先,即先寫測試後編代碼(testingthencoding)6.簡單設計(SimpleDesign)設計只考慮當前定義的功能而不考慮以後需求的變化該設計是完成目前功能所需的最簡潔的設計133/1517.結對編程(PairProgramming)一個程式員編程的同時,另一個程式員負責檢查程式的正確性和可讀性結對的夥伴可以動態調整8.
設計改進(DesignImprovement)在不影響程式的外部可見行為的情況下,按高內聚低耦合的原則對程式結構進行改進,保持代碼簡潔、無冗餘持續集成(ContinuousIntegration)每完成一個模組的開發(包括該模組的單元測試)後,立即將其組裝到系統中,並進行集成測試,完成該集成測試後才能進行下一次集成134/15110.
代碼全體共有(CollectivecodeOwnership)
團隊中的任何人可以在任何時候修改系統任何位置上的任何代碼團隊的成員都可以參加模型的開發,又有系統比喻、結對編程、編碼標準、持續集成等實踐,這些都為代碼全體共有提供了支持編碼標準(CodingStandard)
XP方法強調制訂一個統一的編碼標準,包括命名、注釋、格式等編程風格12.可持續步調(SustainablePace)
每週40小時工作制135/151XP方法的開發過程最新版本發佈計畫
用戶認可
用戶故事(userstories)下一迭代Bugs新用戶故事測試用例迭代開發體系結構骨架(spike)系統比喻制訂交付計畫驗收測試小發佈需求不確定的估計確定的估計難點骨架探索階段計畫階段迭代與發佈階段產品化階段維護階段136/151探索階段探索階段的主要工作是開發初始的用戶故事(UserStories)和體系結構骨架(architecturespike)。用戶故事描述了系統高層的需求,它是制訂發佈計畫的輸入。在探索階段,試探找到系統中固定不變的部分(體系結構骨架),並找出一種形象的比喻,這種比喻描述了你打算如何構建系統,起到概念框架的作用。探索階段還應根據用戶故事編制相應的測試用例,供以後驗收測試時使用。137/151計畫階段計畫階段的任務是根據用戶故事描述的需求、系統體系結構骨架和系統比喻來制訂迭代計畫和發佈計畫。使用你最熟悉的形式為用戶故事建模,這個模型描述了用戶故事的任務以及這些任務之間的關係。通常圖形方式(可以是草圖)比文字描述更直觀。盡可能精確地估算工作量,這是制訂計畫的重要依據。對於那些不能確切估算其工作量的難點部分,要進一步作分析,直至能確定其工作量估算。138/151迭代到發佈階段迭代到發佈階段根據迭代和發佈計畫,開發滿足指定用戶故事需求的軟體,並與前面已完成的軟體版本集成,得到軟體的一個新版本。根據在探索階段編寫的測試用例,進行驗收測試。一旦發現錯誤或者通過驗收測試想進入下一輪迭代時,就重複迭代開發的工作。在這一階段當客戶提出新的用戶故事,或者根據專案的進展情況認為有必要時,可以回到計畫階段,對迭代和發佈計畫做出修改或調整。139/151產品化階段產品化階段的工作主要是確認迭代開發的軟體已經做好進入產品化的準備。在此階段可進行更多的測試,如系統測試、負載測試、安裝測試等。另一個工作就是整理文檔。雖然敏捷軟體開發的價值觀中強調“可運行軟體高於詳盡的文檔”,但是,必要的文檔仍是需要的。140/151可能要寫的文檔:系統文檔系統文檔的目的在於為系統提供一個總覽,來幫助人們理解它。主要包括:系統技術體系結構和業務體系結構的總覽、高層次的系統需求、關鍵設計決策的總結、體系結構圖以及重要的設計模型(如果有的話)等。操作文檔操作文檔的內容包括:系統涉及的依賴關係,與其他系統、資料庫以及檔文互的特性,對備份流程的參考引用,系統的聯繫人列表以及聯繫方法,系統的適用性及可靠性需求的總結,系統預期負載情況概況,以及排錯指導原則。141/151
支持文檔支持文檔的內容包括:支持人員專用的培訓教材,解決問題時作為參考的用戶文檔,排錯指導原則,解決疑難問題時的上報流程,以及維護團隊的聯繫列表。用戶文檔參考手冊用於快速查詢;用戶指南用於指明系統的工作方式;支持指南用於指導如何獲取其他的幫助;培訓資料則主要用於培訓。142/151維護階段維護階段涵蓋了計畫階段、迭代到發佈階段和產品化階段通常這個階段主要包括面向產品的活動,如系統的運行和支持。143/151內容摘要電腦軟體軟體工程軟體過程軟體過程模型敏捷軟體開發CASE工具與環境144/151在軟體工程活動中,軟體工程師和管理人員按照軟體工程的方法和原則,借助於電腦及其軟體工具的幫助,開發、維護、管理軟體產品的過程稱為電腦輔助軟體工程電腦輔助軟體工程(CASE)
ComputerAidedSoftwareEngineering145/151軟體工具是用來輔助電腦軟體的開發、運行、維護、管理、支持過程中的活動或任務的軟體按支持的軟體過程活動分類:開發過程:需求分析工具,設計工具,編碼工具,測試工具它們還可按支持的開發方法分為:結構化XX工具,面向對象XX工具CASE工具146/151維護過程:版本控制工具,文檔分析工具,逆向工程(reverseengineering)工具,再工程(reengineering)工具管理過程:專案管理工具,配置管理工具,軟體評價工具應用類工具147/151集成型開發環境是一種把支持多種軟體開發方法和過程模型的軟體工具集成到一起的軟體開發環境集成型開發環境由環境集成機制和工具集組成集成型軟體開發環境148/151環境集成機制包括:數據集成機制:為各種相互協作的工具提供統一的數據介面規範控制集成機制:支持各個工具或開發活動之間的通信、切換、調度和協同工作,並支持軟體開發過程的描述、執行與轉接介面集成機制:支持工具介面的集成和應用系統的介面開發,統一介面風格
第2章系統工程150/27內容摘要基於電腦的系統系統工程的任務可行性分析151/27內容摘要基於電腦的系統系統工程的任務可行性分析152/27
所謂基於電腦的系統是指:通過處理資訊來完成某些預定義目標而組織在一起的元素的集合或排列。組成基於電腦系統的元素主要有:軟體、硬體、人員、資料庫、文檔和規程(Procedure)基於電腦的系統153/27系統元素軟體—指電腦程式、數據結構和相關的工作產品,以實現所需要的邏輯方法、規程或控制硬體—指提供計算能力的電子設備、支持數據流的互連設備(如網路交換器、電信設備)和提供外部世界功能的電子機械設備(如感測器、馬達等)人員—指硬體和軟體的用戶和操作者154/27資料庫—指通過軟體訪問並持久存儲的大型的有組織的資訊集合。文檔—指描繪系統的使用和/或操作的描述性資訊(如模型、規格說明、硬複製手冊、聯機幫助檔、Web站點)。規程(procedures)—指定義每個系統元素的特定使用或系統所處的過程性語境的步驟。155/27系統的層次結構基於電腦的系統本身可以成為一個更大的基於電腦系統中的一個元素,稱其為那個更大系統的宏元素。這樣,基於電腦的系統可呈現一個層次結構。156/27工廠自動化
系統157/27內容摘要基於電腦的系統系統工程的任務可行性分析158/27電腦系統工程電腦系統工程是一個問題求解的活動,其目的是分析基於電腦的系統的功能、性能等要求,並把它們分配到基於電腦系統的各個系統元素中,確定它們的約束條件和介面。
159/27系統工程的任務識別用戶的要求標識系統的功能和性能範圍,確定系統的功能、性能、約束和介面。160/27系統建模和模擬通常可考慮建立如下模型:硬體系統模型:描述基於電腦系統中的硬體(包括電腦、受系統控制的其他硬體設備等)配置、通信協議、拓撲結構、以及確保基於電腦系統的安全性、可靠性、性能等要求的措施。軟體系統模型:描述各軟體子系統的功能、性能等要求,它們在硬體系統中的部署情況,以及軟體子系統之間的交互。人機介面模型:描述人如何與基於電腦的系統進行交互,包括用戶環境、用戶的活動、人機交互的語法和語義等。數據模型:描述基於電腦的系統使用了哪些資料庫管理系統,如果使用多個數據庫管理系統,還應描述它們之間的數據轉換方式,必要時可給出主要的數據結構。1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年绿色环保食材配送餐饮服务协议3篇
- 办公空间照明系统升级合同样本
- 地热资源招投标投诉处理措施
- 航空航天计量变更准则
- 冷库安装合同化妆品研究
- 低碳环保住宅的二手房买卖合同
- 水利工程保温施工服务协议
- 企业员工商标提案管理办法
- 玩具制造企业协议休假管理办法
- 预付账款审核风险控制的关键
- 塑料污染与环境保护
- 2024年锅炉运行值班员(中级)技能鉴定理论考试题库(含答案)
- 福建省泉州市2023-2024学年高一上学期期末质检英语试题(解析版)
- 中华人民共和国民法典(总则)培训课件
- 苏教版(2024新版)七年级上册生物期末模拟试卷 3套(含答案)
- 《项目管理》完整课件
- IB课程-PYP小学项目省公开课获奖课件说课比赛一等奖课件
- 上市央国企数智化进程中人才就业趋势
- 2024-2030年中国苯胺行业现状动态与需求前景展望报告
- 英雄之旅思维模型
- 钉钉数字化管理师中级题库
评论
0/150
提交评论