軟件工程:第6章 軟件設(shè)計(jì)_第1頁(yè)
軟件工程:第6章 軟件設(shè)計(jì)_第2頁(yè)
軟件工程:第6章 軟件設(shè)計(jì)_第3頁(yè)
軟件工程:第6章 軟件設(shè)計(jì)_第4頁(yè)
軟件工程:第6章 軟件設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩105頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第6章軟件設(shè)計(jì)本章導(dǎo)讀軟件需求是軟件設(shè)計(jì)的基礎(chǔ),軟件設(shè)計(jì)是軟件開(kāi)發(fā)的核心。本章首先討論軟件設(shè)計(jì)概論和軟件設(shè)計(jì)原理,然后介紹軟件架構(gòu)設(shè)計(jì)和軟件詳細(xì)設(shè)計(jì),重點(diǎn)是論述面向過(guò)程、面向數(shù)據(jù)和面向?qū)ο蟮娜N詳細(xì)設(shè)計(jì)方法,以及軟件設(shè)計(jì)的屬性和度量。最后介紹IT企業(yè)的軟件設(shè)計(jì)文檔和設(shè)計(jì)管理文檔編寫(xiě)的參考指南。1本章對(duì)讀者的要求

了解:

(1)軟件設(shè)計(jì)的輸入輸出

(2)概要設(shè)計(jì)與詳細(xì)設(shè)計(jì)之間的差異

(3)命名規(guī)范的概念

理解:

(1)軟件設(shè)計(jì)原理

(2)軟件架構(gòu)設(shè)計(jì)方法

(3)軟件詳細(xì)設(shè)計(jì)概念

(4)軟件設(shè)計(jì)屬性和度量

(5)軟件設(shè)計(jì)管理文檔

2本章對(duì)讀者的要求掌握:

(1)面向過(guò)程詳細(xì)設(shè)計(jì)

(2)面向數(shù)據(jù)詳細(xì)設(shè)計(jì)

(3)面向?qū)ο笤敿?xì)設(shè)計(jì)

(4)《概要設(shè)計(jì)說(shuō)明書(shū)》的編寫(xiě)方法

(5)《詳細(xì)設(shè)計(jì)說(shuō)明書(shū)》的編寫(xiě)方法

36.1設(shè)計(jì)方法概論

軟件設(shè)計(jì)的輸入是《需求規(guī)格說(shuō)明書(shū)》,輸出是《概要設(shè)計(jì)說(shuō)明書(shū)》和《詳細(xì)設(shè)計(jì)說(shuō)明書(shū)》。概要設(shè)計(jì)概要設(shè)計(jì),一是要覆蓋《需求規(guī)格說(shuō)明書(shū)》的全部?jī)?nèi)容,二是要作為指導(dǎo)詳細(xì)設(shè)計(jì)的依據(jù)。概要設(shè)計(jì)注重于宏觀上和框架上的設(shè)計(jì),它是軟件系統(tǒng)的總體結(jié)構(gòu)設(shè)計(jì)、全局?jǐn)?shù)據(jù)庫(kù)(包括數(shù)據(jù)結(jié)構(gòu))設(shè)計(jì)、外部接口設(shè)計(jì)、功能部件分配設(shè)計(jì)、部件之間的接口設(shè)計(jì)。概要設(shè)計(jì)又稱(chēng)為架構(gòu)設(shè)計(jì)。4詳細(xì)設(shè)計(jì)

詳細(xì)設(shè)計(jì),一是要覆蓋《概要設(shè)計(jì)說(shuō)明書(shū)》的全部?jī)?nèi)容,二是要作為指導(dǎo)程序設(shè)計(jì)的依據(jù)。詳細(xì)設(shè)計(jì)注重于微觀上和框架內(nèi)的設(shè)計(jì),它是各子系統(tǒng)的公用部件實(shí)現(xiàn)設(shè)計(jì)、專(zhuān)用模塊實(shí)現(xiàn)設(shè)計(jì)、存儲(chǔ)過(guò)程實(shí)現(xiàn)設(shè)計(jì)、觸發(fā)器實(shí)現(xiàn)設(shè)計(jì)、外部接口實(shí)現(xiàn)設(shè)計(jì)、部門(mén)角色授權(quán)設(shè)計(jì)、其他詳細(xì)設(shè)計(jì)等。模塊實(shí)現(xiàn)設(shè)計(jì)包括:登錄注冊(cè)模塊設(shè)計(jì)、信息發(fā)布模塊設(shè)計(jì)、菜單模塊設(shè)計(jì)、錄入修改模塊設(shè)計(jì)、查詢統(tǒng)計(jì)模塊設(shè)計(jì)、業(yè)務(wù)邏輯處理模塊設(shè)計(jì)、報(bào)表輸出模塊設(shè)計(jì)、前臺(tái)網(wǎng)站模塊設(shè)計(jì)、后臺(tái)數(shù)據(jù)處理模塊設(shè)計(jì)、數(shù)據(jù)傳輸與接收模塊設(shè)計(jì)等等。5詳細(xì)設(shè)計(jì)

在設(shè)計(jì)之前要確定命名規(guī)范。包括系統(tǒng)命名規(guī)范,模塊命名規(guī)范,構(gòu)件命名規(guī)范,變量命名規(guī)范,以及表名、字段名、索引名、視圖名、存儲(chǔ)過(guò)程名的命名規(guī)范等。軟件設(shè)計(jì)時(shí),一方面要善于將需求規(guī)格說(shuō)明書(shū)中的冗余去掉,將公用功能提煉出來(lái),并將它設(shè)計(jì)為構(gòu)件,標(biāo)準(zhǔn)化后加入到公司構(gòu)件庫(kù)中。另一方面,還要盡量調(diào)用公司構(gòu)件庫(kù)中已有的構(gòu)件。按照“五個(gè)面向理論”,概要設(shè)計(jì)主要方法是面向數(shù)據(jù),詳細(xì)設(shè)計(jì)和程序設(shè)計(jì)主要方法是面向?qū)ο?。所有的詳?xì)設(shè)計(jì)都是面向模塊(部件/構(gòu)件)的,不是面向組織結(jié)構(gòu)或部門(mén)單位的。一個(gè)組織或單位,根據(jù)角色的不同授權(quán),可以掛上不同的模塊或部件。6*6.2軟件設(shè)計(jì)原理“設(shè)計(jì)”在IEEE中的定義是:“定義一個(gè)系統(tǒng)或部件的架構(gòu)、組成、接口或其它特征的過(guò)程”。軟件設(shè)計(jì)是一個(gè)過(guò)程,它是軟件生命周期中的一部分,是對(duì)軟件需求分析后產(chǎn)生軟件內(nèi)部結(jié)構(gòu)的一種描述。軟件設(shè)計(jì)的結(jié)果,應(yīng)能描述軟件的架構(gòu),即軟件中各個(gè)部件是如何分解并組合在一起的。架構(gòu)設(shè)計(jì)有時(shí)也稱(chēng)為概要設(shè)計(jì),用于描述系統(tǒng)最頂?shù)慕Y(jié)構(gòu)和組織形式,標(biāo)識(shí)出軟件的各個(gè)組成部分。詳細(xì)設(shè)計(jì)用于詳細(xì)描述每個(gè)部件的內(nèi)部結(jié)構(gòu),用以指導(dǎo)程序人員編寫(xiě)代碼,便于每個(gè)部件能夠得以順利實(shí)現(xiàn)。7原理1:抽象抽象是認(rèn)識(shí)復(fù)雜現(xiàn)象過(guò)程中使用的思維工具,即抽出事物本質(zhì)的共同特性而暫不考慮它的細(xì)節(jié),不考慮其他因素。

