軟件工程理論與實(shí)踐 課件 第5章 軟件設(shè)計(jì)與結(jié)構(gòu)優(yōu)化設(shè)計(jì)-1_第1頁
軟件工程理論與實(shí)踐 課件 第5章 軟件設(shè)計(jì)與結(jié)構(gòu)優(yōu)化設(shè)計(jì)-1_第2頁
軟件工程理論與實(shí)踐 課件 第5章 軟件設(shè)計(jì)與結(jié)構(gòu)優(yōu)化設(shè)計(jì)-1_第3頁
軟件工程理論與實(shí)踐 課件 第5章 軟件設(shè)計(jì)與結(jié)構(gòu)優(yōu)化設(shè)計(jì)-1_第4頁
軟件工程理論與實(shí)踐 課件 第5章 軟件設(shè)計(jì)與結(jié)構(gòu)優(yōu)化設(shè)計(jì)-1_第5頁
已閱讀5頁,還剩87頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第5

章軟件設(shè)計(jì)與結(jié)構(gòu)化設(shè)計(jì)2錄目CONTENTS5.1

軟件設(shè)計(jì)的基本概念5.2軟件體系結(jié)構(gòu)5.3結(jié)構(gòu)化設(shè)計(jì)概述5.4結(jié)構(gòu)化設(shè)計(jì)與結(jié)構(gòu)化分析的關(guān)系5.5結(jié)構(gòu)化設(shè)計(jì)方法5.6接口設(shè)計(jì)5.6

數(shù)據(jù)設(shè)計(jì)5.7

過程設(shè)計(jì)5.8

軟件設(shè)計(jì)評(píng)審5.1軟件設(shè)計(jì)的基本概念45.1軟件設(shè)計(jì)的基本概念

5.1.1軟件設(shè)計(jì)的意義和目標(biāo)5.1.2軟件設(shè)計(jì)的原則5.1.3軟件設(shè)計(jì)的分類55.1軟件設(shè)計(jì)的基本概念

做什么怎么做0102完成了需求分析,回答了軟件系統(tǒng)能“做什么”的問題,軟件的生命周期就進(jìn)入了設(shè)計(jì)階段。軟件設(shè)計(jì)是軟件開發(fā)過程中的重要階段,在此階段中,開發(fā)人員將集中研究如何把需求規(guī)格說明書里歸納的分析模型轉(zhuǎn)換為可行的設(shè)計(jì)模型,并將解決方案記錄到相關(guān)的設(shè)計(jì)文檔中。實(shí)際上,軟件設(shè)計(jì)的目標(biāo)就是要回答“怎么做”才能實(shí)現(xiàn)軟件系統(tǒng)的問題,也可以把設(shè)計(jì)階段的任務(wù)理解為把軟件系統(tǒng)能“做什么”的邏輯模型轉(zhuǎn)換為“怎么做”的物理模型。軟件設(shè)計(jì)在軟件開發(fā)中處于核心地位。65.1軟件設(shè)計(jì)的基本概念

5.1.1軟件設(shè)計(jì)的意義和目標(biāo)1.設(shè)計(jì)必須實(shí)現(xiàn)所有包含在分析模型中的明確需求,而且必須滿足用戶期望的所有隱含需求2.對(duì)于程序員、測(cè)試人員和維護(hù)人員而言,設(shè)計(jì)必須是可讀的、可理解的指南3.設(shè)計(jì)必須提供軟件的全貌,從實(shí)現(xiàn)的角度說明數(shù)據(jù)域、功能域和行為域評(píng)價(jià)良好設(shè)計(jì)演化的特征McGlaughlin提出軟件設(shè)計(jì)在軟件開發(fā)過程中處于核心地位,它是保證質(zhì)量的關(guān)鍵步驟。設(shè)計(jì)為我們提供了可以用于質(zhì)量評(píng)估的軟件表示,設(shè)計(jì)是我們能夠?qū)⒂脩粜枨鬁?zhǔn)確地轉(zhuǎn)化為軟件產(chǎn)品或系統(tǒng)的唯一方法。軟件設(shè)計(jì)是所有軟件工程活動(dòng)和隨后的軟件支持活動(dòng)的基礎(chǔ)。軟件設(shè)計(jì)是一個(gè)迭代的過程,通過設(shè)計(jì)過程,需求被變換為用于構(gòu)建軟件的“藍(lán)圖”75.1軟件設(shè)計(jì)的基本概念

1.模塊化模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募希菢?gòu)成程序的基本構(gòu)件,可以被單獨(dú)命名并通過名字來訪問。在面向過程的設(shè)計(jì)中,過程、函數(shù)、子程序、宏都可以作為模塊;在面向?qū)ο蟮脑O(shè)計(jì)中,對(duì)象是模塊,對(duì)象中的方法也是模塊。模塊化就是把系統(tǒng)或程序劃分為獨(dú)立命名并且可以獨(dú)立訪問的模塊,每個(gè)模塊完成一個(gè)特定的子功能。模塊集成起來可以構(gòu)成一個(gè)整體,完成特定的功能,進(jìn)而滿足用戶需求。5.1.2軟件設(shè)計(jì)的原則->模塊化.抽象.逐步求精.信息隱藏.復(fù)用性設(shè)計(jì).靈活性設(shè)計(jì)

85.1軟件設(shè)計(jì)的基本概念

5.1.2軟件設(shè)計(jì)的原則->模塊化.抽象.逐步求精.信息隱藏.復(fù)用性設(shè)計(jì).靈活性設(shè)計(jì)

在模塊化的過程中,要注意以下幾點(diǎn)。(1)模塊的規(guī)模要適中。(2)提高模塊的獨(dú)立性,降低模塊間的耦合程度。(3)提高模塊的內(nèi)聚程度。(4)加強(qiáng)模塊的保護(hù)性。95.1軟件設(shè)計(jì)的基本概念

5.1.2軟件設(shè)計(jì)的原則->模塊化.抽象.逐步求精.信息隱藏.復(fù)用性設(shè)計(jì).靈活性設(shè)計(jì)

在模塊化的過程中,要注意以下幾點(diǎn)。(1)模塊的規(guī)模要適中。(2)提高模塊的獨(dú)立性,降低模塊間的耦合程度。(3)提高模塊的內(nèi)聚程度。(4)加強(qiáng)模塊的保護(hù)性。105.1軟件設(shè)計(jì)的基本概念

5.1.2軟件設(shè)計(jì)的原則->模塊化.抽象.逐步求精.信息隱藏.復(fù)用性設(shè)計(jì).靈活性設(shè)計(jì)

在模塊化的過程中,要注意以下幾點(diǎn)。(1)模塊的規(guī)模要適中。(2)提高模塊的獨(dú)立性,降低模塊間的耦合程度。(3)提高模塊的內(nèi)聚程度。(4)加強(qiáng)模塊的保護(hù)性。115.1軟件設(shè)計(jì)的基本概念

5.1.2軟件設(shè)計(jì)的原則->模塊化.抽象.逐步求精.信息隱藏.復(fù)用性設(shè)計(jì).靈活性設(shè)計(jì)

2.抽象

抽象是人們認(rèn)識(shí)復(fù)雜的客觀世界時(shí)所使用的一種思維工具。抽象主要是為了降低問題的復(fù)雜度,以得到問題領(lǐng)域中較簡單的概念,好讓人們能夠控制其過程或以宏觀的角度來了解許多特定的事態(tài)。

抽象在軟件開發(fā)過程中起著非常重要的作用。一個(gè)龐大、復(fù)雜的系統(tǒng)可以先用一些宏觀的概念構(gòu)造和理解,然后再逐層地用一些較微觀的概念去解釋上層的宏觀概念,直到最底層的元素。125.1軟件設(shè)計(jì)的基本概念

5.1.2軟件設(shè)計(jì)的原則->模塊化.抽象.逐步求精.信息隱藏.復(fù)用性設(shè)計(jì).靈活性設(shè)計(jì)

