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

下載本文檔

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

文檔簡(jiǎn)介

軟件工程軟件工程

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

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

軟件工程是一門(mén)理論性和實(shí)踐性都很強(qiáng)的學(xué)科

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

軟件工程建議課程安排

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

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

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

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

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

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

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

軟件工程主要表現(xiàn)在兩個(gè)方面:(1)軟件產(chǎn)品質(zhì)量低劣,甚至開(kāi)發(fā)過(guò)程就夭折。(2)軟件生產(chǎn)率低,不能滿(mǎn)足需要。“軟件危機(jī)”產(chǎn)生的原因“軟件危機(jī)”(Software

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

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

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

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

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

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

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

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

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

1.用分階段的生命周期計(jì)劃嚴(yán)格管理

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

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

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

7.承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性

軟件工程§1.3軟件生存期

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

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

軟件工程生存期瀑布模型

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

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

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

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

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

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

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

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

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

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

軟件工程

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

軟件工程3、軟件過(guò)程標(biāo)準(zhǔn)

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

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

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

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

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

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

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

軟件工程4、軟件過(guò)程工程的定義

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

5、軟件過(guò)程工程和軟件項(xiàng)目工程如果說(shuō)軟件過(guò)程工程是以軟件過(guò)程為中心的工程活動(dòng),那么在這種理念形成之前的軟件工程所進(jìn)行的是以軟件開(kāi)發(fā)為中心的工程活動(dòng),因而被稱(chēng)之為軟件項(xiàng)目工程。

6、軟件過(guò)程周期軟件過(guò)程周期,也稱(chēng)其為軟件過(guò)程生存周期或軟件過(guò)程生命周期,它是指一個(gè)軟件過(guò)程從孕育、誕生、成長(zhǎng)、衰老的全部歷程。

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

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

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

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

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

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

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

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

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

3.按工作方式分類(lèi)

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

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

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

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

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

軟件工程

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

軟件工程第2章需求分析

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

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

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

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

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

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

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

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

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

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

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

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

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

軟件工程2.3可行性研究

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

是正確的就進(jìn)一步加以肯定,如果有錯(cuò)誤就應(yīng)該及時(shí)改正,如果對(duì)目標(biāo)系統(tǒng)有任何約束和

限制,也必須把它們清楚地列舉出來(lái)。

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

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

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

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

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

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

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

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

軟件工程

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

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

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

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

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

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

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

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

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

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

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

軟件工程圖2.1基本符號(hào)符號(hào)名

稱(chēng)說(shuō)

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

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

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

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

數(shù)據(jù)流用來(lái)連接其他符號(hào),指明數(shù)據(jù)流動(dòng)方向。

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

稱(chēng)

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

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

磁帶磁帶輸入/輸出,或表示一個(gè)磁帶文件。

聯(lián)機(jī)存儲(chǔ)表示任何種類(lèi)的聯(lián)機(jī)存儲(chǔ),包括磁盤(pán)、磁鼓、軟盤(pán)和海量存儲(chǔ)器件等。

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

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

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

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

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

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

通信鏈路通過(guò)遠(yuǎn)程通信線路或鏈路傳送數(shù)據(jù)。

軟件工程二、例子

介紹系統(tǒng)流程圖的最好方法可能是通過(guò)一個(gè)具體例子說(shuō)明它的用法。下面是一個(gè)簡(jiǎn)單的例子。某裝配廠有一座存放零件的倉(cāng)庫(kù),倉(cāng)庫(kù)中現(xiàn)有的各種零件的數(shù)量以及每種零件的庫(kù)存量臨界值等數(shù)據(jù)記錄在庫(kù)存清單主文件中。當(dāng)倉(cāng)庫(kù)中零件數(shù)量有變化時(shí),應(yīng)該及時(shí)修改庫(kù)存清單主文件,如果那種零件的庫(kù)存量少于它的庫(kù)存量臨界值,則應(yīng)該報(bào)告給采購(gòu)部門(mén)以便定貨,規(guī)定每天向采購(gòu)部門(mén)送一次定貨報(bào)告。該裝配廠使用一臺(tái)小型計(jì)算機(jī)處理更新庫(kù)存清單主文件和產(chǎn)生定貨報(bào)告的任務(wù)。零件庫(kù)存量的每一次變化稱(chēng)為一個(gè)事務(wù),通過(guò)放在倉(cāng)庫(kù)中的CRT終端輸入到計(jì)算機(jī)中;系統(tǒng)中的庫(kù)存清單程序?qū)κ聞?wù)進(jìn)行處理,更新存儲(chǔ)在軟件工程磁盤(pán)上的庫(kù)存清單主文件,并且把必要的定貨信息寫(xiě)在磁帶上。最后,每天由報(bào)告生成程序讀一次磁帶,并且打印出定貨報(bào)告。圖2.3的系統(tǒng)流程圖描繪了上述系統(tǒng)的概貌。事務(wù)庫(kù)存清單程序訂貨信息報(bào)告生成程序訂貨報(bào)告庫(kù)存清單主文件圖2.3庫(kù)存清單系統(tǒng)的系統(tǒng)流程圖軟件工程三、分層面對(duì)復(fù)雜的系統(tǒng)時(shí),一個(gè)比較好的方法是分層次地描繪這個(gè)系統(tǒng)。首先用一張高層次的系統(tǒng)流程圖描繪系統(tǒng)總體概貌,表明系統(tǒng)的關(guān)鍵功能。然后分別把每個(gè)關(guān)鍵功能擴(kuò)展到適當(dāng)?shù)脑敿?xì)程度,畫(huà)在單獨(dú)的一頁(yè)紙上。這種分層次的描繪方法便于閱讀者按照從抽象到具體的過(guò)程逐步深入地了解一個(gè)復(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)化英語(yǔ)、判定表和判定樹(shù)等工具,來(lái)建立一種新的、稱(chēng)為結(jié)構(gòu)化說(shuō)明書(shū)的目標(biāo)文檔?!边@里的結(jié)構(gòu)化說(shuō)明書(shū),就是需求規(guī)格說(shuō)明書(shū)。結(jié)構(gòu)化分析技術(shù)將軟件系統(tǒng)抽象為一系列的邏輯加工單元,各單元之間以數(shù)據(jù)流發(fā)生關(guān)聯(lián)。按照數(shù)據(jù)流分析的觀點(diǎn),系統(tǒng)模型的功能是數(shù)據(jù)變換,邏輯加工單元接受輸入數(shù)據(jù)流,使之變換成輸出數(shù)據(jù)流。數(shù)據(jù)流模型常用數(shù)據(jù)流圖表示。