(1)控制抽象面向過(guò)程設(shè)計(jì)

,通過(guò)控制抽象(控制流程和接口),對(duì)軟件進(jìn)行分解,達(dá)到降低軟件復(fù)雜度的目的。面向?qū)ο笤O(shè)計(jì)

,通過(guò)數(shù)據(jù)抽象和控制抽象,實(shí)現(xiàn)使數(shù)據(jù)和控制溶為一體,構(gòu)成一個(gè)完整的對(duì)象。

(2)過(guò)程抽象將數(shù)據(jù)處理抽象成函數(shù)或方法,獲得最終的執(zhí)行結(jié)果,而不必去關(guān)心它們的內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。

(3)數(shù)據(jù)抽象在數(shù)據(jù)庫(kù)建模和面向?qū)ο蠼r(shí),使用數(shù)據(jù)抽象,設(shè)計(jì)出數(shù)據(jù)庫(kù)的表及字段,或設(shè)計(jì)出類(lèi)及類(lèi)的屬性。8原理2:分解

將一個(gè)軟件分解成許多小模塊(代碼行在200~400之間),不同模塊負(fù)責(zé)不同的功能。

(1)在架構(gòu)設(shè)計(jì)中,將軟件系統(tǒng)分解為子系統(tǒng)和模塊;

(2)在詳細(xì)設(shè)計(jì)中,將子系統(tǒng)和模塊分解成類(lèi)和接口。模塊具有以下幾種基本屬性:(1)接口:指模塊的輸入與輸出。(2)功能:指模塊實(shí)現(xiàn)什么功能。(3)邏輯:描述內(nèi)部如何實(shí)現(xiàn)要求的功能及所需的數(shù)據(jù)。(4)狀態(tài):指該模塊的運(yùn)行環(huán)境,即模塊的調(diào)用與被調(diào)用關(guān)系。9原理3:低耦合高內(nèi)聚

模塊在系統(tǒng)中不能孤立存在,每個(gè)模塊具有一定的功能,他們共同完成系統(tǒng)的總功能,這樣模塊之間就必然會(huì)存在聯(lián)系或依賴(lài)。對(duì)于低內(nèi)聚的模塊,通過(guò)重新分解,來(lái)提高模塊內(nèi)部的緊湊性,使其成為高內(nèi)聚模塊,從而降低塊間聯(lián)系,提高模塊的獨(dú)立性。對(duì)于高耦合的模塊,通過(guò)重新組合,將聯(lián)系緊密的部分組合成新的模塊,使其成為低耦合模塊,從而提高模塊的可維護(hù)性。模塊耦合程度由低到高的分級(jí)如下:10(1)數(shù)據(jù)耦合(或參數(shù)傳遞耦合),屬于低級(jí)別耦合。例如,模塊間通過(guò)參數(shù)傳遞或數(shù)據(jù)結(jié)構(gòu)來(lái)訪問(wèn)。

(2)控制耦合,屬于中級(jí)別耦合。例如,操作系統(tǒng)中的進(jìn)程調(diào)度程序,通過(guò)就緒進(jìn)程的優(yōu)生級(jí)來(lái)調(diào)度。那么調(diào)度程序與進(jìn)程之間的耦合,就是控制耦合。

(3)外部耦合(或共用耦合),它屬于高級(jí)別耦合。例如,模塊間共享全局變量,或共同訪問(wèn)全局?jǐn)?shù)據(jù)區(qū)中的數(shù)據(jù)項(xiàng),就是共用耦合。

(4)內(nèi)容耦合,它屬于最高級(jí)別耦合。例如,一個(gè)模塊利用分支或跳轉(zhuǎn)技術(shù),轉(zhuǎn)入到另一個(gè)模塊中去執(zhí)行,就是內(nèi)容耦合。耦合可發(fā)生在軟件設(shè)計(jì)、軟件編程之中。11原理4:封裝

封裝是將信息隱藏在一個(gè)實(shí)體中,使其內(nèi)部細(xì)節(jié)對(duì)外部不可見(jiàn)。封裝是實(shí)現(xiàn)“低耦合高內(nèi)聚”的技術(shù)手段之一。要進(jìn)行正確的封裝,必須遵守下列原則:

(1).實(shí)體間相互隱藏內(nèi)部實(shí)現(xiàn);

(2).盡量減少全局的共享數(shù)據(jù)。12原理5:接口和實(shí)現(xiàn)分離

接口和實(shí)現(xiàn)分離的思想起源很早。上世紀(jì)五十年代,就出現(xiàn)了“子程序和函數(shù)”的概念,人們?cè)趯?shí)現(xiàn)和調(diào)用它們的時(shí)候,就運(yùn)用了這種思想。將接口和實(shí)現(xiàn)分離開(kāi)來(lái),對(duì)外只提供接口,隱藏具體實(shí)現(xiàn)。接口與實(shí)現(xiàn)的分離,保證了實(shí)現(xiàn)的獨(dú)立變化,降低了模塊間的耦合。13146.3軟件體系結(jié)構(gòu)軟件總體設(shè)計(jì)的主要任務(wù)就是軟件結(jié)構(gòu)的設(shè)計(jì)。軟件體系結(jié)構(gòu)(softwarearchitecture)包含了計(jì)算機(jī)程序的兩個(gè)重要特性:(1)過(guò)程構(gòu)件(模塊)的層次結(jié)構(gòu)。(2)數(shù)據(jù)結(jié)構(gòu)。軟件的體系結(jié)構(gòu)通過(guò)一個(gè)劃分過(guò)程來(lái)完成。該劃分過(guò)程從需求分析確立的目標(biāo)系統(tǒng)的模型出發(fā),對(duì)整個(gè)問(wèn)題進(jìn)行分割,使其每個(gè)部分用一個(gè)或幾個(gè)軟件成份加以解決,整個(gè)問(wèn)題就解決了156.3軟件體系結(jié)構(gòu)結(jié)構(gòu)化演化166.3軟件體系結(jié)構(gòu)不同結(jié)構(gòu)176.3.1程序結(jié)構(gòu)程序結(jié)構(gòu)(programstructure)給出了程序各個(gè)構(gòu)件(模塊)的組織(通常叫分層)情況,這種組織包含了控制的層次。它們不給出軟件的過(guò)程方面,如過(guò)程的序列、決策的出現(xiàn)或次序,或操作的重復(fù)等。186.3.1程序結(jié)構(gòu)結(jié)構(gòu)專(zhuān)用名詞196.3.2數(shù)據(jù)結(jié)構(gòu)在軟件體系結(jié)構(gòu)的表達(dá)式中,數(shù)據(jù)結(jié)構(gòu)與程序結(jié)構(gòu)同樣重要。數(shù)據(jù)結(jié)構(gòu)決定信息的組織、存取方法、結(jié)合的程度,以及可選的處理方法。206.3.2數(shù)據(jù)結(jié)構(gòu)典型的數(shù)據(jù)結(jié)構(gòu)216.3.3軟件過(guò)程軟件過(guò)程(softwareprocedure),則側(cè)重于每一個(gè)單獨(dú)模塊的處理細(xì)節(jié)研究。過(guò)程必須提供精確的事件的順序、確切的抉擇點(diǎn)、重復(fù)的操作,以及數(shù)據(jù)的組織與結(jié)構(gòu)處理規(guī)格說(shuō)明。226.3.3軟件過(guò)程一個(gè)模塊內(nèi)的過(guò)程236.3.3軟件過(guò)程過(guò)程的分層246.3.4體系結(jié)構(gòu)設(shè)計(jì)軟件體系結(jié)構(gòu)設(shè)計(jì)(architecturaldesign)的主要目標(biāo)是設(shè)計(jì)一個(gè)模塊化的程序結(jié)構(gòu)。體系結(jié)構(gòu)設(shè)計(jì)融合了程序結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),接口定義能使數(shù)據(jù)流經(jīng)程序。要給出各個(gè)模塊之間的控制關(guān)系。251軟件結(jié)構(gòu)圖軟件結(jié)構(gòu)圖是軟件系統(tǒng)的模塊層次結(jié)構(gòu),反映了整個(gè)系統(tǒng)的功能實(shí)現(xiàn),即將來(lái)程序的控制層次體系。軟件結(jié)構(gòu)往往用樹(shù)狀或網(wǎng)狀結(jié)構(gòu)的圖形來(lái)表示。1.模塊用方框表示,并用名字標(biāo)識(shí)該模塊,名字應(yīng)體現(xiàn)該模塊的功能。2.模塊的控制關(guān)系兩個(gè)模塊間用單向箭頭或直線連接起來(lái)表示它們的控制關(guān)系。

