版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第5
章軟件設計與結(jié)構(gòu)化設計2錄目CONTENTS5.1
軟件設計的基本概念5.2軟件體系結(jié)構(gòu)5.3結(jié)構(gòu)化設計概述5.4結(jié)構(gòu)化設計與結(jié)構(gòu)化分析的關(guān)系5.5結(jié)構(gòu)化設計方法5.6接口設計5.6
數(shù)據(jù)設計5.7
過程設計5.8
軟件設計評審5.1軟件設計的基本概念45.1軟件設計的基本概念
5.1.1軟件設計的意義和目標5.1.2軟件設計的原則5.1.3軟件設計的分類55.1軟件設計的基本概念
做什么怎么做0102完成了需求分析,回答了軟件系統(tǒng)能“做什么”的問題,軟件的生命周期就進入了設計階段。軟件設計是軟件開發(fā)過程中的重要階段,在此階段中,開發(fā)人員將集中研究如何把需求規(guī)格說明書里歸納的分析模型轉(zhuǎn)換為可行的設計模型,并將解決方案記錄到相關(guān)的設計文檔中。實際上,軟件設計的目標就是要回答“怎么做”才能實現(xiàn)軟件系統(tǒng)的問題,也可以把設計階段的任務理解為把軟件系統(tǒng)能“做什么”的邏輯模型轉(zhuǎn)換為“怎么做”的物理模型。軟件設計在軟件開發(fā)中處于核心地位。65.1軟件設計的基本概念
5.1.1軟件設計的意義和目標1.設計必須實現(xiàn)所有包含在分析模型中的明確需求,而且必須滿足用戶期望的所有隱含需求2.對于程序員、測試人員和維護人員而言,設計必須是可讀的、可理解的指南3.設計必須提供軟件的全貌,從實現(xiàn)的角度說明數(shù)據(jù)域、功能域和行為域評價良好設計演化的特征McGlaughlin提出軟件設計在軟件開發(fā)過程中處于核心地位,它是保證質(zhì)量的關(guān)鍵步驟。設計為我們提供了可以用于質(zhì)量評估的軟件表示,設計是我們能夠?qū)⒂脩粜枨鬁蚀_地轉(zhuǎn)化為軟件產(chǎn)品或系統(tǒng)的唯一方法。軟件設計是所有軟件工程活動和隨后的軟件支持活動的基礎。軟件設計是一個迭代的過程,通過設計過程,需求被變換為用于構(gòu)建軟件的“藍圖”75.1軟件設計的基本概念
1.模塊化模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募?,是?gòu)成程序的基本構(gòu)件,可以被單獨命名并通過名字來訪問。在面向過程的設計中,過程、函數(shù)、子程序、宏都可以作為模塊;在面向?qū)ο蟮脑O計中,對象是模塊,對象中的方法也是模塊。模塊化就是把系統(tǒng)或程序劃分為獨立命名并且可以獨立訪問的模塊,每個模塊完成一個特定的子功能。模塊集成起來可以構(gòu)成一個整體,完成特定的功能,進而滿足用戶需求。5.1.2軟件設計的原則->模塊化.抽象.逐步求精.信息隱藏.復用性設計.靈活性設計
85.1軟件設計的基本概念
5.1.2軟件設計的原則->模塊化.抽象.逐步求精.信息隱藏.復用性設計.靈活性設計
在模塊化的過程中,要注意以下幾點。(1)模塊的規(guī)模要適中。(2)提高模塊的獨立性,降低模塊間的耦合程度。(3)提高模塊的內(nèi)聚程度。(4)加強模塊的保護性。95.1軟件設計的基本概念
5.1.2軟件設計的原則->模塊化.抽象.逐步求精.信息隱藏.復用性設計.靈活性設計
在模塊化的過程中,要注意以下幾點。(1)模塊的規(guī)模要適中。(2)提高模塊的獨立性,降低模塊間的耦合程度。(3)提高模塊的內(nèi)聚程度。(4)加強模塊的保護性。105.1軟件設計的基本概念
5.1.2軟件設計的原則->模塊化.抽象.逐步求精.信息隱藏.復用性設計.靈活性設計
在模塊化的過程中,要注意以下幾點。(1)模塊的規(guī)模要適中。(2)提高模塊的獨立性,降低模塊間的耦合程度。(3)提高模塊的內(nèi)聚程度。(4)加強模塊的保護性。115.1軟件設計的基本概念
5.1.2軟件設計的原則->模塊化.抽象.逐步求精.信息隱藏.復用性設計.靈活性設計
2.抽象
抽象是人們認識復雜的客觀世界時所使用的一種思維工具。抽象主要是為了降低問題的復雜度,以得到問題領(lǐng)域中較簡單的概念,好讓人們能夠控制其過程或以宏觀的角度來了解許多特定的事態(tài)。
抽象在軟件開發(fā)過程中起著非常重要的作用。一個龐大、復雜的系統(tǒng)可以先用一些宏觀的概念構(gòu)造和理解,然后再逐層地用一些較微觀的概念去解釋上層的宏觀概念,直到最底層的元素。125.1軟件設計的基本概念
5.1.2軟件設計的原則->模塊化.抽象.逐步求精.信息隱藏.復用性設計.靈活性設計
3.逐步求精在面對一個新問題時,開發(fā)人員可暫時忽略問題非本質(zhì)的細節(jié),而關(guān)注于與本質(zhì)相關(guān)的宏觀概念,集中精力解決主要問題,這種認識事物的方法就是逐步求精。逐步求精是抽象的逆過程。開發(fā)人員認識問題時逐步求精的過程,同時也是抽象程度逐漸降低的過程。按照逐步求精的思想,程序的體系結(jié)構(gòu)是按照層次結(jié)構(gòu),逐步精化過程細節(jié)而開發(fā)出來的??梢?,求精就是細化,它與抽象是互補的概念。135.1軟件設計的基本概念
5.1.2軟件設計的原則->模塊化.抽象.逐步求精.信息隱藏.復用性設計.靈活性設計
4.信息隱藏信息隱藏與模塊化的概念相關(guān)。當一個系統(tǒng)被分解為若干個模塊時,為了避免某個模塊的行為干擾同一系統(tǒng)中的其他模塊,應該讓模塊僅僅公開必須讓外界知道的信息,而將其他信息隱藏起來,這樣模塊的具體實現(xiàn)細節(jié)相對于其他不相關(guān)的模塊而言就是不可見的,這種機制就叫做信息隱藏。信息隱藏提高了模塊的獨立性,加強了外部對模塊內(nèi)部信息進行訪問的限制,它使得模塊的局部錯誤盡量不影響其他模塊。信息隱藏有利于軟件的測試和維護工作。通常,模塊的信息隱藏可以通過接口來實現(xiàn)。模塊通過接口與外部進行通信,而把模塊的具體實現(xiàn)細節(jié)(如數(shù)據(jù)結(jié)構(gòu)、算法等內(nèi)部信息)隱藏起來。一般來說,一個模塊具有有限個接口,外部模塊通過調(diào)用相應的接口來實現(xiàn)對目標模塊的操作。API145.1軟件設計的基本概念
5.1.2軟件設計的原則->模塊化.抽象.逐步求精.信息隱藏.復用性設計.靈活性設計
5.復用性設計
軟件復用(重用)就是將已有的軟件成分用于構(gòu)造新的軟件系統(tǒng)??梢员粡陀玫能浖煞忠话惴Q作可復用構(gòu)件,無論對可復用構(gòu)件原封不動地使用還是作適當?shù)男薷暮笤偈褂?,只要是用來?gòu)造新軟件,則都可稱作復用。軟件復用不僅僅是對程序的復用,它還包括對軟件生產(chǎn)過程中任何活動所產(chǎn)生的制成品的復用,如軟件開發(fā)計劃、可行性研究報告、分析模型、設計模型、源程序`、測試用例等等。如果是在一個系統(tǒng)中多次使用一個相同的軟件成分,則不稱作復用,而稱作共享;對一個軟件進行修改,使它運行于新的軟硬件平臺也不稱作復用,而稱作軟件移值。155.1軟件設計的基本概念
5.1.2軟件設計的原則->模塊化.抽象.逐步求精.信息隱藏.復用性設計.靈活性設計
降低耦合并提高內(nèi)聚建立抽象不要將代碼寫死拋出異常使用并創(chuàng)建可復用的代碼在設計(尤其是面向?qū)ο蟮脑O計)中引入靈活性的方法靈活性設計,簡而言之就是軟件在面對需求修改時的隨機應變能力,可以體現(xiàn)在修改程序代碼的工程量等方面。抽象是軟件設計的關(guān)鍵因素。設計模式、軟件架構(gòu)等可以用來實現(xiàn)更高抽象層次的編程,以達到軟件的靈活性165.1軟件設計的基本概念
5.1.3軟件設計的分類活動任務觀點.工程管理觀點軟件設計活動任務工程管理1.數(shù)據(jù)設計
2.體系結(jié)構(gòu)設計3.接口設計4.構(gòu)件設計和部署設計。1.概要設計(總體設計)2.詳細設計175.1軟件設計的基本概念
5.1.3軟件設計的分類活動任務觀點.工程管理觀點軟件設計活動任務工程管理數(shù)據(jù)設計、體系結(jié)構(gòu)設計、接口設計、構(gòu)件設計和部署設計。1)數(shù)據(jù)設計創(chuàng)建在高抽象級別上表示的數(shù)據(jù)模型和信息模型。然后,數(shù)據(jù)模型被精化為越來越多和實現(xiàn)相關(guān)的特定表示,即基于計算機的系統(tǒng)能夠處理的表示。2)體系結(jié)構(gòu)設計為我們提供軟件的整體視圖,定義了軟件系統(tǒng)各主要成份之間的關(guān)系。3)接口設計告訴我們信息如何流入和流出系統(tǒng)以及被定義為體系結(jié)構(gòu)一部分的構(gòu)件之間是如何通信的。4)構(gòu)件設計完整的描述了每個軟件構(gòu)件的內(nèi)部細節(jié),為所有本地數(shù)據(jù)對象定義數(shù)據(jù)結(jié)構(gòu),為所有在構(gòu)件內(nèi)發(fā)生的處理定義算法細節(jié),并定義允許訪問所有構(gòu)件操作的接口。5)部署設計指明軟件功能和子系統(tǒng)如何在支持軟件的物理計算環(huán)境內(nèi)分布。185.1軟件設計的基本概念
5.1.3軟件設計的分類活動任務觀點.工程管理觀點軟件設計活動任務工程管理概要設計確定軟件的結(jié)構(gòu)以及各組成部分之間的相互關(guān)系。它以需求規(guī)格說明書為基礎,概要地說明軟件系統(tǒng)的實現(xiàn)方案,包括:目標系統(tǒng)的總體架構(gòu)每個模塊的功能描述、數(shù)據(jù)接口描述及模塊之間的調(diào)用關(guān)系數(shù)據(jù)庫、數(shù)據(jù)定義和數(shù)據(jù)結(jié)構(gòu)等其中,目標系統(tǒng)的總體架構(gòu)為軟件系統(tǒng)提供了一個結(jié)構(gòu)、行為和屬性的高級抽象,由構(gòu)成系統(tǒng)的元素的描述、這些元素之間的相互作用、指導元素集成的模式以及這些模式的約束組成。195.1軟件設計的基本概念
5.1.3軟件設計的分類活動任務觀點.工程管理觀點軟件設計活動任務工程管理詳細設計確定模塊內(nèi)部的算法和數(shù)據(jù)結(jié)構(gòu),產(chǎn)生描述各模塊程序過程的詳細文檔。它對每個模塊的功能和架構(gòu)進行細化,明確要完成相應模塊的預定功能所需要的數(shù)據(jù)結(jié)構(gòu)和算法,并將其用某種形式描述出來。詳細設計的目標是得到實現(xiàn)系統(tǒng)的最詳細的解決方案,明確對目標系統(tǒng)的精確描述,從而在編碼階段可以方便地把這個描述直接翻譯為用某種程序設計語言書寫的程序。在進行詳細設計的過程中,設計人員的工作涉及到的內(nèi)容有過程、數(shù)據(jù)和接口等。過程設計主要是指描述系統(tǒng)中每個模塊的實現(xiàn)算法和細節(jié)數(shù)據(jù)設計是對各模塊所用到的數(shù)據(jù)結(jié)構(gòu)的進一步細化接口設計針對的是軟件系統(tǒng)各模塊之間的關(guān)系或通信方式以及目標系統(tǒng)與外部系統(tǒng)之間的聯(lián)系5.2軟件體系結(jié)構(gòu)什么是軟件體系結(jié)構(gòu)?軟件體系結(jié)構(gòu)是系統(tǒng)的一個或多個結(jié)構(gòu),它包括1)軟件的組成元素(組件)2)這些(組件)元素的外部可見特性3)這些元素(組件)之間的相互關(guān)系軟件體系結(jié)構(gòu)不僅指定了系統(tǒng)的組織結(jié)構(gòu)和拓撲結(jié)構(gòu),也顯示了系統(tǒng)需求和構(gòu)成系統(tǒng)的元素之間的對應關(guān)系,提供了一些設計決策的基本原理。什么是軟件體系結(jié)構(gòu)?軟件體系結(jié)構(gòu)描述的對象是直接構(gòu)成系統(tǒng)的抽象組件。它由功能各異、相互作用的部件按照層次構(gòu)成,包含了系統(tǒng)的基礎構(gòu)成單元、單元之間的相互作用關(guān)系、在構(gòu)成系統(tǒng)時它們的合成方法以及對合成約束的描述。具體來說,部件包括客戶端、服務器、數(shù)據(jù)庫、程序包、過程、子程序等一切軟件的組成部分。相互作用的關(guān)系可以是過程調(diào)用、消息傳遞、共享內(nèi)存變量、客戶端/服務器的訪問協(xié)議、數(shù)據(jù)庫的訪問協(xié)議等。軟件體系結(jié)構(gòu)的作用
設計軟件的體系結(jié)構(gòu)在設計階段非常重要。軟件體系結(jié)構(gòu)就好比軟件系統(tǒng)的骨骼,如果骨骼確定了,那么軟件系統(tǒng)的框架就確定了。設計軟件體系的過程中應當包含以下幾項:1)定義基本構(gòu)件、構(gòu)建打包方式以及相互作用的方式2)明確系統(tǒng)如何實現(xiàn)功能、性能、可靠性、安全性等各個方面需求3)盡量使用已有的構(gòu)件軟件體系結(jié)構(gòu)的作用
軟件體系結(jié)構(gòu)在軟件開發(fā)過程中的作用如下:2)便于開發(fā)人員與用戶的溝通
開發(fā)人員與系統(tǒng)設計人員、用戶以及其他有關(guān)人員之間進行有效溝通,可以達成某些一致。應用軟件體系結(jié)構(gòu)的思想方法可以更好劃分范圍,規(guī)劃時間成本,應對客戶不夠明確的需求。1)規(guī)范軟件開發(fā)的基本架構(gòu)體系結(jié)構(gòu)一般與需求密切相關(guān),明確的需求可以產(chǎn)生明確的規(guī)格,使設計出來的軟件結(jié)構(gòu)更清晰。需求的變更也需要考慮,明確的變更趨勢可以提早在設計中體現(xiàn)。軟件體系結(jié)構(gòu)的作用
3)模塊化、層次化設計有利于減少返工提高效率,模塊越獨立越好,盡量把有明確需求的應用劃分為獨立模塊,減少模塊之間的交集。層次化設計就是一層一層分割,利用分層處理復雜功能,下層執(zhí)行簡單功能,上層調(diào)用功能,可以有效杜絕層次之間的交集。4)便于系統(tǒng)開發(fā)前后期的籌備與服務利用體系結(jié)構(gòu)的思想開發(fā)產(chǎn)品不僅可以規(guī)范流程,節(jié)省時間,還能留下大量開發(fā)文檔、產(chǎn)品類型框架、軟件開發(fā)標準流程等資料,為今后的售前咨詢和售后服務提供參考。
兩種常用的軟件體系結(jié)構(gòu)如圖所示樹形結(jié)構(gòu)網(wǎng)狀結(jié)構(gòu)軟件體系結(jié)構(gòu)的作用典型的軟件體系結(jié)構(gòu)風格
典型的軟件體系結(jié)構(gòu)風格
軟件體系結(jié)構(gòu)風格包含4個關(guān)鍵要素:1)提供一個詞匯表2)定義一套配置規(guī)則3)定義一套語義解釋規(guī)則4)定義對基于這種風格的系統(tǒng)進行的分析根據(jù)以上4要素框架,Garlan和Shaw對通用軟件體系結(jié)構(gòu)風格的進行分類,每種體系結(jié)構(gòu)風格有各自的應用領(lǐng)域和優(yōu)缺點。所謂軟件體系結(jié)構(gòu)風格,是描述某一特定應用領(lǐng)域中系統(tǒng)組織方式的慣用模式。數(shù)據(jù)流風格
數(shù)據(jù)到達即被激活處理工作,無數(shù)據(jù)時不工作。一般來說,數(shù)據(jù)的流向是有序的。在純數(shù)據(jù)流系統(tǒng)中,處理之間除了數(shù)據(jù)交換,沒有任何其他的交互。主要研究近似線性的數(shù)據(jù)流,或在限度內(nèi)的循環(huán)數(shù)據(jù)流。其中包括批處理序列、管道/過濾器。調(diào)用
∕
返回風格
各個構(gòu)件通過調(diào)用其他構(gòu)件和獲得返回參數(shù)來進行交互,配合完成功能。包括主程序/子程序、面向?qū)ο箫L格、層次結(jié)構(gòu)。主程序子程序子程序子程序獨立構(gòu)件風格
這種風格的主要特點是:事件的觸發(fā)者并不知道哪些構(gòu)件會被這些事件影響,相互保持獨立,這樣不能假定構(gòu)件的處理順序,甚至不知道哪些過程會被調(diào)用各個構(gòu)件之間彼此無連接關(guān)系,各自獨立存在,通過對事件的發(fā)布和注冊實現(xiàn)關(guān)聯(lián),其中包括進程通訊、事件系統(tǒng)虛擬機風格
它創(chuàng)建了一種虛擬的環(huán)境,將用戶與底層平臺隔離開來,或者將高層抽象和底層實現(xiàn)隔離開來。其中包括解釋器、基于規(guī)則的系統(tǒng)倉庫風格
倉庫是存儲和維護數(shù)據(jù)的中心場所。在倉庫風格中存在兩類構(gòu)件,表示當前數(shù)據(jù)的狀態(tài)的中心數(shù)據(jù)結(jié)構(gòu)和一組對中心數(shù)據(jù)進行操作的獨立構(gòu)件。其中包括數(shù)據(jù)庫系統(tǒng)、超文本系統(tǒng)、黑板系統(tǒng)??蛻舳?服務器體系結(jié)構(gòu)
客戶端/服務器(Client/Server,簡稱C/S)體系結(jié)構(gòu)是為了共享不對等的資源而提出來的,是20世紀90年代成熟起來的技術(shù),C/S體系結(jié)構(gòu)定義了客戶端如何與服務器連接,以將數(shù)據(jù)和應用系統(tǒng)分部到多個處理機上。C/S體系結(jié)構(gòu)有3個主要的組成部分。服務器:負責給其子系統(tǒng)提供服務,如數(shù)據(jù)庫服務器提供數(shù)據(jù)存儲和管理服務,文件服務器提供文件管理服務,搜索服務器提供數(shù)據(jù)檢索等??蛻舳耍和ǔJ仟毩⒌淖酉到y(tǒng),通過向服務器請求約定的資源獲取數(shù)據(jù)。一臺服務器可以同時為許多客戶端提供服務。網(wǎng)絡:連接服務器和客戶端。有時客戶端和服務器位于同一臺物理主機上,但多數(shù)情況下它們分布在不同主機上。網(wǎng)絡可以有各種形式,包括有線和無線等。
客戶端/服務器體系結(jié)構(gòu)C/S系統(tǒng)的設計必須考慮應用系統(tǒng)的邏輯結(jié)構(gòu)在邏輯上,我們通常將應用系統(tǒng)劃分為3層,即數(shù)據(jù)管理層、應用邏輯層和表示層數(shù)據(jù)管理層主要處理數(shù)據(jù)存儲和管理操作應用邏輯層處理與業(yè)務相關(guān)的邏輯表示層處理用戶界面以及用戶的交互在集中式系統(tǒng)中,不需要將這些清楚地分離,但在分布式系統(tǒng)中,不同層常常被部署在不同的主機上,因此必須嚴格地分離不同層。
客戶端/服務器體系結(jié)構(gòu)C/S體系結(jié)構(gòu)C/S體系結(jié)構(gòu)通常有兩層或三層,也可根據(jù)需要劃分為更多層兩層C/S結(jié)構(gòu)一般有兩種形態(tài):瘦客戶端模型。在瘦客戶端模型中,數(shù)據(jù)管理和應用邏輯都在服務器端執(zhí)行,客戶端只負責表示部分胖客戶端模型。在這種模型中,服務器只負責對數(shù)據(jù)的管理。客戶端上的軟件實現(xiàn)應用邏輯以及與系統(tǒng)的交互
隨著軟件復雜度不斷提高,胖客戶端模型逐漸暴露出以下缺點:開發(fā)成本高。C/S體系對客戶端的配置要求較高,增加系統(tǒng)成本,且會使客戶端越來越臃腫用戶界面風格不一,使用繁雜,不利于推廣使用軟件移植困難,采用不同開發(fā)工具和平臺開發(fā)的軟件之間一般不兼容,有時不得不因此開發(fā)針對另一平臺的版本軟件維護和升級困難,由于應用程序安裝在客戶端上,需要維護時必須升級和維護所有客戶端客戶端/服務器體系結(jié)構(gòu)在兩層C/S結(jié)構(gòu)需要考慮如何將三個邏輯層映射到兩個系統(tǒng),在瘦客戶端模型存在伸縮性和性能問題,在胖客戶端模型則存在系統(tǒng)管理問題
三層C/S結(jié)構(gòu)就避免了這個問題,將數(shù)據(jù)管理層和應用邏輯層分別放在兩個物理層或物理主機上,客戶端仍然保留在客戶端上。對于三層C/S結(jié)構(gòu),各層的功能或指責如下:表示層表示層是應用系統(tǒng)的用戶界面部分,擔負著用戶與應用程序之間的對話功能。通常采用圖形界面的方式呈現(xiàn)應用邏輯層應用邏輯層為應用系統(tǒng)的主體,包含全部的業(yè)務邏輯。比如數(shù)據(jù)處理,用戶管理,與其他系統(tǒng)交互,以及記錄系統(tǒng)日志等。通常是應用服務器。數(shù)據(jù)層數(shù)據(jù)層一般只負責數(shù)據(jù)的存取、管理和維護(如備份等),通常是關(guān)系型數(shù)據(jù)庫服務器客戶端/服務器體系結(jié)構(gòu)瀏覽器/服務器(Browser/Server,簡稱B/S)結(jié)構(gòu)是三層應用結(jié)構(gòu)的一種實現(xiàn),其具體結(jié)構(gòu)為瀏覽器/Web服務器/數(shù)據(jù)庫服務器
三層結(jié)構(gòu)的優(yōu)點:通過合理劃分三層結(jié)構(gòu),使之在邏輯上保持相對獨立,提高系統(tǒng)的可維護性和可擴展性。能夠更靈活選用相應的平臺和應用系統(tǒng),使之在處理負荷能力和處理特性上分別適應各層的要求,并具有良好的可升級性和開放性。應用各層可以獨立并行開發(fā),每層可以根據(jù)特點選用合適的開發(fā)語言。安全性相對較高,因為應用層屏蔽了用戶直接訪問數(shù)據(jù)庫的權(quán)利,使得未授權(quán)用戶或黑客難以繞過應用層獲取數(shù)據(jù)但三層結(jié)構(gòu)必須精心設計通信模塊,以避免通信稱為瓶頸限制服務器的發(fā)揮。客戶端/服務器體系結(jié)構(gòu)模型-視圖-控制器
MVC(Model-View-Controller)模型由TrygveReenskaug博士在20世紀70年代提出,并最早在面向?qū)ο缶幊陶Z言Smalltalk-80中實現(xiàn)MVC強調(diào)將用戶的輸入、數(shù)據(jù)模型和數(shù)據(jù)表示方式分開設計,一個交互式應用系統(tǒng)由模型、視圖、控制器3部分組成,分別對應內(nèi)部數(shù)據(jù)、數(shù)據(jù)表示和輸入/輸出控制部分模型-視圖-控制器
模型模型對象代表應用領(lǐng)域中的業(yè)務實體和業(yè)務邏輯規(guī)則,是整個模型的核心,獨立于外在的顯示內(nèi)容和顯示形式。模型對象的變化通過事件通知視圖和控制器對象。采用了發(fā)布者/訂閱者方式,模型是發(fā)布者,視圖和控制器是訂閱者。對于模型來說,并不知道自己對應的視圖控制器;但控制器可以通過模型提供的接口改變模型對象,接口內(nèi)封裝了業(yè)務數(shù)據(jù)和行為。
視圖視圖對象代表GUI對象,以用戶熟悉和需要的格式表現(xiàn)模型信息,是系統(tǒng)與外界的交互接口。視圖訂閱模型可以感知模型的數(shù)據(jù)變化,并更新自己的顯示。視圖對象也可以包含子視圖,用于顯示模型的不同部分。在多數(shù)的MVC實現(xiàn)技術(shù)中,視圖和控制器常常是一一對應的??刂破骺刂破鲗ο筇幚碛脩舻妮斎耄⒔o模型發(fā)送業(yè)務事件,再將業(yè)務事件解析為模型應執(zhí)行的動作;同時,模型的更新與修改也將通過控制器來通知視圖,保持視圖與模型的一致。MVC的整個處理流程為:系統(tǒng)攔截到用戶請求,根據(jù)相應規(guī)則(多數(shù)采用路由技術(shù)),將用戶請求交給控制器,控制器決定哪個模型來處理用戶的請求模型根據(jù)業(yè)務邏輯處理完畢后將結(jié)果返回給控制器然后控制器將數(shù)據(jù)提交給視圖;視圖把數(shù)據(jù)組裝之后,呈現(xiàn)給用戶模型-視圖-控制器其中,模型處理所有的業(yè)務邏輯和規(guī)則,視圖只負責顯示數(shù)據(jù),控制器負責用戶的請求,這樣將業(yè)務和表現(xiàn)層分離,以便業(yè)務代碼可以被用于任何相似的業(yè)務中,視圖代碼也可以根據(jù)需要隨意替換。5.3結(jié)構(gòu)化設計概述5.3結(jié)構(gòu)化設計概述
一二三從軟件需求規(guī)格說明書出發(fā)設計軟件系統(tǒng)的整體結(jié)構(gòu)確定每個模塊的實現(xiàn)算法以及編寫具體的代碼概要(總體)設計階段&過程(詳細)設計階段概要設計:體系結(jié)構(gòu)設計、數(shù)據(jù)設計及接口設計。過程設計:它詳細地設計每個模塊,確定完成每個模塊功能所需要的算法和數(shù)據(jù)結(jié)構(gòu)。設計決策決定成果設計決策將決定軟件維護的難易程度設計是軟件開發(fā)過程中決定軟件產(chǎn)品質(zhì)量的關(guān)鍵階段。5.4結(jié)構(gòu)化設計與結(jié)構(gòu)化分析的關(guān)系465.4
結(jié)構(gòu)化設計與結(jié)構(gòu)化分析的關(guān)系
數(shù)據(jù)設計體系結(jié)構(gòu)設計接口設計過程設計數(shù)據(jù)對象描述處理規(guī)格說明控制規(guī)格說明狀態(tài)轉(zhuǎn)換圖數(shù)據(jù)流圖實體—關(guān)系圖數(shù)據(jù)字典要進行結(jié)構(gòu)化的設計,必須依據(jù)結(jié)構(gòu)化分析的結(jié)果,結(jié)構(gòu)化設計與結(jié)構(gòu)化分析的關(guān)系如圖所示。圖的左邊是用結(jié)構(gòu)化分析方法所建立的模型,圖的右邊是用結(jié)構(gòu)化設計方法所建立的設計模型。475.4
結(jié)構(gòu)化設計與結(jié)構(gòu)化分析的關(guān)系
結(jié)構(gòu)化軟件設計的具體步驟如下:1)從需求分析階段的數(shù)據(jù)流圖出發(fā),制訂幾個方案,從中選擇合理的方案。2)采用某種設計方法,將一個復雜的系統(tǒng)按功能劃分成模塊化的層次結(jié)構(gòu)。3)確定每個模塊的功能、模塊間的調(diào)用關(guān)系,建立與已確定的軟件需求的對應關(guān)系。4)系統(tǒng)接口設計,確定模塊間的接口信息。5)數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設計,確定實現(xiàn)軟件的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫模式。6)基于以上,并依據(jù)分析模型中的處理(加工)規(guī)格說明、狀態(tài)轉(zhuǎn)換圖及控制規(guī)格說明進行過程設計。7)制訂測試計劃。8)撰寫軟件設計文檔。5.5結(jié)構(gòu)化設計方法495.5
結(jié)構(gòu)化設計方法
5.5.1表示軟件結(jié)構(gòu)的圖形工具5.5.2面向數(shù)據(jù)流的設計方法5.5.3面向數(shù)據(jù)結(jié)構(gòu)的設計方法505.5
結(jié)構(gòu)化設計方法
5.5.1表示軟件結(jié)構(gòu)的圖形工具1.層次圖和HIPO圖
2.結(jié)構(gòu)圖
通常使用層次圖描繪軟件的層次結(jié)構(gòu)。在層次圖中一個矩形框代表一個模塊,框間的連線表示調(diào)用關(guān)系(位于上方的矩形框所代表的模塊調(diào)用位于下方的矩形框所代表的模塊)。每個方框可以帶編號,像這樣帶編號的層次圖稱為HIPO(HierarchyInput-Process-Output)圖,如圖所示。515.5.1表示軟件結(jié)構(gòu)的圖形工具1.層次圖和HIPO圖
2.結(jié)構(gòu)圖結(jié)構(gòu)圖是描繪軟件結(jié)構(gòu)的圖形工具,圖中一個方框代表一個模塊,框內(nèi)注明模塊的名字或主要功能;方框之間的箭頭(或直線)表示模塊的調(diào)用關(guān)系。在結(jié)構(gòu)圖中通常還用帶注釋的箭頭表示模塊調(diào)用過程中來回傳遞的信息。如果希望進一步標明傳遞的信息是數(shù)據(jù)還是控制信息,則可以利用注釋箭頭尾部的形狀來區(qū)分:尾部是空心圓表示傳遞的是數(shù)據(jù),實心圓表示傳遞的是控制信息。5.5
結(jié)構(gòu)化設計方法
525.5.1表示軟件結(jié)構(gòu)的圖形工具1.層次圖和HIPO圖
2.結(jié)構(gòu)圖有時還會用一些附加的符號,如用菱形表示選擇或者條件調(diào)用,用弧形箭頭表示循環(huán)調(diào)用,如圖所示。選擇/條件調(diào)用循環(huán)調(diào)用5.5
結(jié)構(gòu)化設計方法
53
5.5.2面向數(shù)據(jù)流的設計方法面向數(shù)據(jù)流的設計方法是常用的結(jié)構(gòu)化設計方法,多在概要設計階段使用。它主要是指依據(jù)一定的映射規(guī)則,將需求分析階段得到的數(shù)據(jù)描述從系統(tǒng)的輸入端到輸出端所經(jīng)歷的一系列變換或處理的數(shù)據(jù)流圖轉(zhuǎn)換為目標系統(tǒng)的結(jié)構(gòu)描述。在數(shù)據(jù)流圖中,數(shù)據(jù)流分為變換型數(shù)據(jù)流和事務型數(shù)據(jù)流兩種。所謂變換,是指把輸入的數(shù)據(jù)處理后轉(zhuǎn)變成另外的輸出數(shù)據(jù)。信息沿輸入路徑流入系統(tǒng),在系統(tǒng)中經(jīng)過加工處理后又離開系統(tǒng),當信息流具備這種特征時就是變換流。所謂事務,是指非數(shù)據(jù)變換的處理,它將輸入的數(shù)據(jù)流分散成許多數(shù)據(jù)流,形成若干個加工,然后選擇其中一個路徑來執(zhí)行。5.5
結(jié)構(gòu)化設計方法
54
5.5.2面向數(shù)據(jù)流的設計方法1.變換型數(shù)據(jù)流2.事務型數(shù)據(jù)流通常,在一個大型系統(tǒng)中,可能同時存在變換型數(shù)據(jù)流和事務型數(shù)據(jù)流。對于變換型數(shù)據(jù)流,設計人員應該重點區(qū)分其輸入和輸出分支,通過變換分析將數(shù)據(jù)流圖映射為變換結(jié)構(gòu),從而構(gòu)造出目標系統(tǒng)的結(jié)構(gòu)圖。針對變換型數(shù)據(jù)流的設計可以分為以下幾個步驟:(1)區(qū)分變換型數(shù)據(jù)流中的輸入數(shù)據(jù)、變換中心和
輸出數(shù)據(jù),并在數(shù)據(jù)流圖上用虛線標明分界線。(2)分析得到系統(tǒng)的初始結(jié)構(gòu)圖。(3)對系統(tǒng)結(jié)構(gòu)圖進行優(yōu)化。變換型數(shù)據(jù)流5.5
結(jié)構(gòu)化設計方法
55
5.5.2面向數(shù)據(jù)流的設計方法1.變換型數(shù)據(jù)流2.事務型數(shù)據(jù)流對于事務型數(shù)據(jù)流,設計人員應該重點區(qū)分事務中心和數(shù)據(jù)接收通路,通過事務分析將數(shù)據(jù)流圖映射為事務結(jié)構(gòu)。針對事務型數(shù)據(jù)流的設計可以分為以下幾個步驟:(1)確定以事務為中心的結(jié)構(gòu),找出事務中心、接
收數(shù)據(jù)、處理路徑這三個部分。(2)將數(shù)據(jù)流圖轉(zhuǎn)換為初始的系統(tǒng)結(jié)構(gòu)圖。(3)分解和細化接收分支和處理分支事務型數(shù)據(jù)流5.5
結(jié)構(gòu)化設計方法
5.5.3面向數(shù)據(jù)結(jié)構(gòu)的設計方法56
軟件結(jié)構(gòu)設計軟件結(jié)構(gòu)描述輸入數(shù)據(jù)結(jié)構(gòu)輸出方法:Jackson方法和Warnier方法面向數(shù)據(jù)結(jié)構(gòu)的設計方法就是根據(jù)數(shù)據(jù)結(jié)構(gòu)設計程序處理過程的方法,具體地說,面向數(shù)據(jù)結(jié)構(gòu)的設計方法按輸入、輸出以及計算機內(nèi)部存儲信息的數(shù)據(jù)結(jié)構(gòu)進行軟件結(jié)構(gòu)設計,從而把對數(shù)據(jù)結(jié)構(gòu)的描述轉(zhuǎn)換為對軟件結(jié)構(gòu)的描述。使用面向數(shù)據(jù)結(jié)構(gòu)的設計方法時,分析目標系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)是關(guān)鍵。5.5
結(jié)構(gòu)化設計方法
5.5.3面向數(shù)據(jù)結(jié)構(gòu)的設計方法57
Jackson方法把數(shù)據(jù)結(jié)構(gòu)分為3種基本類型:順序型結(jié)構(gòu)、選擇型結(jié)構(gòu)和循環(huán)型結(jié)構(gòu)在順序型結(jié)構(gòu)中,數(shù)據(jù)由一個或多個元素組成,每個元素按照確定的次序出現(xiàn)一次。在順序型圖示中,數(shù)據(jù)A由B、C和D3個元素順序組成。在選擇型結(jié)構(gòu)中,數(shù)據(jù)包含兩個或多個元素,每次使用該數(shù)據(jù)時,按照一定的條件從羅列的多個數(shù)據(jù)元素中選擇一個。在選擇型圖示中,數(shù)據(jù)A根據(jù)條件從B或C或D中選擇一個,元素右上方的符號“°”表示從中選擇一個。在循環(huán)型結(jié)構(gòu)中,數(shù)據(jù)根據(jù)使用時的條件由一個數(shù)據(jù)元素出現(xiàn)零次或多次構(gòu)成。在循環(huán)型圖示中,數(shù)據(jù)A根據(jù)條件由元素B出現(xiàn)零次或多次組成。元素B后加符號“*”表示重復。5.5
結(jié)構(gòu)化設計方法
5.5.3面向數(shù)據(jù)結(jié)構(gòu)的設計方法58
Jackson方法把數(shù)據(jù)結(jié)構(gòu)分為3種基本類型:順序型結(jié)構(gòu)、選擇型結(jié)構(gòu)和循環(huán)型結(jié)構(gòu)運用Jackson圖表達選擇型或循環(huán)型結(jié)構(gòu)時,選擇條件或循環(huán)結(jié)束條件不能在圖上直接表現(xiàn)出來,并且如果框間連線為斜線,不易在打印機上輸出,所以產(chǎn)生了改進的Jackson圖,其基本邏輯符號如圖所示。5.5
結(jié)構(gòu)化設計方法
5.5.3面向數(shù)據(jù)結(jié)構(gòu)的設計方法59
運用Jackson圖進行程序設計有如下優(yōu)點:(1)可以清晰地表示層次結(jié)構(gòu),易于對自頂向下的結(jié)
構(gòu)進行描述。(2)結(jié)構(gòu)易懂、易用,并且比較直觀形象。(3)不僅可以表示數(shù)據(jù)結(jié)構(gòu),也可以表示程序結(jié)構(gòu)運用Jackson圖進行程序設計的步驟:(1)分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson結(jié)構(gòu)來表示這些數(shù)據(jù)結(jié)構(gòu)。(2)找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對應關(guān)系的數(shù)據(jù)單元。(3)按照一定的規(guī)則,從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖導出描繪程序結(jié)構(gòu)的Jackson圖。(4)列出基本操作與條件,并把它們分配到程序結(jié)構(gòu)圖的適當位置。(5)用偽代碼表示程序。5.5
結(jié)構(gòu)化設計方法
5.6接口設計615.6
接口設計
5.6.1接口設計概述5.6.2界面設計625.6
接口設計
5.6.1接口設計概述軟件系統(tǒng)業(yè)務功能部署………………接口子系統(tǒng)OUTINERROR模塊接口接口外部系統(tǒng)接口軟件系統(tǒng)結(jié)合業(yè)務、功能、部署等等因素將軟件系統(tǒng)逐步分解到模塊,那么模塊與模塊之間就必須根據(jù)各模塊的功能定義對應的接口。概要設計(總體設計)中的接口設計主要用于子系統(tǒng)/模塊之間或內(nèi)部系統(tǒng)與外部系統(tǒng)進行各種交互。接口設計的內(nèi)容應包括功能描述、接口的輸入輸出定義、錯誤處理等。軟件系統(tǒng)接口的種類以及規(guī)范很多,可以有API、服務接口、文件、數(shù)據(jù)庫等等,所以設計的方法也有很大的差異。但是總體來說接口設計的內(nèi)容應包括通訊方法、協(xié)議、接口調(diào)用方法、功能內(nèi)容、輸入輸出參數(shù)、錯誤/例外機制等。從成果上來看,接口一覽表以及詳細設計資料是必須的資料。635.6
接口設計
5.6.1接口設計概述接口設計一般包括3個方面:(1)用戶接口--用來說明將向用戶提供的命令和它們的語法結(jié)構(gòu)以及軟件回答信息(2)外部接口--用來說明本系統(tǒng)同外界的所有接口的安排包括軟件與硬件之間的接口、
本系統(tǒng)與各支持軟件之間的接口關(guān)系(3)內(nèi)部接口--用來說明本系統(tǒng)之內(nèi)的各個系統(tǒng)元素之間的接口的安排。645.6
接口設計
5.6.2界面設計
界面設計是接口設計中的重要組成部分。用戶界面的設計要求在研究技術(shù)問題的同時對人加以研究。TheoMandel在其關(guān)于界面設計的著作中提出了3條“黃金原則”。1)置用戶于控制之下2)減少用戶的記憶負擔3)保持界面一致
這些黃金原則實際上構(gòu)成了指導用戶界面設計活動的基本原則。655.6
接口設計
5.6.2界面設計1創(chuàng)建系統(tǒng)功能的外部模型確定為完成此系統(tǒng)功能人和計算機應分別完成的任務考慮界面設計中的典型問題借助CASE工具構(gòu)造界面原型實現(xiàn)設計模型評估界面質(zhì)量23456界面設計是一個迭代的過程,其核心活動包括:665.6
接口設計
5.6.2界面設計在界面的設計過程中先后涉及4個模型終端用戶對未來系統(tǒng)的假想(systemperception或user'smodel)由人機工程師(或軟件工程師)創(chuàng)建的用戶模型(usermodel)系統(tǒng)實現(xiàn)后得到的系統(tǒng)映象(systemimage)由軟件工程師創(chuàng)建的設計模型(designmodel)1234675.6
接口設計
5.6.2界面設計在界面設計中,應該考慮4個問題。1)系統(tǒng)響應時間:指當用戶執(zhí)行了某個控制動作后(如,點擊鼠標器等),系統(tǒng)做出反應的時間(指輸出信息或執(zhí)行對應的動作)。系統(tǒng)響應時間過長、不同命令在響應時間上的差別過于懸殊,用戶將難以接受。2)用戶求助機制:用戶都希望得到聯(lián)機幫助,聯(lián)機幫助系統(tǒng)有兩類,集成式和疊加式,此外,還要考慮諸如幫助范圍(僅考慮部分還是全部功能)、用戶求助的途徑、幫助信息的顯示、用戶如何返回正常交互工作及幫助信息本身如何組織等一系列問題。3)出錯信息:應選用用戶明了、含義準確的術(shù)語描述,同時還應盡可能提供一些有關(guān)錯誤恢復的建議。此外,顯示出錯信息時,若輔以聽覺(如鈴聲)、視覺(專用顏色)刺激,則效果更佳。4)命令方式:鍵盤命令曾經(jīng)一度是用戶與軟件系統(tǒng)之間最通用的交互方式,隨著面向窗口的點選界面的出現(xiàn),鍵盤命令雖不再是唯一的交互形式,但許多有經(jīng)驗的熟練的軟件人員仍喜愛這一方式,更多的情形是菜單與鍵盤命令并存,供用戶自由選用。5.7數(shù)據(jù)設計695.7
數(shù)據(jù)設計
數(shù)據(jù)設計就是將需求分析階段定義的數(shù)據(jù)對象(E-R圖、數(shù)據(jù)字典)轉(zhuǎn)換為設計階段的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫,包括兩個方面。1)程序級的數(shù)據(jù)結(jié)構(gòu)設計:采用(偽)代碼的方式定義數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)的組成、類型、缺省值等信息);2)應用級的數(shù)據(jù)庫設計:采用物理級的E-R圖表示。DataBase數(shù)據(jù)結(jié)構(gòu)705.7
數(shù)據(jù)設計
數(shù)據(jù)庫有以下主要特點:1)實現(xiàn)數(shù)據(jù)共享2)數(shù)據(jù)冗余度減少3)數(shù)據(jù)的獨立性4)數(shù)據(jù)實現(xiàn)集中控制5)數(shù)據(jù)一致性和可維護性,以確保數(shù)據(jù)的安全性和可靠性6)故障可修復性715.7
數(shù)據(jù)設計
數(shù)據(jù)的基本結(jié)構(gòu)分三個層次,反映了觀察數(shù)據(jù)庫的三種不同角度。1)物理數(shù)據(jù)層是數(shù)據(jù)庫的最內(nèi)層,是物理存儲設備上實際存儲的數(shù)據(jù)的集合。這些數(shù)據(jù)是原始數(shù)據(jù),是用戶加工的對象,由內(nèi)部模式描述的指令操作處理的位串、字符和字組成。2)概念數(shù)據(jù)層是數(shù)據(jù)庫的中間一層,是數(shù)據(jù)庫的整體邏輯表示。指出了每個數(shù)據(jù)的邏輯定義及數(shù)據(jù)之間的邏輯聯(lián)系,是存儲記錄的集合。它所設計的是數(shù)據(jù)庫所有對象的邏輯關(guān)系,而不是它們的物理關(guān)系,是數(shù)據(jù)庫管理員概念下的數(shù)據(jù)庫。3)邏輯數(shù)據(jù)層是用戶所看到和使用的數(shù)據(jù)庫,表示了一個或一些特定用戶使用的數(shù)據(jù)集合,即邏輯記錄的集合。數(shù)據(jù)庫基本結(jié)構(gòu)物理數(shù)據(jù)層概念數(shù)據(jù)層邏輯數(shù)據(jù)層725.7
數(shù)據(jù)設計
驗證設計物理設計邏輯設計概念設計需求分析數(shù)
據(jù)庫設計過程735.7
數(shù)據(jù)設計
數(shù)據(jù)庫設計是指根據(jù)用戶的需求,在某一具體的數(shù)據(jù)庫管理系統(tǒng)上,設計數(shù)據(jù)庫的結(jié)構(gòu)和建立數(shù)據(jù)庫的過程。一般,數(shù)據(jù)庫的設計過程大致可分數(shù)據(jù)庫設計為5個步驟,如下所示。1)需求分析;調(diào)查和分析用戶的業(yè)務活動和數(shù)據(jù)的使用情況,弄清所用數(shù)據(jù)的種類、范圍、數(shù)量以及它們在業(yè)務活動中交流的情況,確定用戶對數(shù)據(jù)庫系統(tǒng)的使用要求和各種約束條件等,形成用戶需求規(guī)約。2)概念設計;對用戶要求描述的現(xiàn)實世界(可能是一個工廠、一個商場或者一個學校等),通過對其中信息的分類、聚集和概括,建立抽象的概念數(shù)據(jù)模型。這個概念模型應反映現(xiàn)實世界各部門的信息結(jié)構(gòu)、信息流動情況、信息間的互相制約關(guān)系以及各部門對信息儲存、查詢和加工的要求等。所建立的模型應避開數(shù)據(jù)庫在計算機上的具體實現(xiàn)細節(jié),用一種抽象的形式表示出來。745.7
數(shù)據(jù)設計
3)邏輯設計;主要工作是將現(xiàn)實世界的概念數(shù)據(jù)模型設計成數(shù)據(jù)庫的一種邏輯模式,即適應于某種特定數(shù)據(jù)庫管理系統(tǒng)所支持的邏輯數(shù)據(jù)模式。與此同時,可能還需為各種數(shù)據(jù)處理應用領(lǐng)域產(chǎn)生相應的邏輯子模式。這一步設計的結(jié)果就是所謂“邏輯數(shù)據(jù)庫”。4)物理設計;根據(jù)特定數(shù)據(jù)庫管理系統(tǒng)所提供的多種存儲結(jié)構(gòu)和存取方法等依賴于具體計算機結(jié)構(gòu)的各項物理設計措施,對具體的應用任務選定最合適的物理存儲結(jié)構(gòu)(包括文件類型、索引結(jié)構(gòu)和數(shù)據(jù)的存放次序與位邏輯等)、存取方法和存取路徑等。這一步設計的結(jié)果就是所謂“物理數(shù)據(jù)庫”。5)驗證設計;在上述設計的基礎上,收集數(shù)據(jù)并具體建立一個數(shù)據(jù)庫,運行一些典型的應用任務來驗證數(shù)據(jù)庫設計的正確性和合理性。一般,一個大型數(shù)據(jù)庫的設計過程往往需要經(jīng)過多次循環(huán)反復。當設計的某步發(fā)現(xiàn)問題時,可能就需要返回到前面去進行修改。因此,在做上述數(shù)據(jù)庫設計時就應考慮到今后修改設計的可能性和方便性。755.7
數(shù)據(jù)設計
3)邏輯設計;主要工作是將現(xiàn)實世界的概念數(shù)據(jù)模型設計成數(shù)據(jù)庫的一種邏輯模式,即適應于某種特定數(shù)據(jù)庫管理系統(tǒng)所支持的邏輯數(shù)據(jù)模式。與此同時,可能還需為各種數(shù)據(jù)處理應用領(lǐng)域產(chǎn)生相應的邏輯子模式。這一步設計的結(jié)果就是所謂“邏輯數(shù)據(jù)庫”。4)物理設計;根據(jù)特定數(shù)據(jù)庫管理系統(tǒng)所提供的多種存儲結(jié)構(gòu)和存取方法等依賴于具體計算機結(jié)構(gòu)的各項物理設計措施,對具體的應用任務選定最合適的物理存儲結(jié)構(gòu)(包括文件類型、索引結(jié)構(gòu)和數(shù)據(jù)的存放次序與位邏輯等)、存取方法和存取路徑等。這一步設計的結(jié)果就是所謂“物理數(shù)據(jù)庫”。5)驗證設計;在上述設計的基礎上,收集數(shù)據(jù)并具體建立一個數(shù)據(jù)庫,運行一些典型的應用任務來驗證數(shù)據(jù)庫設計的正確性和合理性。一般,一個大型數(shù)據(jù)庫的設計過程往往需要經(jīng)過多次循環(huán)反復。當設計的某步發(fā)現(xiàn)問題時,可能就需要返回到前面去進行修改。因此,在做上述數(shù)據(jù)庫設計時就應考慮到今后修改設計的可能性和方便性。5.8過程設計775.8
過程設計
5.8.1程序流程圖5.8.2N-S圖5.8.3PAD圖5.8.4過程設計語言785.8
過程設計
5.8.1程序流程圖流程圖是對過程、算法、流程的一種圖形表示,它對某個問題的定義、分析或解法進行描述,用定義完善的符號來表示操作、數(shù)據(jù)、流向等概念。流程圖分為數(shù)據(jù)流程圖、程序流程圖、系統(tǒng)流程圖、程序網(wǎng)絡圖和系統(tǒng)資源圖5種。這里主要介紹程序流程圖。程序流程圖也稱為程序框圖,是一種比較直觀、形象地描述過程的控制流程的圖形工具。它包含5種基本的控制結(jié)構(gòu):順序型、選擇型、先判定型循環(huán)(WHILE-DO)、后判定型循環(huán)(DO-WHILE)和多分支選擇型。流程圖的基本符號795.8
過程設計
5.8.1程序流程圖流程圖的控制結(jié)構(gòu)805.8
過程設計
5.8.1程序流程圖程序流程圖的主要優(yōu)點是:采用簡單規(guī)范的符號,畫法簡單結(jié)構(gòu)清晰,邏輯性強便于描述,容易理解程序流程圖的主要缺點是:不利于逐步求精的設計圖中可用箭頭隨意地對控制進行轉(zhuǎn)移,與結(jié)構(gòu)化程序設計精神相悖不易于表示系統(tǒng)中所含的數(shù)據(jù)結(jié)構(gòu)當目標系統(tǒng)比較復雜時,流程圖會變得很繁雜、不清晰815.8
過程設計
5.8.2N-S圖N-S圖是由Nassi和Shneiderman提出的,又被稱為盒圖,是一種符合結(jié)構(gòu)化程序設計原則的圖形工具。N-S圖的基本符號如圖所示。825.8
過程設計
5.8.2N-S圖N-S圖用類似盒子的矩形以及矩形之間的嵌套來表示語句或語句序列。N-S圖內(nèi)部沒有箭頭,因此,它所表示的控制流程不能隨便進行轉(zhuǎn)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度木飾面原材料進口與分銷合同3篇
- 2025年親子遺贈協(xié)議草案
- 2025年代理商代理加盟采購合資合作協(xié)議
- 2025年合資合作收益分配協(xié)議
- 2025年企業(yè)外包勞務協(xié)議
- 2025年智慧城市物業(yè)管理服務標準合同范本6篇
- 漫談加強物資管理提高企業(yè)經(jīng)濟效益-圖文
- 《皮質(zhì)醇增多征荊》課件
- 2025年度醫(yī)院病理科診斷服務承包合同4篇
- 2025年度汽車轉(zhuǎn)讓及二手車交易稅費減免合同
- 廢舊物資買賣合同極簡版
- 2024年正定縣國資產(chǎn)控股運營集團限公司面向社會公開招聘工作人員高頻考題難、易錯點模擬試題(共500題)附帶答案詳解
- 智能衣服方案
- 李克勤紅日標準粵語注音歌詞
- 教科版六年級下冊科學第一單元《小小工程師》教材分析及全部教案(定稿;共7課時)
- 中藥材產(chǎn)地加工技術(shù)規(guī)程 第1部分:黃草烏
- 危險化學品經(jīng)營單位安全生產(chǎn)考試題庫
- 案例分析:美國紐約高樓防火設計課件
- 老客戶維護方案
- 移動商務內(nèi)容運營(吳洪貴)任務一 用戶定位與選題
- 工作證明模板下載免費
評論
0/150
提交評論