軟件工程復(fù)習(xí)大綱課件_第1頁
軟件工程復(fù)習(xí)大綱課件_第2頁
軟件工程復(fù)習(xí)大綱課件_第3頁
軟件工程復(fù)習(xí)大綱課件_第4頁
軟件工程復(fù)習(xí)大綱課件_第5頁
已閱讀5頁,還剩115頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第一章軟件工程概述軟件:軟件的概念嚴(yán)格說來,軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,它是包括程序、數(shù)據(jù)及其相關(guān)文檔的完整集合。軟件的特點(diǎn)(分類、發(fā)展)軟件是一種具有抽象特性的邏輯實(shí)體軟件的生產(chǎn)、開發(fā)無明顯的制造過程,容易復(fù)制軟件的使用、運(yùn)行期間無機(jī)械磨損……(8)軟件危機(jī)(1)軟件開發(fā)的進(jìn)度和開發(fā)成本估計(jì)不準(zhǔn),用戶不滿意;(2)軟件質(zhì)量不可靠;(3)軟件維護(hù)困難;(4)軟件不容易使用和管理,缺乏文檔資料;(5)軟件的開發(fā)跟不上硬件的發(fā)展和用戶要求的日益增長;(6)缺乏高素質(zhì)的軟件開發(fā)人員。第一章軟件工程概述軟件:1產(chǎn)生軟件危機(jī)的原因:(1)軟件本身的問題(2)軟件人員本身的問題(3)軟件生命期中的管理問題解決軟件危機(jī)的辦法:(1)開發(fā)新型的計(jì)算機(jī)系統(tǒng),使用新的監(jiān)督與控制機(jī)制;(2)總結(jié)和吸取前人的經(jīng)驗(yàn)和教訓(xùn),使用成熟的開發(fā)方法;(3)消除錯(cuò)誤思想和觀念,探索新的方法;(4)使用良好的開發(fā)工具和環(huán)境,提高開發(fā)效率;(5)進(jìn)行嚴(yán)格的組織和管理,采取有效的監(jiān)督。軟件危機(jī)的含義:在軟件開發(fā)和維護(hù)過程中所產(chǎn)生的一系列嚴(yán)重問題的現(xiàn)象,統(tǒng)稱為軟件危機(jī)。產(chǎn)生軟件危機(jī)的原因:2軟件工程:概念:是采用工程的概念、原理、技術(shù)和方法來開發(fā)、維護(hù)軟件,是開發(fā)與維護(hù)軟件的規(guī)范化系統(tǒng)方法,它將完善的工程原理應(yīng)用于經(jīng)濟(jì)地生產(chǎn)既可靠、又能在實(shí)際機(jī)器上有效運(yùn)行的軟件。其核心內(nèi)容就是“以工程化的方式組織軟件的開發(fā)”,涉及軟件計(jì)劃、開發(fā)和維護(hù)各個(gè)階段。軟件工程的基本目標(biāo)軟件工程的七條原理用分階段的生命周期計(jì)劃嚴(yán)格管理堅(jiān)持進(jìn)行階段評審實(shí)行嚴(yán)格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計(jì)技術(shù)結(jié)果應(yīng)能清楚地審查開發(fā)小組的人員應(yīng)少而精承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性軟件工程:3三種軟件開發(fā)模型(瀑布、漸增、快速原型化)的優(yōu)缺點(diǎn)機(jī)適用范圍。軟件生命周期的經(jīng)典模型——瀑布模型計(jì)劃:問題定義可行性研究開發(fā):需求分析設(shè)計(jì)編碼測試運(yùn)行維護(hù)注意:各個(gè)階段產(chǎn)生的文檔資料的名稱。(13份)各個(gè)階段結(jié)束標(biāo)志(文檔的內(nèi)容)軟件生命周期的定義軟件工程的產(chǎn)生三種軟件開發(fā)模型(瀑布、漸增、快速原型化)的優(yōu)缺點(diǎn)機(jī)適用范圍4問題定義要解決的問題是什么?可行性研究可行性分析對于上一階段確定的問題有行得通的解決方法嗎?(可行性分析的目的)進(jìn)一步分析和澄清問題定義探索若干種可能的解法

Operationalfeasibility,操作可行性系統(tǒng)的操作方式在這個(gè)用戶組織內(nèi)行得通?Technicalfeasibility,技術(shù)可行性使用現(xiàn)有的技術(shù)能實(shí)現(xiàn)這個(gè)系統(tǒng)嗎?Economicfeasibility,經(jīng)濟(jì)可行性這個(gè)系統(tǒng)的經(jīng)濟(jì)效益能超過它的開發(fā)成本嗎?對以后的行動方針提出建議問題定義5例如,修改一個(gè)已有的庫存清單系統(tǒng),使它能在每天送給采購員一份定貨報(bào)表。修改已有的庫存清單程序并且編寫產(chǎn)生報(bào)表的程序,估計(jì)共需5000元;系統(tǒng)修改后能及時(shí)定貨將消除零件短缺問題,估計(jì)因此每年可以節(jié)省2500元,五年共可節(jié)省12500元。但是,不能簡單地把5000元和12500元相比較,因?yàn)榍罢呤乾F(xiàn)在投資的錢,后者是若干年以后節(jié)省的錢。假定年利率為12%,利用上面計(jì)算貨幣現(xiàn)在價(jià)值的公式可以算出修改庫存清單系統(tǒng)后每年預(yù)計(jì)節(jié)省的錢的現(xiàn)在價(jià)值,如表所示。年將來值現(xiàn)在值累計(jì)現(xiàn)在值125001.122232.142232.14225001.251992.984225.12325001.401779.456004.57425001.571588.807593.37525001.761418.579011.94例如,修改一個(gè)已有的庫存清單系統(tǒng),使它能在每天送6(1)貨幣的時(shí)間價(jià)值

(2)投資回收期通常用投資回收期衡量一項(xiàng)開發(fā)工程的價(jià)值。所謂投資回收期就是使累計(jì)的經(jīng)濟(jì)效益等于最初投資所需要的時(shí)間。顯然,投資回收期越短就能越快獲得利潤,因此這項(xiàng)工程也就越值得投資。

例如,修改庫存清單系統(tǒng)兩年以后可以節(jié)省4225.12元,比最初的投資(5000元)還少774.88元,第三年以后將再節(jié)省1779.45元。774.88/1779.45=0.44,因此,投資回收期是2.44年。投資回收期僅僅是一項(xiàng)經(jīng)濟(jì)指標(biāo);為了衡量一項(xiàng)開發(fā)工程的價(jià)值,還應(yīng)該考慮其他經(jīng)濟(jì)指標(biāo)。(1)貨幣的時(shí)間價(jià)值

(2)投資回收期通常用投7(3)純收入衡量工程價(jià)值的另一項(xiàng)經(jīng)濟(jì)指標(biāo)是工程的純收入,也就是在整個(gè)生命周期之內(nèi)系統(tǒng)的累計(jì)經(jīng)濟(jì)效益(折合成現(xiàn)在值)與投資之差。這相當(dāng)于比較投資開發(fā)一個(gè)軟件系統(tǒng)和把錢存在銀行中(或貸給其他企業(yè))這兩種方案的優(yōu)劣。如果純收入為零,則工程的預(yù)期效益和在銀行存款一樣,但是開發(fā)一個(gè)系統(tǒng)要冒風(fēng)險(xiǎn),因此從經(jīng)濟(jì)觀點(diǎn)看這項(xiàng)工程可能是不值得投資的。如果純收入小于零,那么這項(xiàng)工程顯然不值得投資。

例如,上述修改庫存清單系統(tǒng),工程的純收入預(yù)計(jì)是9011.94-5000=4011.94(元)(3)純收入衡量工程價(jià)值的另一項(xiàng)經(jīng)濟(jì)指標(biāo)是工程8需求分析所謂軟件需求是指用戶對目標(biāo)軟件系統(tǒng)在功能、行為、性能、設(shè)計(jì)約束等方面的期望。具體任務(wù)確定對系統(tǒng)的綜合要求分析系統(tǒng)的數(shù)據(jù)要求需求分析的本質(zhì)就是對數(shù)據(jù)和加工進(jìn)行分析。導(dǎo)出系統(tǒng)的邏輯模型通常用數(shù)據(jù)流圖、數(shù)據(jù)字典和主要的處理算法描述這個(gè)邏輯模型修正系統(tǒng)開發(fā)計(jì)劃開發(fā)原型系統(tǒng)(可選)調(diào)查組織概況組織的業(yè)務(wù)活動存在問題、約束條件未來要求需求分析9需求獲取技術(shù)訪談與會議書面調(diào)查法觀察用戶工作流程用戶和開發(fā)人員共同組成聯(lián)合小組數(shù)據(jù)流圖(DFD)數(shù)據(jù)流圖描繪系統(tǒng)的邏輯模型,圖中沒有任何具體的物理元素,只是描繪信息在系統(tǒng)中流動和處理的情況。主要包括四種基本成分:數(shù)據(jù)源點(diǎn)/終點(diǎn)數(shù)據(jù)流加工數(shù)據(jù)存儲/文件基本系統(tǒng)模型

