第1章軟件工程概述_第1頁
第1章軟件工程概述_第2頁
第1章軟件工程概述_第3頁
第1章軟件工程概述_第4頁
第1章軟件工程概述_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

高級軟件工程

AdvancedSoftwareEngineering西安交通大學劉海巖1西安交通大學劉海巖參考文獻1.軟件工程—實踐者的研究方法

RogerS.Pressman(第6版)機械工業(yè)出版社2.軟件工程(第8版)

IanSommerville

機械工業(yè)出版社

2西安交通大學劉海巖軟件工程四十年

2008年5月14日-16日在德國小鎮(zhèn)Garmisch,舉辦了軟件工程四十周年紀念會議。四十年里,計算環(huán)境發(fā)生了很大的變化,簡單的字符終端演變?yōu)榛ヂ?lián)網(wǎng)的云計算(CloudComputing);開發(fā)方式也從個人英雄主義發(fā)展到集體兵團作戰(zhàn)。近年來SOA的出現(xiàn)和實施,以及敏捷方法論的普及與實踐為軟件工程的發(fā)展開辟了全新的方向。當年出席會議的PeterNaur、BrianRandell等關鍵人物依然健在,表明軟件工程還很年輕,需要繼續(xù)探索和嘗試。

3西安交通大學劉海巖第1部分軟件工程知識體系軟件工程與軟件過程需求工程軟件設計軟件測試軟件維護與進化軟件開發(fā)方法軟件項目管理4西安交通大學劉海巖

2004年,由IEEE-CS對軟件工程的內(nèi)容作出進一步的修改,出版了SWEBOK(SoftwareEngineeringBodyofKnowledge,軟件工程知識體系)指南,該體系被劃分為10個知識域:軟件需求:需求工程過程、需求獲取、需求分析、需求規(guī)格說明、需求驗證、需求管理。軟件設計:基本概念、關鍵問題、軟件構(gòu)成與體系結(jié)構(gòu)、質(zhì)量分析與評價、軟件設計符號、策略與方法。軟件構(gòu)造:降低復雜性、預知多樣性、結(jié)構(gòu)化驗證、使用外部標準。軟件測試:基本概念、測試級別、測試技術、測試相關度量、測試過程管理。軟件維護:基本概念、維護過程、關鍵問題、維護技術。5西安交通大學劉海巖軟件配置管理:配置過程管理、配置識別、配置控制、配置狀態(tài)報告、配置審計、軟件發(fā)布管理與交付。軟件工程管理:組織管理、過程/項目管理、軟件工程度量。軟件工程過程:基本概念、過程基礎實施、過程度量、過程定義、定性分析、過程實施與變更。軟件工程工具與方法:軟件工程工具、軟件開發(fā)方法。軟件質(zhì)量:軟件質(zhì)量概念、SQA與V&V的目的與計劃、SQA與V&V的活動、適用于SQA與V&V的度量。6西安交通大學劉海巖第2部分軟件工程新興技術

及高級課題敏捷方法(Agile)基于MDA的開發(fā)基于復用的開發(fā)基于組件的開發(fā)面向服務的軟件開發(fā)(SOA,SaaS)面向方面的軟件開發(fā)Web工程7西安交通大學劉海巖考核要求1.筆試;2.提交作業(yè)文檔:針對軟件工程新興技術及高級課題中的某個專題寫出一篇論文或?qū)W習心得。論文要求:

(1)必須按一般論文的格式并列出參考文獻;(2)可做成PPt在課堂上交流(分值較高);(3)學期末將文章及PPt發(fā)送到我的信箱中:

haiyanliuhyl@

文件名為:作者名論文題目8西安交通大學劉海巖第1章軟件工程與軟件過程軟件工程產(chǎn)生的背景軟件工程定義過程框架、CMMI、PSP與TSP軟件過程模型統(tǒng)一過程—RUP軟件工程方法工具9西安交通大學劉海巖1.1

軟件工程產(chǎn)生的背景60年代中期,隨著硬件技術的發(fā)展,軟件應用范圍的擴展,軟件越來越大型化、復雜化,產(chǎn)生了上萬行的源程序。當發(fā)現(xiàn)錯誤時需要對這些程序進行修改;當用戶需求發(fā)生變化時需要修改;當硬件環(huán)境更新時需要修改。

1968年10月,北大西洋公約組織(NATO)的科學技術委員會討論如何擺脫軟件危機問題:將大型軟件開發(fā)中普遍存在的費用高、開發(fā)過程不易控制、工作量估計困難、軟件質(zhì)量低、軟件項目失敗率高以及軟件維護成本和難度大等現(xiàn)象,歸結(jié)為“軟件危機”。10西安交通大學劉海巖

為了克服軟件危機,科學家們從其他產(chǎn)業(yè)(如機械制造、建筑等)的工程化生產(chǎn)得到啟示,在該會上提出了“軟件工程”的概念,標志著一個新學科的開始。克服軟件危機的努力:

(1)進行軟件項目管理:

軟件度量、項目估算、進度控制、人員組織、配置管理、項目計劃等。

(2)軟件研發(fā)技術的研究

軟件研發(fā)方法學、軟件工具和軟件工程環(huán)境。

這也是軟件工程包含的內(nèi)容。11西安交通大學劉海巖1.2

軟件工程的定義根據(jù)IEEE(TheInstituteforElectricalandElectronicengineers)

定義:

軟件工程是:(1)將系統(tǒng)化的、規(guī)范的、可量化的方法應用于軟件的開發(fā)、運行和維護,即將工程應用于軟件。(2)在(1)中所述方法的研究。12西安交通大學劉海巖RogerS.Pressman認為軟件工程是一種層次化的技術(見下圖)。軟件是為人開發(fā)的,軟件是由人開發(fā)的。需要過程規(guī)范人的行為,需要方法幫助人面對復雜性,需要工具來貫徹這些過程和方法。任何工程必須以對質(zhì)量的承諾為基礎。軟件工程的根基在于質(zhì)量關注點(qualityfocus)。13西安交通大學劉海巖過程:建立了一個框架,構(gòu)成了軟件項目管理控制的基礎,并建立了一個環(huán)境,以便于:技術方法的采用、工程產(chǎn)品(模型、文檔、數(shù)據(jù))的產(chǎn)生、里程碑(milestone,工作產(chǎn)品的目標及條件的結(jié)合)的建立、質(zhì)量的保證及正常變更的正確管理。方法:提供了建造軟件在技術上“如何做”。方法覆蓋面:溝通、需求分析、設計、編程、測試和支持。工具:對過程和方法提供了自動或半自動的支持。工具集成起來,建立一個軟件開發(fā)的支持環(huán)境,稱為計算機輔助軟件工程(CASE)。14西安交通大學劉海巖1.3過程框架、CMMI、PSP與TSP1、過程框架

過程框架(Processframework)定義了若干框架活動,為完整的軟件開發(fā)過程建立了基礎。這些框架活動可廣泛的應用于所有的軟件開發(fā)項目。軟件過程框架普適性活動(umbrellaactivity)框架活動(frameworkactivity)#1

軟件工程活動(action)#1.1

任務集...軟件工程活動#1.k

任務集…

工作任務工作產(chǎn)品質(zhì)量保證點項目里程碑框架活動(frameworkactivity)#n

軟件工程活動#n.1

任務集...軟件工程活動#n.m

任務集

工作任務工作產(chǎn)品質(zhì)量保證點項目里程碑15西安交通大學劉海巖溝通:包含了與客戶之間的交流和協(xié)作,還包括需求獲取以及其他相關活動。策劃:為后續(xù)的軟件工程工作制訂計劃。該計劃描述了需要執(zhí)行的技術任務、可能的風險、資源需求、工作產(chǎn)品和工作進度計劃。建模:包括分析與設計兩個action的建模(和/或生成規(guī)格說明)。創(chuàng)建模型有助于理解需求、實現(xiàn)需求。構(gòu)建:包括編碼和測試。部署:包括交付、安裝、評價、反饋。不同的應用中過程的細節(jié)可能不一樣,但框架活動是一致的。通用的框架活動有以下5個:16西安交通大學劉海巖普適性(umbrella)活動一般包括:軟件項目跟蹤與控制風險管理軟件質(zhì)量保證正式技術評審度量軟件配置管理可復用管理工作產(chǎn)品的準備和生產(chǎn)17西安交通大學劉海巖2、能力成熟度模型集成(CMMI)

起源于CMM,被用于政府和軍方評估軟件承包商的標準。CMMI(CapabilityMaturityModelIntegration)是由美國國防部與卡內(nèi)基-梅隆大學軟件工程研究院(SEI)和美國國防工業(yè)協(xié)會共同開發(fā)和研制的一套融合多學科的、可擴充的過程改進框架,其研制的目的是利用兩個或多個單一學科的模型實現(xiàn)一個組織的集成化過程改進,該模型能廣泛應用于多種企業(yè)。CMMI模型的表示方式有兩種:連續(xù)(continuous)和分級(staged)表示,或者稱為連續(xù)版本或分級版本。

18西安交通大學劉海巖(1)分級版本的CMMI成熟度等級過程域1過程域2過程域n(做什么)目標實施保證實施能力執(zhí)行活動驗證實施實踐???成熟度等級分為以下5級:對一個組織要達到的期望狀態(tài)的抽象描述(特定目標、共性目標)對達到目標的方法的描述19西安交通大學劉海巖①初始級(Initial):在初始級,企業(yè)一般不具備穩(wěn)定的軟件開發(fā)與維護環(huán)境。項目成功與否在很大程度上取決于是否有杰出的項目經(jīng)理和經(jīng)驗豐富的開發(fā)團隊。此時,項目經(jīng)常超出預算和不能按期完成,組織的軟件過程能力不可預測。②

