軟件工程的基本思想是面對(duì)復(fù)雜的問(wèn)題,讓軟件的開(kāi)發(fā)按照工程的概念、原理、技術(shù)和方法模式來(lái)實(shí)施,有計(jì)劃地按照要求分階段實(shí)現(xiàn)。針對(duì)大型項(xiàng)目開(kāi)發(fā),為了保證軟件產(chǎn)品質(zhì)量,提高軟件開(kāi)發(fā)效率,在進(jìn)行詳細(xì)設(shè)計(jì)、程序設(shè)計(jì)之前,必須先確定軟件總體結(jié)構(gòu)。軟件總體結(jié)構(gòu)設(shè)計(jì)的方法主要有結(jié)構(gòu)化設(shè)計(jì)、面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)和面向?qū)ο蟮脑O(shè)計(jì),其中結(jié)構(gòu)化設(shè)計(jì)方法是應(yīng)用最廣泛的一種,它是建立良好程序結(jié)構(gòu)的方法,提出了衡量模塊質(zhì)量的標(biāo)準(zhǔn)是“高內(nèi)聚、低耦合”。另外,結(jié)構(gòu)化設(shè)計(jì)(StructuredDesign,SD)方法是一種面向過(guò)程的設(shè)計(jì)方法或面向數(shù)據(jù)流的設(shè)計(jì)方法,它可以與結(jié)構(gòu)化分析(StructuredAnalysis,SA)方法、結(jié)構(gòu)化程序設(shè)計(jì)(StructuredProgramming)方法前后呼應(yīng),形成了統(tǒng)一、完整的系列化方法。結(jié)構(gòu)化設(shè)計(jì)方法以需求分析階段獲得的數(shù)據(jù)流圖為基礎(chǔ),通過(guò)一系列映射,把數(shù)據(jù)流圖變換為軟件結(jié)構(gòu)圖。
本文引用地址:http://www.ex-cimer.com/article/148151.htm在需求分析階段,用SA方法產(chǎn)生了數(shù)據(jù)流圖。結(jié)構(gòu)化的設(shè)計(jì)能方便地將數(shù)據(jù)流圖(DataFlowDiagram,DFD)轉(zhuǎn)換成軟件結(jié)構(gòu)圖。DFD中從系統(tǒng)的輸入數(shù)據(jù)流到系統(tǒng)的輸出數(shù)據(jù)流的一連串連續(xù)變換形成了一條信息流。根據(jù)數(shù)據(jù)流類型不同,可分為變換型和事務(wù)型2類,事務(wù)型和變換型數(shù)據(jù)流的設(shè)計(jì)步驟基本是大同小異,它們之間主要差別就是從數(shù)據(jù)流圖到軟件結(jié)構(gòu)的映射方法不同。因此,在進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)時(shí),首先對(duì)數(shù)據(jù)流圖進(jìn)行分析,然后判斷屬于那一種類型,根據(jù)不同的數(shù)據(jù)流類型,通過(guò)一系列映射,把數(shù)據(jù)流程圖轉(zhuǎn)換為軟件結(jié)構(gòu)圖?;玖鞒桃?jiàn)圖1.
1.1變換型數(shù)據(jù)流
信息在沿著輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式進(jìn)入系統(tǒng)的信息,通過(guò)變換中心經(jīng)加工處理,以后再沿著輸出通路變換成外部形式離開(kāi)系統(tǒng)。當(dāng)數(shù)據(jù)流具有了信息流的這種特征時(shí)這種信息流就叫作變換型數(shù)據(jù)流。變換型數(shù)據(jù)流的DFD可明顯地分為三大部分:邏輯輸入、變換中心(主加工)、邏輯輸出。變換型數(shù)據(jù)流結(jié)構(gòu)見(jiàn)圖2.邏輯輸入:可以從數(shù)據(jù)流圖上的物理輸入開(kāi)始,一步一步向系統(tǒng)中間移動(dòng),一直到數(shù)據(jù)流不再被看作是系統(tǒng)的輸入為止,則其前一個(gè)數(shù)據(jù)流就是系統(tǒng)的邏輯輸入??梢哉J(rèn)為邏輯輸入就是離物理輸入端最遠(yuǎn)的,且仍被看作是系統(tǒng)輸入的數(shù)據(jù)流。變換中心:多股數(shù)據(jù)流匯集的地方往往是系統(tǒng)的中心變換部分。
圖2變換型數(shù)據(jù)流結(jié)構(gòu)
1.2事務(wù)型數(shù)據(jù)流
信息在沿著輸入通路進(jìn)入系統(tǒng),由外部形成內(nèi)部形式后到達(dá)事務(wù)中心。通常事務(wù)中心位于幾條處理路徑的起點(diǎn),從數(shù)據(jù)流程圖上很容易標(biāo)識(shí)出來(lái),因?yàn)槭聞?wù)處理中心一般會(huì)有“發(fā)射中心”的特征。因?yàn)槭聞?wù)流有明顯的事務(wù)中心,所以各式各樣活動(dòng)流都以事務(wù)中心為起點(diǎn)呈輻射狀流出。事務(wù)型數(shù)據(jù)流結(jié)構(gòu)見(jiàn)圖3.
圖3事務(wù)型數(shù)據(jù)流結(jié)構(gòu)
事務(wù)中心主要完成下述任務(wù):接收輸入數(shù)據(jù)(輸入數(shù)據(jù)又稱為事務(wù));分析每個(gè)事務(wù)以確定它的類型;根據(jù)事務(wù)類型選取一條活動(dòng)通路。通常,事務(wù)中心前面的部分叫作接收路徑,發(fā)射中心后面各條發(fā)散路徑叫作事務(wù)處理路徑。對(duì)于每條處理路徑來(lái)講,還應(yīng)該確定它們自己的流特征。
任何一個(gè)設(shè)計(jì)過(guò)程都不是統(tǒng)一、固定不變的,設(shè)計(jì)的要求越高,往往需要設(shè)計(jì)者在方法上不但具有超強(qiáng)的判斷能力還要有規(guī)則性的創(chuàng)造精神。根據(jù)不同類型,分析其映射過(guò)程。
(1)設(shè)計(jì)軟件結(jié)構(gòu)的頂層和第1層。設(shè)計(jì)一個(gè)主模塊,并用系統(tǒng)的名字為它命名,作為系統(tǒng)的頂層。第1層為每個(gè)邏輯輸入設(shè)計(jì)一個(gè)輸入模塊,它的功能是為主模塊提供數(shù)據(jù);為每一個(gè)邏輯輸出設(shè)計(jì)一個(gè)輸出模塊,它的功能是將主模塊提供的數(shù)據(jù)輸出;為中心變換設(shè)計(jì)一個(gè)變換模塊,它的功能是將邏輯輸入轉(zhuǎn)換成邏輯輸出。主模塊控制和協(xié)調(diào)第1層的輸入模塊、變換模塊和輸出模塊的工作。
圖4變換型數(shù)據(jù)流轉(zhuǎn)換后的初始軟件結(jié)構(gòu)圖
2.2事務(wù)型數(shù)據(jù)流到軟件結(jié)構(gòu)圖映射
事務(wù)型數(shù)據(jù)處理問(wèn)題的工作機(jī)理是接受一項(xiàng)事務(wù),根據(jù)事務(wù)處理的特點(diǎn)和性質(zhì),選擇分派一個(gè)適當(dāng)?shù)奶幚韱卧?,然后給出結(jié)果。
圖5事務(wù)型數(shù)據(jù)流轉(zhuǎn)換后的初始軟件結(jié)構(gòu)圖
2.3變換-事務(wù)混合型的系統(tǒng)結(jié)構(gòu)圖
一般來(lái)講,一個(gè)大型項(xiàng)目不可能是單一的數(shù)據(jù)變換型,也不可能是單一的事務(wù)型,通常是變換型數(shù)據(jù)流和事務(wù)型數(shù)據(jù)流的混合體。在具體的應(yīng)用中一般以變換型為主,事務(wù)型為輔的方式進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)。變換-事務(wù)混合型的系統(tǒng)結(jié)構(gòu)圖見(jiàn)圖6.
圖6變換-事務(wù)混合型的系統(tǒng)結(jié)構(gòu)圖
3軟件結(jié)構(gòu)設(shè)計(jì)的圖形工具
結(jié)構(gòu)化設(shè)計(jì)主要有兩種圖形工具:結(jié)構(gòu)圖和層次圖。結(jié)構(gòu)圖和層次圖基本上是大同小異,都是用來(lái)描述軟件結(jié)構(gòu)的圖形工具,圖中設(shè)有很多方框,一個(gè)方框就代表一個(gè)模塊,框內(nèi)注明模塊的名字或主要功能;方框之間的箭頭(或直線)用來(lái)表示模塊的調(diào)用關(guān)系。二者描述重點(diǎn)不一樣。
結(jié)構(gòu)圖主要描述軟件結(jié)構(gòu)中模塊之間的調(diào)用關(guān)系和信息傳遞問(wèn)題?;境煞钟心K、調(diào)用和數(shù)據(jù)。
層次圖主要描述軟件系統(tǒng)的層次結(jié)構(gòu)以及各個(gè)功能的隸屬關(guān)系,特別適合于自頂向下設(shè)計(jì)使用。在層次圖里除頂層之外,每個(gè)方框里都加編號(hào),記錄它所在的層次及在該層次的位置。一般最上層的模塊含有退出、輸入、處理、輸出、查詢和系統(tǒng)維護(hù)模塊。根據(jù)系統(tǒng)的具體要求,下層再將功能進(jìn)一步細(xì)化。
數(shù)據(jù)流程圖轉(zhuǎn)換為初始軟件結(jié)構(gòu)圖后,按照高內(nèi)聚低耦合、模塊化、信息隱藏的原則,應(yīng)該對(duì)初始軟件結(jié)構(gòu)圖進(jìn)行優(yōu)化??紤]設(shè)計(jì)優(yōu)化問(wèn)題時(shí)應(yīng)該記住,“一個(gè)不能工作的‘最佳設(shè)計(jì)’的價(jià)值是值得懷疑的”。軟件設(shè)計(jì)人員應(yīng)該致力于開(kāi)發(fā)能夠滿足所有功能和性能要求,導(dǎo)出不同的軟件結(jié)構(gòu),對(duì)它們進(jìn)行評(píng)價(jià)和比較,力求得到“最佳”的效果,這種優(yōu)化真正的優(yōu)點(diǎn),就是能夠把軟件結(jié)構(gòu)設(shè)計(jì)和詳細(xì)設(shè)計(jì)很好地分開(kāi)。通常,用下述方法對(duì)初始化軟件結(jié)構(gòu)進(jìn)行優(yōu)化是合理的:在不考慮時(shí)間因素的前提下開(kāi)發(fā)并精化軟件結(jié)構(gòu)。在得到初始的功能結(jié)構(gòu)圖之后,如果發(fā)現(xiàn)有幾個(gè)模塊有相似之處,可消除重復(fù)功能,改善軟件結(jié)構(gòu);模塊功能的完善化。一個(gè)完整的功能模塊,不僅應(yīng)能完成指定的功能,而且還應(yīng)當(dāng)能夠告訴使用者完成任務(wù)的狀態(tài),以及不能完成的原因;模塊的作用范圍應(yīng)在控制范圍之內(nèi)。模塊的控制范圍包括它本身及其所有的從屬模塊;模塊的作用范圍是指模塊內(nèi)一個(gè)判定的作用范圍,凡是受這個(gè)判定影響的所有模塊都屬于這個(gè)判定的作用范圍;盡可能減少高扇出結(jié)構(gòu)。模塊的扇出過(guò)大,將使得系統(tǒng)的模塊結(jié)構(gòu)圖的寬度變大,寬度越大結(jié)構(gòu)圖越復(fù)雜。模塊的扇出過(guò)小也不好,這樣將使得系統(tǒng)的功能結(jié)構(gòu)圖的深度大大增加,不但增加了模塊接口的復(fù)雜度,而且增加了調(diào)用和返回的時(shí)間開(kāi)銷,降低系統(tǒng)的工作效率。比較適當(dāng)?shù)哪K扇出數(shù)目為2~5個(gè),最多不要超過(guò)9個(gè);模塊的大小要適中。限制模塊的大小是減少?gòu)?fù)雜性的手段之一,因而要求把模塊的大小限制在一定的范圍之內(nèi)。模塊的大小一般用模塊的源代碼數(shù)量來(lái)衡量,通常在設(shè)計(jì)過(guò)程中,將模塊的源代碼數(shù)量限制在50~100行左右,即一頁(yè)紙的范圍內(nèi),這樣閱讀比較方便;設(shè)計(jì)功能可預(yù)測(cè)的模塊,避免過(guò)分受限制的模塊。一個(gè)功能可預(yù)測(cè)的模塊不論內(nèi)部處理細(xì)節(jié)如何,但對(duì)相同的輸入數(shù)據(jù),總能產(chǎn)生同樣的結(jié)果;軟件包應(yīng)滿足設(shè)計(jì)約束和可移植性。一個(gè)僅處理單一功能的模塊,由于具有高度的內(nèi)聚性,而受到了設(shè)計(jì)人員的重視。
綜上所述,結(jié)構(gòu)化設(shè)計(jì)方法是設(shè)計(jì)軟件體系結(jié)構(gòu)的一種系統(tǒng)化的方法,根據(jù)不同的映射規(guī)則,可以把數(shù)據(jù)流圖變換成軟件的初步結(jié)構(gòu)圖。得出軟件的初始結(jié)構(gòu)圖之后,還必須根據(jù)結(jié)構(gòu)化設(shè)計(jì)的基本原則和有關(guān)啟發(fā)規(guī)則,對(duì)所得到的初始軟件結(jié)構(gòu)圖進(jìn)行仔細(xì)優(yōu)化,才能設(shè)計(jì)出令人滿意的軟件體系結(jié)構(gòu)。
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開(kāi)關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開(kāi)發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論