系統(tǒng)

輸入1

輸入2

輸出1

輸出2

需求獲取技術(shù)10

機(jī)票預(yù)定系統(tǒng)

帳單

訂票單

機(jī)票

下圖是一個(gè)飛機(jī)機(jī)票預(yù)定系統(tǒng)的基本系統(tǒng)模型

11

旅行社

預(yù)定機(jī)票

機(jī)票準(zhǔn)備

旅客

記帳

訂票單

機(jī)票

航班目錄

費(fèi)用

帳單

記帳文件

航班

下圖是機(jī)票預(yù)定系統(tǒng)的DFD

12DFD圖各成分的作用和注意事項(xiàng):數(shù)據(jù)流由一組數(shù)據(jù)項(xiàng)組成數(shù)據(jù)流可以從加工流向加工;從源點(diǎn)流向加工;從加工流向終點(diǎn);從加工流向文件或從文件流向加工兩個(gè)加工之間可以有幾股數(shù)據(jù)流,這些數(shù)據(jù)流之間沒有任何聯(lián)系,DFD也不表明它們的流動次序數(shù)據(jù)流命名的原則:現(xiàn)實(shí)環(huán)境中,傳遞的一些表格、單據(jù)的名字可直接作為數(shù)據(jù)流的名字。把現(xiàn)實(shí)環(huán)境中傳遞的一組數(shù)據(jù)中最重要的那個(gè)數(shù)據(jù)作為數(shù)據(jù)流的名字。不要把控制流作為數(shù)據(jù)流。在數(shù)據(jù)流命名時(shí),不要僅使用“數(shù)據(jù)”、“信息”等缺乏實(shí)際具體含義的詞匯作為數(shù)據(jù)流的名字。DFD圖各成分的作用和注意事項(xiàng):13加工是對數(shù)據(jù)進(jìn)行處理的單元。在分層DFD中,要對加工進(jìn)行編號,以便于管理。加工也要選取適當(dāng)?shù)拿?,以提高DFD的易讀性。加工命名原則是:頂層的加工名可以是軟件項(xiàng)目的名字通常先為數(shù)據(jù)流命名,然后再為與之相關(guān)聯(lián)的加工命名。加工的名字最好是由一個(gè)謂語動詞加上一個(gè)賓語組成,也可把賓語和謂語顛倒書寫應(yīng)該避免僅使用“加工”、“處理”這樣空洞籠統(tǒng)的動詞做加工名。名字應(yīng)該反映整個(gè)加工的功能,而不是它的一部分功能通常名字中僅包括一個(gè)動詞如果在為某個(gè)加工命名時(shí)遇到困難,則很可能是發(fā)現(xiàn)了分解不當(dāng)?shù)嫩E象,應(yīng)考慮重新分解加工是對數(shù)據(jù)進(jìn)行處理的單元。14文件文件是用來暫時(shí)存儲數(shù)據(jù)的。在分層DFD中,文件一般都局部于某一層或某幾層。源點(diǎn)和終點(diǎn)是軟件系統(tǒng)之外的實(shí)體,可以是人、物或其他軟件系統(tǒng)。源點(diǎn)和終點(diǎn)是為了幫助理解系統(tǒng)接口界面而引入的,在DFD中不需要進(jìn)一步描述它們。分層圖的編號原則是:(1)頂層圖編號為0,頂層圖只有一張,它的加工就是整個(gè)系統(tǒng);(2)頂層圖的子圖稱為第一層數(shù)據(jù)流圖,其中的各個(gè)加工按自然數(shù)順序1,2,3,…進(jìn)行編號,第一層數(shù)據(jù)流圖也只有一張;(3)在第一層以下的各分層圖中,每個(gè)加工的編號應(yīng)該是其所在的父圖的編號加小數(shù)點(diǎn),再加該圖的局部加工編號構(gòu)成。每個(gè)加工編號中所含小數(shù)點(diǎn)的個(gè)數(shù)加1,就是該圖所在的層次數(shù);文件15幾點(diǎn)說明:一個(gè)加工并不一定是一個(gè)程序。一個(gè)數(shù)據(jù)存儲也不等同于一個(gè)文件數(shù)據(jù)存儲和數(shù)據(jù)流都是數(shù)據(jù),僅僅所處的狀態(tài)不同通常在數(shù)據(jù)流圖中忽略出錯(cuò)處理,也不包括諸如打開或關(guān)閉文件之類的內(nèi)務(wù)處理。數(shù)據(jù)流的基本要點(diǎn)是描繪“做什么”而不考慮“怎么做”。有時(shí)數(shù)據(jù)的源點(diǎn)和終點(diǎn)相同,如果只用一個(gè)符號代表數(shù)據(jù)的源點(diǎn)和終點(diǎn),則至少將有兩個(gè)箭頭和這個(gè)符號相連(一個(gè)進(jìn)一個(gè)出),可能其中一條箭頭線相當(dāng)長,這將降低數(shù)據(jù)流圖的清晰度。另一種表示方法是再重復(fù)畫一個(gè)同樣的符號表示數(shù)據(jù)的終點(diǎn)。有時(shí)數(shù)據(jù)存儲也需要重復(fù),以增加數(shù)據(jù)流圖的清晰度。幾點(diǎn)說明:16假設(shè)一家工廠的采購部每天需要一張定貨報(bào)表,報(bào)表按零件編號排序,表中列出所有需要再次定貨的零件。對于每個(gè)需要再次定貨的零件應(yīng)該列出下述數(shù)據(jù):零件編號、零件名稱、定貨數(shù)量、目前價(jià)格、主要供應(yīng)者、次要供應(yīng)者。零件入庫或出庫稱為事務(wù),通過放在倉庫中的CRT終端把事務(wù)報(bào)告給定貨系統(tǒng)。當(dāng)某種零件的庫存數(shù)量少于庫存量臨界值時(shí)就應(yīng)該再次定貨。分析:第一步可以從問題描述中提取數(shù)據(jù)流圖的四種成分首先考慮數(shù)據(jù)的源點(diǎn)和終點(diǎn)接下來考慮加工最后,考慮數(shù)據(jù)流和數(shù)據(jù)存儲注意,并不是所有數(shù)據(jù)存儲和數(shù)據(jù)流都能直接從問題描述中提取出來假設(shè)一家工廠的采購部每天需要一張定貨報(bào)表,報(bào)表按零件編號排序17

定貨

系統(tǒng)

倉庫

管理員

采購員

事務(wù)

定貨報(bào)表

倉庫

管理員

1處理事務(wù)

2產(chǎn)生報(bào)表

采購員

庫存清單

庫存清單

事務(wù)

定貨報(bào)表

定貨信息

定貨信息

定貨信息

定貨系統(tǒng)倉庫管理員采購員181.1接收事務(wù)

1.2更新庫存清單

2產(chǎn)生報(bào)表

1.3處理定貨

倉庫

管理員

采購員

庫存清單

事務(wù)

事務(wù)

庫存信息

庫存清單

定貨信息

定貨信息

定貨報(bào)表

定貨信息