已管理級(Managed):在可重復級,組織建立了管理軟件項目的方針以及為貫徹執(zhí)行這些方針的措施。組織基于在類似項目上的經(jīng)驗對新項目進行策劃和管理。組織的軟件過程能力可描述為有紀律的,并且項目過程處于項目管理系統(tǒng)的有效控制之下。20西安交通大學劉海巖③已定義級(Defined):在該級中,組織形成了管理軟件開發(fā)和維護活動的標準軟件過程,包括軟件工程過程和軟件管理過程,即建立起文件化的“標準軟件過程”。項目依據(jù)標準定義自己的軟件過程進行管理和控制。達到了這一級,表明組織的軟件過程能力“成熟了”。④

已量化管理級(QuantitativelyManaged):指使用統(tǒng)計和其他量化方法來控制過程。在該級,組織對軟件產(chǎn)品和軟件過程都設置定量的質(zhì)量目標,并能對跨項目的重要的過程活動的效率和質(zhì)量予以度量。組織的軟件過程能力可描述為可預測的,軟件產(chǎn)品具有可預測的高質(zhì)量。21西安交通大學劉海巖

⑤優(yōu)化級(Optimizing):該級,組織通過預防缺陷、技術創(chuàng)新和調(diào)整過程等方式,不斷提高軟件過程能力以適應業(yè)務需要。組織的軟件過程能力可描述為持續(xù)改善的。

與每個目標相關聯(lián)的實踐活動通過過程域進行分類定義。達到5個成熟度等級相關的關鍵過程域(KPA)和關注的焦點見下圖:

22西安交通大學劉海巖配置管理、過程和產(chǎn)品質(zhì)量保證、度量與分析、供方合同管理、項目監(jiān)督和控制、項目規(guī)劃、需求管理需求開發(fā)、技術解決方案、產(chǎn)品集成、驗證、確認、組織過程焦點、組織過程定義、組織培訓方案、集成項目管理、風險管理、決策分析和決定、組織的集成環(huán)境、集成化團隊、集成供方管理組織過程性能、量化項目管理組織創(chuàng)新和部署、原因分析與決策初始級已管理級已定義級已定量管理級優(yōu)化級關注焦點:基本的項目管理關注焦點:過程標準化關注焦點:量化的管理持續(xù)的過程改進達到5個成熟度等級所需的KPA:23西安交通大學劉海巖

CMMI分級模型中的實施保證:制定過程改進的策略。實施能力:提供項目和(或)組織具有實現(xiàn)過程改進所需要的資源。執(zhí)行活動:包括收集、度量和分析與過程相關的數(shù)據(jù)。驗證實施:驗證過程活動和產(chǎn)品是否遵循規(guī)程。隨著某個成熟度等級的一組過程域的目標的實現(xiàn),則提高了組織的過程成熟度并得到過程改進。

24西安交通大學劉海巖(2)連續(xù)性版本的CMMI結(jié)構(gòu)

該模型不根據(jù)離散級來分類,它為每個過程域賦予一個1-6級的能力評價。將過程域為4類:過程管理、項目管理、工程、支持。對不同的過程域,組織機構(gòu)會在不同的成熟度級別上運作,成熟度評估的結(jié)果不是一個值,而是一組值,是一個能力概圖。

12345項目監(jiān)督和控制供方合同管理風險管理配置管理需求管理驗證確認

右圖給出了能力概圖的片段。組織可以開發(fā)目標能力概圖和實際能力概圖。目標概圖反映的是期望達到的過程域的能力級。

不同的組織類型有不同的過程改進需求,該模型更靈活。25西安交通大學劉海巖

CMMI與ISO9001

ISO9001:國際標準化組織提出的涉及軟件、硬件、材料、產(chǎn)品、服務等行業(yè)的通用標準,定義了質(zhì)量管理體系的要求,適用范圍比較廣。

ISO9001:2000采用plan-do-check-act循環(huán),將其應用于軟件項目的質(zhì)量管理環(huán)節(jié)?!坝媱潯笔菫閷崿F(xiàn)高質(zhì)量的軟件產(chǎn)品建立必須的過程目標、活動和任務。“實施”是執(zhí)行軟件過程?!皺z查”是監(jiān)督并測量過程,以保證為質(zhì)量管理所建立的需求均已實現(xiàn)?!靶袆印笔浅掷m(xù)的改進軟件過程。

