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

下載本文檔

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

文檔簡介

1提示:設計與建模要點結構化分析建模:數據流圖、實體關系圖、狀態(tài)遷移圖、數據字典結構化設計建模:數據流圖轉換為系統結構圖結構化程序設計:程序流程圖、N-S圖、PAD程序環(huán)路復雜性計算測試用例設計:邏輯覆蓋、循環(huán)測試、基本路徑覆蓋、因果圖可靠性分析:估算測試前程序中潛在錯誤OMT建模:對象模型、動態(tài)模型(狀態(tài)圖、事件追蹤圖)UML建模:用例圖、類圖、順序圖、活動圖第一章軟件工程概念1.1軟件的定義與分類1.2軟件的發(fā)展1.3軟件工程定義1.4軟件工程過程與軟件生存周期模型1.5軟件開發(fā)范型1.6軟件工程原理和原則1.1軟件的定義與分類軟件的定義:軟件由計算機程序、數據及文檔組成。程序是按事先設計的功能和性能要求執(zhí)行的指令序列數據是使程序能正常操縱信息的數據結構文檔是與程序開發(fā),維護和使用有關的圖文材料軟件與硬件、數據庫、人、過程等共同構成計算機系統。軟件的特點軟件是一種邏輯實體,而不是具體的物理實體。因而它具有抽象性軟件的生產與硬件不同,在它的開發(fā)過程中沒有明顯的制造過程在軟件的運行和使用期間,沒有硬件那樣的機械磨損,老化問題軟件的開發(fā)和運行常受到計算機系統的限制,對計算機系統有著不同程度的依賴性軟件的開發(fā)至今尚未完全擺脫手工藝的開發(fā)方式軟件本身是復雜的實際問題的復雜性程序邏輯結構的復雜性軟件成本相當昂貴相當多的軟件工作涉及到社會因素軟件的分類按軟件的功能進行劃分:系統軟件

操作系統數據庫管理系統設備驅動程序通信處理程序等支撐軟件文本編輯程序文件格式化程序程序庫系統支持需求分析、設計、實現、測試和支持管理的軟件應用軟件

商業(yè)數據處理軟件工程與科學計算軟件計算機輔助設計/制造軟件智能產品嵌入軟件事務管理、辦公自動化軟件計算機輔助教學軟件按軟件規(guī)模進行劃分:類別參加人員數研制期限源程序行數

微型 1 1~4周0.5k

小型1 1~6月1k~2k

中型2~5 1~2年5k~50k

大型5~20 2~3年50k~100k

甚大型100~10004~5年1M(=1000k)

極大型2000~50005~10年1M~10M

按軟件工作方式劃分:實時處理軟件分時軟件交互式軟件批處理軟件按軟件服務對象的范圍劃分:項目軟件產品軟件按使用的頻度進行劃分:一次使用頻繁使用按軟件失效的影響進行劃分:高可靠性軟件一般可靠性軟件1.2軟件發(fā)展階段程序設計階段—1950至60年代 計算機軟件發(fā)展的初期,其主要特征是程序生產方式為個體手工方式。主要采用批處理技術,沒有任何其它形式的文檔資料保留下來,開發(fā)出的程序根本無法維護。程序系統階段—60至70年代 程序的規(guī)模已經很大,需要多人分工協作,軟件的開發(fā)方式由“個體生產”發(fā)展到了“軟件作坊”。 “軟件作坊”基本上沿用了軟件發(fā)展早期所形成的個體化的開發(fā)方式,軟件的開發(fā)與維護費用以驚人的速度增加。許多軟件產品根本不能維護,最終導致出現了嚴重的“軟件危機”。軟件工程階段—70年代以后

軟件的開發(fā)以工程化的思想為指導,用工程化的原則、方法和標準來開發(fā)和維護軟件。 軟件工程概念的出現源自軟件危機。 軟件危機的主要特征軟件價格在整個項目投入中的比例不斷升高;

軟件開發(fā)成本嚴重超標;軟件開發(fā)周期大大超過規(guī)定日期;軟件質量難于保證;

軟件修改、維護困難;