軟件工程

建立功能模型

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

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

.每個(gè)圓圈可能需要進(jìn)一步分解以求得對(duì)問(wèn)題的全面理解。

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

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

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

1、

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

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

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

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

1、加工的編號(hào)方法

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

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

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

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

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

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

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

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

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

軟件工程

建立行為模型

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

軟件工程

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

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

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

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

·文件條目。

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

·加工條目。軟件工程數(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)的符號(hào)及其含意是(設(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個(gè)或多個(gè)重復(fù)的a構(gòu)成軟件工程1、數(shù)據(jù)流條目數(shù)據(jù)流條目主要說(shuō)明數(shù)據(jù)流條目是由哪些數(shù)據(jù)項(xiàng)組成的,以及數(shù)據(jù)在單位時(shí)間內(nèi)的流量,它的來(lái)源、去向等。條目格式如下:數(shù)據(jù)流名:組成:流量:來(lái)源:去向:軟件工程例如:數(shù)據(jù)流“銀行對(duì)賬單”條目:條目格式如下:數(shù)據(jù)流名:銀行對(duì)帳單組成:月份+日期+銀行支票+金額流量:2張∕3天,每張約40筆數(shù)據(jù)來(lái)源:開(kāi)戶(hù)銀行去向:資金管理組軟件工程2、文件條目文件條目主要說(shuō)明文件由哪些數(shù)據(jù)項(xiàng)組成,存儲(chǔ)方式和存取頻率等。條目格式如下:文件名:

組成:

存儲(chǔ)方式:

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

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

存儲(chǔ)方式:順序

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

數(shù)據(jù)項(xiàng)名:

類(lèi)型:

長(zhǎng)度:

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

數(shù)據(jù)項(xiàng)名:憑證號(hào)

類(lèi)型:數(shù)值

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

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

加工名:

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

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

加工邏輯:

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

軟件工程

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

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

1.從認(rèn)知學(xué)的角度來(lái)看,面向?qū)ο蠓椒ǚ先藗儗?duì)客觀世界的認(rèn)識(shí)規(guī)律

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

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

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

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

軟件工程

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

2.類(lèi)

類(lèi)是一組具有相同屬性和相同操作的對(duì)象的集合。一個(gè)類(lèi)中的每個(gè)對(duì)象都是這個(gè)類(lèi)的一個(gè)實(shí)例。

不必為每個(gè)對(duì)象逐個(gè)定義,只需對(duì)類(lèi)作出定義,而對(duì)類(lèi)的屬性的不同賦值即可得到該類(lèi)的對(duì)象實(shí)例,類(lèi)和軟件工程

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

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

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

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

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

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

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

(2)標(biāo)識(shí)類(lèi)(包括定義其屬性和操作)。

(3)刻畫(huà)類(lèi)的層次結(jié)構(gòu)。

(4)表示類(lèi)(對(duì)象)之間的關(guān)系。

(5)為對(duì)象行為建模。

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

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

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

(1)獲取客戶(hù)對(duì)系統(tǒng)的需求:包括標(biāo)識(shí)場(chǎng)景(Scenario)和用例(IJseCase),以及建造需求模型。

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

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

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

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

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

軟件工程O(píng)OD同樣應(yīng)遵循抽象、信息隱蔽、功能獨(dú)立、模塊化等設(shè)計(jì)準(zhǔn)則。

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

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

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

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

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

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

·在過(guò)程級(jí)別設(shè)計(jì)每個(gè)操作。

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

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

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

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

(4)復(fù)審。

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

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

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

一、UML概述

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

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

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

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

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論