ISO9001只包含兩個級別的認證,即通過或沒有通過。一個軟件組織打算推進質(zhì)量管理或改進軟件過程時,是采用ISO9001還是采用CMMI?按照CMMI的要求進行逐級過程改進,有助于通過ISO9001認證。26西安交通大學劉海巖3、個體軟件過程(PSP)好的軟件過程需要貼近于過程的執(zhí)行人員。每個開發(fā)人員應該有最適合他的過程,并同時能夠與開發(fā)隊伍及整個組織的要求相吻合。個體軟件過程(PersonalSoftwareProcess)是一種用以指導軟件開發(fā)人員控制、管理、改進個人工作方式的自我完善過程,是一個包括軟件開發(fā)表格、指南和規(guī)程的結(jié)構(gòu)化框架。PSP能夠指導軟件工程師如何保證自己的工作質(zhì)量,估算和規(guī)劃自身的工作,度量和追蹤個人的表現(xiàn),管理自身的軟件過程和產(chǎn)品質(zhì)量。PSP的實施有助于組織CMMI目標的實現(xiàn)。

PSP著眼點在于軟件缺陷的預防。SEI的統(tǒng)計資料表明:在應用PSP以后,軟件系統(tǒng)的缺陷數(shù)減少了58%,效率提高了20.8%。27西安交通大學劉海巖個體軟件過程框架

一個說明完整的過程有許多腳本(script)、表格、模版和標準組成。其中過程腳本是指在過程中應該遵守的一系列步驟。下圖顯示了PSP過程流程及主要元素:過程腳本計劃設計編碼編譯測試后置處理日志項目計劃與總結(jié)表需求最終產(chǎn)品計劃所用時間結(jié)果指導28西安交通大學劉海巖目的指導開發(fā)人員進行模塊程序的開發(fā)入口條件問題描述;項目計劃總結(jié)表;以前開發(fā)程序的實際規(guī)模和時間數(shù)據(jù);時間日志。計劃描述程序功能;估計程序的代碼行;計算開發(fā)效率的歷史數(shù)據(jù)(分鐘/LOC);估算開發(fā)時間;預測缺陷數(shù)目;制定計劃;將計劃數(shù)據(jù)填入總結(jié)表;將計劃階段所花費的時間記入時間日志。設計進行設計;以指定的格式記錄設計文檔;將該階段所花費的時間記錄時間日志。編碼實現(xiàn)設計;將編碼階段所花費的時間記入時間日志。編譯編譯程序;改正所有發(fā)現(xiàn)的缺陷;將編譯階段所花費的時間記入時間日志。測試測試程序;改正所有發(fā)現(xiàn)的缺陷;將測試階段所花費的時間記入時間日志。后置處理將實際的規(guī)模和時間數(shù)據(jù)填入項目總結(jié)表;通過大量數(shù)據(jù)的統(tǒng)計分析確定過程的有效性;將該階段所用的時間記入時間日志。出口條件詳盡測試過的程序;設計文檔;源程序清單;已填寫完成的項目計劃總結(jié)表;已填寫完成的時間日志。PSP過程腳本29西安交通大學劉海巖

PSP進化框架共有4級:?個體度量過程(PersonalMeasurementProcess):PSP0和PSP0.1?個體規(guī)劃過程(PersonalPlanningProcess)

:PSP1和PSP1.1?個體質(zhì)量管理過程(PersonalQualityManagementProcess):

PSP2和PSP2.1?個體循環(huán)過程(Cycle

PersonalProcess):PSP3在PSP的前面三級進化框架中,后一個版本都是前一個版本的增強版。30西安交通大學劉海巖PSP進化框架PSP0目的是建立個體過程基線,包括計劃,開發(fā)(設計、編碼、編譯和測試)及后置處理,并對過程中主要任務和工作結(jié)果進行度量。PSP1重點是個體計劃。PSP2重點是個體質(zhì)量管理。PSP3目標是把個體開發(fā)小程序所能達到的生產(chǎn)率和生產(chǎn)質(zhì)量,延伸到大型程序,其方法是采用螺旋式上升過程,即迭代增量式開發(fā)方法。PSP3循環(huán)開發(fā)PSP2代碼復查設計評審PSP2.1設計模板PSP1程序規(guī)模估計測試報告PSP1.1任務規(guī)劃進度計劃PSP0當前軟件過程基本度量PSP0.1編碼標準過程改善建議軟件規(guī)模度量31西安交通大學劉海巖在PSP中,從時間管理、項目規(guī)劃、缺陷管理和質(zhì)量管理等幾個方面,提出了達到生產(chǎn)無缺陷產(chǎn)品的策略和方法。PSP規(guī)范為軟件工程師提供了發(fā)展個人技能的一個階梯式的進化框架,以循序漸進的方法逐步達到開發(fā)無缺陷產(chǎn)品的目標。專家們認為產(chǎn)品的質(zhì)量取決于過程的質(zhì)量,而過程的質(zhì)量又取決于人們的工作方式。因此為了開發(fā)出更好的產(chǎn)品,需要改變個人的工作方式。PSP代表的是一種嚴格有序的、基于度量的軟件工程方法,對第一線人員產(chǎn)生文化沖擊。未被廣泛采用的主要原因在于個人和軟件開發(fā)組織的慣性。32西安交通大學劉海巖

