全套電子課件:軟件工程_第1頁
全套電子課件:軟件工程_第2頁
全套電子課件:軟件工程_第3頁
全套電子課件:軟件工程_第4頁
全套電子課件:軟件工程_第5頁
已閱讀5頁,還剩255頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟件工程軟件工程

薛德黔等編著科學(xué)出版社軟件工程課程介紹

本課以傳統(tǒng)的軟件工程和面向?qū)ο蟮能浖こ虨橹骶€,根據(jù)軟件開發(fā)“工程化”思想,通過大量的應(yīng)用實例,系統(tǒng)地介紹軟件工程的基本概念、基本原理、軟件開發(fā)的過程、開發(fā)方法、應(yīng)用技術(shù)和實用工具。主要包括可行性研究、需求分析、總體設(shè)計、詳細設(shè)計、編碼、測試、維護以及有關(guān)軟件管理、軟件開發(fā)工具和環(huán)境等方面的內(nèi)容。本課力圖反映軟件工程領(lǐng)域的最新發(fā)展,并從實用性出發(fā),各章節(jié)均結(jié)合實例講解,深入淺出,使讀者易于理解和掌握。軟件工程軟件工程學(xué)習(xí)指南

軟件工程是一門理論性和實踐性都很強的學(xué)科

,在學(xué)習(xí)中要求:1)在全面系統(tǒng)學(xué)習(xí)的基礎(chǔ)上掌握基本理論、基本知識、基本方法。本課程從軟件開發(fā)、維護和軟件管理等方面系統(tǒng)地闡述了軟件工程的基本概念和常用的方法,各章之間既有聯(lián)系又有很大的區(qū)別,有的還有相對獨立性。應(yīng)全面系統(tǒng)的學(xué)習(xí)各章,再認識各章之間的聯(lián)系,在全面系統(tǒng)學(xué)習(xí)的基礎(chǔ)上掌握重點。2)把學(xué)習(xí)軟件工程理論和應(yīng)用軟件工程的方法結(jié)合起來。3)重視理論聯(lián)系實際,結(jié)合軟件開發(fā)全過程的實踐來進行學(xué)習(xí)。

軟件工程建議課程安排

本課程采用平時成績(包括出勤考核,平時作業(yè),課堂發(fā)言等)、課程設(shè)計和理論考試相結(jié)合的考核方法??傇u成績中平時成績占15%,實踐(課程設(shè)計)成績占15%,期末考試占70%。課程設(shè)計要求學(xué)生按小組完成項目設(shè)計,并以軟件驗收書面報告的形式上交。軟件工程建議參考教材1.(美)ShariLawrencePfleeger.SofewareEngineeringTheoryandPractice(SecondEdition).吳丹,史爭印,唐憶譯.北京:清華大學(xué)出版社,2003,82.(英)IanSommerville.SofewareEngineering(6thEdition).程成等譯.北京:機械工業(yè)出版社,2003,13.鄭人杰等.實用軟件工程(第二版).北京:清華大學(xué)出版社,1997,44.周之英.現(xiàn)代軟件工程.北京:科學(xué)出版社,19995.張海藩.軟件工程導(dǎo)論(第四版).北京:清華大學(xué)出版社,2003,12軟件工程第1章軟件工程概述

本章要點:軟件工程產(chǎn)生的原因軟件工程的基本原理軟件工程方法學(xué)和面向?qū)ο蠓椒▽W(xué)基本原理軟件過程軟件工程有關(guān)工具和環(huán)境軟件工程本章學(xué)習(xí)目標:了解軟件工程產(chǎn)生的原因掌握軟件工程的基本原理

了解軟件工程方法學(xué)和面向?qū)ο蠓椒▽W(xué)基本原理了解軟件過程了解軟件工程有關(guān)工具和環(huán)境軟件工程§1.1軟件工程的產(chǎn)生一、軟件發(fā)展經(jīng)歷了三個階段:

1、程序設(shè)計時代(1946-1956年)

采用“個體生產(chǎn)方式”

2、程序系統(tǒng)時代(1956-1968年)

隨著軟件規(guī)模的擴大,個體生產(chǎn)已經(jīng)不能夠滿足軟件生產(chǎn)的需要,一個軟件需要由幾個人協(xié)同完成,采用“生產(chǎn)作坊方式”,隨著軟件需求量、規(guī)模及復(fù)雜度的增大,生產(chǎn)作坊的方式已經(jīng)不能夠適應(yīng)軟件生產(chǎn)的需要,出現(xiàn)所謂“軟件危機”。

軟件工程主要表現(xiàn)在兩個方面:(1)軟件產(chǎn)品質(zhì)量低劣,甚至開發(fā)過程就夭折。(2)軟件生產(chǎn)率低,不能滿足需要?!败浖C”產(chǎn)生的原因“軟件危機”(Software

crisis)的出現(xiàn)是由于軟件的規(guī)模越來越大,復(fù)雜度不斷增加,軟件需求量增大。而軟件開發(fā)過程是一種高密集度的腦力勞動,軟件開發(fā)的模式及技術(shù)不能適應(yīng)軟件發(fā)展的需要。致使大量質(zhì)量低劣的軟件涌向市場,有的軟件花費了大量人力財力,卻在開發(fā)過程中就夭折。軟件工程3、軟件工程時代(1968年至今)

為了克服軟件危機,適應(yīng)軟件發(fā)展的需要,而采用“工程化的生產(chǎn)”方式。將工程學(xué)的某些原理和方法應(yīng)用在軟件的設(shè)計和開發(fā)中來軟件工程研究的主要內(nèi)容有以下兩個方面:1、軟件開發(fā)技術(shù),它包括軟件開發(fā)方法、技術(shù)和軟件開發(fā)工具及環(huán)境、軟件管理技術(shù)。2、軟件規(guī)范(國際規(guī)范)包括:(1)軟件開發(fā)技術(shù)(軟件結(jié)構(gòu)、開發(fā)方法、工具與軟件工程環(huán)境、軟件工程標準化)(2)軟件工程管理(質(zhì)量管理,軟件工程經(jīng)濟學(xué):成本估算,計劃安排)軟件工程研究的目標是“以較少的投資獲取較高質(zhì)量的軟件”。

軟件工程§1.2軟件工程及其基本原理

一、軟件工程的的定義軟件工程是指導(dǎo)計算機軟件開發(fā)和維護的工程學(xué)科。采用工程學(xué)的概念、原理、技術(shù)和方法,把經(jīng)過時間考驗而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來開發(fā)與維護軟件。

二、有關(guān)概念程序:為了使計算機實現(xiàn)預(yù)期的目的(如解某一算題或控制某一過程)而編排的一系列步驟稱為程序。軟件:計算機的程序加上該程序的各種規(guī)格書或文檔。軟件方法是以大型程序為研究對象的。相應(yīng)文檔是軟件的核心之一。

軟件工程軟件工程:生產(chǎn)軟件的工程。研究軟件工程的學(xué)問叫軟件工程學(xué)(有時人們也把軟件工程學(xué)簡稱為軟件工程)。軟件可靠性:軟件在所給條件下和規(guī)定時間內(nèi),能完成所要求的功能的性質(zhì)。

軟件可靠度:軟件在所給條件下和規(guī)定時間中,能完成所要求功能的概率。

軟件工程軟件工程的基本原理

軟件工程的七條基本原理:

1.用分階段的生命周期計劃嚴格管理

2.堅持進行階段評審3.實行嚴格的產(chǎn)品控制4.采用現(xiàn)代程序設(shè)計技術(shù)

5.結(jié)果應(yīng)能清楚地審查

6.開發(fā)小組的人員應(yīng)該少而精

7.承認不斷改進軟件工程實踐的必要性

軟件工程§1.3軟件生存期

軟件生存期又稱軟件生命周期,是指一個軟件系統(tǒng)從目標提出到最后丟棄的整個過程。

軟件工程基本原理強調(diào)軟件生命周期的階段性,其基本思想是各階段任務(wù)相對獨立,具有明確的完成標志。階段的劃分使得人員分工職責(zé)清楚,項目進度控制和軟件質(zhì)量得到確認。原則上,前一階段任務(wù)的完成是后一階段工作的前提和基礎(chǔ);而后一階段的任務(wù)則是對于前一階段問題求解方法的具體化。

軟件工程生存期瀑布模型

(目標與范圍說明書)(需求說明書)(設(shè)計文檔)(程序)(測試報告)(維護報告)(可行性論證報告)問題定義測試運行維護可行性分析需求分析設(shè)計編程設(shè)計時期開發(fā)時期運行時期圖1.1軟件生命周期的階段劃分軟件工程一、問題定義問題定義階段必須回答的關(guān)鍵問題是:“要解決的問題是什么?”

二、可行性研究此階段的任務(wù)不是具體解決問題,而是研究問題的范圍,探索這個問題是否值得去解決,是否有可行的解決辦法。三、需求分析這個階段的任務(wù),主要是確定目標系統(tǒng)必須具備哪些功能。

軟件工程四、總體設(shè)計這個階段必須回答的關(guān)鍵問題是:“應(yīng)該如何解決這個問題?”

五、詳細設(shè)計詳細設(shè)計階段的任務(wù)就是把解法具體化,設(shè)計出程序的詳細規(guī)格說明,包括必要的細節(jié),程序員可以根據(jù)它們寫出實際的程序代碼。六、編碼和單元測試這個階段的任務(wù)是程序員根據(jù)目標系統(tǒng)的性質(zhì)和實際環(huán)境,選取一種適當(dāng)?shù)母呒壋绦蛟O(shè)計語言(必要時用匯編語言),把詳細設(shè)計的結(jié)果翻譯成用選定的語言書寫的程序,并且仔細測試編寫出的每一個模塊。

軟件工程七、綜合測試這個階段的任務(wù)是通過各種類型的測試,使軟件達到預(yù)定的要求。八、軟件維護維護階段的任務(wù),是通過各種必要的維護活動使系統(tǒng)持久地滿足用戶的需要。

軟件工程§1.4軟件工程方法學(xué)

軟件開發(fā)方法和技術(shù)可歸納為三大類:瀑布型模型、原型化模型和變換型。一、軟件開發(fā)的瀑布型模型嚴格按照軟件生命周期的階段劃分,順序執(zhí)行各階段構(gòu)成軟件開發(fā)的瀑布型模型。瀑布模型的特點是:1.階段間具有順序性和依賴性