261軟件結(jié)構(gòu)圖3.模塊間的信息傳遞模塊間還經(jīng)常用帶注釋的短箭頭表示模塊調(diào)用過(guò)程中來(lái)回傳遞的信息。模塊間的控制關(guān)系及信息傳遞271軟件結(jié)構(gòu)圖4.兩個(gè)附加符號(hào)在模塊A的箭頭尾部標(biāo)以一個(gè)菱形符號(hào),表示模塊A有條件地調(diào)用另一個(gè)模塊B。當(dāng)一個(gè)在調(diào)用箭頭尾部標(biāo)以一個(gè)弧形符號(hào),表示模塊M反復(fù)調(diào)用模塊T1,T2和模塊T3。281軟件結(jié)構(gòu)圖5.結(jié)構(gòu)圖的形態(tài)特征291軟件結(jié)構(gòu)圖結(jié)構(gòu)圖的形態(tài)特征包括:(1)深度:指結(jié)構(gòu)圖控制的層次,即模塊的層數(shù)。(2)寬度:指一層中最大的模塊個(gè)數(shù)。(3)扇出:指一個(gè)模塊直接下屬模塊的個(gè)數(shù)。(4)扇入:指一個(gè)模塊直接上屬模塊的個(gè)數(shù)。301軟件結(jié)構(gòu)圖6.畫(huà)結(jié)構(gòu)圖應(yīng)注意的事項(xiàng)(1)同一名字的模塊在結(jié)構(gòu)圖中僅出現(xiàn)一次。(2)調(diào)用關(guān)系只能從上到下。(3)不嚴(yán)格表示模塊的調(diào)用次序,習(xí)慣上從左到右。312模塊的大小前面在討論模塊設(shè)計(jì)的原理時(shí),已經(jīng)知道一個(gè)系統(tǒng)應(yīng)當(dāng)由若干個(gè)模塊構(gòu)成。其目的是為了降低系統(tǒng)的復(fù)雜度。模塊設(shè)計(jì)的準(zhǔn)則不應(yīng)該是語(yǔ)句的多少,而應(yīng)當(dāng)是模塊是否是一個(gè)獨(dú)立的功能。323扇出和扇入與深度和寬度由結(jié)構(gòu)圖的形態(tài)特征可以知道,一個(gè)系統(tǒng)的大小和系統(tǒng)的復(fù)雜程度在一定程度上可以用深度和寬度表示。大量的系統(tǒng)研究表明,認(rèn)為高層模塊應(yīng)有較高的扇出,低層模塊特別是底層模塊應(yīng)有較高的扇入。扇入越大,表示該模塊被更多的上級(jí)模塊共享。多個(gè)扇入入口相同,這就避免了程序的重復(fù),因此希望扇入高一點(diǎn)。但過(guò)多又可能是把許多不相關(guān)的功能硬湊在一起,形成通用模塊,這樣的模塊必然是低聚合的。334模塊的耦合耦合(Coupling)表示軟件結(jié)構(gòu)內(nèi)不同模塊彼此之間相互依賴(lài)(連接)的緊密程度,是衡量軟件模塊結(jié)構(gòu)質(zhì)量好壞的度量,是對(duì)模塊獨(dú)立性的直接衡量指標(biāo)。耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度,進(jìn)入或訪問(wèn)一個(gè)模塊的點(diǎn),以及通過(guò)接口的數(shù)據(jù)。344模塊的耦合1.數(shù)據(jù)耦合如果兩個(gè)模塊彼此間通過(guò)參數(shù)交換信息,而且交換的信息僅僅是數(shù)據(jù),那么這種耦合稱(chēng)為數(shù)據(jù)耦合。數(shù)據(jù)耦合是低耦合。系統(tǒng)中必須存在這種耦合,因?yàn)橹挥挟?dāng)某些模塊的輸出數(shù)據(jù)作為另一些模塊的輸入數(shù)據(jù)時(shí),系統(tǒng)才能完成有價(jià)值的功能。354模塊的耦合2.控制耦合如果傳遞的信息中有控制信息,則這種耦合稱(chēng)為控制耦合。控制耦合是中等程度的耦合,它增加了系統(tǒng)的復(fù)雜程度??刂岂詈贤嵌嘤嗟模诎涯K適當(dāng)分解之后通常可以用數(shù)據(jù)耦合代替它。364模塊的耦合374模塊的耦合3.公共環(huán)境耦合當(dāng)兩個(gè)或多個(gè)模塊通過(guò)一個(gè)公共數(shù)據(jù)環(huán)境相互作用時(shí),它們之間的耦合稱(chēng)為公共環(huán)境耦合(即公用耦合)。公共環(huán)境耦合的復(fù)雜程度隨耦合的模塊個(gè)數(shù)而變化,當(dāng)耦合的模塊個(gè)數(shù)增加時(shí)復(fù)雜程度顯著增加。384模塊的耦合松散的公用耦合394模塊的耦合緊密的公用耦合404模塊的耦合(1)一個(gè)模塊往公共環(huán)境送數(shù)據(jù),另一個(gè)模塊從公共環(huán)境取數(shù)據(jù)。這是數(shù)據(jù)耦合的一種形式,是比較松散的耦合。(2)兩個(gè)模塊都既往公共環(huán)境送數(shù)據(jù)又從里面取數(shù)據(jù),這種耦合比較緊密,介于數(shù)據(jù)耦合和控制耦合之間。414模塊的耦合4.內(nèi)容耦合最高程度的耦合是內(nèi)容耦合。424模塊的耦合(1)一個(gè)模塊訪問(wèn)另一個(gè)模塊的內(nèi)部數(shù)據(jù);(2)一個(gè)模塊不通過(guò)正常入口而轉(zhuǎn)到另一個(gè)模塊的內(nèi)部;(3)兩個(gè)模塊有一部分程度代碼重疊(只可能出現(xiàn)在匯編程序中);(4)一個(gè)模塊有多個(gè)入口(這表明一個(gè)模塊有幾種功能)。434模塊的耦合應(yīng)該堅(jiān)決避免使用內(nèi)容耦合。事實(shí)上許多高級(jí)程序設(shè)計(jì)語(yǔ)言已經(jīng)設(shè)計(jì)成不允許在程序中出現(xiàn)任何形式的內(nèi)容耦合??傊?,耦合是影響模塊結(jié)構(gòu)和軟件復(fù)雜程度的一個(gè)重要因素,應(yīng)該采用如下設(shè)計(jì)原則:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共環(huán)境耦合,完全不用內(nèi)容耦合。445模塊的內(nèi)聚內(nèi)聚標(biāo)志一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度,它是信息隱蔽和局部化概念的自然擴(kuò)展。簡(jiǎn)單地說(shuō),理想內(nèi)聚的模塊只做一件事情。1.功能內(nèi)聚如果模塊內(nèi)所有處理元素屬于一個(gè)整體,完成一個(gè)單一的功能,則稱(chēng)為功能內(nèi)聚。功能內(nèi)聚是最高程度的內(nèi)聚。455模塊的內(nèi)聚2.信息內(nèi)聚信息內(nèi)聚模塊能完成多種功能,各個(gè)功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項(xiàng)功能有一個(gè)惟一的入口點(diǎn)。465模塊的內(nèi)聚3.通信內(nèi)聚如果一個(gè)模塊中所有處理元素都使用同一個(gè)輸入數(shù)據(jù)和(或)產(chǎn)生同一個(gè)輸出數(shù)據(jù),稱(chēng)為通信內(nèi)聚(CommunicationalCohesion)。通常,通信內(nèi)聚模塊是通過(guò)數(shù)據(jù)流圖來(lái)定義的。47485模塊的內(nèi)聚4.過(guò)程內(nèi)聚如果一個(gè)模塊內(nèi)部的處理元素是相關(guān)的,而且必須以特定次序執(zhí)行,則稱(chēng)為過(guò)程內(nèi)聚。過(guò)程內(nèi)聚與順序內(nèi)聚的區(qū)別主要在于:順序內(nèi)聚中是數(shù)據(jù)流從一個(gè)處理元流到另一個(gè)處理元,而過(guò)程內(nèi)聚中是控制流從一個(gè)動(dòng)作流向另一個(gè)動(dòng)作。495模塊的內(nèi)聚5.邏輯內(nèi)聚如果一個(gè)模塊完成的任務(wù)在邏輯上屬于相同或相似的一類(lèi),稱(chēng)為邏輯內(nèi)聚(LogicalCohesion)。505模塊的內(nèi)聚6.時(shí)間內(nèi)聚如果一個(gè)模塊包含的任務(wù)必須在同一段時(shí)間內(nèi)執(zhí)行,就叫時(shí)間內(nèi)聚。時(shí)間內(nèi)聚又稱(chēng)為經(jīng)典內(nèi)聚。這種模塊大多為多功能模塊,但模塊的各個(gè)功能的執(zhí)行與時(shí)間有關(guān),通常要求所有功能必須在同一時(shí)間段內(nèi)執(zhí)行。例如初始化模塊和終止模塊515模塊的內(nèi)聚7.偶然內(nèi)聚如果一個(gè)模塊完成一組任務(wù),這些任務(wù)彼此間即使有關(guān)系,關(guān)系也是很松散的,就叫做偶然內(nèi)聚。526結(jié)構(gòu)設(shè)計(jì)的一般準(zhǔn)則1.模塊獨(dú)立性準(zhǔn)則(1)如果若干模塊之間耦合強(qiáng)度過(guò)高,每個(gè)模塊內(nèi)功能不復(fù)雜,可將它們合并,以減少信息的傳遞和公共區(qū)的引用。(2)若有多個(gè)相關(guān)模塊,應(yīng)對(duì)它們的功能進(jìn)行分析,消去重復(fù)功能。536結(jié)構(gòu)設(shè)計(jì)的一般準(zhǔn)則2.軟件結(jié)構(gòu)的形態(tài)特征準(zhǔn)則軟件結(jié)構(gòu)的深度、寬度、扇入及扇出應(yīng)適當(dāng)。3.模塊的大小準(zhǔn)則在考慮模塊獨(dú)立性的同時(shí),為了增加可理解性,模塊的大小最好在50~150條語(yǔ)句左右,可以用1~2頁(yè)打印紙打印,便于人們閱讀與研究。546結(jié)構(gòu)設(shè)計(jì)的一般準(zhǔn)則4.模塊的接口準(zhǔn)則模塊的接口要簡(jiǎn)單、清晰及含義明確,便于理解,易于實(shí)現(xiàn)、測(cè)試與維護(hù)。模塊接口的復(fù)雜性是軟件發(fā)生錯(cuò)誤的一個(gè)重要原因。因此,設(shè)計(jì)模塊接口時(shí),應(yīng)盡量使傳遞的信息簡(jiǎn)單并與模塊的功能一致。557模塊的作用域與控制域一個(gè)模塊的作用范圍應(yīng)在其控制范疇之內(nèi),且條件判定所在的模塊應(yīng)與受影響的模塊在層次上盡量靠近。如果在設(shè)計(jì)過(guò)程中,發(fā)現(xiàn)模塊作用范圍不在其控制范圍之內(nèi),可用以下方法加以改進(jìn):(1)上移判斷點(diǎn)。使該判斷的層次升高,以擴(kuò)大它的控制范圍。(2)下移受判斷影響的模塊。將受判斷影響的模塊下移到判斷所在模塊的控制范圍內(nèi)。8.設(shè)計(jì)目的軟件體系結(jié)構(gòu)建模的目的:

a.捕獲早期的設(shè)計(jì)決策。設(shè)計(jì)決策將影響到后續(xù)設(shè)計(jì)、開(kāi)發(fā)、部署、維護(hù)和演變。

b.捕獲軟件運(yùn)行環(huán)境。

c.為底層實(shí)現(xiàn)提供限制條件。

d.為開(kāi)發(fā)團(tuán)隊(duì)的結(jié)構(gòu)組成提供依據(jù)。

e.設(shè)計(jì)系統(tǒng)滿足可靠性、可維護(hù)性、其他性能等。

f.方便開(kāi)發(fā)團(tuán)隊(duì)間的交流。56軟件體系結(jié)構(gòu)應(yīng)描述以下問(wèn)題:

a.軟件系統(tǒng)中包含了哪些子系統(tǒng)/部件。

b.每個(gè)子系統(tǒng)/部件都完成哪些功能。

c.子系統(tǒng)/部件對(duì)外提供或使用外部的哪些接口。

e.子系統(tǒng)/部件間的依賴(lài)關(guān)系,以及對(duì)實(shí)現(xiàn)和測(cè)試的影響。

f.系統(tǒng)是如何部署的。軟件體系結(jié)構(gòu)不包括硬件、網(wǎng)格以及物理平臺(tái)的設(shè)計(jì)。軟件架構(gòu)只描述創(chuàng)建軟件所需要的各種環(huán)境,而不是詳細(xì)描述整個(gè)系統(tǒng)。579.軟件體系結(jié)構(gòu)模式