4、團隊軟件過程(TSP)TSP(TeamSoftwareProcess)的目標是建立一個能“自我管理”的項目團隊。它定義了每個團隊成員的角色和責任;跟蹤定量項目數(shù)據(jù)(包括生產(chǎn)率和質(zhì)量);確定適合該項目的團隊過程和執(zhí)行此過程的具體策略;定義適合團隊工作的本地標準;持續(xù)評估風險并采取風險避免措施;跟蹤、管理和報告項目狀態(tài)。TSP定義了以下框架活動:

項目啟動、高層設計、實現(xiàn)、集成、測試、后驗。這些活動使團隊按規(guī)范的方式開發(fā)軟件,同時定量的評測軟件過程和產(chǎn)品,并通過后驗確定改進的步驟。TSP使用大量的腳本和標準等來指導其團隊成員的工作,也是一個嚴格的軟件工程過程。33西安交通大學劉海巖CMMI組織級能力建立TSP高質(zhì)量產(chǎn)品生產(chǎn)并交付PSP個人技能建立原則技能目標CMMI與PSP、TSP

的關系34西安交通大學劉海巖1.4軟件過程模型

軟件過程中定義了如下框架活動:溝通、策劃、建模、構(gòu)建、部署。這些活動如何銜接,開發(fā)過程中采用什么樣的策略,應遵守什么樣的規(guī)定和制約,將這些活動及其關聯(lián)(忽略不必要的細節(jié))用一種模型表示出來,稱為軟件過程模型(或軟件開發(fā)模型)。每個模型根據(jù)應用問題的不同都對框架活動有不同的側(cè)重。應用過程模型的目的是提高軟件質(zhì)量、項目的可管理性以及對于交付時間和項目費用的可預測性,這樣把規(guī)模大、結(jié)構(gòu)復雜、管理復雜的軟件開發(fā)變得容易控制和管理。35西安交通大學劉海巖

軟件過程模型為軟件工程工作提供了路線圖,對軟件開發(fā)人員構(gòu)建系統(tǒng)所必需的工作提供指導。過程模型的選擇基于項目和應用的性質(zhì)、采用的方法工具以及需要的控制和交付的產(chǎn)品。幾種典型的模型:

⑴瀑布模型(線性順序模型)

溝通項目啟動需求獲取策劃項目估算進度計劃項目跟蹤建模分析設計構(gòu)建編碼測試部署交付支持反饋瀑布模型36西安交通大學劉海巖TheWaterfallModel37西安交通大學劉海巖特點:

?提供了軟件過程模型的基本框架(模板)。

?強調(diào)了每一階段活動的嚴格順序。

?質(zhì)量保證觀點:以經(jīng)過評審確認了的階段工作產(chǎn)品(文檔)驅(qū)動下一階段的工作,便于管理。

?是一種整體開發(fā)模型,程序的物理實現(xiàn)集中在開發(fā)階段的后期,用戶在最后才能看到自己的產(chǎn)品。

?適合于用戶需求明確、完整、無重大變化的軟件項目開發(fā)。38西安交通大學劉海巖

(2)

原型模型

在用戶不能給出完整、準確的需求說明,或者開發(fā)者不能確定算法的有效性、操作系統(tǒng)的適應性或人機交互的形式等許多情況下,可以根據(jù)用戶的一組基本需求,快速建造一個原型(可運行的軟件),然后提交、評估,進一步精化(迭代)、調(diào)整原型,使其滿足用戶的要求,也使開發(fā)者對將要做的事情有更好的理解。39西安交通大學劉海巖原型的分類:

?拋棄型:主要用于需求分析階段,針對開發(fā)目標模糊、用戶與開發(fā)者對項目都缺乏經(jīng)驗的情況。建立原型的目的是為了搞清用戶的需求,確定所期望的特性,探索各種方案的可行性。產(chǎn)生完整、一致、準確的需求說明。

?實驗型:主要用于設計階段,通過原型驗證設計方案的可行性。原型或成為設計結(jié)果的一部分或拋棄。

?演化型:用于整個開發(fā)階段。原型經(jīng)過不斷擴充,演化為最終的軟件系統(tǒng)。40西安交通大學劉海巖存在的問題:

⑴為了使原型盡快的工作,沒有考慮軟件的總體質(zhì)量和長期的可維護性。

⑵為了演示,可能采用不合適的操作系統(tǒng)、編程語言、效率低的算法,這些不理想的選擇成了系統(tǒng)的組成部分。

⑶開發(fā)過程不便于管理。有效的使用原型模式是:建造原型僅是為了定義需求,之后就被拋棄(或被部分拋棄),實際的軟件在充分考慮了質(zhì)量和可維護性之后才被開發(fā)。41西安交通大學劉海巖

(3)

增量模型是一種漸進地開發(fā)逐步完善的軟件版本的模型。

42西安交通大學劉海巖特點:

?反復的應用瀑布模型的基本成分和原型模型的迭代特征,每一個線型過程產(chǎn)生一個“增量”的發(fā)布或提交,該增量均是一個可運行的產(chǎn)品。