順序性要求每個階段工作開始的前提是其上一階段工作結(jié)束。因此前一階段輸出的文檔就是其后一階段的輸入文檔。依賴性是指各階段工作正確性依賴與上一階段工作的正確性。

軟件工程2.推遲實現(xiàn)的觀點編碼開始的越早,項目完成的時間很可能越長。這是因為過早進入編碼往往意味著大量的返工。3.質(zhì)量保證的觀點為保證軟件開發(fā)質(zhì)量,瀑布型模型在生命周期的各階段強調(diào):第一,制作規(guī)定的文檔是各階段完成的里程碑,沒有交出合格的文檔也就沒有完成該階段的任務(wù)。第二,每個階段結(jié)束之前都必須對完成的文檔進行評審,以便及早發(fā)現(xiàn)問題,改正錯誤。

軟件工程二、原型化開發(fā)模型瀑布型模型的缺陷在于軟件開發(fā)階段推進是直線型的,工程實踐說明這是一個“理想化”模型,不完全符合人們認識問題的規(guī)律。原型化開發(fā)方法。其主要思想是:先建立一個能夠反映用戶需求的原型系統(tǒng)(“樣機”),使得用戶和開發(fā)者可以對目標系統(tǒng)的概貌進行評價、判斷。然后對原型進行若干輪反復(fù)的擴充、改進、求精,最終建立完全符合用戶需求的目標系統(tǒng)。初始原型可以非常簡單,它只實現(xiàn)未來系統(tǒng)的主要功能,系統(tǒng)主要模塊之間的重要接口。初始原型主要用于向用戶展示系統(tǒng)功能概貌。確認開發(fā)人員對系統(tǒng)主要功能的理解。對系統(tǒng)應(yīng)該具備的功能的演示運行通常可以對用戶與開發(fā)人員之間的溝通起到催化劑作用,確立用戶對項目開發(fā)的信心。

軟件工程

基于初始原型的評價可以建立實驗性進化原型。實驗性進化原型的建立是一個逐步迭代的增量過程,每次迭代的新版本應(yīng)該具有更強的功能,更優(yōu)的性能。當(dāng)實驗性進化原型得到最終確認以后,開發(fā)進入目標系統(tǒng)的實現(xiàn)階段:將原型轉(zhuǎn)換為完全符合系統(tǒng)運行環(huán)境要求的目標系統(tǒng),并進行最終集成和驗收測試。

由原型轉(zhuǎn)化為目標系統(tǒng)的途徑有:

(1)拋棄原型法:建立原型系統(tǒng)的目的主要是準確定義系統(tǒng)需求,嚴格驗證方案設(shè)計。原型使用完畢后拋棄,然后在重新建立目標系統(tǒng)。應(yīng)用拋棄原型法建立原型的過程相當(dāng)于瀑布型模型的需求分析和總體設(shè)計過程。軟件工程(2)演化原型法:目標系統(tǒng)是對實驗性原型不斷擴充、完善送代的結(jié)果。每次迭代都要求再分析、再設(shè)計、再實現(xiàn)以及再測試評價。當(dāng)認為問題求解基本滿意時就可以交付系統(tǒng)的初始版本了。演化原型法的實施要求用戶和開發(fā)人員在一個相當(dāng)長的時期中對信息交流和系統(tǒng)修改持一種開放的態(tài)度。許多面向市場的軟件產(chǎn)品采用所謂β版發(fā)布,就是施行演化原型法開發(fā)的一種策略。

軟件工程原始用戶需求初始原型快速生成評價∕確認實驗性原型進化最終確認目標系統(tǒng)實現(xiàn)目標系統(tǒng)測試系統(tǒng)交付展示∕理解∕溝通補充∕確認∕優(yōu)化軟件工程三、變換型變換型開發(fā)方法是一種形式化軟件開發(fā)方法。它從軟件需求的形式化規(guī)格說明出發(fā),經(jīng)過一系列的程序變換,得到最終的程序系統(tǒng)。軟件需求形式化規(guī)格說明,也往往經(jīng)過原型檢查和確認。如能保證形式化規(guī)格說明是正確的,在逐級變換中所使用的變換規(guī)則是保持正確性的變換規(guī)則,那么就可確認,變換最后所得到的程序系統(tǒng)一定是正確的。變換型開發(fā)方法必須有嚴格的數(shù)學(xué)理論和形式化技術(shù)的支持,目前這種開發(fā)方法尚處于研究和實驗階段。

軟件工程1.4.2面向?qū)ο蠓椒?/p>

面向?qū)ο蠓椒▽W(xué)的基本思想是,在問題求解過程中,應(yīng)該盡可能符合人類習(xí)慣的思維方式。軟件開發(fā)的方法應(yīng)該過程與人類認識世界解決問題習(xí)慣的方法與過程接近,也就是使描述問題的問題空間與問題求解的解空間在結(jié)構(gòu)上盡可能一致??陀^世界的問題都是由客觀世界中的實體和實體之間的相互聯(lián)系構(gòu)成的。對象(Object)是客觀世界中的實體在問題域中的抽象。軟件工程

對象的概念是抽象數(shù)據(jù)類型概念的發(fā)展。面向?qū)ο蟮姆椒ǖ幕境霭l(fā)點是,將描述實體對象靜態(tài)屬性的數(shù)據(jù)與描述實體動態(tài)行為的操作統(tǒng)一為一個不可分割的整體。對象與傳統(tǒng)數(shù)據(jù)類型的區(qū)別在于:(1)對象不是被動地等待外部對其施加操作。對象是進行操作的主體,通過消息發(fā)送請求對象主動地執(zhí)行某些操作,處理其私有數(shù)據(jù)。

軟件工程面向?qū)ο蟮姆椒▽W(xué)可以概括為:面向?qū)ο蟮姆椒?對象+類+繼承+消息通信

(1)客觀世界是由各種對象組成的。對象是可以分解的:復(fù)雜對象可以由比較簡單的對象組合構(gòu)成。因此面向?qū)ο蟮能浖到y(tǒng)是若干對象的有機集合。(2)所有對象按其結(jié)構(gòu)成分,可以劃對分為各種對象類。

(3)局部于一個對象的私有成分都被“封裝”在對象內(nèi)部,外部不能訪問。對象之間僅能通過消息傳遞互相作用。

軟件工程面向?qū)ο蠓椒ǖ闹饕獌?yōu)點是:(1)使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。

(2)保證軟件系統(tǒng)的穩(wěn)定性。(3)軟件系統(tǒng)具有可重用性。

(4)軟件系統(tǒng)具有良好的可維護性。

軟件工程§1.5軟件過程軟件過程(SoftwareProcesses)

也稱為軟件生存周期過程或軟件過程組,是指軟件生存周期中的一系列相關(guān)過程(Process)。過程就是活動的集合,活動是任務(wù)的集合,任務(wù)則起到把輸入加工成輸出的作用?;顒拥膱?zhí)行可以是順序的、迭代的(重復(fù)的)、并行的、嵌套的或者是有條件地引發(fā)的。軟件過程應(yīng)當(dāng)包含以下3個含義:·個體含義:即指軟件或系統(tǒng)在生存周期中的某一類活動的集合,如獲取過程、供應(yīng)過程、開發(fā)過程、管理過程等。軟件工程·整體含義:即指軟件或系統(tǒng)在所有上述含義下的軟件過程的總體?!すこ毯x:即指解決軟件過程的工程,它應(yīng)用軟件工程的原則、方法來構(gòu)造軟件過程模型,并結(jié)合軟件的具體要求進行例化,以及在用戶環(huán)境中運作,以此進一步提高軟件開發(fā)率、降低成本。工程含義還可以包含如下幾個方面:(1)軟件過程不僅要有工程視面,也要有合同視面(包括系統(tǒng)視面和用戶視面)。

(2)軟件過程包含管理視面。

軟件工程(3)軟件過程應(yīng)包含運作視面。

(4)不同角色由于其視面不同,所參與的軟件過程亦不相同。

2、軟件過程的基本成分軟件過程涉及軟件生存周期中相關(guān)的過程與活動,其中“活動”是構(gòu)成軟件過栓的最基本的成分之一。此外,軟件開發(fā)是由多人分工協(xié)作、并使用不同的硬件環(huán)境和軟件環(huán)境來完成的,因此軟件過程還包括支持人與人之間進行協(xié)調(diào)與通信的組織結(jié)構(gòu)、資源及約束等因素。因而,過程活動、活動中所涉及的人員、軟件產(chǎn)品、所用資源和各種約束條件是軟件過程的基本成分。

軟件工程3、軟件過程標準

1995年8月1日,ISO/IEC經(jīng)過多次討論和修改后,正式發(fā)布了ISO/IEC12207第一版“信息技術(shù)軟件生存周期過程”國際標準。我國則根據(jù)該草案于1995年頒布GB/T8566一1995《信息技術(shù)軟件生存周期過程》國家標準;

軟件工程ISO/IEC12207國際標準集各種相關(guān)標準的優(yōu)點于一體,把軟件生存周期的各個過程分成三類,即主要生存周期過程、支持生存周期過程和組織的生存周期過程,軟件人員可以根據(jù)具體的軟件項目進行剪裁。主要生存周期過程包括:(1)獲取過程:確定需方和組織向供方獲取系統(tǒng)、軟件或軟件服務(wù)的活動。(2)供應(yīng)過程:確定供方和組織向需方提供系統(tǒng)、軟件或軟件服務(wù)的活動。(3)開發(fā)過程:確定開發(fā)者和組織定義并開發(fā)軟件的活動。軟件工程(4)操作過程:確定操作者和組織在規(guī)定的環(huán)境中為其用戶提供運行計算機系統(tǒng)服務(wù)的活動。(5)維護過程:確定維護者和組織提供維護軟件服務(wù)的活動。

支持生存周期過程包括8個過程,其目的是支持其他過程,作為其組成部分,它們有助于軟件項目的成功和質(zhì)量提高。它包括:

(1)文檔編制過程:確定記錄生存周期過程產(chǎn)生的信息所需的活動。(2)配置管理過程:確定配置管理活動。軟件工程(3)質(zhì)量保證過程:確定客觀地保證軟件和過程符合規(guī)定的要求以及已建立的計劃所需的活動。(4)驗證過程:根據(jù)軟件項目要求,按不同深度確定驗證軟件所需的活動。

5)確認過程:確定確認軟件所需的活動。(6)聯(lián)合評審過程:確定評價一項活動的狀態(tài)和產(chǎn)品所需的活動。(7)審核過程:確定為判斷符合要求、計劃和合同所需的活動。(8)問題解決過程:確定一個用于分析和解決問題的過程(包括不合格)。