定義1:模式(pattern)是表示周境、動(dòng)機(jī)、解決方案三個(gè)方面關(guān)系的一個(gè)規(guī)則,模式描述了一個(gè)在某種周境下不斷重復(fù)發(fā)生的問(wèn)題,以及該問(wèn)題解決方案的核心所在,模式既是一個(gè)事物(thing)又是一個(gè)過(guò)程(process),不僅描述該事物本身,而且提出了通過(guò)怎樣的過(guò)程來(lái)產(chǎn)生該事物。定義2:模式就是解決某一類(lèi)問(wèn)題的方法論。你把解決某類(lèi)問(wèn)題的方法總結(jié)歸納到理論高度,那就是模式。

58模式1:數(shù)據(jù)流模式

數(shù)據(jù)流系統(tǒng)的特點(diǎn)是包含兩個(gè)或多個(gè)數(shù)據(jù)處理的部件,數(shù)據(jù)處理部件將輸入轉(zhuǎn)換為輸出。典型的數(shù)據(jù)流系統(tǒng)包括:

a.批處理程序

b.管道/過(guò)濾器程序數(shù)據(jù)處理部件以順序的方式依次處理數(shù)據(jù),前一個(gè)處理部件的輸出作為下一個(gè)處理部件的輸入。這種形式也稱(chēng)為管道,如圖所示。59數(shù)據(jù)流模式數(shù)據(jù)處理1數(shù)據(jù)處理2數(shù)據(jù)處理3數(shù)據(jù)處理1子處理B子處理A60模式2:調(diào)用返回模式

調(diào)用返回系統(tǒng)的特點(diǎn)是包含一個(gè)主控制器,由它來(lái)控制操作的調(diào)用。典型的調(diào)用返回系統(tǒng)包括:

a.主程序/子程序

b.遠(yuǎn)程過(guò)程調(diào)用系統(tǒng)主程序/子程序系統(tǒng)是經(jīng)典的系統(tǒng)架構(gòu),例如C程序和C++程序都有一個(gè)主程序來(lái)控制系統(tǒng)的執(zhí)行,如圖6-4所示。61調(diào)用返回模式主程序子程序1子程序2子程序362模式3:虛擬機(jī)模式

虛擬機(jī)系統(tǒng)執(zhí)行規(guī)定的語(yǔ)言符號(hào),為其它的技術(shù)提供一個(gè)語(yǔ)義層。虛擬機(jī)結(jié)構(gòu)通常由四個(gè)主要部件組成:解釋引擎、包含“偽程序”的內(nèi)存、解釋引擎控制狀態(tài)、程序的執(zhí)行狀態(tài)。典型的虛擬機(jī)系統(tǒng)包括:

a.工作流系統(tǒng)

b.游戲程序

c.大型ERP63模式4:共享數(shù)據(jù)模式

共享數(shù)據(jù)系統(tǒng)以一個(gè)或多個(gè)數(shù)據(jù)庫(kù)/數(shù)據(jù)倉(cāng)庫(kù)為中心進(jìn)行組織,其它部件可以從中讀寫(xiě)存儲(chǔ)的數(shù)據(jù)。共享數(shù)據(jù)系統(tǒng)還提供并發(fā)訪問(wèn)、容錯(cuò)處理、訪問(wèn)權(quán)限控制等功能。典型的共享數(shù)據(jù)系統(tǒng)包括:

a.數(shù)據(jù)庫(kù)

b.知識(shí)庫(kù)

c.源代碼控制程序64模式5:信息系統(tǒng)模式

現(xiàn)代信息系統(tǒng)平臺(tái)模式,主要考慮B/S模式。

B/S模式的三層:表示層(presentation),業(yè)務(wù)層(business),和數(shù)據(jù)存儲(chǔ)層(dataaccess)。

B/S模式的優(yōu)點(diǎn):

a.架構(gòu)簡(jiǎn)化了客戶端。它無(wú)需象C/S模式那樣在不同的客戶機(jī)上安裝不同的客戶應(yīng)用程序,而只需安裝通用的瀏覽器軟件。

b.簡(jiǎn)化了系統(tǒng)的開(kāi)發(fā)和維護(hù)。

c.使用戶的操作變得更簡(jiǎn)單。

d.特別適用于網(wǎng)上信息發(fā)布。65模式6:數(shù)據(jù)庫(kù)設(shè)計(jì)模式第三者插足模式。列變行模式。四個(gè)原子化模式。用視圖進(jìn)行數(shù)據(jù)處理模式。666.4軟件詳細(xì)設(shè)計(jì)

軟件詳細(xì)設(shè)計(jì),又稱(chēng)為軟件實(shí)現(xiàn)設(shè)計(jì)。若在概要設(shè)計(jì)中將軟件系統(tǒng)劃分為各個(gè)不同的子系統(tǒng),則詳細(xì)設(shè)計(jì)就是各個(gè)子系統(tǒng)的實(shí)現(xiàn)設(shè)計(jì)。若在概要設(shè)計(jì)中將軟件系統(tǒng)劃分為各個(gè)不同的模塊,則詳細(xì)設(shè)計(jì)就是各個(gè)模塊的實(shí)現(xiàn)設(shè)計(jì)。若在概要設(shè)計(jì)中將軟件系統(tǒng)劃分為各個(gè)不同的部件,則詳細(xì)設(shè)計(jì)就是各個(gè)部件的實(shí)現(xiàn)設(shè)計(jì)。本節(jié)分別介紹面向過(guò)程、面向數(shù)據(jù)和面向?qū)ο笕N詳細(xì)設(shè)計(jì)方法,重點(diǎn)是說(shuō)明這三種詳細(xì)設(shè)計(jì)方法的實(shí)質(zhì)、各自的描述工具及其相互之間的關(guān)系。67詳細(xì)設(shè)計(jì)的任務(wù)與步驟1.基本任務(wù)

回答的關(guān)鍵問(wèn)題:“怎樣具體地實(shí)現(xiàn)這個(gè)系統(tǒng)”。主要任務(wù)是設(shè)計(jì)出程序的“藍(lán)圖”,供程序員日后根據(jù)這個(gè)藍(lán)圖編寫(xiě)出實(shí)際的程序代碼。

2.基本步驟

a.確定模塊如何實(shí)現(xiàn)

b.編寫(xiě)詳細(xì)設(shè)計(jì)說(shuō)明書(shū)

c.制定單元測(cè)試計(jì)劃

d.評(píng)審詳細(xì)設(shè)計(jì)686.4.1面向過(guò)程詳細(xì)設(shè)計(jì)

面向過(guò)程詳細(xì)設(shè)計(jì),實(shí)質(zhì)上就是面向算法分析設(shè)計(jì),是其他各種詳細(xì)設(shè)計(jì)的基礎(chǔ)。一般而言,面向過(guò)程詳細(xì)設(shè)計(jì)的描述工具有下列四種:1.流程圖(Flowchart)

流程圖是用圖形化的方式,表示程序中一系列的操作以及操作執(zhí)行的順序,其表示元數(shù)如表6-2所示。69流程圖(Flowchart)名稱(chēng)圖例說(shuō)明終結(jié)符