失敗的根本原因在于:開發(fā)人員寫出的東西達不到用戶要求(人的問題、技術問題)為了解決軟件危機,人們借鑒其他領域的經驗和知識,從而認識到“擺脫軟件危機的出路在于軟件開發(fā)的標準化和工程化”,出現了“軟件工程”的概念。1968年德國人Bauer在北大西洋公約組織會議上的定義:"建立并使用完善的工程化原則,以較經濟的手段獲得能在實際機器上有效運行的可靠軟件的一系列方法"。1983年IEEE的軟件工程定義:"軟件工程是開發(fā),運行,維護和修復軟件的系統方法"。1993年IEEE的一個更加綜合的定義:"將系統化的,規(guī)范的,可度量的方法應用于軟件的開發(fā),運行和維護的過程,即將工程化應用于軟件中"。1.3軟件工程定義軟件工程框架可用性性性確正合算選取適宜的開發(fā)模型采用合適的設計方法提供高質量的工程支持重視軟件工程的管理基本過程支持過程組織過程目標過程原則軟件工程框架給出了軟件工程三個主要方面。軟件工程目標—包括可用性、正確性和合算性,規(guī)定了軟件工程實踐的結果(即軟件)應具有的基本性質;軟件工程過程—包含的基本活動有需求、分析與設計、實現、確認與測試、維護與支持;軟件工程的四條原則--采用適宜的開發(fā)模型,使用恰當的開發(fā)方法,提供高質量的工程支持,實施有效的工程管理,從四個方面指導每一項工程的活動,以實現軟件工程目標。軟件工程的知識結構2001年5月ISO/IECJTC1發(fā)布了《SWEBOK指南(試用版)》,即GuidetotheSoftwareEngineeringBodyofKnowledge。SWEBOK把軟件工程學科的主體知識分為10個知識領域。這10個領域包括:

軟件需求

軟件設計

軟件構造

軟件測試

軟件維護

軟件配置管理

軟件工程管理

軟件工程過程

軟件工程工具和方法

軟件質量ISO9000定義:軟件工程過程是把輸入轉化為輸出的一組彼此相關的資源和活動。從軟件開發(fā)的觀點看,它就是使用適當的資源(包括人員、硬軟件工具、時間等),為開發(fā)軟件進行的一組開發(fā)活動,在過程結束時將輸入(用戶要求)轉化為輸出(軟件產品)。1.4軟件工程過程與軟件生存周期軟件工程過程定義了:方法使用的順序、要求交付的文檔資料、為保證質量和適應變化所需要的管理、軟件開發(fā)各個階段完成的里程碑。軟件工程過程包含四種基本的過程活動:

plan:軟件規(guī)格說明

do:軟件開發(fā)

check:軟件確認

action:軟件演進軟件生存周期包含三個階段:軟件定義、軟件開發(fā)及軟件運行維護。軟件生存周期模型是軟件工程思想的具體化,是跨越軟件生存周期的系統開發(fā)、運行、維護所實施的全部活動和任務的過程框架。常用的軟件生存周期模型有瀑布模型,演化模型,螺旋模型,增量模型,噴泉模型,快速應用開發(fā)(RAD)模型。瀑布模型各項活動按自上而下,相互銜接的固定次序,如同瀑布逐級下落,每項活動均處于一個質量環(huán)(輸入-處理-輸出-評審)中。階段間具有順序性和依賴性。推遲實現的觀點。每個階段必須完成規(guī)定的文檔;每個階段結束前完成文檔審查。需求定義系統與軟件設計集成與系統測試實現與單元測試運行與維護演化模型演化模型是迭代的,軟件必須經過不斷演化才能完善。演化模型先開發(fā)一個“原型”軟件,完成部分主要功能,展示給用戶并征求意見,然后逐步完善,最終獲得滿意的軟件產品。業(yè)務和產品需求在變化中,采用線性開發(fā)方式是不實際的。快速實現和提交一個有限的版本,可以應付市場競爭的壓力。需求的采集與細化客戶評價原型快速設計建造原型加工原型產生樣品停止開始螺旋模型螺旋模型將瀑布模型與演化模型結合起來,并且加入兩種模型均忽略了的風險分析。螺旋模型沿著螺線旋轉,自內向外每旋轉一圈便開發(fā)出更完善的一個新版本。制定計劃風險分析實施工程客戶評估決定目標、方案和限制評價方案識別風險弱化風險

開發(fā)、驗證、下一級產品