軟件工程組織的生存周期過程包括4個過程,它們被一個軟件組織用來建立和實現(xiàn)構(gòu)成相關(guān)生存周期的基礎(chǔ)結(jié)構(gòu)和人事制度,并不斷改進這種結(jié)構(gòu)和過程。具體包括:

(1)管理過程:確定生存周期過程中的基本管理活動。(2)建立過程:確定建立生存周期過程基礎(chǔ)結(jié)構(gòu)的基本活動。(3)改進過程:確定一個組織為建立、測量、控制和改進其生存周期過程所需開展的基本活動。(4)培訓(xùn)過程:確定提供經(jīng)適當(dāng)培訓(xùn)的人員所需的活動。

軟件工程4、軟件過程工程的定義

軟件過程工程就是為建立軟件過程所必須實施的一系列工程化的活動。它涉及與此有關(guān)的方法、工具和環(huán)境的研究。

5、軟件過程工程和軟件項目工程如果說軟件過程工程是以軟件過程為中心的工程活動,那么在這種理念形成之前的軟件工程所進行的是以軟件開發(fā)為中心的工程活動,因而被稱之為軟件項目工程。

6、軟件過程周期軟件過程周期,也稱其為軟件過程生存周期或軟件過程生命周期,它是指一個軟件過程從孕育、誕生、成長、衰老的全部歷程。

軟件工程§1.6軟件工程工具和環(huán)境一、軟件工程環(huán)境的概念和類型

1.按軟件生產(chǎn)的不同方面、不同階段分類

1)軟件開發(fā)環(huán)境:這類環(huán)境目前數(shù)量最多,它支持軟件的需求分析、設(shè)計、編碼或測試等。這類環(huán)境中有的主要支持編程,也稱為程序設(shè)計環(huán)境。如UNIX程序設(shè)計環(huán)境

2)軟件項目管理環(huán)境:它們支持軟件的項目管理,諸如計劃、人員組織、成本估算等。

3)軟件質(zhì)量保證環(huán)境:這類軟件環(huán)境包括程序正確性證明、驗證以及軟件測討的功能GYPSY,AFFIRM,SPECIAL等屬于這一類。

軟件工程4)軟件維護環(huán)境。

2.按是否與軟件開發(fā)方法有關(guān)分類

1)不依賴于軟件開發(fā)方法的環(huán)境:工具箱是這類環(huán)境的主要的一種。它并不依賴于某種件開發(fā)方法,而是將最常用的軟件工具組成一個軟件包,供用戶使用。

2)支持某種軟件開發(fā)方法的環(huán)境:為使軟件開發(fā)建立在更嚴謹?shù)目茖W(xué)基礎(chǔ)之上,許多計算機科學(xué)家在形式方法上做了大量研究。

3.按工作方式分類

1)交互式軟件環(huán)境

軟件工程2)批處理軟件開發(fā)環(huán)境

二、軟件工程環(huán)境的發(fā)展前景整體化是指軟件工程環(huán)境應(yīng)支持軟件生產(chǎn)的各個階段,應(yīng)有統(tǒng)一的知識庫支持和統(tǒng)一的用戶界面,各工具間應(yīng)有一致的接口。有了整體化的軟件工程環(huán)境的支持就能大大改善軟件生產(chǎn)的質(zhì)量和效率。智能化是指將人們在軟件生產(chǎn)中的豐富知識和經(jīng)驗收集和歸納起來放入知識庫。這可使當(dāng)前的交互式軟件工程環(huán)境有大量知識作后盾,交互能力得到進一步提高,以便加快軟件的開發(fā)過程,并大大改善軟件的維護效率。軟件工程形式化是指將實際應(yīng)用系統(tǒng)的面向用戶的非形式描述和實現(xiàn)該系統(tǒng)的計算機形式化表示之間盡可能縮短距離,以便提高自動化程度。三、人工智能和軟件工程環(huán)境軟件工程學(xué)與人工智能結(jié)合,將會產(chǎn)生一批智能化的工具和設(shè)計軟件的專家系統(tǒng)。軟件工程§1.7軟件工程學(xué)習(xí)指南1)在全面系統(tǒng)學(xué)習(xí)的基礎(chǔ)上掌握基本理論、基本知識、基本方法。本課程從軟件開發(fā)、維護和軟件管理等方面系統(tǒng)地闡述了軟件工程的基本概念和常用的方法,各章之間既有聯(lián)系又有很大的區(qū)別,有的還有相對獨立性。應(yīng)全面系統(tǒng)的學(xué)習(xí)各章,再認識各章之間的聯(lián)系,在全面系統(tǒng)學(xué)習(xí)的基礎(chǔ)上掌握重點。2)把學(xué)習(xí)軟件工程理論和應(yīng)用軟件工程的方法結(jié)合起來。3)重視理論聯(lián)系實際,結(jié)合軟件開發(fā)全過程的實踐來進行學(xué)習(xí)。

軟件工程本章小結(jié)

任何軟件的開發(fā)過程都屬于問題求解過程。如果把用戶需求看成軟件開發(fā)這個狀態(tài)空間中的初始狀態(tài),那么穩(wěn)定可靠的高質(zhì)量的軟件正是該空間中的目標狀態(tài),軟件開發(fā)各個階段所使用的工具和須遵循的規(guī)則就是進行狀態(tài)變換的算符。劃分軟件開發(fā)的三個階段,確定各個階段所須實現(xiàn)的子任務(wù)和子目標,都應(yīng)當(dāng)遵循自頂向下逐步求精和過程抽象等原理,都須應(yīng)用問題歸約法。解決軟件危機的辦法是了解和應(yīng)用軟件工程學(xué)原理,認真按照軟件生存周期模型所揭示的規(guī)律進行軟件開發(fā)和維護。軟件開發(fā)的各個階段任務(wù)的正確劃分,先進工具的選用,關(guān)注并應(yīng)用軟件工程環(huán)境的新成就,是按期高質(zhì)量地完成大型軟件開發(fā)的重要保證。

軟件工程

軟件生存周期模型也稱為瀑布模型,它是比較成熟且用得最為廣泛的軟件開發(fā)模式,本書主要介紹這種模式。此外,還有變換型和螺旋型等開發(fā)模式。這些模式已應(yīng)用于某些大型軟件的開發(fā)。軟件生成周期模型是其它軟件開發(fā)模型的基礎(chǔ),必須首先學(xué)好。能否按期高質(zhì)量地完成大型軟件的開發(fā)還與軟件的開發(fā)計劃和管理有密切關(guān)系。

軟件工程第2章需求分析

本章要點:需求分析的任務(wù)和原則可行性研究的任務(wù)和步驟結(jié)構(gòu)化分析分析方法和面向?qū)ο蠓治龇椒ㄐ枨蠼Ec規(guī)格說明軟件需求驗證軟件工程本章學(xué)習(xí)目標:了解需求分析的任務(wù)和原則掌握可行性研究的步驟掌握結(jié)構(gòu)化分析分析方法和面向?qū)ο蠓治龇椒私庑枨蠼Ec規(guī)格說明了解軟件需求驗證方法和有關(guān)工具軟件工程2.1需求分析的任務(wù)

需求分析的基本任務(wù)是準確地回答“系統(tǒng)必須做什么?”這個問題。目標系統(tǒng)提出完整、準確、清晰、具體的要求。需求分析階段的具體任務(wù)一、確定對系統(tǒng)的綜合要求。

對系統(tǒng)的綜合要求有下述四個方面:

1.系統(tǒng)功能要求

應(yīng)該劃分出系統(tǒng)必須完成的所有功能。

軟件工程2.系統(tǒng)性能要求

例如,聯(lián)機系統(tǒng)的響應(yīng)時間(即對于從終端輸入的一個“事務(wù)”,系統(tǒng)在多長時間之內(nèi)可以做出響應(yīng)),系統(tǒng)需要的存儲容量以及后援存儲,重新啟動和安全性等方面的考慮都屬于性能要求。

3.運行要求這類要求集中表現(xiàn)為對系統(tǒng)運行時所處環(huán)境的要求。例如,支持系統(tǒng)運行的系統(tǒng)軟件是什么,采用哪種數(shù)據(jù)庫管理系統(tǒng),需要什么樣的外存儲器和數(shù)據(jù)通信接口等。

軟件工程4.將來可能提出的要求應(yīng)該明確地列出那些雖然不屬于當(dāng)前系統(tǒng)開發(fā)范疇,但是據(jù)分析將來很可能會提出來的要求。這樣做的目的是在設(shè)計過程中對系統(tǒng)將來可能的擴充和修改預(yù)做準備,以便一旦需要時能比較容易地進行這種擴充和修改。二、分析系統(tǒng)的數(shù)據(jù)要求任何一個軟件系統(tǒng)本質(zhì)上都是信息處理系統(tǒng),系統(tǒng)必須處理的信息和系統(tǒng)應(yīng)該產(chǎn)生的信息在很大程度上決定了系統(tǒng)的面貌,對軟件設(shè)計有深遠影響,因此,必須分析系統(tǒng)的數(shù)據(jù)要求,這是軟件需求分析的一個重要任務(wù)。分析系統(tǒng)的數(shù)據(jù)要求通常采用建立概念模型的方法。軟件工程復(fù)雜的數(shù)據(jù)由許多基本的數(shù)據(jù)元素組成,數(shù)據(jù)結(jié)構(gòu)表示數(shù)據(jù)元素之間的邏輯關(guān)系。利用數(shù)據(jù)字典可以全面準確地定義數(shù)據(jù),但是數(shù)據(jù)字典的缺點是不夠形象直觀。為了提高可理解性,常常利用圖形工具輔助描繪數(shù)據(jù)結(jié)構(gòu)。常用的圖形工具有層次方框圖和Warnier圖。

三、導(dǎo)出系統(tǒng)的邏輯模型綜合上述兩項分析的結(jié)果可以導(dǎo)出系統(tǒng)的詳細的邏輯模型,通常用數(shù)據(jù)流圖、數(shù)據(jù)字典和主要的處理算法描述這個邏輯模型。