表示流程的開(kāi)始和結(jié)束(數(shù)據(jù)源/潭)處理

表示程序的計(jì)算步驟或處理過(guò)程(具體算法),在方框內(nèi)填寫(xiě)處理的名稱(chēng)或程序語(yǔ)句判斷

表示邏輯判斷或分支,用于決定執(zhí)行后續(xù)的路徑,在菱形框內(nèi)填寫(xiě)判斷的條件輸入/輸出

獲取待處理的信息(輸入),記錄或顯示已處理的信息(輸出)連線

連接其它的符號(hào),表示執(zhí)行順序或數(shù)據(jù)流向70【例7-1】使用流程圖,描述并打印N的階乘,如圖6-6所示。712.N-S圖(Nassi-SchneidermanDiagram)N-S圖是流程圖的另一種表達(dá)形式,由Nassi和Schneiderman提出,簡(jiǎn)稱(chēng)N-S圖。與流程圖對(duì)應(yīng)的三種結(jié)構(gòu)(順序、分支、循環(huán)),用圖形表示。如圖7-7所示。723.程序設(shè)計(jì)語(yǔ)言PDL

程序設(shè)計(jì)語(yǔ)言也稱(chēng)結(jié)構(gòu)化英語(yǔ)或偽代碼,它使用結(jié)構(gòu)化編程語(yǔ)言的風(fēng)格描述程序算法,但不遵循特定編程語(yǔ)言的語(yǔ)法。程序設(shè)計(jì)語(yǔ)言允許你在比源代碼更高的層次上進(jìn)行設(shè)計(jì)。

【例7-3】使用程序設(shè)計(jì)語(yǔ)言描述打印N的階乘 讀入N

置F的值為1,置M的值為1

當(dāng)M<=N時(shí),執(zhí)行: 使F=F*M

使M=M+1

打印F734.決策表(DT)

決策表以緊湊的形式描述復(fù)雜的邏輯。決策表與if-else、switch-case語(yǔ)句類(lèi)似,將條件判斷與執(zhí)行的動(dòng)作聯(lián)系起來(lái)。決策表通常分成四個(gè)區(qū)域,如右圖6-9所示。條件條件選擇動(dòng)作動(dòng)作選擇74【例7-4】條件對(duì)應(yīng)于一個(gè)變量、關(guān)系或預(yù)測(cè),其可能的組合在條件選擇中列出。動(dòng)作是一個(gè)函數(shù)或操作。動(dòng)作選擇當(dāng)條件滿足時(shí)所執(zhí)行的動(dòng)作,如右圖6-10所示。條件不能打印√√√√紅燈閃√√√√不能識(shí)別打印機(jī)√√√√動(dòng)作檢查電源線√檢查打印機(jī)數(shù)據(jù)線√√檢查是否安裝驅(qū)動(dòng)程序√√√√檢查墨盒√√√√檢查是否卡紙√√755.日本的PADPAD是問(wèn)題分析圖(ProblemAnalysisDiagram)的英文縮寫(xiě),由日立公司發(fā)明,已經(jīng)得到推廣。

PAD圖有以下優(yōu)點(diǎn):

a.使用PAD圖設(shè)計(jì)出來(lái)的程序必然是結(jié)構(gòu)化的程序;

b.PAD圖所描述的程序結(jié)構(gòu)非常清晰;

c.PAD圖表現(xiàn)的程序邏輯易讀、易懂、易記;

d.容易將PAD圖轉(zhuǎn)換成程序;

e.PAD圖還可以描述數(shù)據(jù)結(jié)構(gòu);

f.PAD圖支持自頂向下、逐步求精方法的使用。76776.4.2面向數(shù)據(jù)詳細(xì)設(shè)計(jì)

面向數(shù)據(jù)設(shè)計(jì),它以實(shí)體--關(guān)系模型為基礎(chǔ),按照一定的規(guī)則將概念數(shù)據(jù)模型CDM轉(zhuǎn)換成能被某種數(shù)據(jù)庫(kù)管理系統(tǒng)接受的物理數(shù)據(jù)模型PDM,創(chuàng)建物理上的數(shù)據(jù)庫(kù)表、索引和視圖,并且用存儲(chǔ)過(guò)程和觸發(fā)器來(lái)實(shí)現(xiàn)各種業(yè)務(wù)規(guī)則。實(shí)踐證明,凡是用存儲(chǔ)過(guò)程能實(shí)現(xiàn)觸發(fā)器功能的地方,就堅(jiān)決用存儲(chǔ)過(guò)程,而不用觸發(fā)器,因?yàn)檫^(guò)多的觸發(fā)器不但影響數(shù)據(jù)庫(kù)的運(yùn)行性能,而且可能導(dǎo)致數(shù)據(jù)庫(kù)系統(tǒng)崩潰。78面向數(shù)據(jù)詳細(xì)設(shè)計(jì)

面向數(shù)據(jù)詳細(xì)設(shè)計(jì),實(shí)質(zhì)上就是面向元數(shù)據(jù)詳細(xì)設(shè)計(jì)。元數(shù)據(jù)是數(shù)據(jù)庫(kù)和數(shù)據(jù)倉(cāng)庫(kù)中的重要概念,元數(shù)據(jù)是關(guān)于數(shù)據(jù)的數(shù)據(jù),組織數(shù)據(jù)的數(shù)據(jù),領(lǐng)導(dǎo)數(shù)據(jù)的數(shù)據(jù),管理數(shù)據(jù)的數(shù)據(jù)。在詳細(xì)設(shè)計(jì)時(shí),對(duì)于這些元數(shù)據(jù),都要用圖形、數(shù)據(jù)字典或文字進(jìn)行詳細(xì)描述。對(duì)存儲(chǔ)過(guò)程中的算法,也要進(jìn)行詳細(xì)設(shè)計(jì)。因此,面向數(shù)據(jù)詳細(xì)設(shè)計(jì)的描述工具,主要是概念數(shù)據(jù)模型CDM、物理數(shù)據(jù)模型PDM和存儲(chǔ)過(guò)程。80%以上的工作,可以在CDM上完成。7980面向數(shù)據(jù)詳細(xì)設(shè)計(jì)

在圖中,需要說(shuō)明2點(diǎn)。(1)圖書(shū)與圖冊(cè)關(guān)系的理解與處理。實(shí)體“圖書(shū)”與實(shí)體“圖冊(cè)”之間的關(guān)系,是一對(duì)多關(guān)系。這種處理的好處是:讀者預(yù)借或者借閱,只是直接與圖冊(cè)打交道,而不直接與圖書(shū)打交道,從而防止了極少數(shù)讀者將別人的圖冊(cè)偷來(lái)冒稱(chēng)自已的圖冊(cè)還書(shū)。(2)多對(duì)多關(guān)系的理解與處理。實(shí)體“讀者”與實(shí)體“圖冊(cè)”之間的關(guān)系,是多對(duì)多關(guān)系,這種多對(duì)多的復(fù)雜關(guān)系,是通過(guò)兩個(gè)實(shí)體“預(yù)約記錄”和“借閱記錄”來(lái)簡(jiǎn)化的。而實(shí)體“圖書(shū)”與實(shí)體“作者”之間的多對(duì)多關(guān)系,是通過(guò)實(shí)體“圖書(shū)作者”來(lái)簡(jiǎn)化的。81面向數(shù)據(jù)詳細(xì)設(shè)計(jì)