?第一個增量往往是核心產(chǎn)品,即滿足用戶的基本需求,提供給用戶評估的平臺,以便制定下一個增量計劃。43西安交通大學劉海巖(4)

螺旋模型

對于復雜的大型軟件,開發(fā)一個原型往往達不到要求。螺旋模型將瀑布模型和增量模型結(jié)合起來,加入了風險分析。在該模型中,軟件開發(fā)使一系列的增量發(fā)布,早期的迭代中,發(fā)布的增量可能是一個理論模型或原型,在以后的迭代中,逐步產(chǎn)生更加完善的系統(tǒng)版本。每個演進過程,除了考慮風險,還要標記里程碑。螺旋模型將開發(fā)過程劃分為幾個螺旋周期,每個周期有三到六個任務區(qū)域,見下圖。44西安交通大學劉海巖45西安交通大學劉海巖螺旋模型的簡單表示46西安交通大學劉海巖

螺旋的第一圈可能產(chǎn)生產(chǎn)品的規(guī)格說明,再下面的螺旋可能用于開發(fā)一個原型系統(tǒng),隨后可能是軟件的更完善的版本。每一圈還要根據(jù)用戶評估的反饋對項目計劃(包括進度、費用)進行調(diào)整。特點:

?適合于大型系統(tǒng)的軟件開發(fā),隨著過程的進展演化,開發(fā)者和用戶能夠更好的識別和對待每一個演化級別上的風險。

?演進的方法不一定可控,依賴于相當豐富的風險評估經(jīng)驗來保證成功。47西安交通大學劉海巖(5)

形式化方法模型

是基于形式化語言和程序變換的模型,因此,也稱變換模型。從軟件需求形式化說明開始,經(jīng)過一系列的數(shù)學變換和正確性證明,最終得到系統(tǒng)高層的設計邏輯或低層的目標程序。形式化方法使開發(fā)者應用一個嚴格的數(shù)學符號體系來表示、構(gòu)造和驗證系統(tǒng),從而大大提高軟件的可靠性。模型見下圖:48西安交通大學劉海巖

變換模型

形式化規(guī)格說明與需求比較后修正形式化開發(fā)記錄變換n變換2變換1驗證系統(tǒng)需求設計邏輯或目標系統(tǒng)……49西安交通大學劉海巖兩種技術:

?基于模型的方法基于模型的方法使用數(shù)學上的概念如集合、關系、函數(shù)、結(jié)構(gòu)等概念為系統(tǒng)建模。它們能展現(xiàn)系統(tǒng)的狀態(tài)以簡化對某些行為的描述,即將系統(tǒng)操作表達成系統(tǒng)狀態(tài)模型的改變。基于模型的描述語言及方法如Z、VDM(ViennaDefinitionMethod)、B、PetriNets等。

?代數(shù)方法系統(tǒng)用類型操作和它們之間的聯(lián)系來描述。代數(shù)方法適合于對接口的描述。這里接口被定義為一組對象類或抽象數(shù)據(jù)類型的集合。50西安交通大學劉海巖特點:

?該模型迫使對系統(tǒng)需求的分析在軟件開發(fā)的早期階段完成。在這個階段改正錯誤比在系統(tǒng)被交付之后修改錯誤要經(jīng)濟得多。

?形式化描述是對非形式化描述技術的補充,可以用來精化非形式化的詳細的系統(tǒng)需求描述。描述是精確的和無二義的,避免了由于語言誤解而產(chǎn)生的一些問題。形式化描述可用來描述標準。

?最適合用于安全性、可靠性和保密性等性能要求極高的系統(tǒng)。

?開發(fā)成本較高,往往不能快速開發(fā)。

?需要嚴格的數(shù)學理論和開發(fā)環(huán)境的支持。

?難以與用戶進行溝通。51西安交通大學劉海巖

形式化過程模型的一個擴展,稱為凈室軟件工程(cleanroomsoftwareengineering)或凈室模型,它除了強調(diào)分析和設計上的嚴格性,以及使用基于數(shù)學的正確性證明來對設計模型的每個元素進行形式化驗證外,還強調(diào)了統(tǒng)計質(zhì)量控制技術。基本思想:力求在分析和設計階段就消除錯誤,確保正確,然后在無缺陷或“潔凈”的狀態(tài)下實現(xiàn)軟件的制作。關鍵技術:

?基于統(tǒng)計過程控制之下的增量開發(fā)。“盒”(封裝系統(tǒng)或某些方面)結(jié)構(gòu)設計入手→→正確性驗證→統(tǒng)計使用測試

?基于函數(shù)的規(guī)范、設計、驗證。

?統(tǒng)計使用測試(按照對用例使用的概率分布來確定進一步測試)和軟件可靠性認證。52西安交通大學劉海巖(6)構(gòu)件組裝模型