計劃下一階段集成測試增量模型增量模型是迭代和演進的過程。增量模型把軟件產品分解成一系列的增量構件,在增量開發(fā)迭代中逐步加入。每個構件由多個相互作用的模塊構成,并且能夠完成特定的功能。早先完成的增量可以為后期的增量提供服務。增量開發(fā)方法的新演進版本叫做"極限程序設計(eXtremeProgramming)"。定義基本需求將需求對應到各增量設計系統架構開發(fā)其中一個增量檢驗和確認該增量將增量集成到系統中確認集成后的系統日歷時間分析增量1

增量1交付設計編碼測試分析增量2增量2交付設計編碼測試分析增量3增量3交付設計編碼測試分析增量4增量4交付設計編碼測試系統和信息工程噴泉模型體現了迭代和無間隙的特性。系統某個部分常常重復工作多次,相關對象在每次迭代中隨之加入演進的軟件成分。無間隙是指在各項開發(fā)活動,即分析、設計和編碼之間不存在明顯的邊界。噴泉模型是對象驅動的過程。需求階段分析階段設計階段編程階段集成與測試階段維護與演進階段變換模型變換模型是一種基于形式化規(guī)格說明語言及程序變換的軟件開發(fā)模型。它采用形式化的軟件開發(fā)方法,對形式化的軟件規(guī)格說明進行一系列自動的或半自動的程序變換,最終映射成為計算機系統能夠接受的程序系統。多步程序變換過程的重要性質是:每一步程序變換的正確性僅與該步變換所依據的規(guī)范Mi以及對變換后的假設Mi+1有關。軟件需求形式化說明(M0)軟件設計形式化說明(M1)(M2)(Mn)……模型檢查程序變換程序變換程序變換在此意義上,變換步驟獨立于其他變換步驟。這稱為變換的獨立性。該模型只適合于軟件的形式化開發(fā)方法;需要嚴格的數學理論和形式化技術支持;需要一整套開發(fā)環(huán)境(如程序變換工具、定理證明工具等)的支持?;诘谒拇夹g的模型第四代語言(4GL)是在大型數據庫管理系統的基礎上發(fā)展起來的,是一種面向結果的非過程性語言。它獨立于具體的處理機,有豐富的軟件工具支持,能統一利用和管理各種數據資源并能適應不同水平用戶的需要。以4GL為核心的軟件開發(fā)技術成為第四代技術(4GT),采用4GT的軟件開發(fā)模型如圖。軟件開發(fā)人員在定義軟件需求,給出需求規(guī)格說明之后,4GT工具可將該需求規(guī)格說明自動 轉換為程序代碼。這大大減少了分析、設計、編碼和測試的時間。以4GL為核心的軟件開發(fā)技術成為第四代技術(4GT),采用4GT的軟件開發(fā)模型如圖。收集需求“設計”策略用“4GL”實現測試快速應用開發(fā)(RAD)模型快速應用開發(fā)模型是一種增量開發(fā)模型,該模型開發(fā)軟件大量使用了可復用的構件。每一個增量的開發(fā)經歷五個階段:業(yè)務建模對業(yè)務功能的信息流建模。數據建模對業(yè)務的數據對象和關系建模。過程建模描述完成業(yè)務功能的數據變換。應用生成應用構件和自動化工具建造。測試與反復對新構件和接口進行測試。業(yè)務建模數據建模過程建模應用生成測試及反復小組1#業(yè)務建模數據建模過程建模應用生成測試及反復小組2#業(yè)務建模數據建模過程建模應用生成測試及反復小組3#60~90天Rational統一開發(fā)過程最佳軟件開發(fā)實踐

為了以一種更好的、迭代的、可預測的方式開發(fā)軟件產品,總結了軟件開發(fā)的最佳實踐:迭代式軟件開發(fā);需求管理;基于構件的軟件體系結構;建立軟件可視化模型;不斷驗證軟件質量;控制變更。Rational統一開發(fā)過程