四、修正系統(tǒng)開發(fā)計劃根據(jù)在分析過程中獲得的對系統(tǒng)的更深入更具體的了解,軟件工程可以比較準確地估計系統(tǒng)的成本和進度,修正以前制定的開發(fā)計劃。五、開發(fā)原型系統(tǒng)在計算機硬件和許多甚他工程產(chǎn)品的設(shè)計過程中經(jīng)常使用樣機。建造樣機通常有兩個主要目的:檢驗關(guān)鍵設(shè)計方案的正確性及系統(tǒng)是否真正滿足用戶的需要。對于軟件系統(tǒng)的開發(fā),使用“樣機”(更正確的名稱應(yīng)該是原型系統(tǒng))的主要目的是,使用戶通過實踐獲得關(guān)于未來的系統(tǒng)將怎樣為他們工作的更直接更具體的概念,從而可以更準確地提出和確定他們的要求。軟件工程2.2需求分析的原則

需求分析的前提是準確、完整地獲取用戶需求。向問題領(lǐng)域的專家學(xué)習(xí),進行用戶需求查是需求分析的第一步。用戶需求通??梢苑譃楣δ苄枨蠛托阅苄枨髢深?。功能需求定義了系統(tǒng)應(yīng)該做什么,系統(tǒng)要求輸入什么信息,輸出什么信息,以及如何將輸入變換為輸出。性能需求則定義了軟件運行的狀態(tài)特征,如系統(tǒng)運行效率,可靠性,安全性,可維護性等等。綜合起來,應(yīng)該獲取用戶需求的內(nèi)容包括:(1)物理環(huán)境。系統(tǒng)運行的設(shè)備地點、位置是集中式的還是分布式的,對環(huán)境的要求如何(如溫度、濕度,電磁場干擾等)。

軟件工程(2)系統(tǒng)界面。要求與其他系統(tǒng)進行數(shù)據(jù)交換的內(nèi)容與格式,終端用戶的類型與熟練程度,用戶對界面的特定要求,用戶操作的易接受性等。(3)系統(tǒng)功能。系統(tǒng)應(yīng)該完成的功能以及何時完成,對于系統(tǒng)運行速度、響應(yīng)時間或者數(shù)據(jù)吞吐量的要求,系統(tǒng)運行的權(quán)限規(guī)定,系統(tǒng)可靠性要求,是否要求可移植,未來擴充或者升級的要求。(4)數(shù)據(jù)要求。輸入偷出數(shù)據(jù)的種類與格式,計算必須達到的精度,數(shù)據(jù)接收與發(fā)送的頻率,數(shù)據(jù)存儲的容量和可靠性,數(shù)據(jù)或者文件訪問的控制權(quán)限,數(shù)據(jù)備份的要求。軟件工程(5)系統(tǒng)文檔規(guī)格。系統(tǒng)要求交付什么文檔,各類文檔的編制規(guī)范和預(yù)期使用對象。(6)系統(tǒng)維護要求。系統(tǒng)出錯后可以允許的最大恢復(fù)時間,對錯誤修改的回歸測試要求,系統(tǒng)運行日志規(guī)格,是否允許對系統(tǒng)修改,系統(tǒng)變化如何反映到設(shè)計中。在獲取需求過程中遇到的典型問題及其解決方法是:(1)如何理解問題。大多數(shù)情況下,軟件開發(fā)人員不是問題領(lǐng)域的行家。但是要準確、完整的獲取需求必須對問題具有深入的理解與把握。許多問題即使是用戶業(yè)務(wù)人員也可能沒有自覺的認識。(2)分析員與用戶的通信問題。分析員對問題的理解軟件工程必須從信息處理要求出發(fā),而用戶更多的考慮是本身的業(yè)務(wù)領(lǐng)域。與用戶建立相互信任、有效的溝通是分析員的首要任務(wù)。(3)用戶需求的可變性。用戶需求通常是不斷變化的,而軟件開發(fā)人員則希望將需求凍結(jié)在某一時刻。影響用戶需求變化的因素可以是用戶領(lǐng)域的業(yè)務(wù)擴充或者轉(zhuǎn)移,市場競爭的要求,用戶主管人員的變更等?,F(xiàn)實情況是分析員只能接受需求不斷變化的事實,應(yīng)該千方百計地使其工作適應(yīng)需求的變化?,F(xiàn)實世界是復(fù)雜多變的。為了將現(xiàn)實世界中問題的求解映射為信息處理模型,對問題進行分解與抽象是普遍有效的基本法則。

軟件工程2.3可行性研究

2.3.1可行性研究的任務(wù)可行性研究的目的就是用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決。確定問題是否值得去解。首先需要進一步分析和澄清問題定義。在問題定義階段初步確定的規(guī)模和目標,如果

是正確的就進一步加以肯定,如果有錯誤就應(yīng)該及時改正,如果對目標系統(tǒng)有任何約束和

限制,也必須把它們清楚地列舉出來。

在澄清了問題定義之后,分析員應(yīng)該導(dǎo)出系統(tǒng)的邏輯模型。然后從系統(tǒng)邏輯模型出

發(fā),探索若干種可供選擇的主要解法(即系統(tǒng)實現(xiàn)方案)。對每種解法都應(yīng)該仔細研究它的

可行性,一般說來,至少應(yīng)該從下述三方面研究每種解法的可行性:

軟件工程(1)技術(shù)可行性使用現(xiàn)有的技術(shù)能實現(xiàn)這個系統(tǒng)嗎?(2)經(jīng)濟可行性這個系統(tǒng)的經(jīng)濟效益能超過它的開發(fā)成本嗎?(3)操作可行性系統(tǒng)的操作方式在這個用戶組織內(nèi)行得通嗎?

分析員應(yīng)該為每個可行的解法制定一個粗略的實現(xiàn)進度。軟件工程2.3.2可行性研究的步驟

一、復(fù)查系統(tǒng)規(guī)模和目標

分析員訪問關(guān)鍵人員,仔細閱讀和分析有關(guān)的材料,以便對問題定義階段書寫的關(guān)于規(guī)模和目標的報告書進一步復(fù)查確認,改正含糊或不確切的敘述,清晰地描述對目標系統(tǒng)的一切限制和約束。二、研究目前正在使用的系統(tǒng)

現(xiàn)有的系統(tǒng)是信息的重要來源。顯然,如果目前有一個系統(tǒng)正被人使用,那么這個系統(tǒng)必定能完成某些有用的工作,因此,新的目標系統(tǒng)必須也能完成它的基本功能;另一方面,如果現(xiàn)有的系統(tǒng)是完美無缺的,用戶自然不會提出開發(fā)新系統(tǒng)的要求,因此,現(xiàn)有的系統(tǒng)必然有某些缺點,新系統(tǒng)必須能解決舊系統(tǒng)中存在的問題。

軟件工程

應(yīng)該仔細閱讀分析現(xiàn)有系統(tǒng)的文檔資料和使用手冊,也要實地考察現(xiàn)有的系統(tǒng)。三、導(dǎo)出新系統(tǒng)的高層邏輯模型

優(yōu)秀的設(shè)計過程通??偸菑默F(xiàn)有的物理系統(tǒng)出發(fā),導(dǎo)出現(xiàn)有系統(tǒng)的邏輯模型,再參考現(xiàn)有系統(tǒng)的邏輯模型,設(shè)想目標系統(tǒng)的邏輯模型,最后根據(jù)目標系統(tǒng)的邏輯模型建造新的物理系統(tǒng)。四、重新定義問題

新系統(tǒng)的邏輯模型實質(zhì)上表達了分析員對新系統(tǒng)必須做什么的看法。用戶是否也有

同樣的看法呢?分析員應(yīng)該和用戶一起再次復(fù)查問題定義、工程規(guī)模和目標,這次復(fù)查軟件工程應(yīng)該把數(shù)據(jù)流圖和數(shù)據(jù)字典作為討論的基礎(chǔ)。五、導(dǎo)出和評價供選擇的解法分析員應(yīng)該從他建議的系統(tǒng)邏輯模型出發(fā),導(dǎo)出若干個較高層次的(較抽象的)物理解法供比較和選擇。導(dǎo)出供選擇的解法的最簡單的途徑,是從技術(shù)角度出發(fā)考慮解決問題的不同方案。在數(shù)據(jù)流圖上劃分不同的自動化邊界,從而導(dǎo)出不同物理方案的方法。當(dāng)從技術(shù)角度提出了一些可能的物理系統(tǒng)之后,應(yīng)該根據(jù)技術(shù)可行性的考慮初步排除一些不現(xiàn)實的系統(tǒng)。軟件工程其次可以考慮操作方面的可行性。接下來應(yīng)該考慮經(jīng)濟方面的可行性。分析員應(yīng)該估計余下的每個可能的系統(tǒng)的開發(fā)

成本和運行費用,并且估計相對于現(xiàn)有的系統(tǒng)而言這個系統(tǒng)可以節(jié)省的開支或可以增加的收入。最后為每個在技術(shù)、操作和經(jīng)濟等方面都可行的系統(tǒng)制定實現(xiàn)進度表,這個進度表不

需要(也不可能)制定得很詳細,通常只需要估計生命周期每個階段的工作量。六、推薦行動方針根據(jù)可行性研究結(jié)果應(yīng)該做出的一個關(guān)鍵性決定是,是否繼續(xù)進行這項開發(fā)工程。分

析員必須清楚地表明他對這個關(guān)鍵性決定的建議。

軟件工程七、草擬開發(fā)計劃分析員應(yīng)該進一步為推薦的系統(tǒng)草擬一份開發(fā)計劃,除了工程進度表之外還應(yīng)該估計對各種開發(fā)人員(系統(tǒng)分析員,程序員,資料員等等)和各種資源(計算機硬件,軟件工具等等)的需要情況,應(yīng)該指明什么時候使用以及使用多長時間。此外還應(yīng)該估計系統(tǒng)生命周期每個階段的成本。最后應(yīng)該給出下一個階段(需求分析)的詳細進度表和成本估計。八、書寫文檔提交審查應(yīng)該把上述可行性研究各個步驟的結(jié)果寫成清晰的文檔,請用戶和使用部門的負責(zé)人仔細審查,以決定是否繼續(xù)這項工程以及是否接受分析員推薦的方案。

軟件工程2.3.3系統(tǒng)流程圖

系統(tǒng)流程圖是描繪物理系統(tǒng)的傳統(tǒng)工具。它的基本思想是用圖形符號以黑盒子形式描繪系統(tǒng)里面的每個部件(程序、文件、數(shù)據(jù)庫、表格、人工過程等等)。一、符號