構(gòu)件(component)也稱為組件,是一段實現(xiàn)一系列有確定接口的程序體,具有自己的功能和邏輯,能同其他構(gòu)件組裝起來協(xié)調(diào)工作。該模型支持軟件重用,對縮短軟件開發(fā)周期、降低項目成本有重要的現(xiàn)實意義。同時,建造符合某應用領域體系結(jié)構(gòu)標準的構(gòu)件,可以用來搭建分布式的、跨越不同操作平臺的軟件,擴展了軟件的應用前景,促進了軟件標準化、商品化的發(fā)展。因此,在此基礎上專家們又提出了“基于構(gòu)件的軟件工程”(CBSE)。構(gòu)件組裝模型的一種形式如下圖所示:53西安交通大學劉海巖

構(gòu)件組裝模型的一種形式該模型是軟件體系結(jié)構(gòu)被建立后用構(gòu)件去充實。這些構(gòu)件可從復用庫(或商品庫)中獲得,或者根據(jù)專門需要而開發(fā)。整個過程可以演化地進行,面向?qū)ο蠓椒ńo予技術上的支持。54西安交通大學劉海巖1.5統(tǒng)一過程-RUP

RUP(RationalUnifiedProcess)或UP于1998年6月由Rational公司推出。有上千家公司在使用,分布于電信、交通、航空、國防、制造、金融等不同的行業(yè)和應用域。RUP是一個二維的迭代結(jié)構(gòu):橫軸為生命周期的四個階段——起始、細化、構(gòu)建和產(chǎn)品化,各階段結(jié)束于一個里程碑。縱軸為九個工作流(RUP2000版)——業(yè)務建模、需求、分析設計、實施、測試、部署、配置(稱為核心過程工作流)與變更管理、項目管理、環(huán)境(稱為核心支持工作流)。下圖顯示了五個核心過程工作流的二維結(jié)構(gòu):

55西安交通大學劉海巖56西安交通大學劉海巖inception統(tǒng)一過程57西安交通大學劉海巖

起始(inception):定義業(yè)務需求、提出系統(tǒng)大致的架構(gòu),識別各種資源,評估主要風險,制定開發(fā)計劃。

細化(elaboration):擴展起始階段定義的用例,擴展體系結(jié)構(gòu)以包括各類視圖—用例模型、分析模型、設計模型、實現(xiàn)模型和部署模型,修改項目計劃。

構(gòu)建(construction):以體系結(jié)構(gòu)模型作為輸入,開發(fā)或獲取軟件構(gòu)件,確保最終用戶能夠操作用例。

轉(zhuǎn)換(transition):軟件被提交給用戶進行Beta測試和驗收測試,根據(jù)缺陷進行必要的變更,創(chuàng)建系統(tǒng)發(fā)布所必要的支持信息。生產(chǎn)(production):持續(xù)的監(jiān)控軟件的運行并提供運行環(huán)境的技術支持。在構(gòu)建、轉(zhuǎn)換和生產(chǎn)階段的同時,下一個增量的工作已開始。58西安交通大學劉海巖1、RUP每一階段產(chǎn)生的主要工作產(chǎn)品起始階段·初始用例模型·初始項目術語表·初始業(yè)務用例·初始風險評估·項目計劃階段及迭代·業(yè)務模型

如果需要·一個或多個原型細化階段·用例模型·補充需求

包括非功能需求·分析模型·軟件體系結(jié)構(gòu)描述·可執(zhí)行的體系結(jié)構(gòu)原型·初步的設計模型·修訂的風險列表·項目計劃,包括

·迭代計劃

·調(diào)整的工作流

·里程碑

·技術工作產(chǎn)品·初始用戶手冊

構(gòu)建階段·設計模型·軟件構(gòu)件·集成的軟件增量·測試計劃及步驟·測試用例

·支持文檔

·用戶手冊

·安裝手冊·對于并發(fā)增量的描述轉(zhuǎn)換階段·提交的軟件增量·Beta測試報告·綜合用戶反饋

59西安交通大學劉海巖

2、RUP的主要特點:(1)用例驅(qū)動用例作為系統(tǒng)分析、設計、實現(xiàn)和測試的基本輸入。即用例不只是一種確定系統(tǒng)需求的工具,它還能驅(qū)動系統(tǒng)的設計、實現(xiàn)和測試的進行?;谟美P停_發(fā)人員可以創(chuàng)建一系列實現(xiàn)這些用例的設計模型和實現(xiàn)模型。開發(fā)人員可以審查每個后續(xù)建立的模型是否與用例模型一致。測試人員測試實現(xiàn)以確定實現(xiàn)模型的構(gòu)件是否實現(xiàn)了用例。所以用例啟動了開發(fā)過程,還使開發(fā)過程結(jié)合為一體。開發(fā)過程是沿著一系列從用例得到的工作流前進的。60西安交通大學劉海巖下圖顯示了用例模型與其他模型之間的相關性:用例模型由…建立分析模型為系統(tǒng)描述一系列類由…設計設計模型為系統(tǒng)定義一系列子系統(tǒng)和界面由…實現(xiàn)實現(xiàn)模型將類映射到構(gòu)件由…分布測試模型由…驗證驗證系統(tǒng)是否提供了用例模型中描述的功能實施模型定義軟件部署61西安交通大學劉海巖