1.1接收事務(wù)1.2更新庫存清單2產(chǎn)生報(bào)表1.3處理定19數(shù)據(jù)字典(DD)數(shù)據(jù)字典是關(guān)于數(shù)據(jù)的信息的集合,也就是對數(shù)據(jù)流圖中包含的系統(tǒng)元素的定義的集合。有了DFD和DD,才算是完整地描述了一個(gè)系統(tǒng)。數(shù)據(jù)流圖和數(shù)據(jù)字典是需求規(guī)格說明書的主要組成部分。數(shù)據(jù)流條目數(shù)據(jù)流條目是定義數(shù)據(jù)流的。定義的方式一般是列出該數(shù)據(jù)流的各組成數(shù)據(jù)項(xiàng)。在定義數(shù)據(jù)流時(shí),通常借助于一些簡單的符號。存折={戶名+所號+帳號+開戶日+性質(zhì)+(印密)+1{存取行}50}0000000099999999戶名=2{字母}24所號=“001”…“999”帳號=“00000001”…“99999999”開戶日=年+月+日性質(zhì)=“1”..“6”印密=“0”數(shù)據(jù)字典(DD)20存取行=日期+(摘要)+支出+存入+余額+操作+復(fù)核日期=年+月+日年=“0001”..“9999”月=“01”..“12”日=“01”..“31”摘要=1{字母}4支出=金額金額=“0000000.01”..“9999999.99”操作=“00001”..“99999”…………存取行=日期+(摘要)+支出+存入+余額+操作+復(fù)核21數(shù)據(jù)文件條目文件條目是定義文件的,一般只需列出文件的組成數(shù)據(jù)項(xiàng),以及文件的組織方式存折={戶名+所號+帳號+開戶日+性質(zhì)+(印密)+1{存取行}50}0000000099999999組織:按帳號次序從小至大排列加工條目(小說明)小說明集中描述一個(gè)加工“做什么”,即加工邏輯,也包括其它一些與加工有關(guān)的信息,如執(zhí)行條件、優(yōu)先級、執(zhí)行頻率、出錯(cuò)處理等。目前用于寫小說明的工具有結(jié)構(gòu)化英語、判定表和判定樹。數(shù)據(jù)文件條目22下面是商店業(yè)務(wù)處理系統(tǒng)中“檢查發(fā)貨單”的例子IFtheinvoiceexceeds$500THEN IFtheaccounthasanyinvoicemorethan60daysoverdue THEN theconfirmationpendingresolutionofthedebt ELSEissueconfirmationandinvoice ENDIFELSE IFtheaccounthasanyinvoicemorethan60daysoverdueTHEN issueconfirmation,invoiceandwritemessageoncreditactionreport ELSEissueconfirmationandinvoice ENDIFENDIF下面是商店業(yè)務(wù)處理系統(tǒng)中“檢查發(fā)貨單”的例子23

1234條件發(fā)貨單金額>$500>$500≤$500≤$500賒欠情況>60天≤60天>60天≤60天操作不發(fā)出批準(zhǔn)書√

發(fā)出批準(zhǔn)書

√√√發(fā)出發(fā)貨單

√√√發(fā)出賒欠報(bào)告

1234發(fā)貨單金額>$500>$500≤$500≤$50024

檢查發(fā)貨單

金額>$500

金額?$500

欠款>60天——不發(fā)出批準(zhǔn)書

欠款?60天——發(fā)出批準(zhǔn)書、發(fā)貨單

欠款>60天——發(fā)出批準(zhǔn)書、發(fā)貨單及賒欠報(bào)告

欠款?60天——發(fā)出批準(zhǔn)書、發(fā)貨單

檢查發(fā)貨單金額>$500金額?$500欠款>6025從工程管理的角度看,軟件設(shè)計(jì)可分為概要設(shè)計(jì)/總體設(shè)計(jì)和詳細(xì)(detail)設(shè)計(jì)兩大步驟。概要設(shè)計(jì)是根據(jù)需求確定軟件和數(shù)據(jù)的總體框架,詳細(xì)設(shè)計(jì)是將其進(jìn)一步精化成軟件的算法表示和數(shù)據(jù)結(jié)構(gòu)。從技術(shù)角度來看,軟件設(shè)計(jì)可分為數(shù)據(jù)設(shè)計(jì)、系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和過程設(shè)計(jì)。數(shù)據(jù)設(shè)計(jì)把分析階段建立的信息描述轉(zhuǎn)換為實(shí)現(xiàn)軟件所要求的數(shù)據(jù)結(jié)構(gòu),側(cè)重于數(shù)據(jù)結(jié)構(gòu)的定義;系統(tǒng)結(jié)構(gòu)設(shè)計(jì)定義軟件系統(tǒng)各主要部件、成分之間的關(guān)系,過程設(shè)計(jì)則是把結(jié)構(gòu)成分轉(zhuǎn)換成軟件的過程性描述即完成每一部件的過程化描述。從工程管理的角度看,軟件設(shè)計(jì)可分為概要設(shè)計(jì)/總體設(shè)計(jì)和詳細(xì)(26概要設(shè)計(jì)在進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)時(shí)應(yīng)該遵循的最重要的原理是模塊獨(dú)立原理。采用模塊化原理的優(yōu)點(diǎn):可以使軟件結(jié)構(gòu)清晰,容易設(shè)計(jì)、容易閱讀和理解、容易測試和調(diào)試。提高軟件的可靠性。有利于軟件開發(fā)工程的組織管理。概要設(shè)計(jì)27模塊獨(dú)立性可用兩個(gè)定量準(zhǔn)則來度量:耦合和內(nèi)聚。耦合分七級:非直接耦合、數(shù)據(jù)耦合、特征耦合/標(biāo)記耦合、控制耦合、外部耦合、公共耦合、內(nèi)容耦合。內(nèi)聚分七級:偶然內(nèi)聚、邏輯內(nèi)聚、時(shí)間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚、功能內(nèi)聚。內(nèi)聚和耦合是相互關(guān)聯(lián)的。軟件概要設(shè)計(jì)的目標(biāo)是力求增加模塊的內(nèi)聚,盡量減少模塊間的耦合。但增加內(nèi)聚比減少耦合更重要,二者不能兼顧的情況下,應(yīng)當(dāng)把更多的注意力集中到提高模塊的內(nèi)聚程度上來。模塊獨(dú)立性可用兩個(gè)定量準(zhǔn)則來度量:耦合和內(nèi)聚。28系統(tǒng)結(jié)構(gòu)設(shè)計(jì)的七條啟發(fā)式原則改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性模塊規(guī)模應(yīng)該適中深度、寬度、扇出和扇入都應(yīng)適當(dāng)模塊的作用范圍應(yīng)在控制范圍之內(nèi)力爭降低模塊接口的復(fù)雜程度設(shè)計(jì)單入口單出口的模塊模塊功能應(yīng)該可以預(yù)測概要設(shè)計(jì)常用圖形工具有:層次圖、HIPO圖、結(jié)構(gòu)圖。系統(tǒng)結(jié)構(gòu)設(shè)計(jì)的七條啟發(fā)式原則29變換流的DFD是一個(gè)線性結(jié)構(gòu),由輸入、變換和輸出三部分組成。數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理,這個(gè)處理根據(jù)輸入數(shù)據(jù)的類型在若干個(gè)動作序列中選出一個(gè)來執(zhí)行。這類數(shù)據(jù)流稱為事務(wù)流。概要設(shè)計(jì)的步驟:分析DFD確定DFD的特點(diǎn)及邊界映射為軟件結(jié)構(gòu)細(xì)化后,得到初始結(jié)構(gòu)圖獲得最終的軟件結(jié)構(gòu)圖 變換分析事務(wù)分析變換流的DFD是一個(gè)線性結(jié)構(gòu),由輸入、變換和輸出三部分組成。30扇入深度寬度軟件層次結(jié)構(gòu)圖扇出扇出

A

B

C

DEFEGH

IJKLM結(jié)構(gòu)圖參數(shù)舉例:深度:5寬度:5A的扇出:3M的扇入:3扇入深度寬度軟件層次結(jié)構(gòu)圖扇出扇出ABC31變換型分析舉例變換型分析舉例32第一級分解McMAMTMEC,eC,eu,wu,wMcMA1ME1CeruMA2ME2QPRepc,pru,ww第一級分解McMAMTMEC,eC,eu,wu,wMcMA133McMAMTMEC,eC,eu,wu,werQPRpc,pru,wGetCGetEWriteWWriteUecGetBBtoCcbReadDDtoEedReadAAtoBbaadbuwUtoVWriteVuvvMcMAMTMEC,eC,eu,wu,werQPRpc,pr34下面以信用卡報(bào)賬系統(tǒng)為例某商店開展信用卡購物業(yè)務(wù)。建立了兩個(gè)賬目付款賬目和用戶總賬目。前者記錄了每位用戶每次付款的日期、金額,由用戶的賬號、日期和交易金額組成。后者記錄了用戶存款余額。這兩個(gè)賬目都是按用戶的賬號進(jìn)行登錄的(見圖)。店方每隔一段時(shí)間都需要根據(jù)上述兩個(gè)賬目產(chǎn)生一個(gè)會計(jì)報(bào)告。包括賬號、日期、交易金額、舊余額、新余額等內(nèi)容(見圖)?,F(xiàn)在要求用Jackson方法設(shè)計(jì)一個(gè)能夠產(chǎn)生上述會計(jì)報(bào)告的程序。下面以信用卡報(bào)賬系統(tǒng)為例35顧客賬號支付日期交易金額.........顧客賬號存款余額......用戶數(shù)據(jù)顧客賬號支付日期交易金額舊存款余額新存款余額...店方數(shù)據(jù)店方總計(jì)付款賬目用戶總賬目會計(jì)報(bào)告顧客賬號支付日期交易金額...顧客賬號存款余額..用戶數(shù)據(jù)顧36Jackson開發(fā)方法實(shí)現(xiàn)步驟①畫數(shù)據(jù)結(jié)構(gòu)圖