當(dāng)以概括的方式抽象地描繪一個物理系統(tǒng)時,僅僅使用圖2.1中列出的基本符號就夠了,其中每個符號表示系統(tǒng)中的一個部件。當(dāng)需要更具體地描繪一個物理系統(tǒng)的時候還需要使用圖2.2中列出的系統(tǒng)符號,利用這些符號可以把一個廣義的輸入/輸出操作具體化為讀/寫存儲在特殊設(shè)備上的文件(或數(shù)據(jù)庫),把一般的處理具體化為特定的程序或手工操作等等。

軟件工程圖2.1基本符號符號名

稱說

明處理能改變數(shù)據(jù)值或數(shù)據(jù)位置的加工或部件,例如,程序、處理機、人工加工等都是處理

輸入/輸出表示輸入或輸出(或既輸入又輸出),是一個廣義的不指明具體設(shè)備的符號。

連接指出轉(zhuǎn)到圖的另一部分或從圖的另一部分轉(zhuǎn)來,通常在同一頁上

換頁連接指出轉(zhuǎn)到另一頁圖上或由另一頁圖轉(zhuǎn)來。

數(shù)據(jù)流用來連接其他符號,指明數(shù)據(jù)流動方向。

軟件工程圖2.2系統(tǒng)符號符號名

穿孔卡片表示用穿孔卡片輸入或輸出,也可表示一個穿孔卡片文件。

文檔通常表示打印輸出,也可表示用打印終端輸入數(shù)據(jù)。

磁帶磁帶輸入/輸出,或表示一個磁帶文件。

聯(lián)機存儲表示任何種類的聯(lián)機存儲,包括磁盤、磁鼓、軟盤和海量存儲器件等。

磁盤磁盤輸入/輸出。也可表示存儲在磁盤上的文件或數(shù)據(jù)庫。

磁鼓磁鼓輸入/輸出,也可表示存儲在磁鼓上的文件或數(shù)據(jù)庫。

顯示CRT終端或類似的顯示部件,可用于輸入或輸出,也可既輸入又輸出。

人工輸入人工輸入數(shù)據(jù)的脫機處理,例如,填寫表格。

人工操作人工完成的處理,例如,會計在工資支票上簽名。

輔助操作使用設(shè)備進行的脫機操作。

通信鏈路通過遠程通信線路或鏈路傳送數(shù)據(jù)。

軟件工程二、例子

介紹系統(tǒng)流程圖的最好方法可能是通過一個具體例子說明它的用法。下面是一個簡單的例子。某裝配廠有一座存放零件的倉庫,倉庫中現(xiàn)有的各種零件的數(shù)量以及每種零件的庫存量臨界值等數(shù)據(jù)記錄在庫存清單主文件中。當(dāng)倉庫中零件數(shù)量有變化時,應(yīng)該及時修改庫存清單主文件,如果那種零件的庫存量少于它的庫存量臨界值,則應(yīng)該報告給采購部門以便定貨,規(guī)定每天向采購部門送一次定貨報告。該裝配廠使用一臺小型計算機處理更新庫存清單主文件和產(chǎn)生定貨報告的任務(wù)。零件庫存量的每一次變化稱為一個事務(wù),通過放在倉庫中的CRT終端輸入到計算機中;系統(tǒng)中的庫存清單程序?qū)κ聞?wù)進行處理,更新存儲在軟件工程磁盤上的庫存清單主文件,并且把必要的定貨信息寫在磁帶上。最后,每天由報告生成程序讀一次磁帶,并且打印出定貨報告。圖2.3的系統(tǒng)流程圖描繪了上述系統(tǒng)的概貌。事務(wù)庫存清單程序訂貨信息報告生成程序訂貨報告庫存清單主文件圖2.3庫存清單系統(tǒng)的系統(tǒng)流程圖軟件工程三、分層面對復(fù)雜的系統(tǒng)時,一個比較好的方法是分層次地描繪這個系統(tǒng)。首先用一張高層次的系統(tǒng)流程圖描繪系統(tǒng)總體概貌,表明系統(tǒng)的關(guān)鍵功能。然后分別把每個關(guān)鍵功能擴展到適當(dāng)?shù)脑敿毘潭?,畫在單獨的一頁紙上。這種分層次的描繪方法便于閱讀者按照從抽象到具體的過程逐步深入地了解一個復(fù)雜的系統(tǒng)。

軟件工程2.4需求分析方法

2.4.1結(jié)構(gòu)化分析方法結(jié)構(gòu)化分析技術(shù)是70年代中期由E.Yourdon等人倡導(dǎo)的一種面向數(shù)據(jù)流的分析方法。按照T.Demarco的定義,“結(jié)構(gòu)化分析就是使用數(shù)據(jù)流圖、數(shù)據(jù)詞典、結(jié)構(gòu)化英語、判定表和判定樹等工具,來建立一種新的、稱為結(jié)構(gòu)化說明書的目標文檔。”這里的結(jié)構(gòu)化說明書,就是需求規(guī)格說明書。結(jié)構(gòu)化分析技術(shù)將軟件系統(tǒng)抽象為一系列的邏輯加工單元,各單元之間以數(shù)據(jù)流發(fā)生關(guān)聯(lián)。按照數(shù)據(jù)流分析的觀點,系統(tǒng)模型的功能是數(shù)據(jù)變換,邏輯加工單元接受輸入數(shù)據(jù)流,使之變換成輸出數(shù)據(jù)流。數(shù)據(jù)流模型常用數(shù)據(jù)流圖表示。

軟件工程

建立功能模型

數(shù)據(jù)流程圖,又稱數(shù)據(jù)流圖,它是以圖形的方式來表達數(shù)據(jù)處理系統(tǒng)中信息的變換和傳遞過程。作為一種描述手段,它可以模擬手工的、自動的以及兩兼而有之混合的數(shù)據(jù)處理過程。數(shù)據(jù)流程圖有三個重要屬性:

.可以表示任何一個系統(tǒng)(人工的、自動的或混合的)中的信息流程。

.每個圓圈可能需要進一步分解以求得對問題的全面理解。

.著重強調(diào)的是數(shù)據(jù)流程而不是控制流程。軟件工程以工資處理為例,我們畫出這一過程中數(shù)據(jù)加工過程各項活動的數(shù)據(jù)流程圖(見2.4)。圖2.4可知,數(shù)據(jù)流程圖中的基本符號有:1、數(shù)據(jù)流數(shù)據(jù)流是有名字有流向的數(shù)據(jù),在數(shù)據(jù)流程圖中,數(shù)據(jù)流用標有名字的箭頭來表示,如圖2.1中的工資調(diào)整表、工資發(fā)放表等。2、加工加工又稱處理邏輯,表示數(shù)據(jù)所進行的加工或變換,圖2.4中以標有名字的圓圈代表加軟件工程工資匯總表工資發(fā)放表工資條工資計算工資冊取款總務(wù)人事工資匯總工資分配開戶銀行職工統(tǒng)籌醫(yī)療費房租費水電費托兒費工資調(diào)整表調(diào)入人員工資單調(diào)出人員調(diào)出單病事假扣款單工資費用分配表工資發(fā)放圖2.4工資處理數(shù)據(jù)流程圖軟件工程工。指向加工的數(shù)據(jù)流是該加工的輸入數(shù)據(jù),離開加工的數(shù)據(jù)流是該加工的輸出數(shù)據(jù),如圖2.4中的工資計算、取款等。3、文件文件是數(shù)據(jù)暫存的處所,可對文件進行必要的存取,在圖中以標有名字的雙直線段表示,如圖2.1中的工資冊、工資匯總表等。對文件的存取分別以指向或離開文件的箭頭表示。由于文件的內(nèi)容能顧名思義,因而對其進行存取的箭頭即使沒有名字也不會造成混亂。4、數(shù)據(jù)源及數(shù)據(jù)終點表明數(shù)據(jù)處理過程的數(shù)據(jù)來源或數(shù)據(jù)去向的標志稱為軟件工程數(shù)據(jù)源及數(shù)據(jù)終點,在數(shù)據(jù)流程圖中均以命名的方框來表示,如圖2.4中的人事(科)。一般情況下,為了表達數(shù)據(jù)處理的數(shù)據(jù)加工過程,只用一個數(shù)據(jù)流程圖是不夠的。對稍為復(fù)雜一些的實際問題,常以層次結(jié)構(gòu)的數(shù)據(jù)流程圖來表示。任何系統(tǒng)都是有層次的結(jié)構(gòu),如果按照層次結(jié)構(gòu)對系統(tǒng)進行逐步分解,就能很清楚地表達和理解整個系統(tǒng)。在每一個層次上,最核心的部分就是數(shù)據(jù)加工乃其相關(guān)的數(shù)據(jù)流。除了上述4種基本成分外,數(shù)據(jù)流程圖還有幾種附加成分,例如,星號“﹡”表示幾股數(shù)據(jù)流之問是“與”的關(guān)系,加號“+”表示“或”的關(guān)系,⊙號表示從幾股數(shù)據(jù)流中選取一股,軟件工程即表示“互斥”的關(guān)系。我們來研究一個財務(wù)管理信息系統(tǒng)中的材料核算部分。圖2.2中的基本系統(tǒng)模型把整個材料核算工作抽象成一個加工,并標上所有的輸入數(shù)據(jù)流和輸出數(shù)據(jù)流,即為材料核算子系統(tǒng)的項層數(shù)據(jù)流程圖。有關(guān)材料統(tǒng)計報表材料分類明細帳材料采購付款憑證材料核算采購合同收料憑證發(fā)料憑證材料匯總表圖2.5頂層數(shù)據(jù)流程圖軟件工程把材料核算處理功能進行分解。一般材料核算包括采購核算、儲存核算、發(fā)出核算等,據(jù)此,我們畫出如圖2.5所示的第一層數(shù)據(jù)流程圖。分解后的子圖中生出了一些新的數(shù)據(jù)流和文件,它們是頂層數(shù)據(jù)流程圖中加工“材料核算”內(nèi)部的數(shù)據(jù)流和文件,與其外部元素沒有聯(lián)系。在“材料核算”被分解后,這些數(shù)據(jù)流和文件成了一些子加工的界面。分別把第一層數(shù)據(jù)流程圖中的幾個核算處理(加工)再進行分解,可畫出第二層數(shù)據(jù)流程圖。圖2.5為其中的加工“材料發(fā)出核算”進行功能分解得到第二層數(shù)據(jù)流程圖,其他如材料采購核算、材料儲存核算等,都可以用同樣的方法講行分解擴展,畫出相應(yīng)的數(shù)據(jù)流程圖。