由于CASE工具PowerDesigner具有正向和逆向的雙向功能,所以既可以從CDM生成PDM,又可以從PDM生成CDM。由此可見(jiàn),數(shù)據(jù)模型設(shè)計(jì),也可以從PDM開(kāi)始進(jìn)行。在詳細(xì)設(shè)計(jì)時(shí),對(duì)于圖中物理數(shù)據(jù)模型中的表名和字段名,以及在此基礎(chǔ)上產(chǎn)生的索引名、視圖名、存儲(chǔ)過(guò)程名都要進(jìn)行詳細(xì)定義與解釋?zhuān)瑢?duì)存儲(chǔ)過(guò)程中的算法也要具體說(shuō)明。同時(shí),還要對(duì)數(shù)據(jù)庫(kù)的表結(jié)構(gòu)與系統(tǒng)的錄入界面及輸出報(bào)表之間的關(guān)系,作出詳盡的描述。8283846.4.3面向?qū)ο笤敿?xì)設(shè)計(jì)(專(zhuān)開(kāi)一章)

軟件系統(tǒng)的架構(gòu)設(shè)計(jì)完成后,利用UML的描述工具:類(lèi)圖、順序圖、狀態(tài)圖、部件圖、部署圖,分別將架構(gòu)中的部件(組件/構(gòu)件)進(jìn)行實(shí)現(xiàn)設(shè)計(jì),直到可以編程為止;在實(shí)現(xiàn)設(shè)計(jì)中,對(duì)類(lèi)類(lèi)的屬性定義、類(lèi)的方法算法、接口說(shuō)明、接口實(shí)現(xiàn)、類(lèi)之間的關(guān)系、對(duì)象與消息之間的關(guān)系、實(shí)體之間的狀態(tài)轉(zhuǎn)換,均要詳細(xì)說(shuō)清楚。85*6.4.4軟件詳細(xì)設(shè)計(jì)方法總結(jié)

運(yùn)用詳細(xì)設(shè)計(jì)的描述工具,將架構(gòu)內(nèi)的構(gòu)件,設(shè)計(jì)成編程實(shí)現(xiàn)的蘭圖,就是詳情設(shè)計(jì)。對(duì)于B/S的系統(tǒng),“面向數(shù)據(jù)方法用在數(shù)據(jù)庫(kù)服務(wù)器層次上系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),面向?qū)ο蠓椒ㄓ迷诔龜?shù)據(jù)庫(kù)服務(wù)器層次之外的其他層次上系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),面向過(guò)程方法用在其他兩種方法本身內(nèi)部函數(shù)的設(shè)計(jì)與實(shí)現(xiàn)”。這三種方法是互相幫助、取長(zhǎng)補(bǔ)短、彼此有關(guān)的。一般而言,對(duì)于一個(gè)大型信息系統(tǒng)的建設(shè),由于其分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試、維護(hù)的重點(diǎn)是數(shù)據(jù)庫(kù)服務(wù)器上的數(shù)據(jù),所以在實(shí)施的過(guò)程中,在宏觀上仍然要遵守“五個(gè)面向”的實(shí)施理論,即:“面向流程分析、面向數(shù)據(jù)設(shè)計(jì)、面向?qū)ο髮?shí)現(xiàn)、面向功能測(cè)試、面向過(guò)程管理”。86*6.5軟件屬性和度量

6.5.1設(shè)計(jì)屬性

軟件架構(gòu)的設(shè)計(jì)屬性,表現(xiàn)在它們的可用性和可管理性上。1.可用性可用性是系統(tǒng)正常運(yùn)行時(shí)間的概率,即:可用性=平均正常工作時(shí)間/(平均正常工作時(shí)間+平均修復(fù)時(shí)間)87影響可用性的因素不充分的測(cè)試。更改管理問(wèn)題。缺少在線監(jiān)視和分析。操作錯(cuò)誤。弱編碼。與外部服務(wù)或應(yīng)用程序的交互。不同的操作條件(使用級(jí)別更改、峰值重載)。異常事件(安全性失敗、廣播風(fēng)暴)。硬件故障(硬盤(pán)、控制器、網(wǎng)絡(luò)設(shè)備、服務(wù)器、電源、內(nèi)存和CPU)。環(huán)境問(wèn)題(電源、冷卻、火、洪水、灰塵、自然災(zāi)害)。88提高可用性的辦法

(1)使用群集。集群包括至少將兩個(gè)系統(tǒng)連接到一起,使兩個(gè)服務(wù)器能夠像一臺(tái)機(jī)器那樣工作或者看起來(lái)好像一臺(tái)機(jī)器。

集集是高可用性的關(guān)鍵技術(shù),因?yàn)樗诔霈F(xiàn)失敗時(shí),提供即時(shí)故障轉(zhuǎn)移應(yīng)用程序服務(wù)。

(2)使用網(wǎng)絡(luò)負(fù)載平衡?!熬W(wǎng)絡(luò)負(fù)載平衡”(NLB),它通過(guò)檢測(cè)某服務(wù)器失敗后,能自動(dòng)將通信量重新分發(fā)給仍然運(yùn)行的服務(wù)器。89提高可用性的辦法(續(xù))

(3)使用服務(wù)級(jí)別協(xié)議。定義期望的服務(wù)級(jí)別。這樣的服務(wù)級(jí)別協(xié)議應(yīng)包括這樣的細(xì)節(jié):“該應(yīng)用程序應(yīng)每周7天、每天24小時(shí)運(yùn)行,年可用性為99.9%”。

(4)提供實(shí)時(shí)的監(jiān)視。連續(xù)監(jiān)視操作工作負(fù)荷和失敗數(shù)據(jù),對(duì)于發(fā)現(xiàn)趨勢(shì)和改善服務(wù)至關(guān)重要。

(5)使用數(shù)據(jù)備份。

(6)檢查所有安全計(jì)劃。安全性是指確保應(yīng)用程序服務(wù)只對(duì)有資格的用戶可用。安全性還意味著保護(hù)應(yīng)用程序使用的所有分布式組件和資源。902.可管理性

(1)可靠性軟件可靠性是指應(yīng)用程序能在多大程度上,在不發(fā)生失敗的情況下,準(zhǔn)確地提供在原始規(guī)范中定義的服務(wù):

可靠性=

小時(shí)數(shù)/失敗次數(shù)例如,假設(shè)預(yù)期應(yīng)用程序提供的可靠性為:每天24小時(shí)操作,每30天發(fā)生一次失?。ù蠹s每720小時(shí)失敗一次)。測(cè)試表明應(yīng)用程序運(yùn)行1800小時(shí)中發(fā)生兩次失敗,所以,可靠性=1800/2=900小時(shí)軟件可靠性的一個(gè)重要概念,是當(dāng)軟件發(fā)生失敗時(shí),軟件仍可用并繼續(xù)執(zhí)行的程度。912.可管理性(續(xù))

(2)可維護(hù)性

可移植性:軟件系統(tǒng)能否在不同的硬件、操作系統(tǒng)上運(yùn)行。

可修改性:添加新功能或修改現(xiàn)有功能的難易程度??尚薷男圆畹南到y(tǒng)有以下表現(xiàn):

a.脆弱。修改脆弱的軟件系統(tǒng)將破壞現(xiàn)有的功能。