這個(gè)系統(tǒng)的兩個(gè)輸入文件是付賬賬目和用戶總賬目。輸出文件是會計(jì)報(bào)告。兩個(gè)輸入文件是以用戶賬號組織記錄的。他們的輸出數(shù)據(jù)結(jié)構(gòu)的Jackson圖表示如圖所示。付賬賬目用戶賬號組付賬記錄存款余額用戶總賬號用戶記錄信用卡報(bào)賬系統(tǒng)的輸入Jackson開發(fā)方法實(shí)現(xiàn)步驟①畫數(shù)據(jù)結(jié)構(gòu)圖付賬賬目用戶賬37會計(jì)報(bào)告中最后一行店方總計(jì)中由兩項(xiàng)內(nèi)容組成即交易額總計(jì)和點(diǎn)方余額總計(jì)。報(bào)告其他部分是顧客數(shù)據(jù)。其輸出數(shù)據(jù)結(jié)構(gòu)的Jackson圖表示如圖所示。會計(jì)報(bào)告顧客數(shù)據(jù)店方數(shù)據(jù)用戶賬號組*交易金額總計(jì)存款金額總計(jì)用戶賬號存款記錄用戶總支付存款余額新存款余額舊存款余額報(bào)告行*信用卡報(bào)賬系統(tǒng)的輸出會計(jì)報(bào)告中最后一行店方總計(jì)中由兩項(xiàng)內(nèi)容組成即交38處理付款賬目和用戶總賬目并給出會計(jì)報(bào)告處理報(bào)告行*處理店方數(shù)據(jù)處理用戶賬號組*處理用戶賬號處理付款記錄計(jì)算交易金額總計(jì)計(jì)算存款余額總計(jì)計(jì)算舊存款余額計(jì)算用戶總支付計(jì)算新存款余額處理用戶數(shù)據(jù)計(jì)算存款余額I1I2圖4-47信用卡報(bào)賬系統(tǒng)程序結(jié)構(gòu)圖處理付款賬目和用戶總賬目并給出會計(jì)報(bào)告處理報(bào)告行*處理店方數(shù)39③寫出程序的過程性描述

首先列出圖4-47中的循環(huán)結(jié)構(gòu)的終止條件I1和I2.

I1:付款賬目文件結(jié)束;I2:用戶賬號組結(jié)束。

必要的可執(zhí)行操作和輔助操作說明。

打開文件:open

讀取文件數(shù)據(jù):read向文件寫數(shù)據(jù):write

尋找數(shù)據(jù)項(xiàng):finds關(guān)閉文件:close③寫出程序的過程性描述首先列出圖4-47中的循環(huán)結(jié)構(gòu)的終止40用Jackson偽代碼寫出過程性描述:({}內(nèi)為注釋部分),處理付款賬目和用戶總賬目并給出會計(jì)報(bào)告seq。

open會計(jì)報(bào)告;

open付款賬目;

open用戶總賬目;處理用戶數(shù)據(jù)iteruntil付款賬目文件結(jié)束;處理用戶賬號組seq;read付款賬目;處理用戶賬號{write處理用戶賬號行};處理付款記錄iteruntil用戶賬號組結(jié)束;write報(bào)告行;計(jì)算交易金額總計(jì);用Jackson偽代碼寫出過程性描述:({}內(nèi)為注釋部分)41read付款賬目;end付款記錄;計(jì)算用戶總支付;計(jì)算存款余額seq;處理舊存款余額{read用戶總賬目finds存款余額};計(jì)算新存款余額;{write總計(jì)行}end計(jì)算存款余額;end處理用戶賬號組;end處理用戶數(shù)據(jù);處理店方數(shù)據(jù)seq;計(jì)算交易金額總計(jì);read付款賬目;42計(jì)算存款余額總計(jì);write店方總計(jì)行;end處理店方數(shù)據(jù);close付款賬目;close用戶總賬目;close會計(jì)報(bào)告;end處理付款賬目和用戶總賬目并給出會計(jì)報(bào)告。用Jackson方法得到的程序結(jié)構(gòu)圖一般都需要求精和優(yōu)化。因?yàn)檫@種方法是從輸入輸出數(shù)據(jù)結(jié)構(gòu)導(dǎo)出程序結(jié)構(gòu)圖,因此有些中間處理過程在結(jié)構(gòu)圖中無法反映出來。在求精過程和,不斷對數(shù)據(jù)結(jié)構(gòu)圖進(jìn)行改進(jìn)和細(xì)化,使之完整。計(jì)算存款余額總計(jì);43詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)階段采用自頂向下逐步求精的方法,把一個(gè)模塊的功能逐步分解細(xì)化為一系列具體的處理步驟。結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)是詳細(xì)設(shè)計(jì)的邏輯基礎(chǔ)。結(jié)構(gòu)化程序設(shè)計(jì)的三種基本控制結(jié)構(gòu)是順序、選擇、循環(huán)。結(jié)構(gòu)化程序設(shè)計(jì)目前一個(gè)比較流行的定義是:結(jié)構(gòu)化程序設(shè)計(jì)是一種設(shè)計(jì)程序的技術(shù),它采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口的控制結(jié)構(gòu)。詳細(xì)設(shè)計(jì)44怎么判斷一個(gè)程序是否為結(jié)構(gòu)化的呢?如果對流程圖中每一構(gòu)件用“邊框”圈起來,邊界之間不出現(xiàn)交叉,則說明所有構(gòu)件都為單入口單出口,則稱此程序?yàn)榻Y(jié)構(gòu)化程序。怎么判斷一個(gè)程序是否為結(jié)構(gòu)化的呢?如果對流程圖中每一構(gòu)件用“45

begin

A

1

B

3

4

2

B

6

5

C

7

D

8

end

F

F

F

F

F

T

T

T

T

T

beginA1B342B65C7D46

begin

A

1B3

4

2B6

5C

7D

end

F

FFF

T

T

T58F=0F=1F=0?

F

T

C

7

D

8

7

FTTbeginA1B342B65C7DendF47程序流程圖、盒圖、PAD圖、判定表、判定樹和PDL語言等都是完成詳細(xì)設(shè)計(jì)的工具,選擇合適的工具并且正確地使用它們是十分重要的。注意:各種圖形的特點(diǎn),優(yōu)缺點(diǎn),適用范圍等,各種圖形之間的轉(zhuǎn)換。程序流程圖、盒圖、PAD圖、判定表、判定樹和PDL語言等都是48PAD圖應(yīng)用舉例(N-S圖→PAD圖)abTxiFfx2Tx4F=1=2=3ix5gdo-whiledeDo-untilhx3cDo-untilx6jPAD圖應(yīng)用舉例(N-S圖→PAD圖)49aUntilx6bx1fx4Untilx5ighjUntilx3ede=1=2=3x2對應(yīng)的PAD圖aUntilx6bx1fx4Untilx5ighjUnt50程序流程圖的優(yōu)點(diǎn)是:直觀、易學(xué)、歷史長、使用廣泛。缺點(diǎn)是:誘使程序員過早地考慮控制流,容易忽略整體結(jié)構(gòu);控制流繪制時(shí)容易亂轉(zhuǎn)移,破壞結(jié)構(gòu);不容易表示數(shù)據(jù)結(jié)構(gòu);不適于大型程序的設(shè)計(jì)僅適于小規(guī)模程序的設(shè)計(jì);

例如:前面講到的折扣率例題購貨時(shí)間4~6、10、12

1~3、7~9、11