軟件工程圖2.5、圖2.6和圖2.7畫出了3種不同層次的信息流程,表示出需求分析一層比一層更為具體細致。軟件工程收購憑證采購核算儲存核算發(fā)出核算材料匯總核算材料采購付款憑證采購合同發(fā)料憑證材料明細帳材料匯總表材料明晰分類帳有關(guān)材料統(tǒng)計報表材料采購合同執(zhí)行情況材料采購成本材料采購明細帳材料發(fā)出憑證生成用料應(yīng)攤材料成本差異表其他用料存儲材料明細帳生產(chǎn)材料分配表圖2.6第一層數(shù)據(jù)流程圖軟件工程圖2.7第二層數(shù)據(jù)流圖生產(chǎn)用料分配表材料發(fā)出憑證材料發(fā)出憑證按用途歸類按產(chǎn)品分配車間管理用料企業(yè)管理用料輔助生產(chǎn)用料材料明細表生產(chǎn)用料應(yīng)攤材料成本差異軟件工程

數(shù)據(jù)流程圖是一種圖解方法,它在軟件需求分析中是非常有用的。然而,如果它的作用與程序流程圖(框圖)混淆的話,也會引起混亂。數(shù)據(jù)流程圖描繪的是信息流,沒有明顯的控制說明(例如條件或循環(huán)),它不是一個用圓圈表示的程序流程圖。在推導(dǎo)面向軟件的數(shù)據(jù)流時有幾個非常有用而簡單的準則:1、

1、

一層數(shù)據(jù)流程圖應(yīng)當(dāng)是基本系統(tǒng)模型。2、應(yīng)當(dāng)仔細說明原始的輸入/輸出文件。3、所有箭頭和圓圈均應(yīng)加上標注(使用有意義的名字)。

4、必須維持信息的連續(xù)性。

軟件工程5、每一次只應(yīng)當(dāng)細化一個圓圈。

6、可以在數(shù)據(jù)流程圖中加上物質(zhì)流。有助于幫助用戶理解該數(shù)據(jù)流程圖。在畫分層數(shù)據(jù)流程圖時,要特別注意下面幾個問題:

1、加工的編號方法

加工的編號遵循兩條原則:第一,從加工的編號能知道該加工處在哪一層分解;第二,從加工編號知道該加工是從父圖中哪個加工分解得來的。2、分解程度

分解程度問題包括兩個方面,其一是每個加工每次軟件工程分解成幾個子加工比較恰當(dāng);其二是分解深度,即分解的層數(shù)問題。這兩個問題之間有一定的聯(lián)系。經(jīng)驗表明,一個加工的分解以不超過7個子加工比較合適。3、父圖和子圖之間的平衡多層數(shù)據(jù)流程圖中的父圖和子圖之間的數(shù)據(jù)流必須保持一致(或稱保持“平衡“),亦即,父圖中出現(xiàn)的輸入數(shù)據(jù)流和輸出數(shù)據(jù)流都應(yīng)在子圖中出現(xiàn),以保證加工過程的連續(xù)性和一致性。有時,當(dāng)在子圖中對父圖的數(shù)據(jù)流做了分解后,檢驗父圖和子圖的平衡還需借助于數(shù)據(jù)字典。因為“自頂向下”逐層對數(shù)據(jù)流程圖的分解,實際上不僅是對加工進行分解,同時也對數(shù)據(jù)流進行分解。軟件工程

建立數(shù)據(jù)模型

在需求分析階段則既要分析用戶的數(shù)據(jù)要求(即需要哪些數(shù)據(jù)、數(shù)據(jù)之間有什么聯(lián)系、數(shù)據(jù)本身有什么性質(zhì)、數(shù)據(jù)的結(jié)構(gòu)等等),又要分析用戶的處理要求(即對數(shù)據(jù)進行哪些處理、每個處理的邏輯功能等等)。為了把用戶的數(shù)據(jù)要求清晰明確地表達出來,系統(tǒng)分析員通常建立一個概念性的數(shù)據(jù)模型(也稱為信息模型)。概念性數(shù)據(jù)模型是一種面向問題的數(shù)據(jù)模型,是按照用戶的觀點來對數(shù)據(jù)和信息建模。它描述了從用戶角度看到的數(shù)據(jù),它反映了用戶的現(xiàn)實環(huán)境,且與在軟件系統(tǒng)中的實現(xiàn)方法無關(guān)。最常用的表示概念性數(shù)據(jù)模型的方法,是實體一聯(lián)系方法(Entity—RelationshipApproach)。這種方法用ER圖。軟件工程描述現(xiàn)實世界中的實體,而不涉及這些實體在系統(tǒng)中的實現(xiàn)方法。用這種方法表示的概念性數(shù)據(jù)模型又稱為ER模型。通常,軟件系統(tǒng)中有許多數(shù)據(jù)是需要長期保存的,為減少數(shù)據(jù)冗余,簡化修改數(shù)據(jù)的過程,應(yīng)該對數(shù)據(jù)進行規(guī)范化。ER模型中包含“實體”、“聯(lián)系”和“屬性”等三個基本成分,下面分別介紹這三個基本成分:1.實體

實體是客觀世界中存在的且可相互區(qū)分的事物。實體可以是人也可以是物;可以是具體事物也可以是抽象概念。例如,職工、學(xué)生、課程、教師等都是實體。在ER圖中用矩形框代表實體。軟件工程2.聯(lián)系客觀世界中的事物彼此間往往是有聯(lián)系的。例如,教師與課程間存在“教”這種聯(lián)系,而學(xué)生與課程間則存在“學(xué)”這種聯(lián)系。聯(lián)系可分為三類:(1)一對一聯(lián)系(1︰1)例如,一個部門有一個經(jīng)理,而每個經(jīng)理只在一個部門任職,則部門與經(jīng)理的聯(lián)系是一對一的。

(2)一對多聯(lián)系(1︰N)例如,某校教師與課程之間存在一對多的聯(lián)系“教”,即每位教師可以教多門課程,但是每門課程只能由一位教師來教。軟件工程(3)多對多聯(lián)系(M︰N)例如,學(xué)生與課程間的聯(lián)系(“學(xué)”)是多對多的,即一個學(xué)生可以學(xué)多門程,而每門課程可以有多個學(xué)生來學(xué)。在ER圖中,用連接相關(guān)實體的菱形框表示聯(lián)系。3.屬性屬性是實體或聯(lián)系所具有的性質(zhì)。通常一個實體由若干個屬性來刻畫。例如,“學(xué)生”實體有學(xué)號、姓名、性別、系、年級等屬性;“教師”實體有教工號、姓名、性別、職稱、職務(wù)等屬性;“課程”實體有課程號、課名、學(xué)時、學(xué)分等屬性。軟件工程聯(lián)系也可能有屬性。例如,學(xué)生“學(xué)”某門課程所取得的成績,既不是學(xué)生的屬性也不是課程的屬性。由于“成績”既依賴于某名特定的學(xué)生又依賴于某門特定的課程,所以它是學(xué)生與課程之間的聯(lián)系“學(xué)”的屬性。N1NM教師教工號性別姓名職稱職務(wù)教師教師教學(xué)姓名性別系年級學(xué)號成績課程號課名學(xué)時學(xué)分圖2.8某校教學(xué)管理ER圖軟件工程

在ER圖中用橢圓形或圓角矩形表示實體(或聯(lián)系)的屬性,并用無向邊把實體(或聯(lián)系)與其屬性連接起來。人們通常就是用實體、聯(lián)系和屬性這三個概念來理解現(xiàn)實問題的,因此,ER模型比較接近人的習(xí)慣思維方式。此外,ER模型使用簡單的圖形符號表達系統(tǒng)分析員對問題域的理解,不熟悉計算機技術(shù)的用戶也能理解它,因此,ER模型可以作為用戶與分析員之間有效的交流工具。

4.范式通常用“范式(NormalForms)”定義消除數(shù)據(jù)冗余的程度。第一范式(1NF)數(shù)據(jù)冗余程度最大,第五范式(5NF)數(shù)據(jù)冗余程度最小。但是,范式級別越高,存儲同樣數(shù)據(jù)就軟件工程需要分解成更多張表,因此,“存儲自身”的過程也就越復(fù)雜。第二,隨著范式級別的提高,數(shù)據(jù)的存儲結(jié)構(gòu)與基于問題域的結(jié)構(gòu)間的匹配程度也隨之下降,因此,在需求變化時數(shù)據(jù)的穩(wěn)定性較差。第三,范式級別提高則需要訪問的表增多,因此性能(速度)將下降。從實用角度看來,在大多數(shù)場合選用第三范式都比較恰當(dāng)。

1.第一范式每個屬性值都必須是原子值,即僅僅是一個簡單值而不含內(nèi)部結(jié)構(gòu)。2.第二范式滿足第一范式條件,而且每個非主屬性完全依賴于某個軟件工程候選鍵(而不是部分依賴于某個候選鍵)3.第三范式。符合第二范式的條件,所有非主屬性即不部分依賴于某個候選鍵,也不傳遞依賴于某個候選鍵。

軟件工程

建立行為模型

狀態(tài)轉(zhuǎn)換圖通過描述狀態(tài)以及導(dǎo)致系統(tǒng)改變狀態(tài)的事件來表示系統(tǒng)的行為,它沒有表示出系統(tǒng)所執(zhí)行的處理,只表示了處理結(jié)果可能的狀態(tài)轉(zhuǎn)換。STD用帶標記的圓圈或矩形表示狀態(tài),用箭頭表示從一種狀態(tài)到另一種狀態(tài)的變換,箭頭上的文本標記表示引起變換的條件。轉(zhuǎn)換條件狀態(tài)圖2.9狀態(tài)轉(zhuǎn)換圖基本圖形元素軟件工程分析建模是實現(xiàn)真實世界模型向計算機模型轉(zhuǎn)換的核心環(huán)節(jié),也是一種處理軟件復(fù)雜性的有效手段。在需求開發(fā)階段,分析建模的關(guān)鍵是針對用戶需求建立抽象的分析模型,從而有助于開發(fā)人員理解用戶需求,同時增強自然語言的需求規(guī)格說明。分析模型往往采用一些圖形化的表示方式,從數(shù)據(jù)、功能和行為等不同角度表達用戶需求。結(jié)構(gòu)化分析是面向數(shù)據(jù)流進行需求分析的方法,經(jīng)過20多年的發(fā)展,已經(jīng)成為廣泛應(yīng)用的技術(shù)之一。結(jié)構(gòu)化分析方法以數(shù)據(jù)字典為核心,采用實體關(guān)系圖、數(shù)據(jù)流圖和狀態(tài)轉(zhuǎn)換圖等圖形來表達需求,直觀明了且易于理解和掌握。