軟件開發(fā)過程的作用是:成為開發(fā)組活動順序的向導。詳細說明需要開發(fā)哪些制品,何時開發(fā)。指導每一個成員及整個開發(fā)組的工作。提供監(jiān)控和度量項目產品和活動所依據的準則。如果沒有一個良好定義的過程,開發(fā)組將各行其是,開發(fā)成功與否完全依賴個別優(yōu)秀的人才,這不是能夠長久的。Rational統一開發(fā)過程(RUP,RationalUnifyProcess)描述了如何在軟件開發(fā)組織中嚴格分配任務和職責的方法。RUP是一個過程產品,"軟件過程也是軟件。"RUP采用二維的過程結構:橫軸表明過程的生存周期,它反映了過程被激活時的動態(tài)情況,用周期、階段、迭代和里程碑表示。縱軸表明過程的靜態(tài)狀況,通過過程構件、活動、工作流、制品和工作人員描述過程。初始細化構造移交階段初始化細化#1細化#2構造#1構造#2構造#3移交#1移交#2迭代工作流業(yè)務建模需求

分析與設計實現測試實施配置和變更管理項目管理環(huán)境沿時間軸的組織結構沿內容軸的組織過程的靜態(tài)描述:過程模型過程模型中的主要模型元素有4種:工作人員:誰做(Who)活動:怎么做(How)制品:做什么(what)工作流:何時做(when)過程的中心概念是工作人員,工作人員不是指某一個人,而是指完成工作的角色。工作人員定義人們應履行的行為和職責?;顒佣x了工作人員所執(zhí)行的工作。有3類步驟:思考步驟執(zhí)行步驟評審步驟制品是過程生產、修改或使用的一些信息。RUP的制品分為5個信息集。管理集:計劃制品、操作制品需求集:構想文檔、項目相關人員需求、用例模型和業(yè)務模型設計集:設計模型、軟件體系結構描述、測試模型實現集:源代碼和可執(zhí)行程序、相關數據結構和數據文檔實施集:安裝資料、用戶文檔、培訓材料工作流用來描述生成結果的活動序列,用以描述工作人員之間的交互。在RUP中共有9個核心過程工作流,包括6個核心工程工作流和3個核心支持工作流。軟件的開發(fā)以工程化的思想為指導,用工程化的原則、方法和標準來開發(fā)和維護軟件。以4GL為核心的軟件開發(fā)技術成為第四代技術(4GT),采用4GT的軟件開發(fā)模型如圖。對于每個子問題采用適當的軟件開發(fā)范型。細化階段:計劃需完成活動和資源,詳細說明產品特性并設計軟件體系結構。測試工作流:根據事先定義的度量和準則檢查產品,確認產品是否滿足或者超出事先定義并被一致接受的需求。軟件工程概念的出現源自軟件危機。為了以一種更好的、迭代的、可預測的方式開發(fā)軟件產品,總結了軟件開發(fā)的最佳實踐:局部化在一個物理模塊內集中邏輯上相互關聯的計算機資源,促使聚合具有特定目的的事物。在開發(fā)過程中,必須兼顧功能和表現形式,做出適當權衡,才能得到好的產品。測試人員測試實現確保系統正確實現了用例。過程的靜態(tài)描述:過程模型軟件工程過程—包含的基本活動有需求、分析與設計、實現、確認與測試、維護與支持;制品:做什么(what)軟件是一種邏輯實體,而不是具體的物理實體。IECT構造階段:構造整個產品,逐步完善軟件體系結構和計劃,直到產品(完整的構想)已完全準備好交付給用戶。軟件工程的基本原理有:工作人員定義人們應履行的行為和職責。用人少而精開發(fā)組織不在人多,在于每個人的技能適合要求。過程性范型把軟件視為處理流,定義成由一系列步驟構成的算法。業(yè)務建模工作流:描述業(yè)務過程的本質和執(zhí)行情形。需求工作流:定義系統構想,使用用例模型和補充規(guī)格說明定義系統軟件需求,管理系統范圍和需求變更。分析和設計工作流:研究實現環(huán)境和系統構件的效用,定義軟件的組織結構,把需求獲取結果轉化為實現規(guī)格。實現工作流:建立代碼的分層結構,實現類和對象,進行單元測試和系統集成。測試工作流:根據事先定義的度量和準則檢查產品,確認產品是否滿足或者超出事先定義并被一致接受的需求。實施工作流:在實際使用環(huán)境中測試軟件、包裝要交付的軟件、發(fā)布軟件產品、培訓最終用戶及銷售人員。核心支持工作流有項目管理工作流配置和變更管理工作流環(huán)境工作流過程的動態(tài)描述:迭代開發(fā)將一個大項目分解為可連續(xù)應用瀑布模型的幾個小部分。在對一部分進行分析、設計、實現并確認后,再對下一部分進行分析、設計、實現和確認。以此進行下去,直到整個項目完成。在RUP中,迭代過程分為幾個階段。初始細化構造移交生存周期構架里程碑生存周期目標里程碑最初運行能力里程碑產品發(fā)布里程碑時間初始階段:確定最終產品的構想及其用例,定義項目范圍。細化階段:計劃需完成活動和資源,詳細說明產品特性并設計軟件體系結構。構造階段:構造整個產品,逐步完善軟件體系結構和計劃,直到產品(完整的構想)已完全準備好交付給用戶。移交階段:移交產品給用戶,包括制造,交付,培訓,支持及維護產品。這4個階段構成開發(fā)周期,周期結束時產生一代新的軟件產品。軟件產品產生于初始開發(fā)周期,隨著重復執(zhí)行同樣的過程,軟件發(fā)展到下一代產品,這一時期即為軟件的進化周期。

