版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟件工程(SoftwareEngineering)軟件工程(SoftwareEngineering)1第1章:軟件工程學(xué)概述1.1軟件危機(jī)60年代中期以前:通用硬件相當(dāng)普遍,軟件卻是為某個(gè)具體的應(yīng)用而編寫的。
60年代中到70年代中:軟件作坊。第1章:軟件工程學(xué)概述1.1軟件危機(jī)2
軟件危機(jī):計(jì)算機(jī)軟件的開發(fā)和維護(hù)過(guò)程中所遇到的一系列嚴(yán)重問(wèn)題。(正常、不正常運(yùn)行軟件都具有這種問(wèn)題)1.1.1軟件危機(jī)的介紹軟件危機(jī):計(jì)算機(jī)軟件的開發(fā)和維護(hù)過(guò)程中所遇到的一系列31)對(duì)軟件開發(fā)成本和進(jìn)度的估計(jì)常常很不準(zhǔn)確;2)用戶對(duì)完成的軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生;3)軟件產(chǎn)品的質(zhì)量往往靠不??;軟件危機(jī)的典型表現(xiàn):1)對(duì)軟件開發(fā)成本和進(jìn)度的估計(jì)常常很不準(zhǔn)確;軟件危機(jī)的典型表44)軟件常常是不可維護(hù)的;5)軟件通常沒(méi)有適當(dāng)?shù)奈臋n資料;6)軟件成本在計(jì)算機(jī)系統(tǒng)總成本中所占的比例逐年上升;7)軟件開發(fā)生產(chǎn)率提高的速度跟不上計(jì)算機(jī)應(yīng)用的發(fā)展趨勢(shì)。4)軟件常常是不可維護(hù)的;51.1.2產(chǎn)生軟件危機(jī)的原因1)軟件本身特點(diǎn)造成;2)軟件開發(fā)與維護(hù)的方法不正確。主要表現(xiàn):(a)忽視軟件需求分析;(b)認(rèn)為軟件開發(fā)就是寫程序并使之運(yùn)行;(c)輕視軟件維護(hù);1.1.2產(chǎn)生軟件危機(jī)的原因1)軟件本身特點(diǎn)造成;主要表6
在軟件開發(fā)的不同階段進(jìn)行修改需要付出的代價(jià)很不相同:高中低早期中期后期軟件開發(fā)時(shí)期代價(jià)引入同一修改的代價(jià)隨時(shí)間變化的趨勢(shì)在軟件開發(fā)的不同階段進(jìn)行修改需要付出的代價(jià)很不相同:71)推廣使用在實(shí)踐中總結(jié)出來(lái)的開發(fā)軟件的成功技術(shù)和方法,并研究探索更有效的技術(shù)和方法;2)開發(fā)和使用更好的軟件工具;3)良好的組織管理措施。
1.1.3解決軟件危機(jī)的途徑1)推廣使用在實(shí)踐中總結(jié)出來(lái)的開發(fā)軟件的成功技術(shù)和方法,并研8
為了解決軟件危機(jī)產(chǎn)生的問(wèn)題,軟件工程與方法學(xué)逐漸形成,然后出現(xiàn)了兩個(gè)相互相承又各有側(cè)重的學(xué)科:
1)軟件工程學(xué):主要應(yīng)用工程的方法和技術(shù)研究軟件開發(fā)與維護(hù)的方法、工具和管理的一門交叉學(xué)科。
2)程序設(shè)計(jì)方法學(xué):主要應(yīng)用數(shù)學(xué)的方法研究程序的性質(zhì)以及程序設(shè)計(jì)的理論和方法的學(xué)科。
為了解決軟件危機(jī)產(chǎn)生的問(wèn)題,軟件工程與方法學(xué)逐漸形成91.2軟件工程1.2.1軟件工程的介紹1968年NATO會(huì)議:軟件工程就是為了經(jīng)濟(jì)地獲得可靠的且能在實(shí)際機(jī)器上有效地運(yùn)行的軟件,而建立和使用完善的工程原理。1993年IEEE:軟件工程是(1)把系統(tǒng)的、規(guī)范的、可度量的途徑應(yīng)用于軟件開發(fā)、運(yùn)行和維護(hù)過(guò)程;(2)研究(1)中提到的途徑。1.2軟件工程1.2.1軟件工程的介紹1968年NAT101.軟件工程關(guān)注于大型程序的構(gòu)造;
2.軟件工程的中心課題是控制復(fù)雜性;
3.軟件經(jīng)常變化;
4.開發(fā)軟件的效率非常重要;
5.和諧地合作是軟件開發(fā)的關(guān)鍵;
6.軟件必須有效地支持它的用戶;
7.在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品。軟件工程的本質(zhì)特性:1.軟件工程關(guān)注于大型程序的構(gòu)造;軟件工程的本質(zhì)特性:111.2.2軟件工程的基本原理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é)果能清楚地審查;6.開發(fā)小組的人員應(yīng)該少而精;7.承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性。1.2.2軟件工程的基本原理1.用分階段的生命周期計(jì)劃嚴(yán)121.2.3軟件工程方法學(xué)
通常把在軟件生命周期全過(guò)程中使用的一整套技術(shù)方法的集合稱為方法學(xué)(Methodology),也稱為范型(Paradigm)。軟件工程方法學(xué)的3要素:方法、工具和過(guò)程1.2.3軟件工程方法學(xué)131.傳統(tǒng)方法學(xué)也稱為生命周期方法學(xué)或結(jié)構(gòu)化范型。結(jié)構(gòu)化方法(StructureMethod)有:1)結(jié)構(gòu)化設(shè)計(jì)方法(SD);2)結(jié)構(gòu)化分析方法(SA);
3)結(jié)構(gòu)化分析與設(shè)計(jì)技術(shù)(SADT)4)JACKSON方法5)WARNIER方法1.傳統(tǒng)方法學(xué)142.面向?qū)ο蠓椒▽W(xué)把數(shù)據(jù)和對(duì)數(shù)據(jù)的操作緊密結(jié)合起來(lái)的方法,模擬人類認(rèn)識(shí)世界解決問(wèn)題的方法和過(guò)程。
面向?qū)ο蟮姆椒?對(duì)象(屬性與服務(wù)的封裝)+分類+繼承+通過(guò)消息的通訊2.面向?qū)ο蠓椒▽W(xué)151)適用于實(shí)時(shí)事物處理系統(tǒng)的有限狀態(tài)機(jī)方法(FSM);2)適用于并發(fā)軟件系統(tǒng)的PETRI網(wǎng)方法;3)以數(shù)學(xué)概念和理論為基礎(chǔ)的形式化方法,如
SDC公司的形式化開發(fā)方法FDM:(FormalDevelopmentMethodology)IBM公司的維也納開發(fā)方法VDM:
(ViennaDevelopmentMethod)
3.其他開發(fā)方法
1)適用于實(shí)時(shí)事物處理系統(tǒng)的有限狀態(tài)機(jī)方法(FSM);3.161.3軟件生命周期軟件生命周期:指軟件從提出到最終被淘汰的這個(gè)存在期。1.3軟件生命周期軟件生命周期:17軟件生命周期組成:
1)軟件定義;
A.問(wèn)題定義B.可行性研究C.需求分析
2)軟件開發(fā);
D.總體設(shè)計(jì)E.詳細(xì)設(shè)計(jì)
F.編碼和單元測(cè)試G.綜合測(cè)試
3)運(yùn)行維護(hù)。軟件生命周期組成:181.問(wèn)題定義;
2.可行性研究;
3.需求分析;
4.總體設(shè)計(jì)(概要設(shè)計(jì));
5.詳細(xì)設(shè)計(jì);
6.編碼與單元測(cè)試;
7.綜合測(cè)試;
8.維護(hù)。軟件生命周期各個(gè)階段:1.問(wèn)題定義;軟件生命周期各個(gè)階段:191.4軟件過(guò)程軟件過(guò)程:為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。軟件過(guò)程(ISO9000):使用資源將輸入轉(zhuǎn)化為輸出的活動(dòng)所構(gòu)成的系統(tǒng)。輸入:如軟件需求輸出:如軟件產(chǎn)品1.4軟件過(guò)程軟件過(guò)程:為了獲得高質(zhì)量軟件所需要完成的一201.4.1瀑布模型1.階段間具有順序性和依賴性2.推遲實(shí)現(xiàn)的觀點(diǎn)3.質(zhì)量保證的觀點(diǎn)1.4.1瀑布模型1.階段間具有順序性和依賴性21優(yōu)點(diǎn):采用規(guī)范的方法;嚴(yán)格規(guī)定每個(gè)階段提交的文檔;要求每個(gè)階段交出的產(chǎn)品必須經(jīng)過(guò)驗(yàn)證。優(yōu)點(diǎn):采用規(guī)范的方法;嚴(yán)格規(guī)定每個(gè)階段提交的文檔;要求每個(gè)階221.4.2快速原型模型優(yōu)點(diǎn):不帶反饋環(huán),基本上是線性順序進(jìn)行。1.4.2快速原型模型231.4.3增量模型優(yōu)點(diǎn):能較短時(shí)間內(nèi)提交可完成部分工作的產(chǎn)品;可以使用戶有充裕的時(shí)間學(xué)習(xí)和適應(yīng)新產(chǎn)品。1.4.3增量模型優(yōu)點(diǎn):能較短時(shí)間內(nèi)提交可完成部分工作的產(chǎn)24一種風(fēng)險(xiǎn)更大的增量模型:一種風(fēng)險(xiǎn)更大的增量模型:251.4.4螺旋模型可把它看作在每個(gè)階段之前都增加風(fēng)險(xiǎn)分析的快速原型模型。1.4.4螺旋模型26軟件工程完整教程課件271.4.5噴泉模型典型的面向?qū)ο筌浖_發(fā)過(guò)程模型之一。1.4.5噴泉模型典型的面向?qū)ο筌浖_發(fā)過(guò)程模型之281.4.6Rational統(tǒng)一過(guò)程1.RUP軟件開發(fā)經(jīng)驗(yàn)(1)迭代式開發(fā)(2)管理需求(3)使用基于構(gòu)件的體系結(jié)構(gòu)(4)可視化建模(5)貫穿于開發(fā)過(guò)程的軟件質(zhì)量驗(yàn)證(6)控制軟件變更1.4.6Rational統(tǒng)一過(guò)程1.RUP軟件開發(fā)經(jīng)291.4.7敏捷過(guò)程與極限編程1.敏捷過(guò)程具有高效、快速響應(yīng)變化的開發(fā)過(guò)程。(1)個(gè)體和交互勝過(guò)過(guò)程和工具;(2)可以工作的軟件勝過(guò)面面俱到的文檔;(3)客戶合作勝過(guò)合同談判;(4)響應(yīng)變化勝過(guò)遵循計(jì)劃。2.極限編程敏捷過(guò)程中最著名的一種,指把好的開發(fā)實(shí)踐運(yùn)用到極致,多應(yīng)用于軟件需求模糊的場(chǎng)合。1.4.7敏捷過(guò)程與極限編程1.敏捷過(guò)程301.4.8微軟過(guò)程1.微軟過(guò)程準(zhǔn)則2.微軟軟件生命周期(1)規(guī)劃階段(2)設(shè)計(jì)階段(3)開發(fā)階段(4)穩(wěn)定階段(5)發(fā)布階段3.微軟過(guò)程模型1.4.8微軟過(guò)程1.微軟過(guò)程準(zhǔn)則31
問(wèn)題定義就是要確定為用戶建立什么樣的軟件系統(tǒng),軟件叫什么樣的名稱等等。“問(wèn)題”是指軟件最基本的問(wèn)題,如:
軟件的總體目標(biāo)什么?有什么用途?
為那些用戶設(shè)計(jì)?
1.5問(wèn)題定義階段問(wèn)題定義就是要確定為用戶建立什么樣的軟件系統(tǒng),軟件叫32問(wèn)題定義報(bào)告的內(nèi)容包括:
1)軟件項(xiàng)目標(biāo)題;
2)軟件目標(biāo);
3)軟件用戶對(duì)象;
4)軟件規(guī)模。問(wèn)題定義報(bào)告的內(nèi)容包括:33
問(wèn)題定義是軟件生命周期中時(shí)間最短的階段,一般都比較簡(jiǎn)單,因此在實(shí)際開發(fā)中它是最容易被忽視的一個(gè)階段。這一階段工作主要由系統(tǒng)分析員來(lái)完成,系統(tǒng)分析員要盡可能從較高的角度概括軟件所要做的工作,而不用寫明問(wèn)題的實(shí)現(xiàn)細(xì)節(jié)。
問(wèn)題定義是軟件生命周期中時(shí)間最短的階段,一般都比較簡(jiǎn)34第2章:可行性研究
可行性研究就是要回答“所定義的問(wèn)題有可行的解決辦法嗎?”??尚行匝芯康哪康氖牵河米钚〉拇鷥r(jià)在盡可能短的時(shí)間內(nèi)確定問(wèn)題是否有解,以及是否值得去解。2.1可行性研究的任務(wù)第2章:可行性研究可行性研究就是要回答“所定義的問(wèn)題35
可行性研究所需的時(shí)間取決于工程的規(guī)模,所需要的成本要占工程總成本的5%~10%??尚行匝芯克璧臅r(shí)間取決于工程的規(guī)模,所需要的成本要36可行性研究的內(nèi)容:1)技術(shù)可行性技術(shù)可行性要分析各種技術(shù)因素,例如:使用現(xiàn)有的技術(shù)能否實(shí)現(xiàn)這個(gè)系統(tǒng)?是否有勝任開發(fā)該項(xiàng)目的熟練技術(shù)人員?能否按期得到開發(fā)該項(xiàng)目所需的軟件、硬件資源?可行性研究的內(nèi)容:372)經(jīng)濟(jì)可行性對(duì)經(jīng)濟(jì)合理性進(jìn)行評(píng)價(jià),所要考慮的問(wèn)題是:
這個(gè)系統(tǒng)的經(jīng)濟(jì)效益能否超過(guò)它的開發(fā)成本?這就需要對(duì)項(xiàng)目進(jìn)行價(jià)格/利益分析,即“投入/產(chǎn)出”分析。由于利益分析取決于軟件系統(tǒng)的特點(diǎn),因此在軟件開發(fā)之前,很難對(duì)新系統(tǒng)產(chǎn)生的效益作出精確的定量描述,所以往往采用一些估算方法。2)經(jīng)濟(jì)可行性383)操作可行性操作可行性評(píng)價(jià)系統(tǒng)運(yùn)行后會(huì)引起的各方面變化,如:對(duì)組織機(jī)構(gòu)管理模式、用戶工作環(huán)境等產(chǎn)生的影響。3)操作可行性394)社會(huì)可行性社會(huì)可行性主要討論法律方面和使用方面的可行性。例如,被開發(fā)軟件的權(quán)利歸屬問(wèn)題、軟件所使用的技術(shù)是否會(huì)造成侵權(quán)等問(wèn)題。4)社會(huì)可行性402.2可行性研究的步驟1)復(fù)查系統(tǒng)規(guī)模和目標(biāo);2)研究目前正在使用的系統(tǒng);3)導(dǎo)出新系統(tǒng)的高層邏輯模型(數(shù)據(jù)流圖、數(shù)據(jù)字典);4)重新定義問(wèn)題;
2.2可行性研究的步驟1)復(fù)查系統(tǒng)規(guī)模和目標(biāo);415)導(dǎo)出和評(píng)價(jià)供選擇的解法(物理解決方案);6)推薦行動(dòng)方案;7)草擬開發(fā)計(jì)劃;8)書寫文檔提交審查。
2.2可行性研究的步驟5)導(dǎo)出和評(píng)價(jià)供選擇的解法(物理解決方案);2.2可行性422.3系統(tǒng)流程圖(描繪物理系統(tǒng)的工具)2.3.1符號(hào)
符號(hào)名稱說(shuō)明處理如:程序,處理機(jī),人工加工輸入/輸出連接換頁(yè)連接數(shù)據(jù)流表示輸入或輸出同一頁(yè)上圖的連接不同頁(yè)上圖的連接指明數(shù)據(jù)流動(dòng)方向圖2.1基本符號(hào)2.3系統(tǒng)流程圖(描繪物理系統(tǒng)的工具)2.3.1符號(hào)43符號(hào)名稱說(shuō)明穿孔卡片文檔磁帶聯(lián)機(jī)存儲(chǔ)磁盤磁鼓顯示人工輸入人工操作輔助操作通信鏈路穿孔卡片輸入/輸出,或穿孔卡片文件打印輸出,或打印終端輸入數(shù)據(jù)磁帶輸入/輸出,或表示磁帶文件任何種類磁盤存儲(chǔ),如磁盤、磁鼓等磁盤輸入/輸出,或磁盤上文件、數(shù)據(jù)庫(kù)磁鼓輸入/輸出,或磁鼓上文件、數(shù)據(jù)庫(kù)顯示器部件人工輸入數(shù)據(jù),如填寫表格人工完成的處理使用輔助設(shè)備進(jìn)行的脫機(jī)操作通過(guò)遠(yuǎn)程通信線路傳送數(shù)據(jù)圖2.2系統(tǒng)符號(hào)符號(hào)名稱說(shuō)明穿孔卡片文檔磁帶聯(lián)機(jī)存儲(chǔ)磁盤磁鼓顯示人工輸入人工442.3.2例子
事務(wù)庫(kù)存清單程序報(bào)告生成程序定貨信息定貨報(bào)告庫(kù)存清單主文件圖2.3庫(kù)存清單系統(tǒng)的系統(tǒng)流程圖2.3.2例子事務(wù)庫(kù)存清單程序報(bào)告生成程序定貨信息定貨452.4數(shù)據(jù)流圖(描繪數(shù)據(jù)在系統(tǒng)中流動(dòng)的邏輯過(guò)程)2.4.1符號(hào)
或或或數(shù)據(jù)源點(diǎn)或終點(diǎn)變換數(shù)據(jù)的處理數(shù)據(jù)存儲(chǔ)數(shù)據(jù)流圖2.4基本符號(hào)的含義2.4數(shù)據(jù)流圖(描繪數(shù)據(jù)在系統(tǒng)中流動(dòng)的邏輯過(guò)程)2.4.46TABC*TABC*附加符號(hào)TABC+TABC+TABC*TABC*附加符號(hào)TABC+TABC+47注意:“處理”可表示:?jiǎn)蝹€(gè)程序、一系列程序、程序的一個(gè)模塊、人工處理過(guò)程等等;“數(shù)據(jù)存儲(chǔ)”可表示:一個(gè)文件、文件的一部分、數(shù)據(jù)庫(kù)記錄等等;數(shù)據(jù)流圖忽略出錯(cuò)處理、打開文件、關(guān)閉文件。注意:482.4.2繪制數(shù)據(jù)流圖的例子
事務(wù)庫(kù)存清單程序報(bào)告生成程序定貨信息定貨報(bào)告庫(kù)存清單主文件圖2.3庫(kù)存清單系統(tǒng)的系統(tǒng)流程圖2.4.2繪制數(shù)據(jù)流圖的例子事務(wù)庫(kù)存清單程序報(bào)告生成程序492.4.2繪制數(shù)據(jù)流圖的例子
倉(cāng)庫(kù)管理員采購(gòu)員定貨系統(tǒng)事務(wù)定貨報(bào)表圖2.5定貨系統(tǒng)的基本系統(tǒng)模型2.4.2繪制數(shù)據(jù)流圖的例子倉(cāng)庫(kù)定貨系統(tǒng)事務(wù)定貨報(bào)表圖2502.4.2繪制數(shù)據(jù)流圖的例子庫(kù)存清單倉(cāng)庫(kù)管理員采購(gòu)員事務(wù)定貨報(bào)表圖2.6定貨系統(tǒng)的功能級(jí)數(shù)據(jù)流圖處理事務(wù)1產(chǎn)生報(bào)表2D1庫(kù)存清單D2定貨信息定貨信息定貨信息2.4.2繪制數(shù)據(jù)流圖的例子庫(kù)存清單倉(cāng)庫(kù)事務(wù)定貨報(bào)表圖51組成該例子的數(shù)據(jù)流圖的元素源點(diǎn)/終點(diǎn)處理
采購(gòu)員倉(cāng)庫(kù)管理員
產(chǎn)生報(bào)表處理事務(wù)數(shù)據(jù)流數(shù)據(jù)存儲(chǔ)
訂貨報(bào)表零件編號(hào)零件名稱訂貨數(shù)量目前價(jià)格主要供應(yīng)商次要供應(yīng)商事務(wù)零件編號(hào)事務(wù)類型數(shù)量
訂貨信息(見(jiàn)訂貨報(bào)表)庫(kù)存清單零件編號(hào)庫(kù)存量庫(kù)存量臨界值組成該例子的數(shù)據(jù)流圖的元素源點(diǎn)/終點(diǎn)處理采購(gòu)員產(chǎn)生報(bào)52
上述數(shù)據(jù)流圖所描述的功能夠詳細(xì)了嗎?上述數(shù)據(jù)流圖所描述的功能夠詳細(xì)了嗎?532.4.2繪制數(shù)據(jù)流圖的例子倉(cāng)庫(kù)管理員采購(gòu)員事務(wù)定貨報(bào)表圖2.7定貨系統(tǒng)進(jìn)一步分解后的數(shù)據(jù)流圖更新庫(kù)存清單1.2產(chǎn)生報(bào)表2D1庫(kù)存清單D2定貨信息接收事務(wù)1.1處理定貨1.3庫(kù)存清單定貨信息定貨信息2.4.2繪制數(shù)據(jù)流圖的例子倉(cāng)庫(kù)事務(wù)定貨報(bào)表圖2.7定541)為數(shù)據(jù)流(或數(shù)據(jù)存儲(chǔ))命名A.名字應(yīng)該代表整個(gè)數(shù)據(jù)流(或數(shù)據(jù)存儲(chǔ))的內(nèi)容;B.不要使用空洞的、缺乏具體含義的名字(如“數(shù)據(jù)”、“輸入”);
2.4.3命名1)為數(shù)據(jù)流(或數(shù)據(jù)存儲(chǔ))命名2.4.3命名55C.如果為某個(gè)數(shù)據(jù)流(或數(shù)據(jù)存儲(chǔ))起名字時(shí)遇到困難,則很可能是因?yàn)閷?duì)數(shù)據(jù)流圖的分解不恰當(dāng)造成的,應(yīng)該試試重新分解數(shù)據(jù)流圖;
C.如果為某個(gè)數(shù)據(jù)流(或數(shù)據(jù)存儲(chǔ))起名字時(shí)遇到困難,562)為處理命名A.通常先為數(shù)據(jù)流命名,然后再為與之相關(guān)聯(lián)的處理命名;B.名字應(yīng)該反映整個(gè)處理的功能;C.應(yīng)該盡量避免空洞籠統(tǒng)的動(dòng)詞做名字,如“處理”、“加工”;
2)為處理命名57D.通常用一個(gè)動(dòng)詞命名,如果必須用兩個(gè)動(dòng)詞才能描述整個(gè)處理的功能,則可能要把這個(gè)處理分解成兩個(gè)處理更恰當(dāng);E.如果在為某個(gè)處理命名時(shí)遇到困難,則很可能是發(fā)現(xiàn)了分解不當(dāng)?shù)那闆r,應(yīng)考慮重新分解。D.通常用一個(gè)動(dòng)詞命名,如果必須用兩個(gè)動(dòng)詞才能描述整58通常,為“數(shù)據(jù)源點(diǎn)/終點(diǎn)”命名時(shí),采用它們?cè)趩?wèn)題域中習(xí)慣使用的名字(如“倉(cāng)庫(kù)管理員”、“采購(gòu)員”)。通常,為“數(shù)據(jù)源點(diǎn)/終點(diǎn)”命名時(shí),采用它們?cè)趩?wèn)題域中591)利用它作為交流信息的工具;2)作為軟件分析和設(shè)計(jì)的工具。2.4.4數(shù)據(jù)流圖的用途
1)利用它作為交流信息的工具;2.4.4數(shù)據(jù)流圖的用途602.4.4數(shù)據(jù)流圖的用途倉(cāng)庫(kù)管理員采購(gòu)員事務(wù)定貨報(bào)表圖2.8這種自動(dòng)化邊界建議以聯(lián)機(jī)方式更新庫(kù)存清單更新庫(kù)存清單1.2產(chǎn)生報(bào)表2D1庫(kù)存清單D2定貨信息接收事務(wù)1.1處理定貨1.3庫(kù)存清單定貨信息定貨信息2.4.4數(shù)據(jù)流圖的用途倉(cāng)庫(kù)事務(wù)定貨報(bào)表圖2.8這種61圖2.8對(duì)應(yīng)的物理實(shí)現(xiàn)硬件方案圖2.8對(duì)應(yīng)的物理實(shí)現(xiàn)硬件方案622.4.4數(shù)據(jù)流圖的用途
倉(cāng)庫(kù)管理員采購(gòu)員事務(wù)定貨報(bào)表圖2.9這種自動(dòng)化邊界暗示以批量方式更新庫(kù)存清單更新庫(kù)存清單1.2產(chǎn)生報(bào)表2D1庫(kù)存清單D2定貨信息接收事務(wù)1.1處理定貨1.3庫(kù)存清單定貨信息定貨信息D3事務(wù)2.4.4數(shù)據(jù)流圖的用途倉(cāng)庫(kù)事務(wù)定貨報(bào)表圖2.9這63圖2.9對(duì)應(yīng)的物理實(shí)現(xiàn)硬件方案圖2.9對(duì)應(yīng)的物理實(shí)現(xiàn)硬件方案64
數(shù)據(jù)字典:對(duì)數(shù)據(jù)流圖中包含的所有元素的定義的集合;可行性研究階段,數(shù)據(jù)流圖與數(shù)據(jù)字典共同構(gòu)成系統(tǒng)的邏輯模型。2.5數(shù)據(jù)字典
數(shù)據(jù)字典:對(duì)數(shù)據(jù)流圖中包含的所有元素的定義的集合;2652.5.1數(shù)據(jù)字典的內(nèi)容數(shù)據(jù)字典應(yīng)該對(duì)下列元素進(jìn)行定義:
1)數(shù)據(jù)流;
2)數(shù)據(jù)元素(數(shù)據(jù)流分量);
3)數(shù)據(jù)存儲(chǔ);
4)處理。
2.5.1數(shù)據(jù)字典的內(nèi)容661)數(shù)據(jù)元素字典定義其定義的基本內(nèi)容有:A.?dāng)?shù)據(jù)元素編號(hào)、名稱及其含義;B.?dāng)?shù)據(jù)類型和長(zhǎng)度;C.合理取值;D.其他內(nèi)容,如它與其它數(shù)據(jù)的邏輯關(guān)系等。2.5.2定義數(shù)據(jù)的方法1)數(shù)據(jù)元素字典定義2.5.2定義數(shù)據(jù)的方法67數(shù)據(jù)元素字典定義實(shí)例:數(shù)據(jù)元素編號(hào):DC001數(shù)據(jù)元素名稱:考試成績(jī)別名:成績(jī)、分?jǐn)?shù)簡(jiǎn)述:學(xué)生考試成績(jī),分五個(gè)等級(jí)類型/長(zhǎng)度:兩個(gè)字節(jié),字符類型取值/含義:優(yōu)[90-100]良[80-89]中[70-79]及格[60-69]不及格[0-59]有關(guān)數(shù)據(jù)項(xiàng)或結(jié)構(gòu):學(xué)生成績(jī)檔案有關(guān)處理邏輯:計(jì)算成績(jī)
圖2.10數(shù)據(jù)元素字典定義數(shù)據(jù)元素字典定義實(shí)例:數(shù)據(jù)元素編號(hào):DC001圖2.1682)數(shù)據(jù)流字典定義其定義的基本內(nèi)容有:A.?dāng)?shù)據(jù)流編號(hào)及名稱;B.?dāng)?shù)據(jù)流來(lái)源;C.?dāng)?shù)據(jù)流去處;D.?dāng)?shù)據(jù)流的組成;E.流通量;F.峰值。2)數(shù)據(jù)流字典定義69數(shù)據(jù)流字典定義實(shí)例:數(shù)據(jù)流編號(hào):DF001數(shù)據(jù)流名稱:訂票單簡(jiǎn)述:訂票時(shí)填寫的訂票單數(shù)據(jù)流來(lái)源:外部實(shí)體“乘客”數(shù)據(jù)流去處:處理邏輯“預(yù)訂機(jī)票”數(shù)據(jù)流組成:訂單編號(hào)日期乘客號(hào)航班號(hào)狀態(tài)訂單失效日期流通量:每天300份高峰值流通量:每天早上9:00,約160份圖2.11數(shù)據(jù)流字典定義數(shù)據(jù)流字典定義實(shí)例:數(shù)據(jù)流編號(hào):DF001圖2.11數(shù)據(jù)流703)數(shù)據(jù)存儲(chǔ)字典定義其定義的基本內(nèi)容有:A.?dāng)?shù)據(jù)存儲(chǔ)編號(hào)及名稱;B.?dāng)?shù)據(jù)存儲(chǔ)的組成;C.其它要求。3)數(shù)據(jù)存儲(chǔ)字典定義714)數(shù)據(jù)處理字典定義其定義的基本內(nèi)容有:A.?dāng)?shù)據(jù)處理編號(hào)及名稱;B.簡(jiǎn)單描述;C.輸入/輸出;D.功能描述;E.有關(guān)數(shù)據(jù)存儲(chǔ)。4)數(shù)據(jù)處理字典定義72數(shù)據(jù)處理字典定義實(shí)例:數(shù)據(jù)處理編號(hào):DP001數(shù)據(jù)處理名稱:編輯訂票簡(jiǎn)述:接收從終端錄入的訂票單,檢驗(yàn)是否正確輸入:乘客訂單,來(lái)源:外部實(shí)體“乘客”輸出:1.合格訂單,去處:處理邏輯“確定訂票”2.不及格訂單,去處:外部實(shí)體“乘客”功能描述:……(略)圖2.12數(shù)據(jù)處理字典定義數(shù)據(jù)處理字典定義實(shí)例:數(shù)據(jù)處理編號(hào):DP001圖2.12數(shù)735)組成數(shù)據(jù)項(xiàng)的表示方法
=
表示“等價(jià)于”或“定義為”
+
表示“與”
[]與|
表示“或”
{}
表示重復(fù)
()
表示可選項(xiàng)通訊錄={通訊地址}
通訊地址=姓名+郵編+[省|直轄市|自治區(qū)]+[市|縣]+街道+門牌號(hào)+(電話)
5)組成數(shù)據(jù)項(xiàng)的表示方法741.作為分析階段的重要工具;2.數(shù)據(jù)元素的控制信息非常有用;3.有助于開發(fā)數(shù)據(jù)庫(kù)。2.5.3數(shù)據(jù)字典的用途1.作為分析階段的重要工具;2.5.3數(shù)據(jù)字典的用途75實(shí)現(xiàn)數(shù)據(jù)字典:1)程序處理;2)卡片式人工書寫;2.5.4數(shù)據(jù)字典的實(shí)現(xiàn)實(shí)現(xiàn)數(shù)據(jù)字典:2.5.4數(shù)據(jù)字典的實(shí)現(xiàn)762.6成本/效益分析1)代碼行技術(shù)軟件成本
=每行代碼的平均成本×估計(jì)的源代碼總行數(shù)
2.6.1成本估計(jì)2.6成本/效益分析1)代碼行技術(shù)2.6.1成本估計(jì)772)任務(wù)分解技術(shù)
軟件開發(fā)項(xiàng)目分解為若干個(gè)相對(duì)獨(dú)立的任務(wù),分別估計(jì)每個(gè)單獨(dú)任務(wù)的成本:
單獨(dú)任務(wù)成本=任務(wù)所需人力估計(jì)值×每人每月平均工資;
軟件開發(fā)項(xiàng)目總成本估計(jì)=各個(gè)單獨(dú)任務(wù)成本估計(jì)值之和。2)任務(wù)分解技術(shù)78
常用的辦法是按開發(fā)階段劃分任務(wù),典型環(huán)境下各個(gè)開發(fā)階段需要使用的人力百分比大致如下:任務(wù)人力(%)可行性研究需求分析設(shè)計(jì)編碼與單元測(cè)試綜合測(cè)試總計(jì)510252040100常用的辦法是按開發(fā)階段劃分任務(wù),典型環(huán)境下各個(gè)開發(fā)階793)自動(dòng)估計(jì)成本技術(shù)采用自動(dòng)估計(jì)成本的軟件工具估計(jì)。
3)自動(dòng)估計(jì)成本技術(shù)801)Putnam模型1978年P(guān)utnam提出的,一種動(dòng)態(tài)多變量模型:軟件開發(fā)成本估算的經(jīng)驗(yàn)?zāi)P停?)Putnam模型軟件開發(fā)成本估算的經(jīng)驗(yàn)?zāi)P停?1Ck為技術(shù)狀態(tài)常數(shù),它反映“妨礙開發(fā)進(jìn)展的限制”,取值因開發(fā)環(huán)境而異,見(jiàn)下表:Ck的典型值開發(fā)環(huán)境開發(fā)環(huán)境舉例2000差沒(méi)有系統(tǒng)的開發(fā)方法,缺乏文檔和復(fù)審8000好有合適的系統(tǒng)的開發(fā)方法,有充分的文檔和復(fù)審11000優(yōu)有自動(dòng)的開發(fā)工具和技術(shù)Ck為技術(shù)狀態(tài)常數(shù),它反映“妨礙開發(fā)進(jìn)展的限制”,取822)COCOMO模型(constructivecostmodel)
這是由TRW公司開發(fā),Boehm提出的結(jié)構(gòu)化成本估算模型,是一種精確的、易于使用的成本估算方法?;綜OCOMO模型估算工作量和進(jìn)度的公式如下:
工作量:
MM=r×(KDSI)c
(人月)
開發(fā)時(shí)間:
TDKV=a×(MM)b
(月)DSI:源指令條數(shù),不包括注釋,1KDSI=1000DSIMM:開發(fā)工作量(以人月計(jì)),1MM=19人日=152人時(shí)=1/12人年
經(jīng)驗(yàn)常數(shù)r,c,a,b取決于項(xiàng)目的總體類型2)COCOMO模型(constructivecostm83COCOMO模型中,考慮開發(fā)環(huán)境,軟件開發(fā)項(xiàng)目的類型可以分為3種:1)組織型(organic)相對(duì)較小、較簡(jiǎn)單的軟件項(xiàng)目。開發(fā)人員對(duì)開發(fā)目標(biāo)理解比較充分,與軟件系統(tǒng)相關(guān)的工作經(jīng)驗(yàn)豐富,對(duì)軟件的使用環(huán)境很熟悉,受硬件的約束較小,程序的規(guī)模不是很大(<50000行)COCOMO模型中,考慮開發(fā)環(huán)境,軟件開發(fā)項(xiàng)目的類型842)嵌入型(embedded)要求在緊密聯(lián)系的硬件、軟件和操作的限制條件下運(yùn)行,通常與某種復(fù)雜的硬件設(shè)備緊密結(jié)合在一起。對(duì)接口,數(shù)據(jù)結(jié)構(gòu),算法的要求高。軟件規(guī)模任意。如大而復(fù)雜的事務(wù)處理系統(tǒng),大型/超大型操作系統(tǒng),航天用控制系統(tǒng),大型指揮系統(tǒng)等。2)嵌入型(embedded)853)半獨(dú)立型(semidetached)介于上述兩種軟件之間。規(guī)模和復(fù)雜度都屬于中等或更高。最大可達(dá)30萬(wàn)行。3)半獨(dú)立型(semidetached)86COCOMO模型按其詳細(xì)程度可以分為三級(jí):1)基本COCOMO模型是一個(gè)靜態(tài)單變量模型,它用一個(gè)以已估算出來(lái)的原代碼行數(shù)(LOC)為自變量的經(jīng)驗(yàn)函數(shù)計(jì)算軟件開發(fā)工作量。COCOMO模型按其詳細(xì)程度可以分為三級(jí):87基本COCOMO模型通過(guò)統(tǒng)計(jì)63個(gè)歷史項(xiàng)目的歷史數(shù)據(jù),得到如下計(jì)算公式:總體類型工作量所需開發(fā)時(shí)間組織型MM=2.4×(KDSI)1.05TDKV=2.5×(MM)0.38半獨(dú)立型MM=3.0×(KDSI)1.12TDKV=2.5×(MM)0.35嵌入型MM=3.0×(KDSI)1.20TDKV=2.5×(MM)0.32基本COCOMO模型總體類型工作量所需開發(fā)時(shí)間組織型MM=882)中級(jí)COCOMO模型在基本COCOMO模型的基礎(chǔ)上,再用涉及產(chǎn)品、硬件、人員、項(xiàng)目等方面的影響因素調(diào)整工作量的估算。3)詳細(xì)COCOMO模型包括中級(jí)COCOMO模型的所有特性,但更進(jìn)一步考慮了軟件工程中每一步驟(如分析、設(shè)計(jì))的影響。2)中級(jí)COCOMO模型891)貨幣的時(shí)間價(jià)值
假設(shè)年利率為i,如果現(xiàn)在存入P元錢,則n年以后可以得到的錢數(shù)為:
反之,如果n年后能收入F元錢,那么這些錢現(xiàn)在的價(jià)值是:2.6.2成本/效益分析1)貨幣的時(shí)間價(jià)值2.6.2成本/效益分析90例:修改一個(gè)已有的庫(kù)存管理系統(tǒng),估計(jì)需要5000元,系統(tǒng)修改后使用5年,每年可節(jié)省2500元。請(qǐng)進(jìn)行成本/效益分析。例:修改一個(gè)已有的庫(kù)存管理系統(tǒng),估計(jì)需要5000元,91表1:將來(lái)的收入折算成現(xiàn)在值
年將來(lái)值(元)(1+0.12)n現(xiàn)在值(元)累計(jì)的現(xiàn)在值(元)125001.122232.142232.14225001.251992.984225.12325001.401779.456004.57425001.571588.807593.37525001.761418.579011.94表1:將來(lái)的收入折算成現(xiàn)在值年將來(lái)值(元)現(xiàn)在值(元)累計(jì)922)投資回收期第一、第二年回收:4225元
第三年用于回收投資要:(5000-4225)/1779=0.44年總的投資回收期=2.44年3)純收入9011.94-5000=4011.94(元)2)投資回收期3)純收入934)投資回收率
其中:P是現(xiàn)在的投資額;
Fi是第i年年底的效益(i=1,2,3,…,n);
n是系統(tǒng)的使用壽命(一般假設(shè)n=5);
j是投資回收率。上述修改系統(tǒng)的工程的投資回收率是41%-42%4)投資回收率94第2章小結(jié)
可行性分析報(bào)告說(shuō)明該軟件開發(fā)項(xiàng)目的實(shí)現(xiàn)在技術(shù)上、經(jīng)濟(jì)上和社會(huì)因素上的可行性,評(píng)述為了合理地達(dá)到開發(fā)目標(biāo)可供選擇的各種可能實(shí)施方案,說(shuō)明并論證所選定實(shí)施方案的理由。
項(xiàng)目開發(fā)計(jì)劃為軟件項(xiàng)目實(shí)施方案制訂出具體計(jì)劃,應(yīng)該包括各部分工作的負(fù)責(zé)人員、開發(fā)的進(jìn)度、開發(fā)經(jīng)費(fèi)的預(yù)算、所需的硬件及軟件資源等。第2章小結(jié)
可行性分析報(bào)告95第3章:需求分析3.1.1確定對(duì)系統(tǒng)的綜合要求
1.功能需求
2.性能需求如:相應(yīng)時(shí)間(速度)、主存容量、磁盤容量、安全性、等。3.1需求分析的任務(wù)第3章:需求分析3.1.1確定對(duì)系統(tǒng)的綜合要求3.1963.可靠性和可用性需求4.出錯(cuò)處理需求系統(tǒng)發(fā)現(xiàn)錯(cuò)誤時(shí)采取的行動(dòng),主要在系統(tǒng)關(guān)鍵部分設(shè)置。5.接口需求用戶接口、硬件接口、軟件接口、通信接口、等。6.約束精度、工具和語(yǔ)言、設(shè)計(jì)約束、硬件約束、標(biāo)準(zhǔn),等。7.逆向需求8.將來(lái)可能提出的要求3.可靠性和可用性需求973.1.3導(dǎo)出系統(tǒng)的邏輯模型包括完善的數(shù)據(jù)流圖、實(shí)體-聯(lián)系圖、狀態(tài)轉(zhuǎn)換圖、數(shù)據(jù)字典、主要的處理算法(IPO圖)等。3.1.2分析系統(tǒng)的數(shù)據(jù)要求通過(guò)建立數(shù)據(jù)模型來(lái)分析,如數(shù)據(jù)字典、層次方框圖、Warnier圖,并將數(shù)據(jù)結(jié)構(gòu)規(guī)范化。3.1.4修正系統(tǒng)開發(fā)計(jì)劃修訂前期制定的開發(fā)進(jìn)度計(jì)劃、等。3.1.3導(dǎo)出系統(tǒng)的邏輯模型3.1.2分析系統(tǒng)的數(shù)據(jù)要求983.2與用戶溝通獲取需求的方法3.2.1訪談?wù)皆L談:系統(tǒng)分析員提出事先準(zhǔn)備好的問(wèn)題。非正式訪談:提出一些用戶可以自由回答的開放性問(wèn)題,鼓勵(lì)被訪者說(shuō)出自己的想法。需要訪問(wèn)大量人員時(shí),利用調(diào)查表訪問(wèn)較佳。3.2與用戶溝通獲取需求的方法3.2.1訪談?wù)皆L993.2.2面向數(shù)據(jù)流自頂向下求精分析追蹤數(shù)據(jù)流圖用戶復(fù)查細(xì)化數(shù)據(jù)流圖有補(bǔ)充修正無(wú)補(bǔ)充修正需要分解不需分解圖3.1需求分析基本過(guò)程借助數(shù)據(jù)流圖、數(shù)據(jù)字典、IPO圖等,細(xì)化、完善詳細(xì)的數(shù)據(jù)流圖,等到各處理環(huán)節(jié)對(duì)應(yīng)的功能。3.2.2面向數(shù)據(jù)流自頂向下求精分析追蹤數(shù)據(jù)流圖用戶復(fù)查100倉(cāng)庫(kù)管理員采購(gòu)員事務(wù)定貨報(bào)表定貨系統(tǒng)數(shù)據(jù)流圖更新庫(kù)存清單1.2產(chǎn)生報(bào)表2D1庫(kù)存清單D2定貨信息接收事務(wù)1.1處理定貨1.3庫(kù)存清單定貨信息定貨信息例:分析銷售趨勢(shì)統(tǒng)計(jì)功能倉(cāng)庫(kù)事務(wù)定貨報(bào)表定貨系統(tǒng)數(shù)據(jù)流圖1.22D1庫(kù)存清單D2定貨1013.2.3簡(jiǎn)易的應(yīng)用規(guī)格說(shuō)明技術(shù)面向團(tuán)隊(duì)的需求收集法:(用戶與開發(fā)者配合)1)初步訪談;2)開發(fā)者和用戶分別寫出“產(chǎn)品需求”;3)開會(huì)討論,各自展示需求列表;4)得出一致意見(jiàn),為需求列表制定小型規(guī)格說(shuō)明;5)根據(jù)會(huì)議成果,起草完整的軟件需求規(guī)格說(shuō)明。3.2.3簡(jiǎn)易的應(yīng)用規(guī)格說(shuō)明技術(shù)面向團(tuán)隊(duì)的需求收集法:1023.2.4快速建立軟件原型
快速建立能演示目標(biāo)系統(tǒng)主要功能的程序。(1)第四代技術(shù)(2)可重用的軟件構(gòu)件(3)形式化規(guī)格說(shuō)明和原型環(huán)境3.2.4快速建立軟件原型快速建立能演示目標(biāo)系統(tǒng)主要功能1033.3分析建模與規(guī)格說(shuō)明3.3.1分析建模為了開發(fā)復(fù)雜的系統(tǒng),應(yīng)從不同角度(模型)抽象出目標(biāo)系統(tǒng)的特性(數(shù)據(jù)模型、功能模型、行為模型)。1)實(shí)體聯(lián)系圖:建立數(shù)據(jù)模型,描述數(shù)據(jù)對(duì)象及數(shù)據(jù)對(duì)象之間的關(guān)系;2)數(shù)據(jù)流圖:建立功能模型的基礎(chǔ);3)狀態(tài)轉(zhuǎn)換圖:描繪系統(tǒng)的狀態(tài)和狀態(tài)間轉(zhuǎn)換的方式。3.3.2軟件需求規(guī)格說(shuō)明3.3分析建模與規(guī)格說(shuō)明3.3.1分析建模3.3.2軟1043.4實(shí)體-聯(lián)系圖
數(shù)據(jù)對(duì)象可以是外部實(shí)體、事物、行為、事件、角色、單位、地點(diǎn)、結(jié)構(gòu)等。數(shù)據(jù)對(duì)象3.4.1數(shù)據(jù)對(duì)象3.4實(shí)體-聯(lián)系圖數(shù)據(jù)對(duì)象可以是外部實(shí)體、事物、1053.4.2屬性屬性定義了數(shù)據(jù)對(duì)象的性質(zhì)。屬性3.4.2屬性屬性1063.4.3聯(lián)系(1)一對(duì)一聯(lián)系(1:1)(2)一對(duì)多聯(lián)系(1:N)(3)多對(duì)多聯(lián)系(M:N)在ER圖中,用菱形框表示聯(lián)系。
聯(lián)系3.4.3聯(lián)系聯(lián)系107教師學(xué)生課程學(xué)號(hào)姓名系年級(jí)職務(wù)性別職稱性別姓名教工號(hào)教學(xué)成績(jī)學(xué)分學(xué)時(shí)課名課程號(hào)圖3.2某校教學(xué)管理ER圖MN1N例子:教師學(xué)生課程學(xué)號(hào)姓名系年級(jí)職務(wù)性別職稱性別姓名教工號(hào)教學(xué)成績(jī)108通常用范式定義消除數(shù)據(jù)冗余的程度。
1)第一范式
2)第二范式
3)第三范式3.5數(shù)據(jù)規(guī)范化通常用范式定義消除數(shù)據(jù)冗余的程度。3.5數(shù)據(jù)規(guī)范化1093.6狀態(tài)轉(zhuǎn)換圖3.6.1狀態(tài)狀態(tài)是任何可以被觀察到的系統(tǒng)行為模式,一個(gè)狀態(tài)代表系統(tǒng)的一種行為模式。3.6.2事件事件是某個(gè)特定時(shí)刻發(fā)生的事情,它是引起系統(tǒng)做動(dòng)作或狀態(tài)轉(zhuǎn)換的控制信息。3.6狀態(tài)轉(zhuǎn)換圖3.6.1狀態(tài)1103.6.3符號(hào)3.6.3符號(hào)1113.6.4例子3.6.4例子1123.7其他圖形工具
層次方框圖用樹形結(jié)構(gòu)的一系列多層次的矩形框描繪數(shù)據(jù)的層次結(jié)構(gòu)。
產(chǎn)品硬件軟件服務(wù)處理機(jī)存儲(chǔ)器外部設(shè)備系統(tǒng)軟件應(yīng)用軟件軟件服務(wù)硬件維修培訓(xùn)編譯程序軟件工具操作系統(tǒng)圖3.5層次方框圖的一個(gè)例子3.7.1層次方框圖3.7其他圖形工具層次方框圖用樹形結(jié)構(gòu)的一系列多層次113Warnier圖也用樹形結(jié)構(gòu)描繪信息,但是這種圖形工具比層次方框圖提供了更豐富的描繪手段。
軟件產(chǎn)品軟件工具編輯程序(P3)應(yīng)用軟件編譯程序(P2)操作系統(tǒng)(P1)系統(tǒng)軟件測(cè)試驅(qū)動(dòng)程序(P4)設(shè)計(jì)輔助工具(P5)⊕圖3.4Warnier圖的一個(gè)例子3.7.2Warnier圖Warnier圖也用樹形結(jié)構(gòu)描繪信息,但是這種圖形工114IPO圖是輸入/處理/輸出圖。舊的主文件事務(wù)文件1.校驗(yàn)主記錄2.校驗(yàn)事務(wù)記錄3.更新主記錄有效的主記錄有效的事務(wù)記錄更新后的主文件輸入處理輸出圖3.7IPO圖的一個(gè)例子3.7.3IPO圖IPO圖是輸入/處理/輸出圖。舊的主文件1.校驗(yàn)主記錄有效115IPO表系統(tǒng):模塊:編號(hào):作者:日期:被調(diào)用:調(diào)用:輸入:輸出:處理:局部數(shù)據(jù)元素:注釋:圖3.8改進(jìn)的IPO圖的形式IPO表系統(tǒng):模塊:編號(hào):作者:日期:被調(diào)用:調(diào)用:輸入:輸1163.8驗(yàn)證軟件需求1)一致性2)完整性3)現(xiàn)實(shí)性4)有效性3.8.1驗(yàn)證軟件需求的正確性3.8驗(yàn)證軟件需求1)一致性3.8.1驗(yàn)證軟件需求的1171)驗(yàn)證需求的一致性2)驗(yàn)證需求的現(xiàn)實(shí)性3)驗(yàn)證需求的完整性和有效性
3.8.2驗(yàn)證軟件需求的方法1)驗(yàn)證需求的一致性3.8.2驗(yàn)證軟件需求的方法118用于需求分析的軟件應(yīng)該滿足下列要求:
1)必須有形式化的語(yǔ)法
2)使用這個(gè)軟件工具能夠?qū)С鲈敿?xì)的文檔
3)必須提供分析規(guī)格說(shuō)明書的不一致性和冗余性的手段
4)使用這個(gè)軟件工具后,應(yīng)該能夠改進(jìn)通信狀況3.8.3用于需求分析的軟件工具用于需求分析的軟件應(yīng)該滿足下列要求:3.8.3用于需求分119
RSL(需求陳述語(yǔ)言):信息集ASSMPASCAL模擬程序
PSL/PSA(問(wèn)題陳述語(yǔ)言/問(wèn)題陳述分析程序)系統(tǒng)
RSL(需求陳述語(yǔ)言):信息集ASSM120第3章小結(jié)
軟件需求說(shuō)明書(軟件規(guī)格說(shuō)明書)
對(duì)所開發(fā)軟件的功能、性能、用戶界面及運(yùn)行環(huán)境等作出詳細(xì)的說(shuō)明。它是在用戶與開發(fā)人員雙方對(duì)軟件需求取得共同理解并達(dá)成協(xié)議的條件下編寫的,也是實(shí)施開發(fā)工作的基礎(chǔ)。該說(shuō)明書應(yīng)給出數(shù)據(jù)邏輯和數(shù)據(jù)采集的各項(xiàng)要求,為生成和維護(hù)系統(tǒng)數(shù)據(jù)文件做好準(zhǔn)備。第3章小結(jié)
軟件需求說(shuō)明書(軟件規(guī)格說(shuō)明書)121第4章:形式化說(shuō)明技術(shù)1.非形式化方法:自然語(yǔ)言描述2.半形式化方法:數(shù)據(jù)流圖或?qū)嶓w-聯(lián)系圖3.形式化方法:基于數(shù)學(xué)技術(shù)描述第4章:形式化說(shuō)明技術(shù)1.非形式化方法:自然語(yǔ)言描述1224.1概述4.1.1非形式化方法的缺點(diǎn)自然語(yǔ)言書寫的系統(tǒng)規(guī)格說(shuō)明書可能存在:
1)矛盾;2)二義性;如:“操作員標(biāo)識(shí)由操作員姓名和密碼組成,密碼由6位數(shù)字構(gòu)成,當(dāng)操作員登陸系統(tǒng)時(shí)它被存儲(chǔ)在注冊(cè)文件中。”3)含糊性;
4)不完整性;
5)抽象層次混亂。4.1概述4.1.1非形式化方法的缺點(diǎn)1234.1.2形式化方法的優(yōu)點(diǎn)(1)數(shù)學(xué)是理想的建模工具,適合于表示系統(tǒng)狀態(tài)和描述系統(tǒng)需求;(2)用數(shù)學(xué)表達(dá)的需求可在不同開發(fā)階段平滑過(guò)渡。4.1.3應(yīng)用形式化方法的準(zhǔn)則(1)選擇合適的形式化方法;(2)需要形式化,但不能過(guò)渡形式化,不能放棄傳統(tǒng)的需求表達(dá)方法;(3)應(yīng)該有形式化方法的專家提供指導(dǎo)。4.1.2形式化方法的優(yōu)點(diǎn)4.1.3應(yīng)用形式化方法的1244.2有窮狀態(tài)機(jī)法(FSM)4.2.1概念鎖的三個(gè)位置:1、2、3;轉(zhuǎn)盤可向左(L)或右(R);鎖密碼:1L、3R、2L4.2有窮狀態(tài)機(jī)法(FSM)4.2.1概念鎖的三個(gè)位125軟件工程完整教程課件126一個(gè)有窮狀態(tài)機(jī)包括5部分:
1)狀態(tài)集J:{保險(xiǎn)箱鎖定,A,B,保險(xiǎn)箱解鎖,報(bào)警}2)輸入集K:{1L,1R,2L,2R,3L,3R}3)轉(zhuǎn)換函數(shù)T,如表4.14)初始狀態(tài)S:保險(xiǎn)箱鎖定5)終態(tài)集F:{保險(xiǎn)箱解鎖,報(bào)警}更形式化的術(shù)語(yǔ):一個(gè)有窮狀態(tài)機(jī)可表示一個(gè)為5元組(J,K,T,S,F)一個(gè)有窮狀態(tài)機(jī)包括5部分:127狀態(tài)轉(zhuǎn)換形式:當(dāng)前狀態(tài)【菜單】+事件【所選擇的項(xiàng)】=>下個(gè)狀態(tài)加入謂詞集P,把系統(tǒng)擴(kuò)展成一個(gè)6元組后:當(dāng)前狀態(tài)【菜單】+事件【所選擇的項(xiàng)】+謂詞=>下個(gè)狀態(tài)計(jì)算機(jī)系統(tǒng)中每個(gè)菜單驅(qū)動(dòng)的用戶界面都是一個(gè)有窮狀態(tài)機(jī)的實(shí)現(xiàn)。狀態(tài)轉(zhuǎn)換形式:計(jì)算機(jī)系統(tǒng)中每個(gè)菜單驅(qū)動(dòng)的用戶界面都是128定義狀態(tài):(1)M(d,e,f):電梯e正沿d方向移動(dòng),即將到達(dá)第f層樓。(2)S(d,e,f):電梯e停在f層樓,將朝d方向移動(dòng)(未關(guān)門)。(3)W(e,f):電梯e在f層等待(已關(guān)門)。(4)DC(e,f):電梯e在樓層f關(guān)上門。(5)ST(e,f):電梯e靠近f層時(shí)觸發(fā)傳感器,電梯控制器決定在當(dāng)前樓層是否停下。(6)RL:電梯按鈕或樓層按鈕被按下進(jìn)入打開狀態(tài)4.2.2例子:電梯的狀態(tài)轉(zhuǎn)換定義狀態(tài):4.2.2例子:電梯的狀態(tài)轉(zhuǎn)換129電梯狀態(tài)轉(zhuǎn)換規(guī)則:①S(U,e,f)+DC(e,f)=>M(U,e,f+1);②S(D,e,f)+DC(e,f)=>M(D,e,f-1);③S(N,e,f)+DC(e,f)=>W(e,f)電梯狀態(tài)轉(zhuǎn)換規(guī)則:①S(U,e,f)+DC(e,f)=>M(1304.2.3評(píng)價(jià)有窮狀態(tài)機(jī)描述規(guī)格說(shuō)明:
當(dāng)前狀態(tài)+事件+謂詞=>下個(gè)狀態(tài)易于書寫、驗(yàn)證、轉(zhuǎn)變成設(shè)計(jì)或程序代碼。有窮狀態(tài)機(jī)方法比數(shù)據(jù)流圖技術(shù)更精確,一樣易于理解。但不能處理定時(shí)需求。4.2.3評(píng)價(jià)有窮狀態(tài)機(jī)方法比數(shù)據(jù)流圖技術(shù)更精確,一樣易1314.3Petri網(wǎng)4.3.1概念4.3Petri網(wǎng)4.3.1概念132Petri網(wǎng)包含4種元素:1)一組位置P,上例P={P1,P2,P3,P4}2)一組轉(zhuǎn)換T,上例T={t1,t2}3)輸入函數(shù)I,上例I(t1)={P2,P4}
I(t2)={P2}4)輸出函數(shù)O,上例O(t1)={P1}O(t2)={P3,P3}更形式化的Petri網(wǎng)結(jié)構(gòu),是一個(gè)4元組(P,T,I,O)Petri網(wǎng)包含4種元素:133權(quán)標(biāo)向量(1,2,0,1)權(quán)標(biāo)向量(1,2,0,1)134權(quán)標(biāo)向量(2,1,0,0)權(quán)標(biāo)向量(2,1,0,0)135權(quán)標(biāo)向量(2,0,2,0)權(quán)標(biāo)向量(2,0,2,0)136更形式化地:標(biāo)記M:P->{0,1,2,…}Petri網(wǎng)成為一個(gè)5元組(P,T,I,O,M)更形式化地:137對(duì)Petri網(wǎng)的一個(gè)重要擴(kuò)充是加入禁止線:對(duì)Petri網(wǎng)的一個(gè)重要擴(kuò)充是加入禁止線:1384.3.2例子1.電梯按鈕EBf
電梯中樓層f的按鈕;Fg
樓層g;Ff
樓層f。4.3.2例子EBf電梯中樓層f的按鈕;Fg樓層1392.樓層按鈕FBfu
第f樓層向上按鈕;FBfd
第f樓層向下按鈕;2.樓層按鈕FBfu第f樓層向上按鈕;FBfd140小結(jié)基于數(shù)學(xué)的形式化說(shuō)明技術(shù),目前還沒(méi)有在軟件產(chǎn)業(yè)界廣泛應(yīng)用;應(yīng)該把形式化方法與傳統(tǒng)方法有機(jī)結(jié)合。小結(jié)141第5章:總體設(shè)計(jì)5.1設(shè)計(jì)過(guò)程
1.設(shè)想供選擇的方案
2.選擇合理的方案對(duì)每個(gè)合理的方案要提供:
A.系統(tǒng)流程圖
B.組成系統(tǒng)的物理元素清單
C.成本/效益分析
D.實(shí)現(xiàn)這個(gè)系統(tǒng)的進(jìn)度計(jì)劃第5章:總體設(shè)計(jì)5.1設(shè)計(jì)過(guò)程1.設(shè)想供選擇的方案1423.推薦最佳方案4.功能分解5.設(shè)計(jì)軟件結(jié)構(gòu)6.數(shù)據(jù)庫(kù)設(shè)計(jì)A.模式設(shè)計(jì)B.子模式設(shè)計(jì)C.完整性和安全性設(shè)計(jì)D.優(yōu)化3.推薦最佳方案1437.制定測(cè)試計(jì)劃8.書寫文檔
A.系統(tǒng)說(shuō)明
B.用戶手冊(cè)
C.測(cè)試計(jì)劃
D.詳細(xì)的實(shí)現(xiàn)計(jì)劃
E.?dāng)?shù)據(jù)庫(kù)設(shè)計(jì)結(jié)果9.審查和復(fù)審
7.制定測(cè)試計(jì)劃1445.2設(shè)計(jì)原理如果一個(gè)大型程序僅由一個(gè)模塊組成,很難被人理解。設(shè)函數(shù)C(x)定義問(wèn)題x的復(fù)雜程度,函數(shù)E(x)定義解決問(wèn)題x需要的工作量(時(shí)間)。對(duì)于兩個(gè)問(wèn)題P1和P2,如果:
C(P1)>C(P2)
那么E(P1)>E(P2)根據(jù)解決問(wèn)題的經(jīng)驗(yàn),有一個(gè)規(guī)律是:
C(P1+P2)>C(P1)+C(P2)于是有E(P1+P2)>E(P1)+E(P2)
5.2.1模塊化5.2設(shè)計(jì)原理如果一個(gè)大型程序僅由一個(gè)模塊組成145模塊數(shù)目接口成本成本/模塊軟件總成本M最小成本區(qū)成本圖5.1模塊化與軟件成本模塊數(shù)目接口成本成本/模塊軟件總成本M最小成本區(qū)成本圖5.11465.2.2抽象
5.2.3逐步求精模塊的獨(dú)立性很重要,因?yàn)椋?)有效的模塊化的軟件比較容易開發(fā)出來(lái);2)獨(dú)立的模塊比較容易測(cè)試和維護(hù)。5.2.4信息隱蔽和局部化5.2.5模塊獨(dú)立5.2.2抽象5.2.3逐步求精模塊的獨(dú)立性很重要147一、耦合
耦合:指軟件結(jié)構(gòu)內(nèi)不同模塊彼此之間相互依賴(連接)的緊密程度。模塊獨(dú)立程度可以由兩個(gè)定性標(biāo)準(zhǔn)度量:耦合與內(nèi)聚。一、耦合耦合:指軟件結(jié)構(gòu)內(nèi)不同模塊彼此之間相互依賴148模塊的偶合分四類:1)數(shù)據(jù)耦合兩個(gè)模塊之間只是通過(guò)參數(shù)交換信息,而且交換的信息僅僅是數(shù)據(jù)。數(shù)據(jù)耦合是最低程度的耦合。AB數(shù)據(jù)(1)數(shù)據(jù)耦合模塊的偶合分四類:AB數(shù)據(jù)(1)數(shù)據(jù)耦合1492)控制耦合兩個(gè)模塊之間所交換的信息包含控制信息??刂岂詈鲜侵械瘸潭鹊鸟詈稀D中模塊A的內(nèi)部處理程序判斷是執(zhí)行C還是執(zhí)行D,要取決于模塊B傳來(lái)的信息狀態(tài)(Status)。BACD(2)控制耦合astatus2)控制耦合圖中模塊A的內(nèi)部處理程序判斷是執(zhí)行C還是執(zhí)行1503)公用耦合兩個(gè)或多個(gè)模塊通過(guò)一個(gè)公共區(qū)相互作用時(shí)的耦合。公共區(qū)可以是:全程數(shù)據(jù)區(qū)、共享通信區(qū)、內(nèi)存公共覆蓋區(qū)、任何介質(zhì)上的文件、物理設(shè)備等。軟件結(jié)構(gòu)中存在大量的公用耦合時(shí)會(huì)給診斷錯(cuò)誤帶來(lái)困難。
3)公用耦合151圖中存在公用耦合,假設(shè)模塊A、C、E都存取全程數(shù)據(jù)區(qū)(如公用一個(gè)磁盤文件)中的一個(gè)數(shù)據(jù)項(xiàng)。如果A模塊讀取該項(xiàng)數(shù)據(jù),然后調(diào)用C模塊對(duì)該項(xiàng)重新計(jì)算,并進(jìn)行數(shù)據(jù)更新。ABCDE全程數(shù)據(jù)區(qū)(3)公用耦合圖中存在公用耦合,假設(shè)模塊A、C、E都存取全程數(shù)據(jù)區(qū)(如152如果此時(shí)C模塊錯(cuò)誤地更新了該項(xiàng)數(shù)據(jù),在往下的處理中模塊E讀該數(shù)據(jù)項(xiàng)時(shí)出現(xiàn)錯(cuò)誤。表面上看,問(wèn)題由模塊E產(chǎn)生,實(shí)際上由模塊C引起。ABCDE全程數(shù)據(jù)區(qū)(3)公用耦合如果此時(shí)C模塊錯(cuò)誤地更新了該項(xiàng)數(shù)據(jù),在往下的處理中模塊E1534)內(nèi)容耦合
一個(gè)模塊與另一個(gè)模塊的內(nèi)容直接發(fā)生聯(lián)系。內(nèi)容耦合對(duì)維護(hù)會(huì)帶來(lái)嚴(yán)重的困難。
模塊A…LAB:MOVE1…模塊B…GOTOLAB…內(nèi)容耦合(4)內(nèi)容耦合程序中如果一個(gè)模塊直接把程序轉(zhuǎn)移到另一個(gè)模塊中,或一個(gè)模塊使用另一個(gè)模塊內(nèi)部的數(shù)據(jù),都會(huì)產(chǎn)生內(nèi)容耦合。內(nèi)容耦合是最高程度的耦合,應(yīng)該避免采用。4)內(nèi)容耦合模塊A模塊B內(nèi)容耦合(4)內(nèi)容耦合程序中如果154
軟件設(shè)計(jì)應(yīng)追求盡可能松散耦合,避免強(qiáng)耦合,這樣模塊間的聯(lián)系就越小,模塊的獨(dú)立性就越強(qiáng),對(duì)模塊的測(cè)試、維護(hù)就越容易。因此建議:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公用耦合,完全不用內(nèi)容偶合。
軟件設(shè)計(jì)應(yīng)追求盡可能松散耦合,避免強(qiáng)耦合,這樣模塊間的聯(lián)155二、內(nèi)聚
內(nèi)聚:一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度。它是衡量一個(gè)模塊內(nèi)部組成部分間整體統(tǒng)一性的度量。常見(jiàn)的內(nèi)聚有七類。二、內(nèi)聚內(nèi)聚:一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程1561)功能內(nèi)聚(FunctionalCohesion)如果一個(gè)模塊內(nèi)所有處理元素完成一個(gè),而且僅完成一個(gè)功能,則稱為功能內(nèi)聚。功能內(nèi)聚是最高程度的內(nèi)聚。但在軟件結(jié)構(gòu)中,并不是每個(gè)模塊都能設(shè)計(jì)成一個(gè)功能內(nèi)聚模塊。1)功能內(nèi)聚(FunctionalCohesion)1572)順序內(nèi)聚(SequentialCohesion)如果一個(gè)模塊內(nèi)處理元素和同一個(gè)功能密切相關(guān),而且這些處理元素必須順序執(zhí)行,則稱為順序內(nèi)聚。
2)順序內(nèi)聚(SequentialCohesion)158
如圖,一個(gè)求一元二次方程根的模塊由三個(gè)處理元素組成,該模塊中存在順序內(nèi)聚。通常,順序內(nèi)聚中一個(gè)處理元素的輸出是另一個(gè)處理元素的輸入。
求一元二次方程根模塊1.輸入方程系數(shù)2.求解3.打印方程的解順序內(nèi)聚示例如圖,一個(gè)求一元二次方程根的模塊由三個(gè)處理元素組成,該模1593)通信內(nèi)聚(CommunicationalCohesion)如果一個(gè)模塊中所有處理元素都使用同一個(gè)輸入數(shù)據(jù)和(或)產(chǎn)生同一個(gè)輸出數(shù)據(jù),稱為通信內(nèi)聚。
3)通信內(nèi)聚(CommunicationalCohesio160如圖,模塊A的處理單元將根據(jù)同一個(gè)數(shù)據(jù)文件FILE的數(shù)據(jù)產(chǎn)生不同的表格,因此它存在通信內(nèi)聚。通信內(nèi)聚有時(shí)也稱為數(shù)據(jù)內(nèi)聚。A從文件FILE中讀出數(shù)據(jù)1.由數(shù)據(jù)產(chǎn)生報(bào)表A2.由數(shù)據(jù)產(chǎn)生報(bào)表B通信內(nèi)聚示例如圖,模塊A的處理單元將根據(jù)同一個(gè)數(shù)據(jù)文件FILE的1614)過(guò)程內(nèi)聚(ProceduralCohesion)如果一個(gè)模塊內(nèi)的處理元素是相關(guān)的,而且必須以特定的次序執(zhí)行,稱為過(guò)程內(nèi)聚。過(guò)程內(nèi)聚與順序內(nèi)聚的區(qū)別是:順序內(nèi)聚中是數(shù)據(jù)流從一個(gè)處理單元流到另一個(gè)處理單元,而過(guò)程內(nèi)聚是控制流從一個(gè)動(dòng)作流向另一個(gè)動(dòng)作。
4)過(guò)程內(nèi)聚(ProceduralCohesion)1625)時(shí)間內(nèi)聚(TemporalCohesion)如果一個(gè)模塊包含的任務(wù)必須在同一段時(shí)間內(nèi)執(zhí)行,稱為時(shí)間內(nèi)聚。也稱為瞬時(shí)內(nèi)聚。5)時(shí)間內(nèi)聚(TemporalCohesion)163
例如,完成各種初始化工作的模塊,或者處理故障的模塊都存在時(shí)間內(nèi)聚。如圖,在“緊急故障處理模塊”中,“關(guān)閉文件”、“報(bào)警”、“保留現(xiàn)場(chǎng)”等任務(wù)都必須無(wú)中斷地同時(shí)處理。緊急故障處理模塊1.關(guān)閉文件2.報(bào)警3.保留現(xiàn)場(chǎng)時(shí)間內(nèi)聚示例例如,完成各種初始化工作的模塊,或者處理故障的模塊都1646)邏輯內(nèi)聚(LogicalCohesion)如果模塊完成的任務(wù)在邏輯上屬于相同或相似的一類,稱為邏輯內(nèi)聚。6)邏輯內(nèi)聚(LogicalCohesion)165如圖,A、B、C模塊合并成ABC模塊之后,ABC模塊就是邏輯內(nèi)聚模塊。XYZABCXYZABC合并邏輯內(nèi)聚示例如圖,A、B、C模塊合并成ABC模塊之后,ABC模塊就是166對(duì)邏輯內(nèi)聚模塊的調(diào)用,常常需要有一個(gè)功能開關(guān),由上層調(diào)用模塊向它發(fā)出一個(gè)控制信號(hào),在多個(gè)關(guān)聯(lián)性功能中選擇執(zhí)行某一個(gè)功能。這種內(nèi)聚較差,增加了模塊之間的聯(lián)系,不易修改。對(duì)邏輯內(nèi)聚模塊的調(diào)用,常常需要有一個(gè)功能開關(guān),由上層調(diào)用1677)偶然內(nèi)聚(CoincidentalCohesion)如果一個(gè)模塊由完成若干毫無(wú)關(guān)系的功能處理元素偶然組合在一起的,就叫偶然內(nèi)聚。7)偶然內(nèi)聚(CoincidentalCohesion)168
偶然內(nèi)聚是最差的一種內(nèi)聚。常犯這種錯(cuò)誤的一種情況是:有時(shí)在寫完程序后,發(fā)現(xiàn)一組語(yǔ)句在多處出現(xiàn),于是為了節(jié)省空間而將這些語(yǔ)句作為一個(gè)模塊設(shè)計(jì),就出現(xiàn)偶然內(nèi)聚。偶然內(nèi)聚是最差的一種內(nèi)聚。169如圖,模塊A、B、C出現(xiàn)公共代碼段W,于是將W獨(dú)立成一個(gè)模塊,而W中這些語(yǔ)句并沒(méi)有任何聯(lián)系。如果在測(cè)試中發(fā)現(xiàn)模塊A不需要做“X=Y+Z”,而應(yīng)該做“X=Y*Z”,此時(shí)對(duì)W的維護(hù)就很困難了。ABCW模塊X=Y+ZGETCARDIFI=5THENE=0…偶然內(nèi)聚示例如圖,模塊A、B、C出現(xiàn)公共代碼段W,于是將W獨(dú)立成170
軟件設(shè)計(jì)中應(yīng)該:力求做到高內(nèi)聚,盡量少用中內(nèi)聚,不用低內(nèi)聚。
軟件設(shè)計(jì)中應(yīng)該:力求做到高內(nèi)聚,盡量少用中內(nèi)聚,不用低內(nèi)1715.3啟發(fā)式規(guī)則1.改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性2.模塊規(guī)模應(yīng)該適中3.深度、寬度、扇出和扇入都應(yīng)適當(dāng)
深度:軟件結(jié)構(gòu)中控制的層數(shù);
寬度:軟件結(jié)構(gòu)內(nèi)同一個(gè)層次上的模塊總數(shù)的最大值;
扇出:一個(gè)模塊直接控制(調(diào)用)其它模塊的數(shù)目;
扇入:一個(gè)模塊被其它模塊調(diào)用的數(shù)目。
正文加工系統(tǒng)輸入輸出編輯加標(biāo)題存儲(chǔ)檢索編目錄格式化添加刪除插入修改合并列表5.3啟發(fā)式規(guī)則1.改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性3.172對(duì)扇出、扇入過(guò)大的改進(jìn):
(a)對(duì)扇入過(guò)大的改進(jìn)(b)對(duì)扇出過(guò)大的改進(jìn)對(duì)扇出、扇入過(guò)大的改進(jìn):(a)對(duì)扇入過(guò)大的改進(jìn)(b)對(duì)扇出1734.模塊的作用域應(yīng)該在控制域之內(nèi)
MAGBCEDF圖5.2模塊的作用域和控制域作用域:受該模塊內(nèi)一個(gè)判定影響的所有模塊的集合??刂朴颍耗K本身以及所有從屬于它的模塊的集合。4.模塊的作用域應(yīng)該在控制域之內(nèi)MAGBCEDF圖5.2174如:QUAD-ROOT(TBL,X)求一元二次方程的根的模塊,其中TBL,X都為數(shù)組,分別代表方程的系數(shù)和方程的根。應(yīng)該使接口更簡(jiǎn)單,如:
QUAD-ROOT(A,B,C,ROOT1,ROOT2)
A、B、C是方程的系數(shù),ROOT1,ROOT2是方程的根。5.力爭(zhēng)降低模塊接口的復(fù)雜度如:QUAD-ROOT(TBL,X)5.力爭(zhēng)降低1756.設(shè)計(jì)單入口、單出口的模塊7.模塊功能應(yīng)該可以預(yù)測(cè)6.設(shè)計(jì)單入口、單出口的模塊7.模塊功能應(yīng)該可以預(yù)測(cè)1765.4圖形工具5.4.1層次圖和HIPO圖
正文加工系統(tǒng)輸入輸出編輯加標(biāo)題存儲(chǔ)檢索編目錄格式化添加刪除插入修改合并列表圖5.3正文加工系統(tǒng)的層次圖5.4圖形工具正文加工系統(tǒng)輸入輸出編輯加標(biāo)題存儲(chǔ)檢索編目錄177正文加工系統(tǒng)輸入1.0輸出2.0編輯3.0加標(biāo)題4.0存儲(chǔ)5.0檢索6.0編目錄7.0格式化8.0添加3.1刪除3.2插入3.3修改3.4合并3.5列表3.6圖5.4帶編號(hào)的層次圖(H圖)HIPO圖是:“層次圖+輸入/處理/輸出圖”正文加工系統(tǒng)輸入輸出編輯加標(biāo)題存儲(chǔ)檢索編目錄格式化添加刪除插1785.4.2結(jié)構(gòu)圖產(chǎn)生最佳解得到好輸入計(jì)算最佳解輸出結(jié)果讀輸入編輯輸入結(jié)果格式化顯示結(jié)果圖4.5結(jié)構(gòu)圖的例子—產(chǎn)生最佳解的一般結(jié)構(gòu)5.4.2結(jié)構(gòu)圖產(chǎn)生最佳解得到好輸入計(jì)算最佳解輸出結(jié)果讀179MAB圖5.6判定為真時(shí)調(diào)用A,為假時(shí)調(diào)用BMABC圖5.7模塊M循環(huán)調(diào)用模塊A、B、CMAB圖5.6判定為真時(shí)調(diào)用A,為假時(shí)調(diào)用BMABC圖5.1805.5面向數(shù)據(jù)流的設(shè)計(jì)方法面向數(shù)據(jù)流設(shè)計(jì)(DataFlow-OrientedDesign,DFOD)是與數(shù)據(jù)流分析(DFA)對(duì)應(yīng)的結(jié)構(gòu)化軟件設(shè)計(jì)技術(shù)。面向數(shù)據(jù)流的設(shè)計(jì)將得到以數(shù)據(jù)流圖為基礎(chǔ)的軟件模塊結(jié)構(gòu)圖。
5.5面向數(shù)據(jù)流的設(shè)計(jì)方法面向數(shù)據(jù)流設(shè)計(jì)(Data181數(shù)據(jù)流可以分為兩種類型:
1)變換型數(shù)據(jù)流
2)事務(wù)型數(shù)據(jù)流
5.5.1變換流與事務(wù)流數(shù)據(jù)流可以分為兩種類型:5.5.1變換流與事務(wù)流182一、變換流
具有較明確的輸入、變換(或稱主加工)和輸出界面的數(shù)據(jù)流圖稱為變換型數(shù)據(jù)流圖。如圖所示,該變換中心可以理解為數(shù)據(jù)的加工和處理程序。
讀入原始數(shù)據(jù)校驗(yàn)原始數(shù)據(jù)計(jì)算最優(yōu)結(jié)果編輯打印最優(yōu)結(jié)果輸入變換中心輸出一、變換流讀入原始數(shù)據(jù)校驗(yàn)原始數(shù)據(jù)計(jì)算最優(yōu)結(jié)果編輯打印最優(yōu)結(jié)183
事務(wù)型數(shù)據(jù)流圖中存在一個(gè)事務(wù)中心(也就是數(shù)據(jù)處理、加工中心),它將輸入分離成若干個(gè)發(fā)散的數(shù)據(jù)流,形成許多活動(dòng)路徑,并根據(jù)輸入值選擇其中一條路徑。要求類別處理分房處理調(diào)房處理退房處理住房要求事務(wù)中心活動(dòng)路徑二、事務(wù)流事務(wù)型數(shù)據(jù)流圖中存在一個(gè)事務(wù)中心(也就是數(shù)據(jù)處理、加工中184
通常,一個(gè)實(shí)際系統(tǒng)的數(shù)據(jù)流圖是變換型和事務(wù)型兩種類型的混合體。如圖所示,中間的子塊屬事務(wù)型數(shù)據(jù)流,如果把中間子塊視為一個(gè)處理整體的話,整個(gè)程序?qū)僮儞Q型程序。
A(事務(wù)型,A為事務(wù)中心)變換中心輸入輸出混合型數(shù)據(jù)流圖通常,一個(gè)實(shí)際系統(tǒng)的數(shù)據(jù)流圖是變換型和事務(wù)型兩種類型的混185面向數(shù)據(jù)流設(shè)計(jì)軟件結(jié)構(gòu)的基本步驟有七步:
1)復(fù)審并精化數(shù)據(jù)流圖;
2)確定數(shù)據(jù)處理流圖的類型;
3)確定變換中心或事務(wù)中心;5.5.2面向數(shù)據(jù)流設(shè)計(jì)的步驟面向數(shù)據(jù)流設(shè)計(jì)軟件結(jié)構(gòu)的基本步驟有七步:5.5.2面向數(shù)1864)將數(shù)據(jù)流圖映射成軟件模塊結(jié)構(gòu)圖,設(shè)計(jì)出該數(shù)據(jù)流圖對(duì)應(yīng)的第一層模塊結(jié)構(gòu);5)基于數(shù)據(jù)流圖逐步分解,設(shè)計(jì)下層模塊;6)運(yùn)用模塊設(shè)計(jì)和優(yōu)化準(zhǔn)則優(yōu)化軟件結(jié)構(gòu);7)描述模塊的接口。4)將數(shù)據(jù)流圖映射成軟件模塊結(jié)構(gòu)圖,設(shè)計(jì)出該數(shù)據(jù)流圖對(duì)應(yīng)的第187復(fù)查、精化數(shù)據(jù)流圖類型找出事務(wù)中心找出變換中心映射成事務(wù)結(jié)構(gòu)映射成變換結(jié)構(gòu)優(yōu)化軟件模塊結(jié)構(gòu)導(dǎo)出模塊結(jié)構(gòu)復(fù)查不滿意變換事務(wù)變換設(shè)計(jì)事務(wù)設(shè)計(jì)面向數(shù)據(jù)流的設(shè)計(jì)步驟復(fù)查、精化數(shù)據(jù)流圖類型找出事務(wù)中心找出變換中心映射成事務(wù)結(jié)構(gòu)188
變換設(shè)計(jì)就是從變換型數(shù)據(jù)流圖映射出軟件模塊結(jié)構(gòu)的過(guò)程,也稱以變換為中心的設(shè)計(jì)。
5.5.3變換設(shè)計(jì)變換設(shè)計(jì)就是從變換型數(shù)據(jù)流圖映射出軟件模塊結(jié)構(gòu)的過(guò)程,也189變換設(shè)計(jì)的基本方法有兩步:1)分解第一層模塊結(jié)構(gòu)
就是把整個(gè)變換分解成輸入控制模塊Ci、輸出控制模塊Co和變換中心控制模塊Ct,由主控模塊控制。主控模塊輸出控制模塊Co變換中心控制模塊Ct輸入控制模塊Ci變換設(shè)計(jì)的基本方法有兩步:主控模塊輸出控制模塊Co變換中心控1902)分別設(shè)計(jì)輸入、輸出和處理的下層模塊結(jié)構(gòu)方法是:
從變換中心邊界向兩側(cè)移動(dòng),分別把輸入通路和輸出通路的每個(gè)處理映射成輸入控制模塊Ci和輸出控制模塊Co的下屬模塊。變換中心的下層模塊,是把每個(gè)處理映射成變換中心控制模塊Ct的一個(gè)直接下屬模塊。2)分別設(shè)計(jì)輸入、輸出和處理的下層模塊結(jié)構(gòu)191ABCDFEGHIJK變換中心輸入輸出主控模塊輸出控制模塊Co變換中心控制模塊Ct輸入控制模塊CiDCBAEFGIHJKABCDFEGHIJK變換中心輸入輸出主控模塊輸出控制模塊C192
事務(wù)設(shè)計(jì)就是從事務(wù)型數(shù)據(jù)流圖映射出軟件模塊結(jié)構(gòu)的過(guò)程,也稱為以事務(wù)為中心的設(shè)計(jì)。5.5.4事務(wù)設(shè)計(jì)事務(wù)設(shè)計(jì)就是從事務(wù)型數(shù)據(jù)流圖映射出軟件模塊結(jié)構(gòu)的過(guò)程193事務(wù)設(shè)計(jì)的基本方法有兩步:
1)建立主控模塊、接收輸入類型分析模塊和事務(wù)調(diào)度模塊;主模塊調(diào)度輸入類型分析事務(wù)設(shè)計(jì)的基本方法有兩步:主模塊調(diào)度輸入類型分析1942)分別設(shè)計(jì)輸入類型分析模塊和調(diào)度模塊的下層模塊結(jié)構(gòu)。方法是:將輸出的每條通路作為調(diào)度模塊的一個(gè)判斷分支,而輸入類型分析模塊的下層模塊與變換設(shè)計(jì)類似。
2)分別設(shè)計(jì)輸入類型分析模塊和調(diào)度模塊的下層模塊結(jié)構(gòu)。195I2I3I1TCA1B1C1A2B2C2事務(wù)中心主模塊調(diào)度輸入類型分析I1I3I2A1A2B1B2C1C2I2I3I1TCA1B1C1A2B2C2事務(wù)中心主模塊調(diào)度輸196第5章小結(jié)
概要設(shè)計(jì)說(shuō)明書該說(shuō)明書是概要實(shí)際階段的工作成果,它應(yīng)說(shuō)明功能分配、模塊劃分、程序的總體結(jié)構(gòu)、輸入輸出以及接口設(shè)計(jì)、運(yùn)行設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)和出錯(cuò)處理設(shè)計(jì)等,為詳細(xì)設(shè)計(jì)提供基礎(chǔ)。第5章小結(jié)
概要設(shè)計(jì)說(shuō)明書197第6章:詳細(xì)設(shè)計(jì)目標(biāo):確定如何具體實(shí)現(xiàn)所要求的系統(tǒng)。不是具體編寫程序,而是設(shè)計(jì)程序的“藍(lán)圖”。詳細(xì)設(shè)計(jì)的結(jié)果決定最終程序代碼的質(zhì)量。第6章:詳細(xì)設(shè)計(jì)目標(biāo):確定如何具體實(shí)現(xiàn)所要求的系統(tǒng)。198E.W.Dijkstra最早提出結(jié)構(gòu)程序設(shè)計(jì):程序質(zhì)量與程序中包含的Goto語(yǔ)句的數(shù)量成反比(1965)。1966,Bohm,Jacopini,證明了只用“順序”、“選擇”、“循環(huán)”控制結(jié)構(gòu)就能實(shí)現(xiàn)任何單入口單出口程序。6.1結(jié)構(gòu)程序設(shè)計(jì)
E.W.Dijkstra最早提出結(jié)構(gòu)程序199理論上,最基本的控制結(jié)構(gòu)只有兩種:順序、循環(huán)結(jié)構(gòu)(選擇結(jié)構(gòu)可由其兩者構(gòu)造)。
學(xué)界認(rèn)識(shí)到,不是簡(jiǎn)單去掉Goto語(yǔ)句的問(wèn)題,而是要?jiǎng)?chuàng)立一種新的程序設(shè)計(jì)方法。
——結(jié)構(gòu)化程序設(shè)計(jì)(IBM率先成功運(yùn)用)。理論上,最基本的控制結(jié)構(gòu)只有兩種:順序、循環(huán)200結(jié)構(gòu)程序設(shè)計(jì):
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 標(biāo)準(zhǔn)拆遷安置房買賣合同
- 公司借款合同的編寫要點(diǎn)與示范
- 旅游項(xiàng)目投資合作協(xié)議模板
- 個(gè)人車輛租賃合同
- 上海市液化氣購(gòu)銷合同
- 勞務(wù)合同模板經(jīng)典版
- 廣告冠名贊助協(xié)議范本
- 空地出租合同范本2024年
- 工作室合作條款范本
- 投資公司信用擔(dān)保合同
- 公務(wù)員2021年國(guó)考《申論》真題(地市級(jí))及參考答案
- DPtech-FW1000系列防火墻系統(tǒng)操作手冊(cè)
- 思想道德與法治課件:第五章 第二節(jié) 吸收借鑒優(yōu)秀道德成果
- 轉(zhuǎn)筒干燥機(jī)設(shè)計(jì)畢業(yè)論文
- 崗位梳理與“三定”工作實(shí)施方案
- 石油化工英語(yǔ)詞匯
- 部門服務(wù)滿意度評(píng)分表
- 慢支慢性阻塞性肺疾病9版.ppt
- 細(xì)紗機(jī)設(shè)備維護(hù)維修說(shuō)明書
- 地方課程六年級(jí)上冊(cè)
評(píng)論
0/150
提交評(píng)論