購貨數(shù)量〈1010~20〉20〈1010~20〉20折扣率5%10%20%10%20%30%程序流程圖的優(yōu)點(diǎn)是:直觀、易學(xué)、歷史長、使用51讀入購貨月份T和購貨量WTin{4-6,10,12}折扣率=5%W<10W>20W<10W>20折扣率=10%折扣率=20%折扣率=20%折扣率=30%結(jié)束TFTFTFTFTF讀入購貨月份T和購貨量WTin{4-6,10,12}折扣52購貨時(shí)間T與購貨量WTTin{4-6,10,12}FTW<10FTW<10F折扣率為5%TW>20F折扣率為10%TW>20F折扣率為20%折扣率為10%折扣率為30%折扣率為20%折扣率問題的N-S圖購貨時(shí)間T與購貨量WT53編碼所謂編碼就是把軟件設(shè)計(jì)的結(jié)果翻譯成計(jì)算機(jī)可以“理解”的形式—用某種程序設(shè)計(jì)語言書寫的程序。按照軟件工程的方法論,編碼是在對軟件進(jìn)行了概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)之后進(jìn)行的,編碼不過是把軟件設(shè)計(jì)的結(jié)果翻譯成用某種程序設(shè)計(jì)語言書寫的程序。因此,程序的質(zhì)量基本上由設(shè)計(jì)的質(zhì)量決定。但是,編碼使用的語言,特別是寫程序的風(fēng)格和途徑也對程序質(zhì)量有相當(dāng)大的影響。編碼54測試軟件測試的目的就是軟件投入生產(chǎn)性運(yùn)行之前,盡可能多地發(fā)現(xiàn)軟件中的錯(cuò)誤。通常分為單元測試/模塊測試,集成測試(包括子系統(tǒng)測試/系統(tǒng)測試),驗(yàn)收測試/有效性測試。設(shè)計(jì)測試方案是測試階段的關(guān)鍵技術(shù)問題,基本目標(biāo)是選用最少量的高效測試數(shù)據(jù),做到盡可能完善的測試,從而盡可能多地發(fā)現(xiàn)軟件中的問題。設(shè)計(jì)測試方案的實(shí)用策略是,用黑盒法設(shè)計(jì)基本的測試方案,再用白盒法補(bǔ)充一些必要的測試方案。測試55軟件工程復(fù)習(xí)大綱56維護(hù)所謂軟件維護(hù)就是在軟件已經(jīng)交付使用之后,為了改正錯(cuò)誤或滿足新的需要而修改軟件的過程。軟件維護(hù)通常包括四類活動:為了糾正使用過程中暴露出來的錯(cuò)誤而進(jìn)行的改正性維護(hù);為了適應(yīng)外部環(huán)境的變化而進(jìn)行的適應(yīng)性維護(hù);為了改進(jìn)原有的軟件而進(jìn)行的完善性維護(hù);為了改進(jìn)將來的可維護(hù)性和可靠性而進(jìn)行的預(yù)防性維護(hù)。軟件的可理解性、可測試性和可修改性是決定軟件可維護(hù)性的基本因素。維護(hù)57維護(hù)有三種副作用:文檔、代碼、數(shù)據(jù)。文檔是影響軟件可維護(hù)性的決定因素。文檔可分用戶文檔和系統(tǒng)文檔兩大類。預(yù)防性維護(hù)方法是由Miller提出的。他的想法是“結(jié)構(gòu)化翻新”,并將其定義為:把今天的方法用于昨天的系統(tǒng),以支持明天的需要。逆向工程與重構(gòu)工程是目前預(yù)防性維護(hù)采用的主要技術(shù)。維護(hù)有三種副作用:文檔、代碼、數(shù)據(jù)。58軟件項(xiàng)目管理成本由四個(gè)部分組成:購置并安裝軟硬件及有關(guān)設(shè)備的費(fèi)用系統(tǒng)開發(fā)費(fèi)用系統(tǒng)安裝、運(yùn)行和維護(hù)費(fèi)用人員培訓(xùn)費(fèi)用成本估算:代碼行技術(shù)、任務(wù)分解技術(shù)系統(tǒng)效益包括經(jīng)濟(jì)效益和社會效益兩部分貨幣的時(shí)間價(jià)值、純收入、投資回收期、投資回收率進(jìn)度安排兩個(gè)主要的工具:橫道圖、工程網(wǎng)絡(luò)人員組織:主程序員組軟件項(xiàng)目管理59軟件工程期末考試題型填空選擇判斷計(jì)算題(成本估算)分析題(需求分析---數(shù)據(jù)流程圖、數(shù)據(jù)字典)畫圖題(詳細(xì)設(shè)計(jì)的圖形表示之間的轉(zhuǎn)換)設(shè)計(jì)題(變換型/Jackson)測試用例的設(shè)計(jì)(白盒法)軟件工程期末考試題型填空60第一章軟件工程概述軟件:軟件的概念嚴(yán)格說來,軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,它是包括程序、數(shù)據(jù)及其相關(guān)文檔的完整集合。軟件的特點(diǎn)(分類、發(fā)展)軟件是一種具有抽象特性的邏輯實(shí)體軟件的生產(chǎn)、開發(fā)無明顯的制造過程,容易復(fù)制軟件的使用、運(yùn)行期間無機(jī)械磨損……(8)軟件危機(jī)(1)軟件開發(fā)的進(jìn)度和開發(fā)成本估計(jì)不準(zhǔn),用戶不滿意;(2)軟件質(zhì)量不可靠;(3)軟件維護(hù)困難;(4)軟件不容易使用和管理,缺乏文檔資料;(5)軟件的開發(fā)跟不上硬件的發(fā)展和用戶要求的日益增長;(6)缺乏高素質(zhì)的軟件開發(fā)人員。第一章軟件工程概述軟件:61產(chǎn)生軟件危機(jī)的原因:(1)軟件本身的問題(2)軟件人員本身的問題(3)軟件生命期中的管理問題解決軟件危機(jī)的辦法:(1)開發(fā)新型的計(jì)算機(jī)系統(tǒng),使用新的監(jiān)督與控制機(jī)制;(2)總結(jié)和吸取前人的經(jīng)驗(yàn)和教訓(xùn),使用成熟的開發(fā)方法;(3)消除錯(cuò)誤思想和觀念,探索新的方法;(4)使用良好的開發(fā)工具和環(huán)境,提高開發(fā)效率;(5)進(jìn)行嚴(yán)格的組織和管理,采取有效的監(jiān)督。軟件危機(jī)的含義:在軟件開發(fā)和維護(hù)過程中所產(chǎn)生的一系列嚴(yán)重問題的現(xiàn)象,統(tǒng)稱為軟件危機(jī)。產(chǎn)生軟件危機(jī)的原因:62軟件工程:概念:是采用工程的概念、原理、技術(shù)和方法來開發(fā)、維護(hù)軟件,是開發(fā)與維護(hù)軟件的規(guī)范化系統(tǒng)方法,它將完善的工程原理應(yīng)用于經(jīng)濟(jì)地生產(chǎn)既可靠、又能在實(shí)際機(jī)器上有效運(yùn)行的軟件。其核心內(nèi)容就是“以工程化的方式組織軟件的開發(fā)”,涉及軟件計(jì)劃、開發(fā)和維護(hù)各個(gè)階段。軟件工程的基本目標(biāo)軟件工程的七條原理用分階段的生命周期計(jì)劃嚴(yán)格管理堅(jiān)持進(jìn)行階段評審實(shí)行嚴(yán)格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計(jì)技術(shù)結(jié)果應(yīng)能清楚地審查開發(fā)小組的人員應(yīng)少而精承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性軟件工程:63三種軟件開發(fā)模型(瀑布、漸增、快速原型化)的優(yōu)缺點(diǎn)機(jī)適用范圍。軟件生命周期的經(jīng)典模型——瀑布模型計(jì)劃:問題定義可行性研究開發(fā):需求分析設(shè)計(jì)編碼測試運(yùn)行維護(hù)注意:各個(gè)階段產(chǎn)生的文檔資料的名稱。(13份)各個(gè)階段結(jié)束標(biāo)志(文檔的內(nèi)容)軟件生命周期的定義軟件工程的產(chǎn)生三種軟件開發(fā)模型(瀑布、漸增、快速原型化)的優(yōu)缺點(diǎn)機(jī)適用范圍64問題定義要解決的問題是什么?可行性研究可行性分析對于上一階段確定的問題有行得通的解決方法嗎?(可行性分析的目的)進(jìn)一步分析和澄清問題定義探索若干種可能的解法

Operationalfeasibility,操作可行性系統(tǒng)的操作方式在這個(gè)用戶組織內(nèi)行得通?Technicalfeasibility,技術(shù)可行性使用現(xiàn)有的技術(shù)能實(shí)現(xiàn)這個(gè)系統(tǒng)嗎?Economicfeasibility,經(jīng)濟(jì)可行性這個(gè)系統(tǒng)的經(jīng)濟(jì)效益能超過它的開發(fā)成本嗎?對以后的行動方針提出建議問題定義65例如,修改一個(gè)已有的庫存清單系統(tǒng),使它能在每天送給采購員一份定貨報(bào)表。修改已有的庫存清單程序并且編寫產(chǎn)生報(bào)表的程序,估計(jì)共需5000元;系統(tǒng)修改后能及時(shí)定貨將消除零件短缺問題,估計(jì)因此每年可以節(jié)省2500元,五年共可節(jié)省12500元。但是,不能簡單地把5000元和12500元相比較,因?yàn)榍罢呤乾F(xiàn)在投資的錢,后者是若干年以后節(jié)省的錢。假定年利率為12%,利用上面計(jì)算貨幣現(xiàn)在價(jià)值的公式可以算出修改庫存清單系統(tǒng)后每年預(yù)計(jì)節(jié)省的錢的現(xiàn)在價(jià)值,如表所示。年將來值現(xiàn)在值累計(jì)現(xiàn)在值125001.122232.142232.14225001.251992.984225.12325001.401779.456004.57425001.571588.807593.37525001.761418.579011.94例如,修改一個(gè)已有的庫存清單系統(tǒng),使它能在每天送66(1)貨幣的時(shí)間價(jià)值