3.逐步求精在面對(duì)一個(gè)新問題時(shí),開發(fā)人員可暫時(shí)忽略問題非本質(zhì)的細(xì)節(jié),而關(guān)注于與本質(zhì)相關(guān)的宏觀概念,集中精力解決主要問題,這種認(rèn)識(shí)事物的方法就是逐步求精。逐步求精是抽象的逆過程。開發(fā)人員認(rèn)識(shí)問題時(shí)逐步求精的過程,同時(shí)也是抽象程度逐漸降低的過程。按照逐步求精的思想,程序的體系結(jié)構(gòu)是按照層次結(jié)構(gòu),逐步精化過程細(xì)節(jié)而開發(fā)出來的??梢姡缶褪羌?xì)化,它與抽象是互補(bǔ)的概念。135.1軟件設(shè)計(jì)的基本概念

5.1.2軟件設(shè)計(jì)的原則->模塊化.抽象.逐步求精.信息隱藏.復(fù)用性設(shè)計(jì).靈活性設(shè)計(jì)

4.信息隱藏信息隱藏與模塊化的概念相關(guān)。當(dāng)一個(gè)系統(tǒng)被分解為若干個(gè)模塊時(shí),為了避免某個(gè)模塊的行為干擾同一系統(tǒng)中的其他模塊,應(yīng)該讓模塊僅僅公開必須讓外界知道的信息,而將其他信息隱藏起來,這樣模塊的具體實(shí)現(xiàn)細(xì)節(jié)相對(duì)于其他不相關(guān)的模塊而言就是不可見的,這種機(jī)制就叫做信息隱藏。信息隱藏提高了模塊的獨(dú)立性,加強(qiáng)了外部對(duì)模塊內(nèi)部信息進(jìn)行訪問的限制,它使得模塊的局部錯(cuò)誤盡量不影響其他模塊。信息隱藏有利于軟件的測(cè)試和維護(hù)工作。通常,模塊的信息隱藏可以通過接口來實(shí)現(xiàn)。模塊通過接口與外部進(jìn)行通信,而把模塊的具體實(shí)現(xiàn)細(xì)節(jié)(如數(shù)據(jù)結(jié)構(gòu)、算法等內(nèi)部信息)隱藏起來。一般來說,一個(gè)模塊具有有限個(gè)接口,外部模塊通過調(diào)用相應(yīng)的接口來實(shí)現(xiàn)對(duì)目標(biāo)模塊的操作。API145.1軟件設(shè)計(jì)的基本概念

5.1.2軟件設(shè)計(jì)的原則->模塊化.抽象.逐步求精.信息隱藏.復(fù)用性設(shè)計(jì).靈活性設(shè)計(jì)

5.復(fù)用性設(shè)計(jì)