b.僵化。軟件系統(tǒng)難以用簡(jiǎn)單的方式進(jìn)行修改。

c.重復(fù)。重復(fù)代碼散布各個(gè)角落,使之難于修改。

易理解性:只有理解原有的系統(tǒng)才能對(duì)它進(jìn)行修改??烧{(diào)試性:支持多級(jí)的在線調(diào)試。922.可管理性(續(xù))(3)其它屬性

文化適應(yīng)性:是否提供多語(yǔ)言版本支持,提供對(duì)不同文件差異的支持。

可測(cè)試性:軟件可以有效的測(cè)試。

易用性:提供友好的人機(jī)界面。

危險(xiǎn)性:系統(tǒng)對(duì)現(xiàn)實(shí)世界不會(huì)帶來(lái)災(zāi)難。936.5.2設(shè)計(jì)度量

設(shè)計(jì)度量是指評(píng)估和量化軟件設(shè)計(jì)的結(jié)構(gòu)、質(zhì)量等方面的屬性,用于項(xiàng)目的質(zhì)量控制和進(jìn)度控制。1.面向過(guò)程設(shè)計(jì)的度量

(1)內(nèi)聚度量利用數(shù)據(jù)切片對(duì)功能內(nèi)聚進(jìn)行度量。內(nèi)聚度量SFC則是超級(jí)膠合數(shù)據(jù)與所有數(shù)據(jù)的比值:

SFC的值越大,內(nèi)聚程度越高。94參數(shù)及符號(hào)說(shuō)明:SFC:strongfunctionalcohesion(強(qiáng)功能性內(nèi)聚)P:procedureSA:sliceabstraction(切片抽取)SG(SA(p)):(表示位于所有SA(p)數(shù)據(jù)切片上的數(shù)據(jù)符號(hào)集合)Tockens(p):表示過(guò)程p的數(shù)據(jù)符號(hào)集合。951.面向過(guò)程設(shè)計(jì)的度量(續(xù))(2)耦合度量耦合度F反映了模塊與模塊之間、模塊與全局?jǐn)?shù)據(jù)之間、模塊與環(huán)境之間的關(guān)聯(lián),F(xiàn)的值越大,耦合度越高。計(jì)算公式為:

F=1/(i1+q1i2+u1+q2u2+g1+q3g2+w+r)其中:

i1=輸入數(shù)據(jù)參數(shù)的個(gè)數(shù)

i2=輸入控制參數(shù)的個(gè)數(shù)

u1=輸出數(shù)據(jù)參數(shù)的個(gè)數(shù)

u2=輸出控制參數(shù)的個(gè)數(shù)

g1=全局變量用于數(shù)據(jù)的個(gè)數(shù)

g2=全局變量用于控制的個(gè)數(shù)

w=被調(diào)用模塊的個(gè)數(shù)

r=調(diào)用該模塊的模塊個(gè)數(shù)

q1,q2,q3=2961.面向過(guò)程設(shè)計(jì)的度量(續(xù))(3)復(fù)雜度度量程序復(fù)雜度反映出其可靠性和可維護(hù)性,從復(fù)雜度的分析中可以找到系統(tǒng)潛在的不可靠的區(qū)域。復(fù)雜度與程序的大小無(wú)關(guān),只取決于程序的判斷分支結(jié)構(gòu)。從圖論出發(fā),復(fù)雜度度量公式為:

v=e-n+2p其中:

e=圖形頂點(diǎn)數(shù)

n=邊數(shù)

p=相連部件的數(shù)量972.面向?qū)ο笤O(shè)計(jì)的度量

目前廣泛被采用的面向?qū)ο蟮亩攘繕?biāo)準(zhǔn),是由Chidamber和Kemerer提出的,簡(jiǎn)稱(chēng)為CK度量套件。CK度量套件中提出了6個(gè)設(shè)計(jì)度量:度量1:每個(gè)類(lèi)的加權(quán)方法(WeightedMethodsPerClass,WMC)設(shè)M1,…,Mn是類(lèi)C的方法,并且M1,…,Mn的復(fù)雜度分別為C1,…,Cn。那么982.面向?qū)ο笤O(shè)計(jì)的度量(續(xù))

度量2:繼承樹(shù)的深度(DepthofInheritanceTree,DIT)指一個(gè)類(lèi)到根類(lèi)的深度,如果涉及多重繼承,取深度的最大值。DIT值反映了一個(gè)類(lèi)受其父類(lèi)的影響程度的大小。一個(gè)類(lèi)的DIT值越大,它所繼承的方法越大,要預(yù)測(cè)它的行為越困難。度量3:子類(lèi)數(shù)量(NumberofChildren,NOC)

NOC指一個(gè)類(lèi)的直接子類(lèi)的數(shù)量。一個(gè)類(lèi)的子類(lèi)越多,其復(fù)用性越高。NOC值越大,該類(lèi)的被正確抽象的可能性越低,對(duì)子類(lèi)的影響就越大,需要對(duì)該類(lèi)進(jìn)行更多的測(cè)試。992.面向?qū)ο笤O(shè)計(jì)的度量(續(xù))

度量4:對(duì)象類(lèi)間的耦合(Couplingbetweenobjectclasses,CBO)

CBO指與一個(gè)類(lèi)相耦合的類(lèi)的數(shù)量。類(lèi)間耦合越高,其模塊化程度和復(fù)用性越差。一個(gè)類(lèi)的CBO值越大,對(duì)設(shè)計(jì)的其它部分的更改越敏感,其可維護(hù)性越差,需要進(jìn)行的測(cè)試更多。度量5:類(lèi)的響應(yīng)(ResponseForaClass,RFC)

RFC指一個(gè)類(lèi)的消息響應(yīng)集合的勢(shì)。一個(gè)類(lèi)的消息響應(yīng)集合是指當(dāng)一個(gè)類(lèi)的對(duì)象接收到一個(gè)消息時(shí),可能會(huì)被執(zhí)行的方法的集合。RFC值越大,類(lèi)的復(fù)雜度越高,測(cè)試和調(diào)試工作量越大。1002.面向?qū)ο笤O(shè)計(jì)的度量(續(xù))

度量6:方法中缺少內(nèi)聚(LackofCohesioninMethods,LCOM)一個(gè)類(lèi)具有相似的方法越多,類(lèi)的內(nèi)聚性越高,其封裝性越好。當(dāng)一個(gè)類(lèi)內(nèi)聚性低時(shí),應(yīng)該將該類(lèi)分割成多個(gè)子類(lèi)。1013.面向數(shù)據(jù)設(shè)計(jì)的度量

度量1:復(fù)雜關(guān)系(多對(duì)多關(guān)系)的個(gè)數(shù)r。設(shè)法將復(fù)雜關(guān)系(多對(duì)多)轉(zhuǎn)化為簡(jiǎn)單關(guān)系(一對(duì)多);度量2:基本表的個(gè)數(shù)t。若基本表的個(gè)數(shù)太多,則說(shuō)明數(shù)據(jù)集成度差。若基本表個(gè)數(shù)太少,則可能要進(jìn)行列變行;度量3:字段(數(shù)據(jù)項(xiàng))的個(gè)數(shù)f。若字段的個(gè)數(shù)太多,則說(shuō)明可能存在冗余。若字段個(gè)數(shù)太少,則可能要進(jìn)一步將屬性原子化;度量4:基

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論