(2)投資回收期通常用投資回收期衡量一項(xiàng)開發(fā)工程的價(jià)值。所謂投資回收期就是使累計(jì)的經(jīng)濟(jì)效益等于最初投資所需要的時(shí)間。顯然,投資回收期越短就能越快獲得利潤,因此這項(xiàng)工程也就越值得投資。

例如,修改庫存清單系統(tǒng)兩年以后可以節(jié)省4225.12元,比最初的投資(5000元)還少774.88元,第三年以后將再節(jié)省1779.45元。774.88/1779.45=0.44,因此,投資回收期是2.44年。投資回收期僅僅是一項(xiàng)經(jīng)濟(jì)指標(biāo);為了衡量一項(xiàng)開發(fā)工程的價(jià)值,還應(yīng)該考慮其他經(jīng)濟(jì)指標(biāo)。(1)貨幣的時(shí)間價(jià)值

(2)投資回收期通常用投67(3)純收入衡量工程價(jià)值的另一項(xiàng)經(jīng)濟(jì)指標(biāo)是工程的純收入,也就是在整個(gè)生命周期之內(nèi)系統(tǒng)的累計(jì)經(jīng)濟(jì)效益(折合成現(xiàn)在值)與投資之差。這相當(dāng)于比較投資開發(fā)一個(gè)軟件系統(tǒng)和把錢存在銀行中(或貸給其他企業(yè))這兩種方案的優(yōu)劣。如果純收入為零,則工程的預(yù)期效益和在銀行存款一樣,但是開發(fā)一個(gè)系統(tǒng)要冒風(fēng)險(xiǎn),因此從經(jīng)濟(jì)觀點(diǎn)看這項(xiàng)工程可能是不值得投資的。如果純收入小于零,那么這項(xiàng)工程顯然不值得投資。

例如,上述修改庫存清單系統(tǒng),工程的純收入預(yù)計(jì)是9011.94-5000=4011.94(元)(3)純收入衡量工程價(jià)值的另一項(xiàng)經(jīng)濟(jì)指標(biāo)是工程68需求分析所謂軟件需求是指用戶對目標(biāo)軟件系統(tǒng)在功能、行為、性能、設(shè)計(jì)約束等方面的期望。具體任務(wù)確定對系統(tǒng)的綜合要求分析系統(tǒng)的數(shù)據(jù)要求需求分析的本質(zhì)就是對數(shù)據(jù)和加工進(jìn)行分析。導(dǎo)出系統(tǒng)的邏輯模型通常用數(shù)據(jù)流圖、數(shù)據(jù)字典和主要的處理算法描述這個(gè)邏輯模型修正系統(tǒng)開發(fā)計(jì)劃開發(fā)原型系統(tǒng)(可選)調(diào)查組織概況組織的業(yè)務(wù)活動存在問題、約束條件未來要求需求分析69需求獲取技術(shù)訪談與會議書面調(diào)查法觀察用戶工作流程用戶和開發(fā)人員共同組成聯(lián)合小組數(shù)據(jù)流圖(DFD)數(shù)據(jù)流圖描繪系統(tǒng)的邏輯模型,圖中沒有任何具體的物理元素,只是描繪信息在系統(tǒng)中流動和處理的情況。主要包括四種基本成分:數(shù)據(jù)源點(diǎn)/終點(diǎn)數(shù)據(jù)流加工數(shù)據(jù)存儲/文件基本系統(tǒng)模型

系統(tǒng)

輸入1

輸入2

輸出1

輸出2

需求獲取技術(shù)70

機(jī)票預(yù)定系統(tǒng)

帳單

訂票單

機(jī)票

下圖是一個(gè)飛機(jī)機(jī)票預(yù)定系統(tǒng)的基本系統(tǒng)模型

71

旅行社

預(yù)定機(jī)票

機(jī)票準(zhǔn)備

旅客

記帳

訂票單

機(jī)票

航班目錄

費(fèi)用

帳單

記帳文件

航班

下圖是機(jī)票預(yù)定系統(tǒng)的DFD

72DFD圖各成分的作用和注意事項(xiàng):數(shù)據(jù)流由一組數(shù)據(jù)項(xiàng)組成數(shù)據(jù)流可以從加工流向加工;從源點(diǎn)流向加工;從加工流向終點(diǎn);從加工流向文件或從文件流向加工兩個(gè)加工之間可以有幾股數(shù)據(jù)流,這些數(shù)據(jù)流之間沒有任何聯(lián)系,DFD也不表明它們的流動次序數(shù)據(jù)流命名的原則:現(xiàn)實(shí)環(huán)境中,傳遞的一些表格、單據(jù)的名字可直接作為數(shù)據(jù)流的名字。把現(xiàn)實(shí)環(huán)境中傳遞的一組數(shù)據(jù)中最重要的那個(gè)數(shù)據(jù)作為數(shù)據(jù)流的名字。不要把控制流作為數(shù)據(jù)流。在數(shù)據(jù)流命名時(shí),不要僅使用“數(shù)據(jù)”、“信息”等缺乏實(shí)際具體含義的詞匯作為數(shù)據(jù)流的名字。DFD圖各成分的作用和注意事項(xiàng):73加工是對數(shù)據(jù)進(jìn)行處理的單元。在分層DFD中,要對加工進(jìn)行編號,以便于管理。加工也要選取適當(dāng)?shù)拿郑蕴岣逥FD的易讀性。加工命名原則是:頂層的加工名可以是軟件項(xiàng)目的名字通常先為數(shù)據(jù)流命名,然后再為與之相關(guān)聯(lián)的加工命名。加工的名字最好是由一個(gè)謂語動詞加上一個(gè)賓語組成,也可把賓語和謂語顛倒書寫應(yīng)該避免僅使用“加工”、“處理”這樣空洞籠統(tǒng)的動詞做加工名。名字應(yīng)該反映整個(gè)加工的功能,而不是它的一部分功能通常名字中僅包括一個(gè)動詞如果在為某個(gè)加工命名時(shí)遇到困難,則很可能是發(fā)現(xiàn)了分解不當(dāng)?shù)嫩E象,應(yīng)考慮重新分解加工是對數(shù)據(jù)進(jìn)行處理的單元。74文件文件是用來暫時(shí)存儲數(shù)據(jù)的。在分層DFD中,文件一般都局部于某一層或某幾層。源點(diǎn)和終點(diǎn)是軟件系統(tǒng)之外的實(shí)體,可以是人、物或其他軟件系統(tǒng)。源點(diǎn)和終點(diǎn)是為了幫助理解系統(tǒng)接口界面而引入的,在DFD中不需要進(jìn)一步描述它們。分層圖的編號原則是:(1)頂層圖編號為0,頂層圖只有一張,它的加工就是整個(gè)系統(tǒng);(2)頂層圖的子圖稱為第一層數(shù)據(jù)流圖,其中的各個(gè)加工按自然數(shù)順序1,2,3,…進(jìn)行編號,第一層數(shù)據(jù)流圖也只有一張;(3)在第一層以下的各分層圖中,每個(gè)加工的編號應(yīng)該是其所在的父圖的編號加小數(shù)點(diǎn),再加該圖的局部加工編號構(gòu)成。每個(gè)加工編號中所含小數(shù)點(diǎn)的個(gè)數(shù)加1,就是該圖所在的層次數(shù);文件75幾點(diǎn)說明:一個(gè)加工并不一定是一個(gè)程序。一個(gè)數(shù)據(jù)存儲也不等同于一個(gè)文件數(shù)據(jù)存儲和數(shù)據(jù)流都是數(shù)據(jù),僅僅所處的狀態(tài)不同通常在數(shù)據(jù)流圖中忽略出錯(cuò)處理,也不包括諸如打開或關(guān)閉文件之類的內(nèi)務(wù)處理。數(shù)據(jù)流的基本要點(diǎn)是描繪“做什么”而不考慮“怎么做”。有時(shí)數(shù)據(jù)的源點(diǎn)和終點(diǎn)相同,如果只用一個(gè)符號代表數(shù)據(jù)的源點(diǎn)和終點(diǎn),則至少將有兩個(gè)箭頭和這個(gè)符號相連(一個(gè)進(jìn)一個(gè)出),可能其中一條箭頭線相當(dāng)長,這將降低數(shù)據(jù)流圖的清晰度。另一種表示方法是再重復(fù)畫一個(gè)同樣的符號表示數(shù)據(jù)的終點(diǎn)。有時(shí)數(shù)據(jù)存儲也需要重復(fù),以增加數(shù)據(jù)流圖的清晰度。幾點(diǎn)說明:76假設(shè)一家工廠的采購部每天需要一張定貨報(bào)表,報(bào)表按零件編號排序,表中列出所有需要再次定貨的零件。對于每個(gè)需要再次定貨的零件應(yīng)該列出下述數(shù)據(jù):零件編號、零件名稱、定貨數(shù)量、目前價(jià)格、主要供應(yīng)者、次要供應(yīng)者。零件入庫或出庫稱為事務(wù),通過放在倉庫中的CRT終端把事務(wù)報(bào)告給定貨系統(tǒng)。當(dāng)某種零件的庫存數(shù)量少于庫存量臨界值時(shí)就應(yīng)該再次定貨。分析:第一步可以從問題描述中提取數(shù)據(jù)流圖的四種成分首先考慮數(shù)據(jù)的源點(diǎn)和終點(diǎn)接下來考慮加工最后,考慮數(shù)據(jù)流和數(shù)據(jù)存儲注意,并不是所有數(shù)據(jù)存儲和數(shù)據(jù)流都能直接從問題描述中提取出來假設(shè)一家工廠的采購部每天需要一張定貨報(bào)表,報(bào)表按零件編號排序77