IECT

IECT

IECT

V1V2V3初始開發(fā)周期進化周期Rational統一過程的特點:用例驅動的、以體系結構(架構)為中心的、迭代和增量的過程。用例建模技術可以用為大多數項目相關人員理解的形式來表述問題。參與者(Actor)用例(UseCase)場景(scenario)事件流(eventflow)Actorusecase用例和參與者的事例儲戶通過自動取款機(自動柜員機)提款,轉賬或檢查賬戶余額。用一組用例表達如下:轉賬提款檢察賬戶余額儲戶用例模型將整個系統或子系統的所有用例,以及與之交互的參與者集合起來構成系統的用例模型。用例模型給出系統預期功能模型和系統上下文環(huán)境模型,它成為開發(fā)人員和用戶之間的契約。用例模型的目的是確保系統能處理所有的功能性需求。用例驅動的過程“用例驅動”指開發(fā)過程是基于用例,從一個工作流向下一個工作流,逐步前進的。開發(fā)初期,人們使用用例獲取用戶需求,建立用例模型,描述系統的全部功能?;谟美P?,人們創(chuàng)建一系列實現這些用例的分析模型、設計模型和實現模型。測試人員測試實現確保系統正確實現了用例。以體系結構為中心的過程用例的選擇不是孤立的,它與軟件的體系結構是密切相關的。軟件體系結構的作用與一個建筑的體系結構類似。對于一個建筑,可以從框架結構、供熱、上下水、供電、天然氣、其他服務管線等不同角度來考察它。使得施工人員在施工前就能全面了解這個建筑。軟件的體系結構也從不同角度描述了即將構造的系統,包括系統的靜態(tài)特征和動態(tài)特征。每一種產品都有功能和表現形式兩個方面。用例就是功能,體系結構就是表現形式。在開發(fā)過程中,必須兼顧功能和表現形式,做出適當權衡,才能得到好的產品。因此,用例和體系結構必須在迭代中并行演進。為了找到可以演進的體系結構,設計師必須從全面了解系統的主要功能(即主要用例)入手。1.5軟件開發(fā)范型(Paradigm)范型又稱為風范。通常認為范型就是開發(fā)模型(Model)或開發(fā)模式(Pattern),實際上它與方法(Methodology)一樣,都被視為一種開發(fā)技術。范型支配了設計方法、編碼語言、測試和檢驗技術的選擇。過程性范型把軟件視為處理流,定義成由一系列步驟構成的算法。每一步驟都是帶有輸入和輸出的一個過程,把這些步驟串聯在一起可產生貫通于整個程序的控制流。面向對象范型把標識和模型化問題領域中的實體做為系統開發(fā)的起點,面向對象系統中的對象是數據抽象與過程抽象的綜合。邏輯性范型是基于規(guī)則的,它把有關問題的知識分解成一組具體規(guī)則(如prolog語言)。面向進程范型把一個問題分解成獨立執(zhí)行的模塊。讓不只一個程序同時運行。這些進程互相配合,解決問題。面向存取范型是一種在構造用戶界面方面很有用的技術。函數型范型是基于規(guī)則的,

溫馨提示

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

最新文檔

評論

0/150

提交評論