(2)以構(gòu)架(Architecture)為中心軟件系統(tǒng)的構(gòu)架從不同角度描述了即將構(gòu)造的系統(tǒng),它刻畫了系統(tǒng)的整體設計,去掉了細節(jié)部分,突出了系統(tǒng)的重要特征,包含了系統(tǒng)中最重要的靜態(tài)結(jié)構(gòu)和動態(tài)行為。構(gòu)架是根據(jù)應用領域的需要逐漸發(fā)展起來的,并在用例中得到反映。每種產(chǎn)品都具有功能和表現(xiàn)形式,功能與用例對應,表現(xiàn)形式與構(gòu)架對應。用例與構(gòu)架是相互影響的,用例在實現(xiàn)時必須符合于構(gòu)架,構(gòu)架必須預留空間以實現(xiàn)現(xiàn)在或?qū)硭行枰挠美?2西安交通大學劉海巖

(3)迭代與增量的過程迭代指工作流中的步驟,是反復求精的概念;增量指產(chǎn)品中增加的部分,是逐塊建造的概念。迭代過程要處理一組用例,這組用例合起來能擴展所開發(fā)產(chǎn)品的可用性,后續(xù)的迭代過程建立在前一次迭代過程末期所開發(fā)的產(chǎn)品上。構(gòu)架提供了一種結(jié)構(gòu)來指導迭代過程中的工作,用例則確定了目標并驅(qū)動每次迭代的工作?!龡l腿的凳子?。?)基于構(gòu)件統(tǒng)一過程所構(gòu)造的軟件系統(tǒng),是由軟件構(gòu)件通過明確定義的接口相互連接所建造起來的。63西安交通大學劉海巖

(5)使用UML統(tǒng)一過程使用UML來制定軟件系統(tǒng)的所有藍圖,UML是整個統(tǒng)一過程的一個完整部分,他們是共同發(fā)展起來的,它強調(diào)創(chuàng)建和維護模型。

(6)過程可剪裁

RUP是一個過程模式,或過程定義(PD)而非過程(P)。可以根據(jù)系統(tǒng)的規(guī)模、項目的性質(zhì)、開發(fā)組織的經(jīng)驗對過程加以裁剪。IvarJacobson于2005年發(fā)布了EssUP,即“超輕和超敏捷的”RUP。2007年,他提出“EnoughofProcesses,Let’sDoPractices”。64西安交通大學劉海巖另外,在人員方面,RUP定義了角色的概念,從角色視角對不同人員從事的不同活動進行了規(guī)范。在方法與產(chǎn)品方面,RUP提供了使用UML進行可視化建模、基于用例驅(qū)動且以架構(gòu)為中心的分析設計方法,并有相應的工具支持,如RationalSolutions,包括建模工具Rose、文檔自動生成工具SoDA、測試工具Purify和Quality、配置管理工具ClearCase、變更管理工具ClearQuest等。RUP強調(diào)了開發(fā)方法的統(tǒng)一、建模語言的統(tǒng)一、研究成果的統(tǒng)一。65西安交通大學劉海巖

現(xiàn)代軟件工程領域的一些專家普遍認為影響軟件實踐的三個基本要素是:人、技術和過程。RUP主要強調(diào)的是過程,認為具有好的過程才能生產(chǎn)出穩(wěn)定質(zhì)量的軟件。

新提出的敏捷(Agile)方法(第8章)強調(diào)的是人,認為人才是創(chuàng)造的源泉,只有人與人之間的充分交流(包括與用戶的交流和開發(fā)著之間的交流)才是解決許多問題的關鍵。66西安交通大學劉海巖1.6

軟件工程方法

是軟件生產(chǎn)的組織方式,包括軟件過程指南、使用的標記法、軟件描述和設計的規(guī)則等。

?

面向過程的方法

?面向?qū)ο蟮姆椒?/p>

1、結(jié)構(gòu)化方法

結(jié)構(gòu)化方法是70年代末由DeMarco、Yourdon、Constantine等人提出的系統(tǒng)的開發(fā)方法,包括結(jié)構(gòu)化分析(SA)、結(jié)構(gòu)化設計(SD)和結(jié)構(gòu)化程序設計(SP)IDEF、ER方法等。

67西安交通大學劉海巖結(jié)構(gòu)是系統(tǒng)內(nèi)各組成元素之間的相互聯(lián)系、相互作用的框架。結(jié)構(gòu)化方法,就是如何使一個復雜的問題從結(jié)構(gòu)上給以簡化,得到一個結(jié)構(gòu)清晰的程序。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論