定貨

系統(tǒng)

倉庫

管理員

采購員

事務(wù)

定貨報(bào)表

倉庫

管理員

1處理事務(wù)

2產(chǎn)生報(bào)表

采購員

庫存清單

庫存清單

事務(wù)

定貨報(bào)表

定貨信息

定貨信息

定貨信息

定貨系統(tǒng)倉庫管理員采購員781.1接收事務(wù)

1.2更新庫存清單

2產(chǎn)生報(bào)表

1.3處理定貨

倉庫

管理員

采購員

庫存清單

事務(wù)

事務(wù)

庫存信息

庫存清單

定貨信息

定貨信息

定貨報(bào)表

定貨信息

1.1接收事務(wù)1.2更新庫存清單2產(chǎn)生報(bào)表1.3處理定79數(shù)據(jù)字典(DD)數(shù)據(jù)字典是關(guān)于數(shù)據(jù)的信息的集合,也就是對數(shù)據(jù)流圖中包含的系統(tǒng)元素的定義的集合。有了DFD和DD,才算是完整地描述了一個(gè)系統(tǒng)。數(shù)據(jù)流圖和數(shù)據(jù)字典是需求規(guī)格說明書的主要組成部分。數(shù)據(jù)流條目數(shù)據(jù)流條目是定義數(shù)據(jù)流的。定義的方式一般是列出該數(shù)據(jù)流的各組成數(shù)據(jù)項(xiàng)。在定義數(shù)據(jù)流時(shí),通常借助于一些簡單的符號。存折={戶名+所號+帳號+開戶日+性質(zhì)+(印密)+1{存取行}50}0000000099999999戶名=2{字母}24所號=“001”…“999”帳號=“00000001”…“99999999”開戶日=年+月+日性質(zhì)=“1”..“6”印密=“0”數(shù)據(jù)字典(DD)80存取行=日期+(摘要)+支出+存入+余額+操作+復(fù)核日期=年+月+日年=“0001”..“9999”月=“01”..“12”日=“01”..“31”摘要=1{字母}4支出=金額金額=“0000000.01”..“9999999.99”操作=“00001”..“99999”…………存取行=日期+(摘要)+支出+存入+余額+操作+復(fù)核81數(shù)據(jù)文件條目文件條目是定義文件的,一般只需列出文件的組成數(shù)據(jù)項(xiàng),以及文件的組織方式存折={戶名+所號+帳號+開戶日+性質(zhì)+(印密)+1{存取行}50}0000000099999999組織:按帳號次序從小至大排列加工條目(小說明)小說明集中描述一個(gè)加工“做什么”,即加工邏輯,也包括其它一些與加工有關(guān)的信息,如執(zhí)行條件、優(yōu)先級、執(zhí)行頻率、出錯(cuò)處理等。目前用于寫小說明的工具有結(jié)構(gòu)化英語、判定表和判定樹。數(shù)據(jù)文件條目82下面是商店業(yè)務(wù)處理系統(tǒng)中“檢查發(fā)貨單”的例子IFtheinvoiceexceeds$500THEN IFtheaccounthasanyinvoicemorethan60daysoverdue THEN theconfirmationpendingresolutionofthedebt ELSEissueconfirmationandinvoice ENDIFELSE IFtheaccounthasanyinvoicemorethan60daysoverdueTHEN issueconfirmation,invoiceandwritemessageoncreditactionreport ELSEissueconfirmationandinvoice ENDIFENDIF下面是商店業(yè)務(wù)處理系統(tǒng)中“檢查發(fā)貨單”的例子83

1234條件發(fā)貨單金額>$500>$500≤$500≤$500賒欠情況>60天≤60天>60天≤60天操作不發(fā)出批準(zhǔn)書√

發(fā)出批準(zhǔn)書

√√√發(fā)出發(fā)貨單

√√√發(fā)出賒欠報(bào)告

1234發(fā)貨單金額>$500>$500≤$500≤$50084

檢查發(fā)貨單

金額>$500

金額?$500

欠款>60天——不發(fā)出批準(zhǔn)書

欠款?60天——發(fā)出批準(zhǔn)書、發(fā)貨單

欠款>60天——發(fā)出批準(zhǔn)書、發(fā)貨單及賒欠報(bào)告

欠款?60天——發(fā)出批準(zhǔn)書、發(fā)貨單

檢查發(fā)貨單金額>$500金額?$500欠款>6085從工程管理的角度看,軟件設(shè)計(jì)可分為概要設(shè)計(jì)/總體設(shè)計(jì)和詳細(xì)(detail)設(shè)計(jì)兩大步驟。概要設(shè)計(jì)是根據(jù)需求確定軟件和數(shù)據(jù)的總體框架,詳細(xì)設(shè)計(jì)是將其進(jìn)一步精化成軟件的算法表示和數(shù)據(jù)結(jié)構(gòu)。從技術(shù)角度來看,軟件設(shè)計(jì)可分為數(shù)據(jù)設(shè)計(jì)、系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和過程設(shè)計(jì)。數(shù)據(jù)設(shè)計(jì)把分析階段建立的信息描述轉(zhuǎn)換為實(shí)現(xiàn)軟件所要求的數(shù)據(jù)結(jié)構(gòu),側(cè)重于數(shù)據(jù)結(jié)構(gòu)的定義;系統(tǒng)結(jié)構(gòu)設(shè)計(jì)定義軟件系統(tǒng)各主要部件、成分之間的關(guān)系,過程設(shè)計(jì)則是把結(jié)構(gòu)成分轉(zhuǎn)換成軟件的過程性描述即完成每一部件的過程化描述。從工程管理的角度看,軟件設(shè)計(jì)可分為概要設(shè)計(jì)/總體設(shè)計(jì)和詳細(xì)(86概要設(shè)計(jì)在進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)時(shí)應(yīng)該遵循的最重要的原理是模塊獨(dú)立原理。采用模塊化原理的優(yōu)點(diǎn):可以使軟件結(jié)構(gòu)清晰,容易設(shè)計(jì)、容易閱讀和理解、容易測試和調(diào)試。提高軟件的可靠性。有利于軟件開發(fā)工程的組織管理。概要設(shè)計(jì)87模塊獨(dú)立性可用兩個(gè)定量準(zhǔn)則來度量:耦合和內(nèi)聚。耦合分七級:非直接耦合、數(shù)據(jù)耦合、特征耦合/標(biāo)記耦合、控制耦合、外部耦合、公共耦合、內(nèi)容耦合。內(nèi)聚分七級:偶然內(nèi)聚、邏輯內(nèi)聚、時(shí)間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚、功能內(nèi)聚。內(nèi)聚和耦合是相互關(guān)聯(lián)的。軟件概要設(shè)計(jì)的目標(biāo)是力求增加模塊的內(nèi)聚,盡量減少模塊間的耦合。但增加內(nèi)聚比減少耦合更重要,二者不能兼顧的情況下,應(yīng)當(dāng)把更多的注意力集中到提高模塊的內(nèi)聚程度上來。模塊獨(dú)立性可用兩個(gè)定量準(zhǔn)則來度量:耦合和內(nèi)聚。88系統(tǒng)結(jié)構(gòu)設(shè)計(jì)的七條啟發(fā)式原則改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性模塊規(guī)模應(yīng)該適中深度、寬度、扇出和扇入都應(yīng)適當(dāng)模塊的作用范圍應(yīng)在控制范圍之內(nèi)力爭降低模塊接口的復(fù)雜程度設(shè)計(jì)單入口單出口的模塊模塊功能應(yīng)該可以預(yù)測概要設(shè)計(jì)常用圖形工具有:層次圖、HIPO圖、結(jié)構(gòu)圖。系統(tǒng)結(jié)構(gòu)設(shè)計(jì)的七條啟發(fā)式原則89變換流的DFD是一個(gè)線性結(jié)構(gòu),由輸入、變換和輸出三部分組成。數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理,這個(gè)處理根據(jù)輸入數(shù)據(jù)的類型在若干個(gè)動作序列中選出一個(gè)來執(zhí)行。這類數(shù)據(jù)流稱為事務(wù)流。概要設(shè)計(jì)的步驟:分析DFD確定DFD的特點(diǎn)及邊界映射為軟件結(jié)構(gòu)細(xì)化后,得到初始結(jié)構(gòu)圖獲得最終的軟件結(jié)構(gòu)圖 變換分析事務(wù)分析變換流的DFD是一個(gè)線性結(jié)構(gòu),由輸入、變換和輸出三部分組成。90扇入深度寬度軟件層次結(jié)構(gòu)圖扇出扇出