軟件工程

數(shù)據(jù)詞典

數(shù)據(jù)字典是結(jié)構(gòu)化分析方法的一個有力工具,它對數(shù)據(jù)流程圖中出現(xiàn)的所有數(shù)據(jù)元素給出邏輯定義。有了數(shù)據(jù)字典,使數(shù)據(jù)流程圖上的數(shù)據(jù)流、加工和文件能得到確切的解釋。

數(shù)據(jù)字典的條目可以分成四大類,即:

·數(shù)據(jù)流條目。

·文件條目。

·數(shù)據(jù)項條目。

·加工條目。軟件工程數(shù)據(jù)字典中的數(shù)據(jù)構(gòu)成如圖2.10所示的層次關(guān)系。這些數(shù)據(jù)元素的定義通常用定義式的形式給出。圖2.10數(shù)據(jù)字典中數(shù)據(jù)的層次關(guān)系數(shù)據(jù)流文件數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)元素軟件工程通常,在數(shù)據(jù)字典的定義式中可能出現(xiàn)的符號及其含意是(設(shè)x和a、b都是數(shù)據(jù)元素):

x=a+bx由a和b構(gòu)成

x=[a︱b]x由a或b構(gòu)成

x=(a)數(shù)據(jù)元素a在x中可出現(xiàn),也可不出現(xiàn)

x={a}x由0個或多個重復(fù)的a構(gòu)成軟件工程1、數(shù)據(jù)流條目數(shù)據(jù)流條目主要說明數(shù)據(jù)流條目是由哪些數(shù)據(jù)項組成的,以及數(shù)據(jù)在單位時間內(nèi)的流量,它的來源、去向等。條目格式如下:數(shù)據(jù)流名:組成:流量:來源:去向:軟件工程例如:數(shù)據(jù)流“銀行對賬單”條目:條目格式如下:數(shù)據(jù)流名:銀行對帳單組成:月份+日期+銀行支票+金額流量:2張∕3天,每張約40筆數(shù)據(jù)來源:開戶銀行去向:資金管理組軟件工程2、文件條目文件條目主要說明文件由哪些數(shù)據(jù)項組成,存儲方式和存取頻率等。條目格式如下:文件名:

組成:

存儲方式:

存儲頻率:軟件工程例如:文件“現(xiàn)金日記賬”條目如下:文件名:現(xiàn)金日記賬

組成:月份+日期+摘要+收入+支出+結(jié)存

存儲方式:順序

存儲頻率:20筆∕天軟件工程3、數(shù)據(jù)項條目

數(shù)據(jù)項名:

類型:

長度:

取值范圍:數(shù)據(jù)項條目主要說明數(shù)據(jù)項類型、長度、取值范圍等。軟件工程例如:數(shù)據(jù)項“憑證號”條目和數(shù)據(jù)項“經(jīng)辦人”條目如下:

數(shù)據(jù)項名:憑證號

類型:數(shù)值

長度:6位(含小數(shù)一位)

取值范圍:1000.0~4999.9軟件工程4、加工條目加工條目主要說明加工的輸入數(shù)據(jù)、輸出數(shù)據(jù)及其加工邏輯等。條目格式如下:

加工名:

輸入數(shù)據(jù):

輸出數(shù)據(jù):

加工邏輯:

軟件工程例如加工“工資分配”條目:加工名:工資分配輸入數(shù)據(jù):工資結(jié)算單(匯總表)輸出數(shù)據(jù):工資費用分配表加工邏輯:各車間根據(jù)工資結(jié)算單,按產(chǎn)品種類或批別,分別分配管理人員工資和生產(chǎn)工人工資,并按比例提取福利基金。

軟件工程

和數(shù)據(jù)流程圖的層次概念相類似,一個數(shù)據(jù)字典的定義式不宜包含過多的項,這可以采取逐級定義的定義式,使得一些復(fù)雜的數(shù)據(jù)元素自頂向下多層定義,直到最后給出無需定義的基本數(shù)據(jù)元素。例如:日期=年+月+日數(shù)據(jù)字典就是這樣構(gòu)造起來的一組定義式。必要時,定義式之間還可能有一些特定的注釋行出現(xiàn),以利于理解。常用的詞典相似,數(shù)據(jù)字典所收集的數(shù)據(jù)定義,都按詞典的編輯方法順序排列,以方便使用。當(dāng)然,不允許出現(xiàn)一個數(shù)據(jù)元素有多個定義的現(xiàn)象。

軟件工程2.4.2面向?qū)ο蠓治龇椒ㄅcUML面向?qū)ο蠓治龇椒嫦驅(qū)ο蠓椒ㄊ且环N把面向?qū)ο蟮乃枷霊?yīng)用于軟件開發(fā)過程中,指導(dǎo)開發(fā)活動的系統(tǒng)方法,簡稱OO方法,它是建立在對象概念(對象、類和繼承)基礎(chǔ)上的方法。面向?qū)ο蠓椒ǔ蔀?0年代的主流開發(fā)方法,其原因主要在于:

1.從認知學(xué)的角度來看,面向?qū)ο蠓椒ǚ先藗儗陀^世界的認識規(guī)律

2.面向?qū)ο蠓椒ㄩ_發(fā)的軟件系統(tǒng)易于維護,其體系結(jié)構(gòu)易于理解、擴充和修改

3.面向?qū)ο蠓椒ㄖ械睦^承機制有力支持軟件的復(fù)用

軟件工程一、面向?qū)ο蟮幕靖拍頟eterCoad和EdwardYourdon提出用下列等式來認識面向?qū)ο蠓椒ǎ好嫦驅(qū)ο?對象(Obiect)+分類(Classification)+繼承(Inheritance)+通過消息的通信(CommunicationWithMessages)可以說,采用這4個概念開發(fā)的軟件系統(tǒng)是面向?qū)ο蟮摹?.對象

對象是指一組屬性以及這組屬性上的專用操作的封裝體。屬性通常是一些數(shù)據(jù),有時它也可以是另一個對象。

軟件工程

對象中的屬性只能通過該對象所提供的操作來存取或修改。操作也稱為方法或服務(wù),它規(guī)定了對象的行為,表示對象所能提供的服務(wù)。封裝是一種信息隱蔽技術(shù),用戶只能看見對象封裝界面上的信息,對象的內(nèi)部實現(xiàn)對用戶是隱蔽的,封裝的目的是使對象的使用者和生產(chǎn)者分離,使對象的定義和實現(xiàn)分開。一個對象通??捎蓪ο竺?、屬性和操作三部分組成。

2.類

類是一組具有相同屬性和相同操作的對象的集合。一個類中的每個對象都是這個類的一個實例。

不必為每個對象逐個定義,只需對類作出定義,而對類的屬性的不同賦值即可得到該類的對象實例,類和軟件工程

對象之間的關(guān)系類似于程序設(shè)計語言中的類型和變量之間的關(guān)系。通常把一個類和這個類的所有對象稱為類及對象,或稱為對象類。一個類可以定義為另一個更一般的類的特殊情況,如“轎車”類是“汽車”類的特殊情況,我們稱一般類是特殊類的父類,特殊類是一般類的子類。這樣可以形成類的一種一般一特殊的層次關(guān)系。在這種一般一特殊的關(guān)系中,子類可以繼承其父類(或祖先類)的所有屬性和操作,同時子類中還可以定義自己特有的屬性和操作。所以子類的屬性和操作是子類中的定義部分和其祖先類中的定義部分的總和。繼承是類間的基本關(guān)系,它是基于層次關(guān)系的不同類共享數(shù)據(jù)和操作的一種機制。父類中定義了其所有子類的公共屬性和操作,在子類中除了定義自己特有的屬性和軟件工程操作外,還可以對父類(或祖先類)中的操作重新定義其實現(xiàn)方法。如果一個子類只有惟一一個父類,這個繼承稱為單一繼承。如果一個子類有一個以上的父類,這種繼承稱為多重繼承。

3.消息傳遞消息傳遞是對象間通信的手段,一個對象通過向另一個對象發(fā)送消息來請求其服務(wù)。一個消息通常包括接收對象名、調(diào)用的操作名和適當(dāng)?shù)膮?shù)(如果有必要的話)。消息只告訴接收對象需要完成什么操作,但并不指示接收者怎樣完成操作。消息完全由接收者解釋,接收者獨立決定采用什么方法完成所需的操作。軟件工程4.多態(tài)性

多態(tài)性是指同一個操作作用于不同的對象上可以有不同的解釋,并產(chǎn)生不同的執(zhí)行結(jié)果。例如“畫”操作,作用在“矩形”對象上,則在屏幕上畫一個矩形,作用在“圓”對象上,則在屏幕上畫一個圓。也就是說,相同操作的消息發(fā)送給不同的對象時,每個對象將根據(jù)自己所屬類中定義的這個操作去執(zhí)行,從而產(chǎn)生不同的結(jié)果。

與多態(tài)性密切相關(guān)的一個概念就是動態(tài)綁定(亦稱動態(tài)定連)。傳統(tǒng)的程序設(shè)計語言的過程調(diào)用與目標代碼的連接(即調(diào)用哪個過程)放在程序運行前進行(稱為靜態(tài)綁定),而動態(tài)綁定則是把這種連接推遲到運行時才進行。

軟件工程二、面向?qū)ο蠓治?/p>

面向?qū)ο蠓治?Object—Oriented.Analysis,OOA)的目標是完成對所解問題的分析,確定待建的系統(tǒng)要做什么,并建立系統(tǒng)的模型。為達到這一目標,必須完成以下任務(wù):

(1)在客戶和軟件工程師之間溝通基本的用戶需求。

(2)標識類(包括定義其屬性和操作)。

(3)刻畫類的層次結(jié)構(gòu)。

(4)表示類(對象)之間的關(guān)系。

(5)為對象行為建模。

軟件工程(6)遞進地重復(fù)任務(wù)(1)至任務(wù)(5),直至完成建模。

其中任務(wù)(2)至任務(wù)(4)刻畫了待建系統(tǒng)的靜態(tài)結(jié)構(gòu),任務(wù)(5)刻畫了系統(tǒng)的動態(tài)行為。

面向?qū)ο蠓治龅囊话悴襟E如下:

(1)獲取客戶對系統(tǒng)的需求:包括標識場景(Scenario)和用例(IJseCase),以及建造需求模型。

(2)用基本的需求為指南來選擇類和對象(包括屬性和操作)。

(3)定義類的結(jié)構(gòu)和層次。

(4)建造對象.關(guān)系模型。

軟件工程(5)建造對象一行為模型。(6)利用用例/場景來復(fù)審分析模型。三、面向?qū)ο笤O(shè)計

面向?qū)ο笤O(shè)計(Object-Oriented.Design,OOD)是將OOA所創(chuàng)建的分析模型轉(zhuǎn)化為設(shè)計模型。與傳統(tǒng)的開發(fā)方法不同,OOD和OOA采用相同的符號表示,OOD和OOA沒有明顯的分界線,它們往往反復(fù)迭代地進行。在OOA時,主要考慮系統(tǒng)做什么,而不關(guān)心系統(tǒng)如何實現(xiàn)。在OOD時,主要解決系統(tǒng)如何做,因此需要在OOA的模型中為系統(tǒng)的實現(xiàn)補充一些新的類,或在原有類中補充一些屬性和操作。OOD時應(yīng)能從類中導(dǎo)出對象,以及這些對象如何互相關(guān)聯(lián),還要描述對象間的關(guān)系、行為以及對象間的通信如何實現(xiàn)。

軟件工程OOD同樣應(yīng)遵循抽象、信息隱蔽、功能獨立、模塊化等設(shè)計準則。

面向?qū)ο笤O(shè)計的一般步驟如下:

(1)系統(tǒng)設(shè)計?!⒆酉到y(tǒng)分配到處理器。

·選擇實現(xiàn)數(shù)據(jù)管理、界面支持和任務(wù)管理的設(shè)計策略。

·為系統(tǒng)設(shè)計合適的控制機制。

·復(fù)審并考慮權(quán)衡。

軟件工程(2)對象設(shè)計。

·在過程級別設(shè)計每個操作。

·定義內(nèi)部類。

·為類屬性設(shè)計內(nèi)部數(shù)據(jù)結(jié)構(gòu)。

(3)消息設(shè)計。

使用對象間的協(xié)作和對象.關(guān)系模型,設(shè)計消息模型。

(4)復(fù)審。

復(fù)審設(shè)計模型,并在需要時迭代。

目前有許多種面向?qū)ο蠓椒?,例如Coad&Yourdon方法、OMT方法、Booch方法等。

軟件工程統(tǒng)一的建模語言

一、UML概述

1994年Booch和Rumbaugh在R~ionalsoftwareCorporation開始了UML的工作,其目標是創(chuàng)建一個“統(tǒng)一的方法”,他們把Booch一93和OMIT一2統(tǒng)一起來,于1995年發(fā)布了UM0.8(UnifiedMethod)。

OOSE的創(chuàng)始人jacobson加盟到這項工作中,他們以Booch方法、OMT方法、OOSE方法為基礎(chǔ),吸收了其他流派的長處,于1996年6月、10月、1997年1月、11月分別推出了UML0.9,UML0.91,UML1.0,UMLl.1。

1997年11月,國際對象管理組織OMG(ObjectManagementGroup)批準把UML1.1作為基于面向?qū)ο蠹夹g(shù)的標準建模語言。

軟件工程一個系統(tǒng)往往可以從不同的角度進行觀察,從一個角度觀察到的系統(tǒng),構(gòu)成系統(tǒng)的一個視圖(View),每個視圖是整個系統(tǒng)描述的一個投影,說明了系統(tǒng)的一個特殊側(cè)面。若干個不同的視圖可以完整地描述所建造的系統(tǒng)。視圖并不是一種圖表(Graph),它是由若干幅圖(Diagram)組成的一種抽象。每種視圖用若干幅圖來描述,一幅圖包含了系統(tǒng)某一特殊方面的信息,它闡明了系統(tǒng)的一個特定部分或方面。由于不同視圖之間存在一些交叉,因此一幅圖可以作為多個視圖的一部分。一幅圖由若干個模型元素組成,模型元素表示圖中的概念。UML語言建立在面向?qū)ο蟮幕A(chǔ)上,它采用面向?qū)ο蟮母拍詈头缎?。UML語言的體系結(jié)構(gòu)建立在四層元模型結(jié)構(gòu)之上,這4層元模型分別為:元一元模型、元模型、軟件工程模型、用戶對象。1.元一元模型層元一元模型(Meta—metamodel)是建立元模型體系結(jié)構(gòu)的基礎(chǔ)結(jié)構(gòu)(Infrastructure)。元一元模型定義描述元模型的語言,是任何模型的基礎(chǔ),用于對概念的形式化。2.元模型層元模型層(Metamodel)定義描述模型的語言。在UML語言的元模型中,定義了面向?qū)ο蟮姆缎偷母拍?,如“對象類”、“屬性”、“操作”、“組件”等,它們是元模型層的元對象。元模型是元一元模型的一個實例。例如,“對象類”、“軟件工程屬性”、“操作”分別是“元對象類”、“元屬性”、“元操作”的實例?!皩ο箢悺笔菍σ唤M具有共同的結(jié)構(gòu)特征、行為特征、聯(lián)系和語義的對象的描述?!皩ο蟆笔恰皩ο箢悺钡囊粋€實例?!瓣P(guān)聯(lián)”是對一組具有共同的結(jié)構(gòu)特征、行為特征、聯(lián)系和語義的鏈接的描述,“鏈接”用于為兩個或多個實體(對象類)之間具有共同特征的聯(lián)系建立模型。“鏈接”是“關(guān)聯(lián)”的一個實例,“鏈接”用于為兩個或多個對象之間的聯(lián)系實例建立模型。3.模型層模型(Model)是元模型的一個實例,在模型層定義用于描述信息領(lǐng)域的語言。模型是對現(xiàn)實世界的抽象。無論是問題領(lǐng)域還是解決軟件工程方案,都可以抽象成模型。模型是系統(tǒng)構(gòu)建和更新的基礎(chǔ),用于對問題和解決方案的理解與交流,便于管理和控制系統(tǒng)的復(fù)雜性。4.用戶對象層用戶對象(Userobjects)是模型的實例,用戶對象層定義一個特定的信息領(lǐng)域。用戶對象層用于表達一個模型的特定情況。為了模型的可視化,UML為每一個模型元素規(guī)定了獨特的圖形表示符號,稱為圖標(Icon)。這些圖標簡潔明了能夠容納足夠的語義,并且容易繪制方便區(qū)別。在UML的核心包中定義的分類符,如對象類、接口、軟件工程數(shù)據(jù)類型、節(jié)點、組件、信號、UseCase、子系統(tǒng)等,它們的圖標如圖2.11所示。其中,對象類的圖標是一個矩形框,并且可以劃分成3個分割框,分別含有類的名字、屬性和操作。接口的圖標是一個圓,旁邊標有接口的名字。數(shù)據(jù)類型的圖標是一個矩形框,框內(nèi)含有構(gòu)造型<type>>、數(shù)據(jù)類型的名稱、以及關(guān)于取值范圍的說明(可選)。信號的圖標是一個矩形框,框內(nèi)含有構(gòu)造型<<signal>>和信號的名字。UseCase的圖標是一個橢圓,內(nèi)含UseCase的名字。組件的圖標是一個大矩形框的左邊帶兩個小矩形,大框內(nèi)含有組件的名字。節(jié)點的圖標是一個三維立方體,其內(nèi)含有節(jié)點的名字。包的圖標是一個大矩形框的左上角帶一個小矩形。子系統(tǒng)用包的圖標表達,即在包的圖標中含有構(gòu)造型<<subsystem>>和軟件工程子系統(tǒng)的名字。實際上,以上這些分類符的圖標中可以包含比名字更多的信息。學(xué)生姓名入學(xué)注冊查詢成績對象類分析風(fēng)險UseCase<<type>>Int{from–2**31to=2**31-1}數(shù)據(jù)類型<<signal>>offHook信號<<subsystem>>教學(xué)管理子系統(tǒng)子系統(tǒng)接口IUnknown

image.java組件節(jié)點數(shù)據(jù)庫服務(wù)器圖2.11分類符圖標示例軟件工程UML定義的聯(lián)系,如依賴、關(guān)聯(lián)、泛化、實現(xiàn)(Realization)等,它們的圖標如圖2.12所示。其中,依賴的圖標是一條虛箭線,從源模型元素指向目標模型元素,表示源模型元素依賴于目標模型元素。關(guān)聯(lián)的圖標是一條實線,連接兩個模型元素,在關(guān)聯(lián)端可標有多重性標記和關(guān)聯(lián)角色。泛化的圖標是一條帶空心三角箭頭的實箭線,從表示特殊性事物的模型元素指向表示一般性事物的模型元素。實現(xiàn)的圖標是一條帶空心三角箭頭的虛箭線,從源模型元素指向目標模型元素,表示源模型元素實現(xiàn)目標模型元素。UML定義的聯(lián)系還有聚合與組合。聚合與組合是兩種特殊的關(guān)聯(lián),表示事物之問的部分與整體的關(guān)系。聚合與組合的圖標是在關(guān)聯(lián)線的一端分別加上一個空心或?qū)嵭能浖こ蹋╝)依賴(b)泛化(c)關(guān)聯(lián)(d)實現(xiàn)(e)聚合(f)組合圖2.12聯(lián)系的圖標示例的小菱形,小菱形端連接表示整體事物的模型元素,另一端連接表示部分事物的模型元素。

軟件工程UML定義的行為事物基本上分為兩大類:交互和狀態(tài)機。交互是這樣一種行為:在一個特定的上下文環(huán)境里,一組對象之間交換消息,完成某個指定的任務(wù)。交互所涉及的模型元素有對象、消息、動作序列、鏈接等。消息的圖標是一條帶實心三角箭頭的實箭線,從消息的發(fā)送對象指向消息的接受對象。消息的圖標如圖(a)所示。添加訂貨(a)消息

休閑(b)狀態(tài)制定計劃(c)活動圖2.13消息、狀態(tài)和活動的圖標示例狀態(tài)機是這樣一種行為:一個對象的狀態(tài)序列,或一個在整個對象的生存期中響應(yīng)事件的交互。一個對象類軟件工程和多個對象類的協(xié)同可以用狀態(tài)機描述。狀態(tài)機所涉及的模型元素有狀態(tài)、轉(zhuǎn)移、事件、活動等。

溫馨提示

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

評論

0/150

提交評論