軟件復(fù)用(重用)就是將已有的軟件成分用于構(gòu)造新的軟件系統(tǒng)??梢员粡?fù)用的軟件成分一般稱作可復(fù)用構(gòu)件,無論對(duì)可復(fù)用構(gòu)件原封不動(dòng)地使用還是作適當(dāng)?shù)男薷暮笤偈褂?,只要是用來?gòu)造新軟件,則都可稱作復(fù)用。軟件復(fù)用不僅僅是對(duì)程序的復(fù)用,它還包括對(duì)軟件生產(chǎn)過程中任何活動(dòng)所產(chǎn)生的制成品的復(fù)用,如軟件開發(fā)計(jì)劃、可行性研究報(bào)告、分析模型、設(shè)計(jì)模型、源程序`、測(cè)試用例等等。如果是在一個(gè)系統(tǒng)中多次使用一個(gè)相同的軟件成分,則不稱作復(fù)用,而稱作共享;對(duì)一個(gè)軟件進(jìn)行修改,使它運(yùn)行于新的軟硬件平臺(tái)也不稱作復(fù)用,而稱作軟件移值。155.1軟件設(shè)計(jì)的基本概念

5.1.2軟件設(shè)計(jì)的原則->模塊化.抽象.逐步求精.信息隱藏.復(fù)用性設(shè)計(jì).靈活性設(shè)計(jì)

降低耦合并提高內(nèi)聚建立抽象不要將代碼寫死拋出異常使用并創(chuàng)建可復(fù)用的代碼在設(shè)計(jì)(尤其是面向?qū)ο蟮脑O(shè)計(jì))中引入靈活性的方法靈活性設(shè)計(jì),簡而言之就是軟件在面對(duì)需求修改時(shí)的隨機(jī)應(yīng)變能力,可以體現(xiàn)在修改程序代碼的工程量等方面。抽象是軟件設(shè)計(jì)的關(guān)鍵因素。設(shè)計(jì)模式、軟件架構(gòu)等可以用來實(shí)現(xiàn)更高抽象層次的編程,以達(dá)到軟件的靈活性165.1軟件設(shè)計(jì)的基本概念

5.1.3軟件設(shè)計(jì)的分類活動(dòng)任務(wù)觀點(diǎn).工程管理觀點(diǎn)軟件設(shè)計(jì)活動(dòng)任務(wù)工程管理1.數(shù)據(jù)設(shè)計(jì)

2.體系結(jié)構(gòu)設(shè)計(jì)3.接口設(shè)計(jì)4.構(gòu)件設(shè)計(jì)和部署設(shè)計(jì)。1.概要設(shè)計(jì)(總體設(shè)計(jì))2.詳細(xì)設(shè)計(jì)175.1軟件設(shè)計(jì)的基本概念

5.1.3軟件設(shè)計(jì)的分類活動(dòng)任務(wù)觀點(diǎn).工程管理觀點(diǎn)軟件設(shè)計(jì)活動(dòng)任務(wù)工程管理數(shù)據(jù)設(shè)計(jì)、體系結(jié)構(gòu)設(shè)計(jì)、接口設(shè)計(jì)、構(gòu)件設(shè)計(jì)和部署設(shè)計(jì)。1)數(shù)據(jù)設(shè)計(jì)創(chuàng)建在高抽象級(jí)別上表示的數(shù)據(jù)模型和信息模型。然后,數(shù)據(jù)模型被精化為越來越多和實(shí)現(xiàn)相關(guān)的特定表示,即基于計(jì)算機(jī)的系統(tǒng)能夠處理的表示。2)體系結(jié)構(gòu)設(shè)計(jì)為我們提供軟件的整體視圖,定義了軟件系統(tǒng)各主要成份之間的關(guān)系。3)接口設(shè)計(jì)告訴我們信息如何流入和流出系統(tǒng)以及被定義為體系結(jié)構(gòu)一部分的構(gòu)件之間是如何通信的。4)構(gòu)件設(shè)計(jì)完整的描述了每個(gè)軟件構(gòu)件的內(nèi)部細(xì)節(jié),為所有本地?cái)?shù)據(jù)對(duì)象定義數(shù)據(jù)結(jié)構(gòu),為所有在構(gòu)件內(nèi)發(fā)生的處理定義算法細(xì)節(jié),并定義允許訪問所有構(gòu)件操作的接口。5)部署設(shè)計(jì)指明軟件功能和子系統(tǒng)如何在支持軟件的物理計(jì)算環(huán)境內(nèi)分布。185.1軟件設(shè)計(jì)的基本概念

5.1.3軟件設(shè)計(jì)的分類活動(dòng)任務(wù)觀點(diǎn).工程管理觀點(diǎn)軟件設(shè)計(jì)活動(dòng)任務(wù)工程管理概要設(shè)計(jì)確定軟件的結(jié)構(gòu)以及各組成部分之間的相互關(guān)系。它以需求規(guī)格說明書為基礎(chǔ),概要地說明軟件系統(tǒng)的實(shí)現(xiàn)方案,包括:目標(biāo)系統(tǒng)的總體架構(gòu)每個(gè)模塊的功能描述、數(shù)據(jù)接口描述及模塊之間的調(diào)用關(guān)系數(shù)據(jù)庫、數(shù)據(jù)定義和數(shù)據(jù)結(jié)構(gòu)等其中,目標(biāo)系統(tǒng)的總體架構(gòu)為軟件系統(tǒng)提供了一個(gè)結(jié)構(gòu)、行為和屬性的高級(jí)抽象,由構(gòu)成系統(tǒng)的元素的描述、這些元素之間的相互作用、指導(dǎo)元素集成的模式以及這些模式的約束組成。195.1軟件設(shè)計(jì)的基本概念

5.1.3軟件設(shè)計(jì)的分類活動(dòng)任務(wù)觀點(diǎn).工程管理觀點(diǎn)軟件設(shè)計(jì)活動(dòng)任務(wù)工程管理詳細(xì)設(shè)計(jì)確定模塊內(nèi)部的算法和數(shù)據(jù)結(jié)構(gòu),產(chǎn)生描述各模塊程序過程的詳細(xì)文檔。它對(duì)每個(gè)模塊的功能和架構(gòu)進(jìn)行細(xì)化,明確要完成相應(yīng)模塊的預(yù)定功能所需要的數(shù)據(jù)結(jié)構(gòu)和算法,并將其用某種形式描述出來。詳細(xì)設(shè)計(jì)的目標(biāo)是得到實(shí)現(xiàn)系統(tǒng)的最詳細(xì)的解決方案,明確對(duì)目標(biāo)系統(tǒng)的精確描述,從而在編碼階段可以方便地把這個(gè)描述直接翻譯為用某種程序設(shè)計(jì)語言書寫的程序。在進(jìn)行詳細(xì)設(shè)計(jì)的過程中,設(shè)計(jì)人員的工作涉及到的內(nèi)容有過程、數(shù)據(jù)和接口等。過程設(shè)計(jì)主要是指描述系統(tǒng)中每個(gè)模塊的實(shí)現(xiàn)算法和細(xì)節(jié)數(shù)據(jù)設(shè)計(jì)是對(duì)各模塊所用到的數(shù)據(jù)結(jié)構(gòu)的進(jìn)一步細(xì)化接口設(shè)計(jì)針對(duì)的是軟件系統(tǒng)各模塊之間的關(guān)系或通信方式以及目標(biāo)系統(tǒng)與外部系統(tǒng)之間的聯(lián)系5.2軟件體系結(jié)構(gòu)什么是軟件體系結(jié)構(gòu)?軟件體系結(jié)構(gòu)是系統(tǒng)的一個(gè)或多個(gè)結(jié)構(gòu),它包括1)軟件的組成元素(組件)2)這些(組件)元素的外部可見特性3)這些元素(組件)之間的相互關(guān)系軟件體系結(jié)構(gòu)不僅指定了系統(tǒng)的組織結(jié)構(gòu)和拓?fù)浣Y(jié)構(gòu),也顯示了系統(tǒng)需求和構(gòu)成系統(tǒng)的元素之間的對(duì)應(yīng)關(guān)系,提供了一些設(shè)計(jì)決策的基本原理。什么是軟件體系結(jié)構(gòu)?軟件體系結(jié)構(gòu)描述的對(duì)象是直接構(gòu)成系統(tǒng)的抽象組件。它由功能各異、相互作用的部件按照層次構(gòu)成,包含了系統(tǒng)的基礎(chǔ)構(gòu)成單元、單元之間的相互作用關(guān)系、在構(gòu)成系統(tǒng)時(shí)它們的合成方法以及對(duì)合成約束的描述。具體來說,部件包括客戶端、服務(wù)器、數(shù)據(jù)庫、程序包、過程、子程序等一切軟件的組成部分。相互作用的關(guān)系可以是過程調(diào)用、消息傳遞、共享內(nèi)存變量、客戶端/服務(wù)器的訪問協(xié)議、數(shù)據(jù)庫的訪問協(xié)議等。軟件體系結(jié)構(gòu)的作用

設(shè)計(jì)軟件的體系結(jié)構(gòu)在設(shè)計(jì)階段非常重要。軟件體系結(jié)構(gòu)就好比軟件系統(tǒng)的骨骼,如果骨骼確定了,那么軟件系統(tǒng)的框架就確定了。設(shè)計(jì)軟件體系的過程中應(yīng)當(dāng)包含以下幾項(xiàng):1)定義基本構(gòu)件、構(gòu)建打包方式以及相互作用的方式2)明確系統(tǒng)如何實(shí)現(xiàn)功能、性能、可靠性、安全性等各個(gè)方面需求3)盡量使用已有的構(gòu)件軟件體系結(jié)構(gòu)的作用

軟件體系結(jié)構(gòu)在軟件開發(fā)過程中的作用如下:2)便于開發(fā)人員與用戶的溝通

開發(fā)人員與系統(tǒng)設(shè)計(jì)人員、用戶以及其他有關(guān)人員之間進(jìn)行有效溝通,可以達(dá)成某些一致。應(yīng)用軟件體系結(jié)構(gòu)的思想方法可以更好劃分范圍,規(guī)劃時(shí)間成本,應(yīng)對(duì)客戶不夠明確的需求。1)規(guī)范軟件開發(fā)的基本架構(gòu)體系結(jié)構(gòu)一般與需求密切相關(guān),明確的需求可以產(chǎn)生明確的規(guī)格,使設(shè)計(jì)出來的軟件結(jié)構(gòu)更清晰。需求的變更也需要考慮,明確的變更趨勢(shì)可以提早在設(shè)計(jì)中體現(xiàn)。軟件體系結(jié)構(gòu)的作用

3)模塊化、層次化設(shè)計(jì)有利于減少返工提高效率,模塊越獨(dú)立越好,盡量把有明確需求的應(yīng)用劃分為獨(dú)立模塊,減少模塊之間的交集。層次化設(shè)計(jì)就是一層一層分割,利用分層處理復(fù)雜功能,下層執(zhí)行簡單功能,上層調(diào)用功能,可以有效杜絕層次之間的交集。4)便于系統(tǒng)開發(fā)前后期的籌備與服務(wù)利用體系結(jié)構(gòu)的思想開發(fā)產(chǎn)品不僅可以規(guī)范流程,節(jié)省時(shí)間,還能留下大量開發(fā)文檔、產(chǎn)品類型框架、軟件開發(fā)標(biāo)準(zhǔn)流程等資料,為今后的售前咨詢和售后服務(wù)提供參考。

兩種常用的軟件體系結(jié)構(gòu)如圖所示樹形結(jié)構(gòu)網(wǎng)狀結(jié)構(gòu)軟件體系結(jié)構(gòu)的作用典型的軟件體系結(jié)構(gòu)風(fēng)格

典型的軟件體系結(jié)構(gòu)風(fēng)格

軟件體系結(jié)構(gòu)風(fēng)格包含4個(gè)關(guān)鍵要素:1)提供一個(gè)詞匯表2)定義一套配置規(guī)則3)定義一套語義解釋規(guī)則4)定義對(duì)基于這種風(fēng)格的系統(tǒng)進(jìn)行的分析根據(jù)以上4要素框架,Garlan和Shaw對(duì)通用軟件體系結(jié)構(gòu)風(fēng)格的進(jìn)行分類,每種體系結(jié)構(gòu)風(fēng)格有各自的應(yīng)用領(lǐng)域和優(yōu)缺點(diǎn)。所謂軟件體系結(jié)構(gòu)風(fēng)格,是描述某一特定應(yīng)用領(lǐng)域中系統(tǒng)組織方式的慣用模式。數(shù)據(jù)流風(fēng)格

數(shù)據(jù)到達(dá)即被激活處理工作,無數(shù)據(jù)時(shí)不工作。一般來說,數(shù)據(jù)的流向是有序的。在純數(shù)據(jù)流系統(tǒng)中,處理之間除了數(shù)據(jù)交換,沒有任何其他的交互。主要研究近似線性的數(shù)據(jù)流,或在限度內(nèi)的循環(huán)數(shù)據(jù)流。其中包括批處理序列、管道/過濾器。調(diào)用

返回風(fēng)格

各個(gè)構(gòu)件通過調(diào)用其他構(gòu)件和獲得返回參數(shù)來進(jìn)行交互,配合完成功能。包括主程序/子程序、面向?qū)ο箫L(fēng)格、層次結(jié)構(gòu)。主程序子程序子程序子程序獨(dú)立構(gòu)件風(fēng)格

這種風(fēng)格的主要特點(diǎn)是:事件的觸發(fā)者并不知道哪些構(gòu)件會(huì)被這些事件影響,相互保持獨(dú)立,這樣不能假定構(gòu)件的處理順序,甚至不知道哪些過程會(huì)被調(diào)用各個(gè)構(gòu)件之間彼此無連接關(guān)系,各自獨(dú)立存在,通過對(duì)事件的發(fā)布和注冊(cè)實(shí)現(xiàn)關(guān)聯(lián),其中包括進(jìn)程通訊、事件系統(tǒng)虛擬機(jī)風(fēng)格

它創(chuàng)建了一種虛擬的環(huán)境,將用戶與底層平臺(tái)隔離開來,或者將高層抽象和底層實(shí)現(xiàn)隔離開來。其中包括解釋器、基于規(guī)則的系統(tǒng)倉庫風(fēng)格

倉庫是存儲(chǔ)和維護(hù)數(shù)據(jù)的中心場(chǎng)所。在倉庫風(fēng)格中存在兩類構(gòu)件,表示當(dāng)前數(shù)據(jù)的狀態(tài)的中心數(shù)據(jù)結(jié)構(gòu)和一組對(duì)中心數(shù)據(jù)進(jìn)行操作的獨(dú)立構(gòu)件。其中包括數(shù)據(jù)庫系統(tǒng)、超文本系統(tǒng)、黑板系統(tǒng)??蛻舳?服務(wù)器體系結(jié)構(gòu)

客戶端/服務(wù)器(Client/Server,簡稱C/S)體系結(jié)構(gòu)是為了共享不對(duì)等的資源而提出來的,是20世紀(jì)90年代成熟起來的技術(shù),C/S體系結(jié)構(gòu)定義了客戶端如何與服務(wù)器連接,以將數(shù)據(jù)和應(yīng)用系統(tǒng)分部到多個(gè)處理機(jī)上。C/S體系結(jié)構(gòu)有3個(gè)主要的組成部分。服務(wù)器:負(fù)責(zé)給其子系統(tǒng)提供服務(wù),如數(shù)據(jù)庫服務(wù)器提供數(shù)據(jù)存儲(chǔ)和管理服務(wù),文件服務(wù)器提供文件管理服務(wù),搜索服務(wù)器提供數(shù)據(jù)檢索等??蛻舳耍和ǔJ仟?dú)立的子系統(tǒng),通過向服務(wù)器請(qǐng)求約定的資源獲取數(shù)據(jù)。一臺(tái)服務(wù)器可以同時(shí)為許多客戶端提供服務(wù)。網(wǎng)絡(luò):連接服務(wù)器和客戶端。有時(shí)客戶端和服務(wù)器位于同一臺(tái)物理主機(jī)上,但多數(shù)情況下它們分布在不同主機(jī)上。網(wǎng)絡(luò)可以有各種形式,包括有線和無線等。

客戶端/服務(wù)器體系結(jié)構(gòu)C/S系統(tǒng)的設(shè)計(jì)必須考慮應(yīng)用系統(tǒng)的邏輯結(jié)構(gòu)在邏輯上,我們通常將應(yīng)用系統(tǒng)劃分為3層,即數(shù)據(jù)管理層、應(yīng)用邏輯層和表示層數(shù)據(jù)管理層主要處理數(shù)據(jù)存儲(chǔ)和管理操作應(yīng)用邏輯層處理與業(yè)務(wù)相關(guān)的邏輯表示層處理用戶界面以及用戶的交互在集中式系統(tǒng)中,不需要將這些清楚地分離,但在分布式系統(tǒng)中,不同層常常被部署在不同的主機(jī)上,因此必須嚴(yán)格地分離不同層。

客戶端/服務(wù)器體系結(jié)構(gòu)C/S體系結(jié)構(gòu)C/S體系結(jié)構(gòu)通常有兩層或三層,也可根據(jù)需要?jiǎng)澐譃楦鄬觾蓪覥/S結(jié)構(gòu)一般有兩種形態(tài):瘦客戶端模型。在瘦客戶端模型中,數(shù)據(jù)管理和應(yīng)用邏輯都在服務(wù)器端執(zhí)行,客戶端只負(fù)責(zé)表示部分胖客戶端模型。在這種模型中,服務(wù)器只負(fù)責(zé)對(duì)數(shù)據(jù)的管理??蛻舳松系能浖?shí)現(xiàn)應(yīng)用邏輯以及與系統(tǒng)的交互

隨著軟件復(fù)雜度不斷提高,胖客戶端模型逐漸暴露出以下缺點(diǎn):開發(fā)成本高。C/S體系對(duì)客戶端的配置要求較高,增加系統(tǒng)成本,且會(huì)使客戶端越來越臃腫用戶界面風(fēng)格不一,使用繁雜,不利于推廣使用軟件移植困難,采用不同開發(fā)工具和平臺(tái)開發(fā)的軟件之間一般不兼容,有時(shí)不得不因此開發(fā)針對(duì)另一平臺(tái)的版本軟件維護(hù)和升級(jí)困難,由于應(yīng)用程序安裝在客戶端上,需要維護(hù)時(shí)必須升級(jí)和維護(hù)所有客戶端客戶端/服務(wù)器體系結(jié)構(gòu)在兩層C/S結(jié)構(gòu)需要考慮如何將三個(gè)邏輯層映射到兩個(gè)系統(tǒng),在瘦客戶端模型存在伸縮性和性能問題,在胖客戶端模型則存在系統(tǒng)管理問題

三層C/S結(jié)構(gòu)就避免了這個(gè)問題,將數(shù)據(jù)管理層和應(yīng)用邏輯層分別放在兩個(gè)物理層或物理主機(jī)上,客戶端仍然保留在客戶端上。對(duì)于三層C/S結(jié)構(gòu),各層的功能或指責(zé)如下:表示層表示層是應(yīng)用系統(tǒng)的用戶界面部分,擔(dān)負(fù)著用戶與應(yīng)用程序之間的對(duì)話功能。通常采用圖形界面的方式呈現(xiàn)應(yīng)用邏輯層應(yīng)用邏輯層為應(yīng)用系統(tǒng)的主體,包含全部的業(yè)務(wù)邏輯。比如數(shù)據(jù)處理,用戶管理,與其他系統(tǒng)交互,以及記錄系統(tǒng)日志等。通常是應(yīng)用服務(wù)器。數(shù)據(jù)層數(shù)據(jù)層一般只負(fù)責(zé)數(shù)據(jù)的存取、管理和維護(hù)(如備份等),通常是關(guān)系型數(shù)據(jù)庫服務(wù)器客戶端/服務(wù)器體系結(jié)構(gòu)瀏覽器/服務(wù)器(Browser/Server,簡稱B/S)結(jié)構(gòu)是三層應(yīng)用結(jié)構(gòu)的一種實(shí)現(xiàn),其具體結(jié)構(gòu)為瀏覽器/Web服務(wù)器/數(shù)據(jù)庫服務(wù)器

三層結(jié)構(gòu)的優(yōu)點(diǎn):通過合理劃分三層結(jié)構(gòu),使之在邏輯上保持相對(duì)獨(dú)立,提高系統(tǒng)的可維護(hù)性和可擴(kuò)展性。能夠更靈活選用相應(yīng)的平臺(tái)和應(yīng)用系統(tǒng),使之在處理負(fù)荷能力和處理特性上分別適應(yīng)各層的要求,并具有良好的可升級(jí)性和開放性。應(yīng)用各層可以獨(dú)立并行開發(fā),每層可以根據(jù)特點(diǎn)選用合適的開發(fā)語言。安全性相對(duì)較高,因?yàn)閼?yīng)用層屏蔽了用戶直接訪問數(shù)據(jù)庫的權(quán)利,使得未授權(quán)用戶或黑客難以繞過應(yīng)用層獲取數(shù)據(jù)但三層結(jié)構(gòu)必須精心設(shè)計(jì)通信模塊,以避免通信稱為瓶頸限制服務(wù)器的發(fā)揮??蛻舳?服務(wù)器體系結(jié)構(gòu)模型-視圖-控制器

MVC(Model-View-Controller)模型由TrygveReenskaug博士在20世紀(jì)70年代提出,并最早在面向?qū)ο缶幊陶Z言Smalltalk-80中實(shí)現(xiàn)MVC強(qiáng)調(diào)將用戶的輸入、數(shù)據(jù)模型和數(shù)據(jù)表示方式分開設(shè)計(jì),一個(gè)交互式應(yīng)用系統(tǒng)由模型、視圖、控制器3部分組成,分別對(duì)應(yīng)內(nèi)部數(shù)據(jù)、數(shù)據(jù)表示和輸入/輸出控制部分模型-視圖-控制器

模型模型對(duì)象代表應(yīng)用領(lǐng)域中的業(yè)務(wù)實(shí)體和業(yè)務(wù)邏輯規(guī)則,是整個(gè)模型的核心,獨(dú)立于外在的顯示內(nèi)容和顯示形式。模型對(duì)象的變化通過事件通知視圖和控制器對(duì)象。采用了發(fā)布者/訂閱者方式,模型是發(fā)布者,視圖和控制器是訂閱者。對(duì)于模型來說,并不知道自己對(duì)應(yīng)的視圖控制器;但控制器可以通過模型提供的接口改變模型對(duì)象,接口內(nèi)封裝了業(yè)務(wù)數(shù)據(jù)和行為。

視圖視圖對(duì)象代表GUI對(duì)象,以用戶熟悉和需要的格式表現(xiàn)模型信息,是系統(tǒng)與外界的交互接口。視圖訂閱模型可以感知模型的數(shù)據(jù)變化,并更新自己的顯示。視圖對(duì)象也可以包含子視圖,用于顯示模型的不同部分。在多數(shù)的MVC實(shí)現(xiàn)技術(shù)中,視圖和控制器常常是一一對(duì)應(yīng)的。控制器控制器對(duì)象處理用戶的輸入,并給模型發(fā)送業(yè)務(wù)事件,再將業(yè)務(wù)事件解析為模型應(yīng)執(zhí)行的動(dòng)作;同時(shí),模型的更新與修改也將通過控制器來通知視圖,保持視圖與模型的一致。MVC的整個(gè)處理流程為:系統(tǒng)攔截到用戶請(qǐng)求,根據(jù)相應(yīng)規(guī)則(多數(shù)采用路由技術(shù)),將用戶請(qǐng)求交給控制器,控制器決定哪個(gè)模型來處理用戶的請(qǐng)求模型根據(jù)業(yè)務(wù)邏輯處理完畢后將結(jié)果返回給控制器然后控制器將數(shù)據(jù)提交給視圖;視圖把數(shù)據(jù)組裝之后,呈現(xiàn)給用戶模型-視圖-控制器其中,模型處理所有的業(yè)務(wù)邏輯和規(guī)則,視圖只負(fù)責(zé)顯示數(shù)據(jù),控制器負(fù)責(zé)用戶的請(qǐng)求,這樣將業(yè)務(wù)和表現(xiàn)層分離,以便業(yè)務(wù)代碼可以被用于任何相似的業(yè)務(wù)中,視圖代碼也可以根據(jù)需要隨意替換。5.3結(jié)構(gòu)化設(shè)計(jì)概述5.3結(jié)構(gòu)化設(shè)計(jì)概述

一二三從軟件需求規(guī)格說明書出發(fā)設(shè)計(jì)軟件系統(tǒng)的整體結(jié)構(gòu)確定每個(gè)模塊的實(shí)現(xiàn)算法以及編寫具體的代碼概要(總體)設(shè)計(jì)階段&過程(詳細(xì))設(shè)計(jì)階段概要設(shè)計(jì):體系結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)及接口設(shè)計(jì)。過程設(shè)計(jì):它詳細(xì)地設(shè)計(jì)每個(gè)模塊,確定完成每個(gè)模塊功能所需要的算法和數(shù)據(jù)結(jié)構(gòu)。設(shè)計(jì)決策決定成果設(shè)計(jì)決策將決定軟件維護(hù)的難易程度設(shè)計(jì)是軟件開發(fā)過程中決定軟件產(chǎn)品質(zhì)量的關(guān)鍵階段。5.4結(jié)構(gòu)化設(shè)計(jì)與結(jié)構(gòu)化分析的關(guān)系465.4

結(jié)構(gòu)化設(shè)計(jì)與結(jié)構(gòu)化分析的關(guān)系

數(shù)據(jù)設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)接口設(shè)計(jì)過程設(shè)計(jì)數(shù)據(jù)對(duì)象描述處理規(guī)格說明控制規(guī)格說明狀態(tài)轉(zhuǎn)換圖數(shù)據(jù)流圖實(shí)體—關(guān)系圖數(shù)據(jù)字典要進(jìn)行結(jié)構(gòu)化的設(shè)計(jì),必須依據(jù)結(jié)構(gòu)化分析的結(jié)果,結(jié)構(gòu)化設(shè)計(jì)與結(jié)構(gòu)化分析的關(guān)系如圖所示。圖的左邊是用結(jié)構(gòu)化分析方法所建立的模型,圖的右邊是用結(jié)構(gòu)化設(shè)計(jì)方法所建立的設(shè)計(jì)模型。475.4

結(jié)構(gòu)化設(shè)計(jì)與結(jié)構(gòu)化分析的關(guān)系

結(jié)構(gòu)化軟件設(shè)計(jì)的具體步驟如下:1)從需求分析階段的數(shù)據(jù)流圖出發(fā),制訂幾個(gè)方案,從中選擇合理的方案。2)采用某種設(shè)計(jì)方法,將一個(gè)復(fù)雜的系統(tǒng)按功能劃分成模塊化的層次結(jié)構(gòu)。3)確定每個(gè)模塊的功能、模塊間的調(diào)用關(guān)系,建立與已確定的軟件需求的對(duì)應(yīng)關(guān)系。4)系統(tǒng)接口設(shè)計(jì),確定模塊間的接口信息。5)數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計(jì),確定實(shí)現(xiàn)軟件的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫模式。6)基于以上,并依據(jù)分析模型中的處理(加工)規(guī)格說明、狀態(tài)轉(zhuǎn)換圖及控制規(guī)格說明進(jìn)行過程設(shè)計(jì)。7)制訂測(cè)試計(jì)劃。8)撰寫軟件設(shè)計(jì)文檔。5.5結(jié)構(gòu)化設(shè)計(jì)方法495.5

結(jié)構(gòu)化設(shè)計(jì)方法

5.5.1表示軟件結(jié)構(gòu)的圖形工具5.5.2面向數(shù)據(jù)流的設(shè)計(jì)方法5.5.3面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法505.5

結(jié)構(gòu)化設(shè)計(jì)方法

5.5.1表示軟件結(jié)構(gòu)的圖形工具1.層次圖和HIPO圖

2.結(jié)構(gòu)圖

通常使用層次圖描繪軟件的層次結(jié)構(gòu)。在層次圖中一個(gè)矩形框代表一個(gè)模塊,框間的連線表示調(diào)用關(guān)系(位于上方的矩形框所代表的模塊調(diào)用位于下方的矩形框所代表的模塊)。每個(gè)方框可以帶編號(hào),像這樣帶編號(hào)的層次圖稱為HIPO(HierarchyInput-Process-Output)圖,如圖所示。515.5.1表示軟件結(jié)構(gòu)的圖形工具1.層次圖和HIPO圖

2.結(jié)構(gòu)圖結(jié)構(gòu)圖是描繪軟件結(jié)構(gòu)的圖形工具,圖中一個(gè)方框代表一個(gè)模塊,框內(nèi)注明模塊的名字或主要功能;方框之間的箭頭(或直線)表示模塊的調(diào)用關(guān)系。在結(jié)構(gòu)圖中通常還用帶注釋的箭頭表示模塊調(diào)用過程中來回傳遞的信息。如果希望進(jìn)一步標(biāo)明傳遞的信息是數(shù)據(jù)還是控制信息,則可以利用注釋箭頭尾部的形狀來區(qū)分:尾部是空心圓表示傳遞的是數(shù)據(jù),實(shí)心圓表示傳遞的是控制信息。5.5

結(jié)構(gòu)化設(shè)計(jì)方法

525.5.1表示軟件結(jié)構(gòu)的圖形工具1.層次圖和HIPO圖

2.結(jié)構(gòu)圖有時(shí)還會(huì)用一些附加的符號(hào),如用菱形表示選擇或者條件調(diào)用,用弧形箭頭表示循環(huán)調(diào)用,如圖所示。選擇/條件調(diào)用循環(huán)調(diào)用5.5

結(jié)構(gòu)化設(shè)計(jì)方法

53

5.5.2面向數(shù)據(jù)流的設(shè)計(jì)方法面向數(shù)據(jù)流的設(shè)計(jì)方法是常用的結(jié)構(gòu)化設(shè)計(jì)方法,多在概要設(shè)計(jì)階段使用。它主要是指依據(jù)一定的映射規(guī)則,將需求分析階段得到的數(shù)據(jù)描述從系統(tǒng)的輸入端到輸出端所經(jīng)歷的一系列變換或處理的數(shù)據(jù)流圖轉(zhuǎn)換為目標(biāo)系統(tǒng)的結(jié)構(gòu)描述。在數(shù)據(jù)流圖中,數(shù)據(jù)流分為變換型數(shù)據(jù)流和事務(wù)型數(shù)據(jù)流兩種。所謂變換,是指把輸入的數(shù)據(jù)處理后轉(zhuǎn)變成另外的輸出數(shù)據(jù)。信息沿輸入路徑流入系統(tǒng),在系統(tǒng)中經(jīng)過加工處理后又離開系統(tǒng),當(dāng)信息流具備這種特征時(shí)就是變換流。所謂事務(wù),是指非數(shù)據(jù)變換的處理,它將輸入的數(shù)據(jù)流分散成許多數(shù)據(jù)流,形成若干個(gè)加工,然后選擇其中一個(gè)路徑來執(zhí)行。5.5

結(jié)構(gòu)化設(shè)計(jì)方法

54

5.5.2面向數(shù)據(jù)流的設(shè)計(jì)方法1.變換型數(shù)據(jù)流2.事務(wù)型數(shù)據(jù)流通常,在一個(gè)大型系統(tǒng)中,可能同時(shí)存在變換型數(shù)據(jù)流和事務(wù)型數(shù)據(jù)流。對(duì)于變換型數(shù)據(jù)流,設(shè)計(jì)人員應(yīng)該重點(diǎn)區(qū)分其輸入和輸出分支,通過變換分析將數(shù)據(jù)流圖映射為變換結(jié)構(gòu),從而構(gòu)造出目標(biāo)系統(tǒng)的結(jié)構(gòu)圖。針對(duì)變換型數(shù)據(jù)流的設(shè)計(jì)可以分為以下幾個(gè)步驟:(1)區(qū)分變換型數(shù)據(jù)流中的輸入數(shù)據(jù)、變換中心和

輸出數(shù)據(jù),并在數(shù)據(jù)流圖上用虛線標(biāo)明分界線。(2)分析得到系統(tǒng)的初始結(jié)構(gòu)圖。(3)對(duì)系統(tǒng)結(jié)構(gòu)圖進(jìn)行優(yōu)化。變換型數(shù)據(jù)流5.5

結(jié)構(gòu)化設(shè)計(jì)方法

55

5.5.2面向數(shù)據(jù)流的設(shè)計(jì)方法1.變換型數(shù)據(jù)流2.事務(wù)型數(shù)據(jù)流對(duì)于事務(wù)型數(shù)據(jù)流,設(shè)計(jì)人員應(yīng)該重點(diǎn)區(qū)分事務(wù)中心和數(shù)據(jù)接收通路,通過事務(wù)分析將數(shù)據(jù)流圖映射為事務(wù)結(jié)構(gòu)。針對(duì)事務(wù)型數(shù)據(jù)流的設(shè)計(jì)可以分為以下幾個(gè)步驟:(1)確定以事務(wù)為中心的結(jié)構(gòu),找出事務(wù)中心、接

收數(shù)據(jù)、處理路徑這三個(gè)部分。(2)將數(shù)據(jù)流圖轉(zhuǎn)換為初始的系統(tǒng)結(jié)構(gòu)圖。(3)分解和細(xì)化接收分支和處理分支事務(wù)型數(shù)據(jù)流5.5

結(jié)構(gòu)化設(shè)計(jì)方法

5.5.3面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法56

軟件結(jié)構(gòu)設(shè)計(jì)軟件結(jié)構(gòu)描述輸入數(shù)據(jù)結(jié)構(gòu)輸出方法:Jackson方法和Warnier方法面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法就是根據(jù)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)程序處理過程的方法,具體地說,面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法按輸入、輸出以及計(jì)算機(jī)內(nèi)部存儲(chǔ)信息的數(shù)據(jù)結(jié)構(gòu)進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì),從而把對(duì)數(shù)據(jù)結(jié)構(gòu)的描述轉(zhuǎn)換為對(duì)軟件結(jié)構(gòu)的描述。使用面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法時(shí),分析目標(biāo)系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)是關(guān)鍵。5.5

結(jié)構(gòu)化設(shè)計(jì)方法

5.5.3面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法57

Jackson方法把數(shù)據(jù)結(jié)構(gòu)分為3種基本類型:順序型結(jié)構(gòu)、選擇型結(jié)構(gòu)和循環(huán)型結(jié)構(gòu)在順序型結(jié)構(gòu)中,數(shù)據(jù)由一個(gè)或多個(gè)元素組成,每個(gè)元素按照確定的次序出現(xiàn)一次。在順序型圖示中,數(shù)據(jù)A由B、C和D3個(gè)元素順序組成。在選擇型結(jié)構(gòu)中,數(shù)據(jù)包含兩個(gè)或多個(gè)元素,每次使用該數(shù)據(jù)時(shí),按照一定的條件從羅列的多個(gè)數(shù)據(jù)元素中選擇一個(gè)。在選擇型圖示中,數(shù)據(jù)A根據(jù)條件從B或C或D中選擇一個(gè),元素右上方的符號(hào)“°”表示從中選擇一個(gè)。在循環(huán)型結(jié)構(gòu)中,數(shù)據(jù)根據(jù)使用時(shí)的條件由一個(gè)數(shù)據(jù)元素出現(xiàn)零次或多次構(gòu)成。在循環(huán)型圖示中,數(shù)據(jù)A根據(jù)條件由元素B出現(xiàn)零次或多次組成。元素B后加符號(hào)“*”表示重復(fù)。5.5

結(jié)構(gòu)化設(shè)計(jì)方法

5.5.3面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法58

Jackson方法把數(shù)據(jù)結(jié)構(gòu)分為3種基本類型:順序型結(jié)構(gòu)、選擇型結(jié)構(gòu)和循環(huán)型結(jié)構(gòu)運(yùn)用Jackson圖表達(dá)選擇型或循環(huán)型結(jié)構(gòu)時(shí),選擇條件或循環(huán)結(jié)束條件不能在圖上直接表現(xiàn)出來,并且如果框間連線為斜線,不易在打印機(jī)上輸出,所以產(chǎn)生了改進(jìn)的Jackson圖,其基本邏輯符號(hào)如圖所示。5.5

結(jié)構(gòu)化設(shè)計(jì)方法

5.5.3面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法59

運(yùn)用Jackson圖進(jìn)行程序設(shè)計(jì)有如下優(yōu)點(diǎn):(1)可以清晰地表示層次結(jié)構(gòu),易于對(duì)自頂向下的結(jié)

構(gòu)進(jìn)行描述。(2)結(jié)構(gòu)易懂、易用,并且比較直觀形象。(3)不僅可以表示數(shù)據(jù)結(jié)構(gòu),也可以表示程序結(jié)構(gòu)運(yùn)用Jackson圖進(jìn)行程序設(shè)計(jì)的步驟:(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)中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元。(3)按照一定的規(guī)則,從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出描繪程序結(jié)構(gòu)的Jackson圖。(4)列出基本操作與條件,并把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。(5)用偽代碼表示程序。5.5

結(jié)構(gòu)化設(shè)計(jì)方法

5.6接口設(shè)計(jì)615.6

接口設(shè)計(jì)

5.6.1接口設(shè)計(jì)概述5.6.2界面設(shè)計(jì)625.6

接口設(shè)計(jì)

5.6.1接口設(shè)計(jì)概述軟件系統(tǒng)業(yè)務(wù)功能部署………………接口子系統(tǒng)OUTINERROR模塊接口接口外部系統(tǒng)接口軟件系統(tǒng)結(jié)合業(yè)務(wù)、功能、部署等等因素將軟件系統(tǒng)逐步分解到模塊,那么模塊與模塊之間就必須根據(jù)各模塊的功能定義對(duì)應(yīng)的接口。概要設(shè)計(jì)(總體設(shè)計(jì))中的接口設(shè)計(jì)主要用于子系統(tǒng)/模塊之間或內(nèi)部系統(tǒng)與外部系統(tǒng)進(jìn)行各種交互。接口設(shè)計(jì)的內(nèi)容應(yīng)包括功能描述、接口的輸入輸出定義、錯(cuò)誤處理等。軟件系統(tǒng)接口的種類以及規(guī)范很多,可以有API、服務(wù)接口、文件、數(shù)據(jù)庫等等,所以設(shè)計(jì)的方法也有很大的差異。但是總體來說接口設(shè)計(jì)的內(nèi)容應(yīng)包括通訊方法、協(xié)議、接口調(diào)用方法、功能內(nèi)容、輸入輸出參數(shù)、錯(cuò)誤/例外機(jī)制等。從成果上來看,接口一覽表以及詳細(xì)設(shè)計(jì)資料是必須的資料。635.6

接口設(shè)計(jì)

5.6.1接口設(shè)計(jì)概述接口設(shè)計(jì)一般包括3個(gè)方面:(1)用戶接口--用來說明將向用戶提供的命令和它們的語法結(jié)構(gòu)以及軟件回答信息(2)外部接口--用來說明本系統(tǒng)同外界的所有接口的安排包括軟件與硬件之間的接口、

本系統(tǒng)與各支持軟件之間的接口關(guān)系(3)內(nèi)部接口--用來說明本系統(tǒng)之內(nèi)的各個(gè)系統(tǒng)元素之間的接口的安排。645.6

接口設(shè)計(jì)

5.6.2界面設(shè)計(jì)

界面設(shè)計(jì)是接口設(shè)計(jì)中的重要組成部分。用戶界面的設(shè)計(jì)要求在研究技術(shù)問題的同時(shí)對(duì)人加以研究。TheoMandel在其關(guān)于界面設(shè)計(jì)的著作中提出了3條“黃金原則”。1)置用戶于控制之下2)減少用戶的記憶負(fù)擔(dān)3)保持界面一致

這些黃金原則實(shí)際上構(gòu)成了指導(dǎo)用戶界面設(shè)計(jì)活動(dòng)的基本原則。655.6

接口設(shè)計(jì)

5.6.2界面設(shè)計(jì)1創(chuàng)建系統(tǒng)功能的外部模型確定為完成此系統(tǒng)功能人和計(jì)算機(jī)應(yīng)分別完成的任務(wù)考慮界面設(shè)計(jì)中的典型問題借助CASE工具構(gòu)造界面原型實(shí)現(xiàn)設(shè)計(jì)模型評(píng)估界面質(zhì)量23456界面設(shè)計(jì)是一個(gè)迭代的過程,其核心活動(dòng)包括:665.6

接口設(shè)計(jì)

5.6.2界面設(shè)計(jì)在界面的設(shè)計(jì)過程中先后涉及4個(gè)模型終端用戶對(duì)未來系統(tǒng)的假想(systemperception或user'smodel)由人機(jī)工程師(或軟件工程師)創(chuàng)建的用戶模型(usermodel)系統(tǒng)實(shí)現(xiàn)后得到的系統(tǒng)映象(systemimage)由軟件工程師創(chuàng)建的設(shè)計(jì)模型(designmodel)1234675.6

接口設(shè)計(jì)

5.6.2界面設(shè)計(jì)在界面設(shè)計(jì)中,應(yīng)該考慮4個(gè)問題。1)系統(tǒng)響應(yīng)時(shí)間:指當(dāng)用戶執(zhí)行了某個(gè)控制動(dòng)作后(如,點(diǎn)擊鼠標(biāo)器等),系統(tǒng)做出反應(yīng)的時(shí)間(指輸出信息或執(zhí)行對(duì)應(yīng)的動(dòng)作)。系統(tǒng)響應(yīng)時(shí)間過長、不同命令在響應(yīng)時(shí)間上的差別過于懸殊,用戶將難以接受。2)用戶求助機(jī)制:用戶都希望得到聯(lián)機(jī)幫助,聯(lián)機(jī)幫助系統(tǒng)有兩類,集成式和疊加式,此外,還要考慮諸如幫助范圍(僅考慮部分還是全部功能)、用戶求助的途徑、幫助信息的顯示、用戶如何返回正常交互工作及幫助信息本身如何組織等一系列問題。3)出錯(cuò)信息:應(yīng)選用用戶明了、含義準(zhǔn)確的術(shù)語描述,同時(shí)還應(yīng)盡可能提供一些有關(guān)錯(cuò)誤恢復(fù)的建議。此外,顯示出錯(cuò)信息時(shí),若輔以聽覺(如鈴聲)、視覺(專用顏色)刺激,則效果更佳。4)命令方式:鍵盤命令曾經(jīng)一度是用戶與軟件系統(tǒng)之間最通用的交互方式,隨著面向窗口的點(diǎn)選界面的出現(xiàn),鍵盤命令雖不再是唯一的交互形式,但許多有經(jīng)驗(yàn)的熟練的軟件人員仍喜愛這一方式,更多的情形是菜單與鍵盤命令并存,供用戶自由選用。5.7數(shù)據(jù)設(shè)計(jì)695.7

數(shù)據(jù)設(shè)計(jì)

數(shù)據(jù)設(shè)計(jì)就是將需求分析階段定義的數(shù)據(jù)對(duì)象(E-R圖、數(shù)據(jù)字典)轉(zhuǎn)換為設(shè)計(jì)階段的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫,包括兩個(gè)方面。1)程序級(jí)的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì):采用(偽)代碼的方式定義數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)的組成、類型、缺省值等信息);2)應(yīng)用級(jí)的數(shù)據(jù)庫設(shè)計(jì):采用物理級(jí)的E-R圖表示。DataBase數(shù)據(jù)結(jié)構(gòu)705.7

數(shù)據(jù)設(shè)計(jì)

數(shù)據(jù)庫有以下主要特點(diǎn):1)實(shí)現(xiàn)數(shù)據(jù)共享2)數(shù)據(jù)冗余度減少3)數(shù)據(jù)的獨(dú)立性4)數(shù)據(jù)實(shí)現(xiàn)集中控制5)數(shù)據(jù)一致性和可維護(hù)性,以確保數(shù)據(jù)的安全性和可靠性6)故障可修復(fù)性715.7

數(shù)據(jù)設(shè)計(jì)

數(shù)據(jù)的基本結(jié)構(gòu)分三個(gè)層次,反映了觀察數(shù)據(jù)庫的三種不同角度。1)物理數(shù)據(jù)層是數(shù)據(jù)庫的最內(nèi)層,是物理存儲(chǔ)設(shè)備上實(shí)際存儲(chǔ)的數(shù)據(jù)的集合。這些數(shù)據(jù)是原始數(shù)據(jù),是用戶加工的對(duì)象,由內(nèi)部模式描述的指令操作處理的位串、字符和字組成。2)概念數(shù)據(jù)層是數(shù)據(jù)庫的中間一層,是數(shù)據(jù)庫的整體邏輯表示。指出了每個(gè)數(shù)據(jù)的邏輯定義及數(shù)據(jù)之間的邏輯聯(lián)系,是存儲(chǔ)記錄的集合。它所設(shè)計(jì)的是數(shù)據(jù)庫所有對(duì)象的邏輯關(guān)系,而不是它們的物理關(guān)系,是數(shù)據(jù)庫管理員概念下的數(shù)據(jù)庫。3)邏輯數(shù)據(jù)層是用戶所看到和使用的數(shù)據(jù)庫,表示了一個(gè)或一些特定用戶使用的數(shù)據(jù)集合,即邏輯記錄的集合。數(shù)據(jù)庫基本結(jié)構(gòu)物理數(shù)據(jù)層概念數(shù)據(jù)層邏輯數(shù)據(jù)層725.7

數(shù)據(jù)設(shè)計(jì)

驗(yàn)證設(shè)計(jì)物理設(shè)計(jì)邏輯設(shè)計(jì)概念設(shè)計(jì)需求分析數(shù)

據(jù)庫設(shè)計(jì)過程735.7

數(shù)據(jù)設(shè)計(jì)

數(shù)據(jù)庫設(shè)計(jì)是指根據(jù)用戶的需求,在某一具體的數(shù)據(jù)庫管理系統(tǒng)上,設(shè)計(jì)數(shù)據(jù)庫的結(jié)構(gòu)和建立數(shù)據(jù)庫的過程。一般,數(shù)據(jù)庫的設(shè)計(jì)過程大致可分?jǐn)?shù)據(jù)庫設(shè)計(jì)為5個(gè)步驟,如下所示。1)需求分析;調(diào)查和分析用戶的業(yè)務(wù)活動(dòng)和數(shù)據(jù)的使用情況,弄清所用數(shù)據(jù)的種類、范圍、數(shù)量以及它們?cè)跇I(yè)務(wù)活動(dòng)中交流的情況,確定用戶對(duì)數(shù)據(jù)庫系統(tǒng)的使用要求和各種約束條件等,形成用戶需求規(guī)約。2)概念設(shè)計(jì);對(duì)用戶要求描述的現(xiàn)實(shí)世界(可能是一個(gè)工廠、一個(gè)商場(chǎng)或者一個(gè)學(xué)校等),通過對(duì)其中信息的分類、聚集和概括,建立抽象的概念數(shù)據(jù)模型。這個(gè)概念模型應(yīng)反映現(xiàn)實(shí)世界各部門的信息結(jié)構(gòu)、信息流動(dòng)情況、信息間的互相制約關(guān)系以及各部門對(duì)信息儲(chǔ)存、查詢和加工的要求等。所建立的模型應(yīng)避開數(shù)據(jù)庫在計(jì)算機(jī)上的具體實(shí)現(xiàn)細(xì)節(jié),用一種抽象的形式表示出來。745.7

數(shù)據(jù)設(shè)計(jì)

3)邏輯設(shè)計(jì);主要工作是將現(xiàn)實(shí)世界的概念數(shù)據(jù)模型設(shè)計(jì)成數(shù)據(jù)庫的一種邏輯模式,即適應(yīng)于某種特定數(shù)據(jù)庫管理系統(tǒng)所支持的邏輯數(shù)據(jù)模式。與此同時(shí),可能還需為各種數(shù)據(jù)處理應(yīng)用領(lǐng)域產(chǎn)生相應(yīng)的邏輯子模式。這一步設(shè)計(jì)的結(jié)果就是所謂“邏輯數(shù)據(jù)庫”。4)物理設(shè)計(jì);根據(jù)特定數(shù)據(jù)庫管理系統(tǒng)所提供的多種存儲(chǔ)結(jié)構(gòu)和存取方法等依賴于具體計(jì)算機(jī)結(jié)構(gòu)的各項(xiàng)物理設(shè)計(jì)措施,對(duì)具體的應(yīng)用任務(wù)選定最合適的物理存儲(chǔ)結(jié)構(gòu)(包括文件類型、索引結(jié)構(gòu)和數(shù)據(jù)的存放次序與位邏輯等)、存取方法和存取路徑等。這一步設(shè)計(jì)的結(jié)果就是所謂“物理數(shù)據(jù)庫”。5)驗(yàn)證設(shè)計(jì);在上述設(shè)計(jì)的基礎(chǔ)上,收集數(shù)據(jù)并具體建立一個(gè)數(shù)據(jù)庫,運(yùn)行一些典型的應(yīng)用任務(wù)來驗(yàn)證數(shù)據(jù)庫設(shè)計(jì)的正確性和合理性。一般,一個(gè)大型數(shù)據(jù)庫的設(shè)計(jì)過程往往需要經(jīng)過多次循環(huán)反復(fù)。當(dāng)設(shè)計(jì)的某步發(fā)現(xiàn)問題時(shí),可能就需要返回到前面去進(jìn)行修改。因此,在做上述數(shù)據(jù)庫設(shè)計(jì)時(shí)就應(yīng)考慮到今后修改設(shè)計(jì)的可能性和方便性。755.7

數(shù)據(jù)設(shè)計(jì)

3)邏輯設(shè)計(jì);主要工作是將現(xiàn)實(shí)世界的概念數(shù)據(jù)模型設(shè)計(jì)成數(shù)據(jù)庫的一種邏輯模式,即適應(yīng)于某種特定數(shù)據(jù)庫管理系統(tǒng)所支持的邏輯數(shù)據(jù)模式。與此同時(shí),可能還需為各種數(shù)據(jù)處理應(yīng)用領(lǐng)域產(chǎn)生相應(yīng)的邏輯子模式。這一步設(shè)計(jì)的結(jié)果就是所謂“邏輯數(shù)據(jù)庫”。4)物理設(shè)計(jì);根據(jù)特定數(shù)據(jù)庫管理系統(tǒng)所提供的多種存儲(chǔ)結(jié)構(gòu)和存取方法等依賴于具體計(jì)算機(jī)結(jié)構(gòu)的各項(xiàng)物理設(shè)計(jì)措施,對(duì)具體的應(yīng)用任務(wù)選定最合適的物理存儲(chǔ)結(jié)構(gòu)(包括文件類型、索引結(jié)構(gòu)和數(shù)據(jù)的存放次序與位邏輯等)、存取方法和存取路徑等。這一步設(shè)計(jì)的結(jié)果就是所謂“物理數(shù)據(jù)庫”。5)驗(yàn)證設(shè)計(jì);在上述設(shè)計(jì)的基礎(chǔ)上,收集數(shù)據(jù)并具體建立一個(gè)數(shù)據(jù)庫,運(yùn)行一些典型的應(yīng)用任務(wù)來驗(yàn)證數(shù)據(jù)庫設(shè)計(jì)的正確性和合理性。一般,一個(gè)大型數(shù)據(jù)庫的設(shè)計(jì)過程往往需要經(jīng)過多次循環(huán)反復(fù)。當(dāng)設(shè)計(jì)的某步發(fā)現(xiàn)問題時(shí),可能就需要返回到前面去進(jìn)行修改。因此,在做上述數(shù)據(jù)庫設(shè)計(jì)時(shí)就應(yīng)考慮到今后修改設(shè)計(jì)的可能性和方便性。5.8過程設(shè)計(jì)775.8

過程設(shè)計(jì)

5.8.1程序流程圖5.8.2N-S圖5.8.3PAD圖5.8.4過程設(shè)計(jì)語言785.8

過程設(shè)計(jì)

5.8.1程序流程圖流程圖是對(duì)過程、算法、流程的一種圖形表示,它對(duì)某個(gè)問題的定義、分析或解法進(jìn)行描述,用定義完善的符號(hào)來表示操作、數(shù)據(jù)、流向等概念。流程圖分為數(shù)據(jù)流程圖、程序流程圖、系統(tǒng)流程圖、程序網(wǎng)絡(luò)圖和系統(tǒng)資源圖5種。這里主要介紹程序流程圖。程序流程圖也稱為程序框圖,是一種比較直觀、形象地描述過程的控制流程的圖形工具。它包含5種基本的控制結(jié)構(gòu):順序型、選擇型、先判定型循環(huán)(WHILE-DO)、后判定型循環(huán)(DO-WHILE)和多分支選擇型。流程圖的基本符號(hào)795.8

過程設(shè)計(jì)

5.8.1程序流程圖流程圖的控制結(jié)構(gòu)805.8

過程設(shè)計(jì)

5.8.1程序流程圖程序流程圖的主要優(yōu)點(diǎn)是:采用簡單規(guī)范的符號(hào),畫法簡單結(jié)構(gòu)清晰,邏輯性強(qiáng)便于描述,容易理解程序流程圖的主要缺點(diǎn)是:不利于逐步求精的設(shè)計(jì)圖中可用箭頭隨意地對(duì)控制進(jìn)行轉(zhuǎn)移,與結(jié)構(gòu)化程序設(shè)計(jì)精神相悖不易于表示系統(tǒng)中所含的數(shù)據(jù)結(jié)構(gòu)當(dāng)目標(biāo)系統(tǒng)比較復(fù)雜時(shí),流程圖會(huì)變得很繁雜、不清晰815.8

過程設(shè)計(jì)

5.8.2N-S圖N-S圖是由Nassi和Shneiderman提出的,又被稱為盒圖,是一種符合結(jié)構(gòu)化程序設(shè)計(jì)原則的圖形工具。N-S圖的基本符號(hào)如圖所示。825.8

過程設(shè)計(jì)

5.8.2N-S圖N-S圖用類似盒子的矩形以及矩形之間的嵌套來表示語句或語句序列。N-S圖內(nèi)部沒有箭頭,因此,它所表示的控制流程不能隨便進(jìn)行轉(zhuǎn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論