A

B

C

DEFEGH

IJKLM結(jié)構(gòu)圖參數(shù)舉例:深度:5寬度:5A的扇出:3M的扇入:3扇入深度寬度軟件層次結(jié)構(gòu)圖扇出扇出ABC91變換型分析舉例變換型分析舉例92第一級分解McMAMTMEC,eC,eu,wu,wMcMA1ME1CeruMA2ME2QPRepc,pru,ww第一級分解McMAMTMEC,eC,eu,wu,wMcMA193McMAMTMEC,eC,eu,wu,werQPRpc,pru,wGetCGetEWriteWWriteUecGetBBtoCcbReadDDtoEedReadAAtoBbaadbuwUtoVWriteVuvvMcMAMTMEC,eC,eu,wu,werQPRpc,pr94下面以信用卡報(bào)賬系統(tǒng)為例某商店開展信用卡購物業(yè)務(wù)。建立了兩個(gè)賬目付款賬目和用戶總賬目。前者記錄了每位用戶每次付款的日期、金額,由用戶的賬號、日期和交易金額組成。后者記錄了用戶存款余額。這兩個(gè)賬目都是按用戶的賬號進(jìn)行登錄的(見圖)。店方每隔一段時(shí)間都需要根據(jù)上述兩個(gè)賬目產(chǎn)生一個(gè)會計(jì)報(bào)告。包括賬號、日期、交易金額、舊余額、新余額等內(nèi)容(見圖)?,F(xiàn)在要求用Jackson方法設(shè)計(jì)一個(gè)能夠產(chǎn)生上述會計(jì)報(bào)告的程序。下面以信用卡報(bào)賬系統(tǒng)為例95顧客賬號支付日期交易金額.........顧客賬號存款余額......用戶數(shù)據(jù)顧客賬號支付日期交易金額舊存款余額新存款余額...店方數(shù)據(jù)店方總計(jì)付款賬目用戶總賬目會計(jì)報(bào)告顧客賬號支付日期交易金額...顧客賬號存款余額..用戶數(shù)據(jù)顧96Jackson開發(fā)方法實(shí)現(xiàn)步驟①畫數(shù)據(jù)結(jié)構(gòu)圖

這個(gè)系統(tǒng)的兩個(gè)輸入文件是付賬賬目和用戶總賬目。輸出文件是會計(jì)報(bào)告。兩個(gè)輸入文件是以用戶賬號組織記錄的。他們的輸出數(shù)據(jù)結(jié)構(gòu)的Jackson圖表示如圖所示。付賬賬目用戶賬號組付賬記錄存款余額用戶總賬號用戶記錄信用卡報(bào)賬系統(tǒng)的輸入Jackson開發(fā)方法實(shí)現(xiàn)步驟①畫數(shù)據(jù)結(jié)構(gòu)圖付賬賬目用戶賬97會計(jì)報(bào)告中最后一行店方總計(jì)中由兩項(xiàng)內(nèi)容組成即交易額總計(jì)和點(diǎn)方余額總計(jì)。報(bào)告其他部分是顧客數(shù)據(jù)。其輸出數(shù)據(jù)結(jié)構(gòu)的Jackson圖表示如圖所示。會計(jì)報(bào)告顧客數(shù)據(jù)店方數(shù)據(jù)用戶賬號組*交易金額總計(jì)存款金額總計(jì)用戶賬號存款記錄用戶總支付存款余額新存款余額舊存款余額報(bào)告行*信用卡報(bào)賬系統(tǒng)的輸出會計(jì)報(bào)告中最后一行店方總計(jì)中由兩項(xiàng)內(nèi)容組成即交98處理付款賬目和用戶總賬目并給出會計(jì)報(bào)告處理報(bào)告行*處理店方數(shù)據(jù)處理用戶賬號組*處理用戶賬號處理付款記錄計(jì)算交易金額總計(jì)計(jì)算存款余額總計(jì)計(jì)算舊存款余額計(jì)算用戶總支付計(jì)算新存款余額處理用戶數(shù)據(jù)計(jì)算存款余額I1I2圖4-47信用卡報(bào)賬系統(tǒng)程序結(jié)構(gòu)圖處理付款賬目和用戶總賬目并給出會計(jì)報(bào)告處理報(bào)告行*處理店方數(shù)99③寫出程序的過程性描述

首先列出圖4-47中的循環(huán)結(jié)構(gòu)的終止條件I1和I2.

I1:付款賬目文件結(jié)束;I2:用戶賬號組結(jié)束。

必要的可執(zhí)行操作和輔助操作說明。

打開文件:open

讀取文件數(shù)據(jù):read向文件寫數(shù)據(jù):write

尋找數(shù)據(jù)項(xiàng):finds關(guān)閉文件:close③寫出程序的過程性描述首先列出圖4-47中的循環(huán)結(jié)構(gòu)的終止100用Jackson偽代碼寫出過程性描述:({}內(nèi)為注釋部分),處理付款賬目和用戶總賬目并給出會計(jì)報(bào)告seq。

open會計(jì)報(bào)告;

open付款賬目;

open用戶總賬目;處理用戶數(shù)據(jù)iteruntil付款賬目文件結(jié)束;處理用戶賬號組seq;read付款賬目;處理用戶賬號{write處理用戶賬號行};處理付款記錄iteruntil用戶賬號組結(jié)束;write報(bào)告行;計(jì)算交易金額總計(jì);用Jackson偽代碼寫出過程性描述:({}內(nèi)為注釋部分)101read付款賬目;end付款記錄;計(jì)算用戶總支付;計(jì)算存款余額seq;處理舊存款余額{read用戶總賬目finds存款余額};計(jì)算新存款余額;{write總計(jì)行}end計(jì)算存款余額;end處理用戶賬號組;end處理用戶數(shù)據(jù);處理店方數(shù)據(jù)seq;計(jì)算交易金額總計(jì);read付款賬目;102計(jì)算存款余額總計(jì);write店方總計(jì)行;end處理店方數(shù)據(jù);close付款賬目;close用戶總賬目;close會計(jì)報(bào)告;end處理付款賬目和用戶總賬目并給出會計(jì)報(bào)告。用Jackson方法得到的程序結(jié)構(gòu)圖一般都需要求精和優(yōu)化。因?yàn)檫@種方法是從輸入輸出數(shù)據(jù)結(jié)構(gòu)導(dǎo)出程序結(jié)構(gòu)圖,因此有些中間處理過程在結(jié)構(gòu)圖中無法反映出來。在求精過程和,不斷對數(shù)據(jù)結(jié)構(gòu)圖進(jìn)行改進(jìn)和細(xì)化,使之完整。計(jì)算存款余額總計(jì);103詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)階段采用自頂向下逐步求精的方法,把一個(gè)模塊的功能逐步分解細(xì)化為一系列具體的處理步驟。結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)是詳細(xì)設(shè)計(jì)的邏輯基礎(chǔ)。結(jié)構(gòu)化程序設(shè)計(jì)的三種基本控制結(jié)構(gòu)是順序、選擇、循環(huán)。結(jié)構(gòu)化程序設(shè)計(jì)目前一個(gè)比較流行的定義是:結(jié)構(gòu)化程序設(shè)計(jì)是一種設(shè)計(jì)程序的技術(shù),它采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口的控制結(jié)構(gòu)。詳細(xì)設(shè)計(jì)104怎么判斷一個(gè)程序是否為結(jié)構(gòu)化的呢?如果對流程圖中每一構(gòu)件用“邊框”圈起來,邊界之間不出現(xiàn)交叉,則說明所有構(gòu)件都為單入口單出口,則稱此程序?yàn)榻Y(jié)構(gòu)化程序。怎么判斷一個(gè)程序是否為結(jié)構(gòu)化的呢?如果對流程圖中每一構(gòu)件用“105

begin

A

1

B

3

4

2

B

6

5

C

7

D

8

end

F

F

F

F

F

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論