河北工業(yè)大學(xué)軟件工程教師課件第四節(jié)軟件設(shè)計(jì)_第1頁(yè)
河北工業(yè)大學(xué)軟件工程教師課件第四節(jié)軟件設(shè)計(jì)_第2頁(yè)
河北工業(yè)大學(xué)軟件工程教師課件第四節(jié)軟件設(shè)計(jì)_第3頁(yè)
河北工業(yè)大學(xué)軟件工程教師課件第四節(jié)軟件設(shè)計(jì)_第4頁(yè)
河北工業(yè)大學(xué)軟件工程教師課件第四節(jié)軟件設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩190頁(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)介

1、第四講 設(shè)計(jì)工程(Design Engineering)Welcome to Software EngineeringLecture 4Zhang JPage 2目標(biāo):n 掌握設(shè)計(jì)工程的基本知識(shí);n 了解基本的體系結(jié)構(gòu)設(shè)計(jì)方法和模型;n 了解構(gòu)件級(jí)設(shè)計(jì)的基本原則與方法; n 掌握用戶界面設(shè)計(jì)的一些原則與基本設(shè)計(jì)活動(dòng)。 Page 3內(nèi)容n 設(shè)計(jì)工程n 體系結(jié)構(gòu)設(shè)計(jì)n 構(gòu)件設(shè)計(jì)n 用戶界面設(shè)計(jì)n 設(shè)計(jì)文檔與有效性驗(yàn)證Page 4 1 設(shè)計(jì)工程1.1 軟件工程中的設(shè)計(jì) 設(shè)計(jì)是一個(gè)把問(wèn)題轉(zhuǎn)換成解決方案的創(chuàng)造性過(guò)程; 設(shè)計(jì)解決的是“如何實(shí)現(xiàn)系統(tǒng)”的問(wèn)題; 從工程管理的角度,軟件設(shè)計(jì)可以分成概要設(shè)計(jì)(總體

2、設(shè)計(jì)、系統(tǒng)設(shè)計(jì))與細(xì)節(jié)設(shè)計(jì)(詳細(xì)設(shè)計(jì))Page 5設(shè)計(jì)的重要性n設(shè)計(jì)提供了軟件的表示,使得軟件的質(zhì)量評(píng)價(jià)成為可能。設(shè)計(jì)提供了軟件的表示,使得軟件的質(zhì)量評(píng)價(jià)成為可能。n軟件設(shè)計(jì)是將用戶要求準(zhǔn)確地轉(zhuǎn)化成為最終軟件產(chǎn)品的唯軟件設(shè)計(jì)是將用戶要求準(zhǔn)確地轉(zhuǎn)化成為最終軟件產(chǎn)品的唯一途徑。一途徑。n軟件設(shè)計(jì)在軟件過(guò)程中處于技術(shù)核心,它是建?;顒?dòng)的最軟件設(shè)計(jì)在軟件過(guò)程中處于技術(shù)核心,它是建?;顒?dòng)的最后一個(gè)軟件工程活動(dòng)后一個(gè)軟件工程活動(dòng),是后續(xù)開發(fā)步驟及軟件維護(hù)工作的,是后續(xù)開發(fā)步驟及軟件維護(hù)工作的基礎(chǔ)。基礎(chǔ)。 如果沒(méi)有設(shè)計(jì),建立的將是一個(gè)不穩(wěn)定的系統(tǒng)如果沒(méi)有設(shè)計(jì),建立的將是一個(gè)不穩(wěn)定的系統(tǒng) :Page 6設(shè)計(jì)的

3、重要性Programs no design just like buildings no blueprintPrograms no design just like buildings no blueprint咋還要圖呢?Page 7從分析模型到設(shè)計(jì)模型Page 8從分析模型到設(shè)計(jì)模型Anal ysi s M odeluse-cases - text use-case di agram s acti vi ty di agram s swi m l ane di agram sdata fl ow di agram s control -fl ow di agram s processi ng

4、 narrati vesf fl lo o w w - -o o r ri ie e n n t te e d d e e l le e m m e e n n t ts sb b e e h h a a v v i io o r ra a l le e l le e m m e e n n t ts sc c l la a s ss s- -b b a a s se e d de e l le e m m e e n n t ts ss sc c e e n n a a r ri io o - -b b a a s se e d de e l le e m m e e n n t ts sc

5、l ass di agram s anal ysi s packages CRC m odel s col l aborati on di agram s state di agram s sequence di agram sD D a a t ta a / / C C l la a s ss s D D e e s si ig g n nA A r rc c h h i it te e c c t tu u r ra a l l D D e e s si ig g n nI In n t te e r rf fa a c c e e D D e e s si ig g n nC C o o

6、 m m p p o o n n e e n n t t- - L L e e v v e e l l D D e e s si ig g n nDesi gn M odelPage 91.2 設(shè)計(jì)概念1.2.1 1.2.1 模塊化模塊化 easier to build, easier to change, easier to fix .Page 101.2.1 1.2.1 模塊化模塊化n 在計(jì)算機(jī)軟件領(lǐng)域,模塊化的概念已被推崇了近四十年。目前,幾乎所有的軟件體系結(jié)構(gòu)都體現(xiàn)了模塊化的思想,即把軟件劃分為可獨(dú)立命名和編址的構(gòu)件,每個(gè)構(gòu)件稱為一個(gè)模塊模塊,每個(gè)模塊完成一個(gè)子功能,當(dāng)把所有模塊組裝到

7、一起成為一個(gè)整體時(shí),便可以完成指定的功能。n 模塊組成系統(tǒng)或子系統(tǒng)。n “一個(gè)復(fù)雜問(wèn)題分割成若干個(gè)容易解決、容易管理的小問(wèn)題后更易于求解”,模塊化正是以此為依據(jù)把系統(tǒng)劃分成若干個(gè)模塊,各個(gè)擊破。 Page 11模塊劃分與成本模塊劃分與成本n 如果模塊是相互獨(dú)立的,模塊越小,每個(gè)模塊的工作量越少;但當(dāng)模塊數(shù)增加時(shí),模塊間的聯(lián)系隨之增加,把這些模塊聯(lián)接起來(lái)的工作量也隨之增加。Page 121.2.2 1.2.2 信息隱藏與獨(dú)立性信息隱藏與獨(dú)立性n 信息隱藏原理信息隱藏原理:模塊應(yīng)該設(shè)計(jì)得使其所含信息(過(guò)程和數(shù)據(jù))對(duì)于那些不需要這些信息的模塊來(lái)說(shuō)不可訪問(wèn);每個(gè)模塊只完成一個(gè)相對(duì)獨(dú)立的特定功能;模塊之

8、間僅交換那些為完成系統(tǒng)功能必須交換的信息,即模塊應(yīng)該功能獨(dú)立的。 n 采用信息隱藏原理指導(dǎo)模塊設(shè)計(jì)有很多好處:采用信息隱藏原理指導(dǎo)模塊設(shè)計(jì)有很多好處: 1)它支持模塊的并行開發(fā); 2)減少測(cè)試和后期維護(hù)的工作量。因?yàn)闇y(cè)試和維護(hù)階段不可避免地要修改設(shè)計(jì)和代碼,模塊對(duì)大多數(shù)數(shù)據(jù)和過(guò)程處理細(xì)節(jié)的隱藏可以減少錯(cuò)誤向外傳播。 3)整個(gè)系統(tǒng)擴(kuò)充功能只需“插入”新模塊,原有的多數(shù)模塊無(wú)須改動(dòng)。 Page 131.2.2 1.2.2 信息隱藏與獨(dú)立性信息隱藏與獨(dú)立性Page 14模塊獨(dú)立性(模塊獨(dú)立性(IndependencyIndependency)n 如果說(shuō),一個(gè)模塊在不需要另一個(gè)模塊的情況下,能夠完整地

9、執(zhí)行其功能,我們就稱這兩個(gè)模塊是完全獨(dú)立的。n 模塊獨(dú)立性的概念是模塊化、抽象和信息隱藏概念的直接產(chǎn)物,模塊獨(dú)立性是通過(guò)開發(fā)具有“專一”功能和“避免”與其他模塊過(guò)多交互作用的模塊來(lái)達(dá)到的。 n 模塊獨(dú)立性可用兩個(gè)定性準(zhǔn)則來(lái)度量:耦合性耦合性(coupling)和內(nèi)聚性內(nèi)聚性(cohesion)。n 耦合是模塊之間相對(duì)獨(dú)立性的量度,而內(nèi)聚則是模塊功能相對(duì)強(qiáng)度的量度。 Page 15耦合性(耦合性(couplingcoupling)n 耦合性是對(duì)軟件程序結(jié)構(gòu)中各個(gè)模塊之間相互關(guān)聯(lián)程度的一種度量。n 耦合的強(qiáng)弱取決于模塊間接口的復(fù)雜性、進(jìn)入或調(diào)用模塊的位置、方式以及通過(guò)接口傳送數(shù)據(jù)的多少等。n 在設(shè)

10、計(jì)軟件時(shí)應(yīng)追求盡可能松散耦合松散耦合的系統(tǒng)。因?yàn)閷?duì)這類系統(tǒng)中任一模塊的設(shè)計(jì)、測(cè)試和維護(hù)相對(duì)獨(dú)立。由于模塊間聯(lián)系較少,錯(cuò)誤在模塊間傳播的可行性也隨之變小。模塊間的耦合程度直接影響系統(tǒng)的可理解性、可測(cè)試性、可靠性和可維護(hù)性。 Page 16內(nèi)聚性(內(nèi)聚性(cohesioncohesion)n 內(nèi)聚是信息隱藏和局部化概念的自然擴(kuò)展,它標(biāo)志一個(gè)模塊內(nèi)部各成分彼此結(jié)合的緊密程度。 n 內(nèi)聚和耦合是相互關(guān)聯(lián)的。在程序結(jié)構(gòu)中各模塊的內(nèi)聚程度越高,模塊間的耦合程度就越低。但這也不是絕對(duì)的。n 軟件概要設(shè)計(jì)的目標(biāo)是力求增加模塊的內(nèi)聚,盡量減少模塊間的耦合。但增加內(nèi)聚比減少耦合更重要,應(yīng)當(dāng)把更多的注意力集中到提高

11、模塊的內(nèi)聚程度上來(lái)。 Page 171.2.3 1.2.3 抽象抽象n 人類在認(rèn)識(shí)復(fù)雜現(xiàn)象的過(guò)程中使用的最強(qiáng)有力的思維工具就是抽象抽象。人們?cè)趯?shí)踐中認(rèn)識(shí)到,在現(xiàn)實(shí)世界中一定事物、狀態(tài)或過(guò)程之間總存在著某些相似的方面(共性)。n 把這些相似的地方集中和概括起來(lái),暫時(shí)忽略它們之間的差異,這就是抽象?;蛘哒f(shuō),抽象就是抽出事物的本質(zhì)特性而暫時(shí)不考慮它們的細(xì)節(jié)。n 一個(gè)復(fù)雜的動(dòng)態(tài)系統(tǒng)首先可以用一些高級(jí)的抽象概念構(gòu)造和理解,這些高級(jí)概念又可以用一些較低級(jí)的概念構(gòu)造和理解,如此進(jìn)行下去,直至最低層次的具體元素。 n 軟件工程過(guò)程的每一步都是對(duì)較高一級(jí)抽象的解作一次較具體化的描述。 Page 18過(guò)程抽象與數(shù)

12、據(jù)抽象過(guò)程抽象與數(shù)據(jù)抽象implemented with a knowledge of the object that is associated with enterPage 19過(guò)程抽象與數(shù)據(jù)抽象過(guò)程抽象與數(shù)據(jù)抽象implemented as a data structurePage 20 “逐步求精”是與“抽象”密切相關(guān)的一個(gè)概念,它由N.Wirth提出,可視為一種早期的自頂向下設(shè)計(jì)策自頂向下設(shè)計(jì)策略略,其主要思想是:針對(duì)某個(gè)功能的宏觀描述,用逐步求精的方法不斷地分解,逐步確立過(guò)程細(xì)節(jié),直至該功能用程序語(yǔ)言描述的算法實(shí)現(xiàn)為止。 因?yàn)榍缶拿恳徊蕉际怯酶鼮樵敿?xì)的描述替代上一層次的抽象描述,

13、所以在整個(gè)設(shè)計(jì)過(guò)程中產(chǎn)生的、具有不同詳細(xì)程度的各種描述,組成了系統(tǒng)的層次結(jié)構(gòu)。層次結(jié)構(gòu)的上一層是下一層的抽象,下一層是上一層的求精。 1.2.1.2.4 4 逐步求精(細(xì)化)逐步求精(細(xì)化) Page 21openwalk to door;reach for knob;open door;walk through;close door.repeat until door opensturn knob clockwise;if knob doesnt turn, then take key out; find correct key; insert in lock;endifpull/push

14、doormove out of way;end repeat1.2.1.2.4 4 逐步求精(細(xì)化)逐步求精(細(xì)化) Page 221.3 設(shè)計(jì)過(guò)程活動(dòng)n 體系結(jié)構(gòu)設(shè)計(jì)n 抽象描述n 接口設(shè)計(jì)n 組件設(shè)計(jì)n 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)n 算法設(shè)計(jì)Page 23軟件設(shè)計(jì)過(guò)程Page 242. 體系結(jié)構(gòu)設(shè)計(jì)n 體系結(jié)構(gòu)(architecture,又稱架構(gòu))設(shè)計(jì)的任務(wù)是要識(shí)別出組成系統(tǒng)的子系統(tǒng)并建立子系統(tǒng)的控制和通信框架。n 體系結(jié)構(gòu)設(shè)計(jì)的輸出是軟件體系結(jié)構(gòu)的描述。n 體系結(jié)構(gòu)設(shè)計(jì)是聯(lián)系需求描述與其他設(shè)計(jì)活動(dòng)的橋梁。Page 25進(jìn)行體系結(jié)構(gòu)設(shè)計(jì)的好處n 有利于有利于Stakeholders之間進(jìn)行溝通之間進(jìn)行溝

15、通nArchitecture may be used as a focus of discussion by system stakeholders.n 有利于系統(tǒng)分析有利于系統(tǒng)分析nMeans that analysis of whether the system can meet its non-functional requirements is possible.n 有利于大規(guī)模復(fù)用有利于大規(guī)模復(fù)用nThe architecture may be reusable across a range of systems.Page 26體系結(jié)構(gòu)與系統(tǒng)特性n 性能n Localize crit

16、ical operations and minimise communications. Use large rather than fine-grain components.n 保密性n Use a layered architecture with critical assets in the inner layers.n 安全性n Localize safety-critical features in a small number of sub-systems.n 可用性n Include redundant components and mechanisms for fault t

17、olerance.n 可維護(hù)性n Use fine-grain, replaceable components.Page 27體系結(jié)構(gòu)之間的沖突n Using large-grain components improves performance but reduces maintainability.n Introducing redundant data improves availability but makes security more difficult.n Localizing safety-related features usually means more communi

18、cation so degraded performance.Page 282.1 系統(tǒng)構(gòu)成n 體系結(jié)構(gòu)設(shè)計(jì)的第一個(gè)階段通常是將一個(gè)系統(tǒng)分解成一組相互作用的子系統(tǒng)系統(tǒng)構(gòu)成。n 通常可以采用方塊圖來(lái)描述系統(tǒng)結(jié)構(gòu)的概況,而用其它的一些特別模型來(lái)表示子系統(tǒng)如何分享數(shù)據(jù),如何分配功能以及連接方式Page 29例:打包機(jī)器人控制系統(tǒng)Page 30方塊圖的特點(diǎn)n 非常抽象-不顯示組件之間的本質(zhì)關(guān)系和子系統(tǒng)的外部特征,只給出系統(tǒng)構(gòu)成的高層抽象;n 有利于不同層次的系統(tǒng)參與人員進(jìn)行交流與溝通。Page 31體系結(jié)構(gòu)設(shè)計(jì)決策n 體系結(jié)構(gòu)設(shè)計(jì)是一個(gè)創(chuàng)造性的過(guò)程,所以不同類型的系統(tǒng)的設(shè)計(jì)過(guò)程與設(shè)計(jì)活動(dòng)是不盡相同的。

19、n 然而,在體系結(jié)構(gòu)設(shè)計(jì)過(guò)程中的一些問(wèn)題的研究是適合所有系統(tǒng)設(shè)計(jì)的,因此從問(wèn)題決策角度看待體系結(jié)構(gòu)設(shè)計(jì)比從活動(dòng)角度看待它更加有效。Page 32n Is there a generic application architecture that can be used?n How will the system be distributed?n What architectural styles are appropriate?n What approach will be used to structure the system?n How will the system be decomp

20、osed into modules?n What control strategy should be used?n How will the architectural design be evaluated?n How should the architecture be documented?體系結(jié)構(gòu)設(shè)計(jì)要考慮的問(wèn)題Page 33系統(tǒng)的組成n 系統(tǒng)的組成反映的是系統(tǒng)組織所采用的基本策略。n 三種應(yīng)用廣泛的組成類型:n數(shù)據(jù)中心體系結(jié)構(gòu)(容器模型);n客戶/服務(wù)器體系結(jié)構(gòu);n抽象機(jī)或分層體系結(jié)構(gòu)。Page 342.1.1 數(shù)據(jù)中心體系結(jié)構(gòu)(容器)n 構(gòu)成系統(tǒng)的子系統(tǒng)之間交換信息通常可以采用以

21、下兩種方式:n所有共享數(shù)據(jù)放到一個(gè)中心數(shù)據(jù)庫(kù)(容器)中,所有子系統(tǒng)都能從中存取數(shù)據(jù);n每一個(gè)子系統(tǒng)維持自己的一個(gè)數(shù)據(jù)庫(kù),子系統(tǒng)之間的數(shù)據(jù)交互通過(guò)消息傳遞來(lái)實(shí)現(xiàn)。n 當(dāng)系統(tǒng)中存在大量的數(shù)據(jù)共享時(shí),數(shù)據(jù)中心(容器)模型是最為常用的體系結(jié)構(gòu)風(fēng)格。Page 352.1.1 數(shù)據(jù)中心體系結(jié)構(gòu)(容器)Page 36例:CASE工具集的體系結(jié)構(gòu)Page 37數(shù)據(jù)中心模型的特點(diǎn)n 優(yōu)點(diǎn)優(yōu)點(diǎn)n共享大量數(shù)據(jù)的有效方式,不同子系統(tǒng)間無(wú)需數(shù)據(jù)轉(zhuǎn)換;n子系統(tǒng)無(wú)需去考慮數(shù)據(jù)如何被集中管理的;n共享數(shù)據(jù)模型是以容器模式發(fā)布的。n 缺點(diǎn)缺點(diǎn)n子系統(tǒng)必須與容器數(shù)據(jù)模型相一致才能共享數(shù)據(jù);n數(shù)據(jù)進(jìn)化會(huì)比較困難而且代價(jià)較高;n將容

22、器分布到多臺(tái)機(jī)器上比較困難。Page 382.1.2 客戶/服務(wù)器體系結(jié)構(gòu)n 客戶/服務(wù)器模型是一個(gè)分布式系統(tǒng)模型,數(shù)據(jù)和加工過(guò)程在多個(gè)處理器之間分配;n 這種模型的主要組成:n一組為其它子系統(tǒng)提供服務(wù)的單機(jī)服務(wù)器;n一組向服務(wù)器請(qǐng)求服務(wù)的客戶機(jī);n連接客戶機(jī)與服務(wù)器的網(wǎng)絡(luò)。Page 39例:電影圖片系統(tǒng)的體系結(jié)構(gòu)Page 40客戶-服務(wù)器模型的特點(diǎn)n 優(yōu)點(diǎn):n 分布式數(shù)據(jù)處理與共享;n 有效地利用網(wǎng)絡(luò),并且可以使用較便宜的硬件設(shè)備;n 可以容易地添加或更新服務(wù)器,不會(huì)影響系統(tǒng)其它部分。n 缺點(diǎn):n 沒(méi)有統(tǒng)一的共享數(shù)據(jù)模型,所以子系統(tǒng)可以以不同的方式組織數(shù)據(jù),不利于新增服務(wù)器的數(shù)據(jù)集成;n 每

23、個(gè)服務(wù)器需要自己負(fù)責(zé)數(shù)據(jù)管理;n 缺少對(duì)于服務(wù)器名稱和服務(wù)狀態(tài)的集中管理。Page 412.1.3 分層(抽象機(jī))體系結(jié)構(gòu)n 這種模型把系統(tǒng)組織成一系列的層次(抽象機(jī)),每一層提供一組服務(wù);n 這種模型支持增量式的開發(fā),不同層次的服務(wù)可以單獨(dú)交付;n 層與層之間以接口相聯(lián)系,一個(gè)接口發(fā)生改變,只有毗鄰的層會(huì)受到影響;Page 42例:版本管理系統(tǒng)Page 43經(jīng)典的三層結(jié)構(gòu)數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)銷售組件銷售組件支付組件支付組件表示層表示層業(yè)務(wù)邏輯層業(yè)務(wù)邏輯層數(shù)據(jù)訪問(wèn)層數(shù)據(jù)訪問(wèn)層數(shù)據(jù)庫(kù)訪問(wèn)組件數(shù)據(jù)庫(kù)訪問(wèn)組件Page 442.2 模塊化分解n 模塊化分解要將子系統(tǒng)分解成模塊;n 系統(tǒng)分解與模塊分解之間并沒(méi)有

24、嚴(yán)格的界限。n 子系統(tǒng)與模塊主要是功能粒度的區(qū)別:n子系統(tǒng)是功能相對(duì)獨(dú)立的一個(gè)系統(tǒng)(由模塊構(gòu)成),向其它的子系統(tǒng)提供服務(wù);n模塊是一個(gè)向系統(tǒng)內(nèi)其它組件提供服務(wù)的系統(tǒng)組件,功能粒度通常不足以作為一個(gè)系統(tǒng)考慮。Page 45模塊分解策略n 兩個(gè)重要分解策略:n面向?qū)ο蠹軜?gòu)模型,將系統(tǒng)分解成一組相互通信的對(duì)象,對(duì)象間以消息的方式進(jìn)行協(xié)作;n面向功能的數(shù)據(jù)流(流水線)架構(gòu)模型,將系統(tǒng)分解成一些功能模塊(過(guò)濾器),這些模塊接受輸入,進(jìn)行處理產(chǎn)生輸出。 n 可能的話,設(shè)計(jì)之初要盡量避免并發(fā)設(shè)計(jì),這樣可以在設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試等工作相對(duì)容易。Page 462.2.1 面向?qū)ο蠹軜?gòu)模型n 這種方法把系統(tǒng)分解成一些

25、具有良好接口的松散耦合的對(duì)象。n 面向?qū)ο蟮姆纸饪紤]如何識(shí)別對(duì)象類、對(duì)象屬性以及對(duì)象操作。n 實(shí)現(xiàn)時(shí),對(duì)象從類中產(chǎn)生,再使用某種控制模型來(lái)協(xié)調(diào)對(duì)象間的操作。Page 47例:發(fā)票處理系統(tǒng)Page 48對(duì)象方法的特點(diǎn)n 優(yōu)點(diǎn):n對(duì)象間是松耦合,所以對(duì)象可以在不影響其他對(duì)象的情況下進(jìn)行修改;n對(duì)象可以映射現(xiàn)實(shí)世界的實(shí)體,易理解,可復(fù)用;n面向?qū)ο髮?shí)現(xiàn)語(yǔ)言已經(jīng)廣泛應(yīng)用;n 問(wèn)題:n對(duì)象通過(guò)接口被使用,如果接口發(fā)生變更,可能對(duì)所有使用該對(duì)象的用戶都會(huì)產(chǎn)生影響;n對(duì)復(fù)雜實(shí)體的映射比較困難。Page 492.2.2 面向功能的數(shù)據(jù)流模型n 這種方式中,子系統(tǒng)被分解成功能函數(shù),函數(shù)處理輸入產(chǎn)生輸出;n 當(dāng)轉(zhuǎn)

26、換作為一個(gè)單獨(dú)的過(guò)程時(shí),這種模型有時(shí)被稱為管道與過(guò)濾器(Unix術(shù)語(yǔ));n 當(dāng)對(duì)數(shù)據(jù)的處理順序進(jìn)行時(shí),這種模型也被稱為批處理模型;n 這種模型在數(shù)據(jù)處理系統(tǒng)中應(yīng)用普遍,而對(duì)于交互式系統(tǒng)不太適合。Page 50例:發(fā)票處理系統(tǒng)Page 51數(shù)據(jù)流模型的特點(diǎn)n 優(yōu)點(diǎn):n支持函數(shù)轉(zhuǎn)換的復(fù)用;n很直觀,易溝通;n比較容易添加新的函數(shù)轉(zhuǎn)換;n實(shí)現(xiàn)容易。n 問(wèn)題:n把數(shù)據(jù)和操作分開考慮,則需要定義一種對(duì)所有數(shù)據(jù)都通用的標(biāo)準(zhǔn)格式,這樣做既增加了系統(tǒng)的負(fù)擔(dān)又可能無(wú)法集成那些不兼容的數(shù)據(jù)格式轉(zhuǎn)換;n基于事件的交互式系統(tǒng)很難用數(shù)據(jù)流模型來(lái)表示。Page 522.2.3 結(jié)構(gòu)化架構(gòu)設(shè)計(jì)方法n 從系統(tǒng)設(shè)計(jì)的角度出發(fā),

27、軟件設(shè)計(jì)方法可以分為三大類。第一類是根據(jù)系統(tǒng)的數(shù)據(jù)流進(jìn)行設(shè)計(jì),稱為面向數(shù)據(jù)流的面向數(shù)據(jù)流的設(shè)計(jì)設(shè)計(jì)或者過(guò)程驅(qū)動(dòng)的設(shè)計(jì),以結(jié)構(gòu)化設(shè)計(jì)方法結(jié)構(gòu)化設(shè)計(jì)方法為代表。第二類是根據(jù)系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行設(shè)計(jì),稱為面向數(shù)據(jù)結(jié)構(gòu)面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)的設(shè)計(jì)或者數(shù)據(jù)驅(qū)動(dòng)的設(shè)計(jì),以LCP(程序邏輯構(gòu)造)方法、Jackson系統(tǒng)開發(fā)方法和數(shù)據(jù)結(jié)構(gòu)化系統(tǒng)開發(fā)(DSSD)方法為代表。第三類設(shè)計(jì)方法即面向?qū)ο蟮脑O(shè)計(jì)面向?qū)ο蟮脑O(shè)計(jì)。Page 53n 結(jié)構(gòu)化設(shè)計(jì)方法是基于模塊化、自頂向下細(xì)化、結(jié)構(gòu)化程序設(shè)計(jì)等程序設(shè)計(jì)技術(shù)基礎(chǔ)上發(fā)展起來(lái)的。該方法實(shí)施的要點(diǎn)是: 建立數(shù)據(jù)流的類型。 指明流的邊界。 將數(shù)據(jù)流圖映射到系統(tǒng)結(jié)構(gòu)。 用“因子化

28、”方法定義控制的層次結(jié)構(gòu)。 用設(shè)計(jì)測(cè)量和一些啟發(fā)式規(guī)則對(duì)結(jié)構(gòu)進(jìn)行細(xì)化。n 數(shù)據(jù)流可以分成變換型數(shù)據(jù)流和事務(wù)性數(shù)據(jù)流,相應(yīng)得到的系統(tǒng)結(jié)構(gòu)也分為變換型系統(tǒng)結(jié)構(gòu)和事務(wù)型系統(tǒng)結(jié)構(gòu) 2.2.3 結(jié)構(gòu)化架構(gòu)設(shè)計(jì)方法Page 54在系統(tǒng)結(jié)構(gòu)圖(在系統(tǒng)結(jié)構(gòu)圖(SCSC)中的模塊中的模塊 n 在系統(tǒng)結(jié)構(gòu)圖中不能再分解的底層模塊為原子模原子模塊塊。如果一個(gè)軟件系統(tǒng)的全部實(shí)際加工(數(shù)據(jù)計(jì)算或處理)都由底層的原子模塊來(lái)完成,而其它所有非原子模塊僅僅執(zhí)行控制或協(xié)調(diào)功能,這樣的系統(tǒng)就是完全因子分解的系統(tǒng)。如果系統(tǒng)結(jié)構(gòu)圖是完全因子分解的,就是最好的系統(tǒng)。 Page 55n 一般地,在系統(tǒng)結(jié)構(gòu)圖中有一般地,在系統(tǒng)結(jié)構(gòu)圖中有4

29、 4種類型的模塊:種類型的模塊: v 傳入模塊傳入模塊 :從下屬模塊取得數(shù)據(jù),經(jīng)過(guò)某些處理,再將其傳送給上級(jí)模塊。v 傳出模塊傳出模塊 :從上級(jí)模塊獲得數(shù)據(jù),進(jìn)行某些處理,再將其傳送給下屬模塊。v 變換模塊變換模塊 :即加工模塊。它從上級(jí)模塊取得數(shù)據(jù),進(jìn)行特定的處理,轉(zhuǎn)換成其它形式,再傳送回上級(jí)模塊。大多數(shù)計(jì)算模塊(原子模塊)屬于這一類。v 協(xié)調(diào)模塊協(xié)調(diào)模塊 :對(duì)所有下屬模塊進(jìn)行協(xié)調(diào)和管理的模塊。 在系統(tǒng)的輸入輸出部分或數(shù)據(jù)加工部分可以找到這樣的模塊。在一個(gè)好的系統(tǒng)結(jié)構(gòu)圖中,協(xié)調(diào)模塊應(yīng)在較高層出現(xiàn)。 在實(shí)際系統(tǒng)中,有些模塊屬于上述某一類型,還有一些模在實(shí)際系統(tǒng)中,有些模塊屬于上述某一類型,還有

30、一些模塊是上述各種類型的組合。塊是上述各種類型的組合。 在系統(tǒng)結(jié)構(gòu)圖(在系統(tǒng)結(jié)構(gòu)圖(SCSC)中的模塊中的模塊 Page 56在系統(tǒng)結(jié)構(gòu)圖(在系統(tǒng)結(jié)構(gòu)圖(SCSC)中的模塊中的模塊 Page 572.2.3.12.2.3.1變換型數(shù)據(jù)流與變換變換型數(shù)據(jù)流與變換型系統(tǒng)結(jié)構(gòu)型系統(tǒng)結(jié)構(gòu)n 變換型數(shù)據(jù)處理問(wèn)題的工作過(guò)程大致分為三步,即取得數(shù)取得數(shù)據(jù),變換數(shù)據(jù)據(jù),變換數(shù)據(jù)和給出數(shù)據(jù)給出數(shù)據(jù)。n 變換數(shù)據(jù)是數(shù)據(jù)處理過(guò)程的核心工作,而取得數(shù)據(jù)只不過(guò)是為它做準(zhǔn)備,給出數(shù)據(jù)則是對(duì)變換后的數(shù)據(jù)進(jìn)行后處理工作。 n 典型的變換型數(shù)據(jù)流圖具有如下結(jié)構(gòu)特點(diǎn):信息外部表示內(nèi)部表示時(shí)間輸入流輸出流變換中心Page 58例子

31、:例子:1:輸入A2:A-B變換中心4:C-D6:輸出E3:B-C5:D-EABC(邏輯輸入)ED(邏輯輸出)加工1取得系統(tǒng)物理輸入數(shù)據(jù)A ,加工2和3對(duì)輸入數(shù)據(jù)進(jìn)行簡(jiǎn)單處理,得到系統(tǒng)邏輯輸入C。加工4作為系統(tǒng)核心處理構(gòu)件,進(jìn)行C-D數(shù)據(jù)變換,獲得系統(tǒng)邏輯輸出D。加工5對(duì)系統(tǒng)邏輯輸出數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換等,加工6進(jìn)行系統(tǒng)數(shù)據(jù)物理輸出。Page 59n 系統(tǒng)的結(jié)構(gòu)圖由輸入、中心變換和輸出等三部分組成。 系統(tǒng)結(jié)構(gòu)圖系統(tǒng)結(jié)構(gòu)圖Page 60系統(tǒng)結(jié)構(gòu)圖系統(tǒng)結(jié)構(gòu)圖n 設(shè)計(jì)時(shí),需要區(qū)分輸入流、輸出流和中心變換部分,即標(biāo)明流的邊標(biāo)明流的邊界界。(不同的設(shè)計(jì)人員可能選擇不同的流邊界,這將導(dǎo)致不同的系統(tǒng)結(jié)構(gòu)圖。)

32、n 首先設(shè)計(jì)主模塊首先設(shè)計(jì)主模塊,用程序名字為它命名,將它畫在與中心變換相對(duì)應(yīng)的位置上。做為系統(tǒng)的頂層,它調(diào)用下層模塊,完成系統(tǒng)所要做的各項(xiàng)工作。n 在系統(tǒng)結(jié)構(gòu)的第一層,為每一個(gè)邏輯輸入設(shè)計(jì)一個(gè)輸入模塊,它為主模塊提供數(shù)據(jù);為每一個(gè)邏輯輸出設(shè)計(jì)一個(gè)輸出模塊,它將主模塊提供的數(shù)據(jù)輸出;為中心變換設(shè)計(jì)一個(gè)變換模塊,它將邏輯輸入轉(zhuǎn)換成邏輯輸出。第一層模塊與主模塊之間傳送的數(shù)據(jù)應(yīng)與數(shù)據(jù)流圖相對(duì)應(yīng)。(后續(xù))Page 61n 然后自頂向下,逐層細(xì)化自頂向下,逐層細(xì)化,設(shè)計(jì)中、下層模塊。這一步工作是為每一個(gè)輸入模塊、輸出模塊、變換模塊設(shè)計(jì)它們的從屬模塊。n 輸入模塊要向調(diào)用它的上級(jí)模塊提供數(shù)據(jù),因而它必須有

33、兩個(gè)下屬模塊:一個(gè)是接收接收數(shù)據(jù);另一個(gè)是把這些數(shù)據(jù)變換變換成它的上級(jí)模塊所需的數(shù)據(jù)。n 輸出模塊是從調(diào)用它的上級(jí)模塊接收數(shù)據(jù)用以輸出,因而也應(yīng)當(dāng)有兩個(gè)下屬模塊:一個(gè)是將上級(jí)模塊提供的數(shù)據(jù)變換變換成輸出的形式;另一個(gè)是將它們輸出輸出。n 中心變換模塊的下層模塊沒(méi)有通用的設(shè)計(jì)方法,一般應(yīng)參照數(shù)據(jù)流圖的中心變換部分和功能分解的原則來(lái)考慮如何對(duì)中心變換模塊進(jìn)行分解。 系統(tǒng)結(jié)構(gòu)圖系統(tǒng)結(jié)構(gòu)圖Page 622.2.3.22.2.3.2事務(wù)型數(shù)據(jù)流與事務(wù)型系事務(wù)型數(shù)據(jù)流與事務(wù)型系統(tǒng)結(jié)構(gòu)統(tǒng)結(jié)構(gòu)n 事務(wù)型數(shù)據(jù)處理問(wèn)題的工作機(jī)理是接受一項(xiàng)事務(wù),根據(jù)事務(wù)處理的特點(diǎn)和性質(zhì),從若干個(gè)操作序列從若干個(gè)操作序列中選擇分派一

34、個(gè)中選擇分派一個(gè)適當(dāng)?shù)模缓蠼o出結(jié)果。n 我們把完成選擇分派選擇分派任務(wù)的部分叫做事務(wù)處理中事務(wù)處理中心心,或分派部件。Page 632.2.3.22.2.3.2事務(wù)型數(shù)據(jù)流與事務(wù)型系事務(wù)型數(shù)據(jù)流與事務(wù)型系統(tǒng)結(jié)構(gòu)統(tǒng)結(jié)構(gòu)Page 64事務(wù)型分析的映射方式事務(wù)型分析的映射方式DGFE接收通路C通路B通路A通路總控E調(diào)度DGA-CTLB-CTLC-CTLFPage 65n 事務(wù)流應(yīng)映射為包含一個(gè)輸入分支一個(gè)輸入分支和一個(gè)分類事務(wù)處一個(gè)分類事務(wù)處理分支理分支的程序結(jié)構(gòu)。n 輸入分支結(jié)構(gòu)的開發(fā)與變換流的方法類似。n 分類事務(wù)處理分支結(jié)構(gòu)包含一個(gè)調(diào)度模塊調(diào)度模塊,它調(diào)度和控制下屬的操作模塊。n 事務(wù)型系統(tǒng)

35、結(jié)構(gòu)圖在數(shù)據(jù)處理中經(jīng)常遇到,但是更多的是變換型與事務(wù)型系統(tǒng)結(jié)構(gòu)圖的結(jié)合。例如,事務(wù)型系統(tǒng)結(jié)構(gòu)中的某個(gè)分支本身又具有變換型的特點(diǎn)。 Page 662.3 控制模型n 控制模型考慮子系統(tǒng)之間的控制流,這是分解模型不考慮的問(wèn)題。n 對(duì)控制流建模有兩種一般性的方法:n集中式控制集中式控制n One sub-system has overall responsibility for control and starts and stops other sub-systems.n基于事件的控制基于事件的控制n Each sub-system can respond to externally genera

36、ted events from other sub-systems or the systems environment.Page 672.3.1 集中控制n 這種控制方式中有一個(gè)子系統(tǒng)被指定為系統(tǒng)控制器來(lái)負(fù)責(zé)管理其他子系統(tǒng)的執(zhí)行。n 這種控制模型按子系統(tǒng)順序執(zhí)行還是并行執(zhí)行分為兩類:n 調(diào)用調(diào)用- -返回模型返回模型nTop-down subroutine model where control starts at the top of a subroutine hierarchy and moves downwards. Applicable to sequential systems.n

37、 管理者模型管理者模型nApplicable to concurrent systems. One system component controls the stopping, starting and coordination of other system processes. Can be implemented in sequential systems as a case statement.Page 68調(diào)用-返回模型Page 69實(shí)時(shí)系統(tǒng)控制Page 702.3.2 事件驅(qū)動(dòng)系統(tǒng)n 事件驅(qū)動(dòng)的控制模型通過(guò)外部產(chǎn)生的事件來(lái)驅(qū)動(dòng)系統(tǒng)。n 有兩種主要的事件驅(qū)動(dòng)模型:n廣播模型廣播模型

38、n An event is broadcast to all sub-systems. Any sub-system which can handle the event may do so;n中斷驅(qū)動(dòng)模型中斷驅(qū)動(dòng)模型n Used in real-time systems where interrupts are detected by an interrupt handler and passed to some other component for processing.Page 71廣播模型n 廣播模型對(duì)于基于網(wǎng)絡(luò)的分布式系統(tǒng)很有效。n 這種模型中,子系統(tǒng)注冊(cè)其感興趣的特別事件,當(dāng)這些

39、事件發(fā)生時(shí),控制就被轉(zhuǎn)移到能處理這些事件的子系統(tǒng)。n 這種模型的控制策略不在事件和消息處理器的內(nèi)部。由子系統(tǒng)決定需要哪些事件,消息處理器只負(fù)責(zé)將事件發(fā)給它們。n 這種模型易于新系統(tǒng)的集成,缺點(diǎn)是子系統(tǒng)不能知道是否和什么時(shí)侯事件將會(huì)被處理。Page 72選擇性廣播Page 73中斷驅(qū)動(dòng)系統(tǒng)n 這種模型在需要對(duì)外部事件做出迅速處理的實(shí)時(shí)系統(tǒng)中非常有用。n 每種中斷類型對(duì)應(yīng)一種要處理的事件,分別與一個(gè)內(nèi)存地址相連,該內(nèi)存地址存放的是與中斷類型相對(duì)應(yīng)的事件處理器的地址。n 這種控制的優(yōu)點(diǎn)是能夠?qū)κ录龀龇浅Q杆俚姆磻?yīng),缺點(diǎn)在于它的編程較為復(fù)雜且不易驗(yàn)證有效性。Page 74中斷驅(qū)動(dòng)控制Page 753

40、 構(gòu)件級(jí)設(shè)計(jì)建模n 構(gòu)件級(jí)設(shè)計(jì)是要在接近代碼的抽象級(jí)上表示內(nèi)部數(shù)據(jù)結(jié)構(gòu)和每個(gè)構(gòu)件的處理細(xì)節(jié)。n 構(gòu)件級(jí)設(shè)計(jì)定義了數(shù)據(jù)結(jié)構(gòu)、算法、接口特征和分配給每一個(gè)軟件構(gòu)件的通信機(jī)制。n 構(gòu)件級(jí)設(shè)計(jì)是把高層設(shè)計(jì)模型轉(zhuǎn)化為可運(yùn)行程序的橋梁。Page 763.1 什么是構(gòu)件?n Unified Modeling Language Specification OMG01 把構(gòu)件定義為: n “ 系統(tǒng)中某一定型化的、可配置的和可替換的部件,該部件封裝了實(shí)現(xiàn)并暴露一系列的接口”。n OO 觀點(diǎn): 一個(gè)構(gòu)件包含一組協(xié)作類。n 傳統(tǒng)觀點(diǎn): 一個(gè)構(gòu)件就是程序的一個(gè)功能要素,程序由處理邏輯以及實(shí)現(xiàn)處理邏輯所需的內(nèi)部數(shù)據(jù)結(jié)構(gòu)以

41、及能夠保證構(gòu)建被調(diào)用和實(shí)現(xiàn)數(shù)據(jù)傳遞的接口構(gòu)成。傳統(tǒng)的構(gòu)件通常稱為模塊。Page 77面向?qū)ο髽?gòu)件P rin tJo bc o m p u te Jo bin itia te Jo bnum berO fPages num berO fSides paperType paperW eight paperSize paperC olor m agnification colorRequirem ents productionFeatures collationO ptions bindingO ptions coverStock bleed priority totalJobC ost W O n

42、um ber P ri n tJ o bcom putePageC ost() com putePaperC ost () com puteProdC ost () com puteTotalJobC ost() buildW orkO rder() checkPriority () passJobto Production() e l a b o ra te d d e s i g n c l a s s co m p u teJo bcom putePageC ost () com putePaperC ost () com puteProdC ost () com puteTotalJo

43、bC ost () in itiateJo bbuildW orkO rder() checkPriority () passJobto Production()d e sig n c o m p o n e n tn u m b e rO fP a g e s n u m b e rO fS id e s p a p e rT y p e m a g n ific a tio n p ro d u c tio n F e a tu re sP rin tJo bc o m p u te Jo b C o st() p a ssJo b to P rin te r() a n a ly sis

44、 c la ssPage 78傳統(tǒng)構(gòu)件Com putePageCostdesi gn com ponentaccessCostsDBgetJobDatael aborated m odul ePageCosti n: j ob si ze i n: col or =1, 2, 3, 4 i n: pageSi ze = A, B, C, B out: BPC out: SF i n: num ber Pages i n: num ber Docs i n: si des= 1, 2 i n: col or =1, 2, 3, 4 i n: page si ze = A, B, C, B out

45、: page cost j ob si ze (JS) = num ber Pages * num ber Docs;l ookup base page cost (BPC) - - accessCostsDB (JS, col or ); l ookup si ze f actor ( SF) - - accessCostDB (JS, col or , si ze) j ob com pl exi ty f actor (JCF) = 1 + (si des- 1)*si deCost + SFpagecost = BPC * JCF getJobData (num ber Pages,

46、num ber Docs, si des, col or , pageSi ze, pageCost)accessCostsDB ( j obSi ze, col or , pageSi ze, BPC, SF)com putePageCost ()Page 793.2 基本設(shè)計(jì)原則(OO)n 開關(guān)原則 (OCP): “一個(gè)模塊(構(gòu)件)應(yīng)該對(duì)外延具有開放性,對(duì)修改具有封閉性”。n Liskov Liskov 替換原則 (LSP): “子類可以替換它們的基類”。 n 依賴倒置原則 (DIP): “依賴于抽象,而非具體實(shí)現(xiàn)“。 n 接口分離原則 (ISP): “多個(gè)用戶專用接口比一個(gè)通用接口要好”

47、。n 發(fā)布復(fù)用等價(jià)性原則 (REP):“復(fù)用的粒度就是發(fā)布的粒度”。 n 共同封裝原則 (CCP):“一同變更的類應(yīng)該合在一起 ”。n 共同復(fù)用的原則 (CRP): “不能一起復(fù)用的類不能被分到一組”。 Page 80基本設(shè)計(jì)原則(OO)Page 813.3 構(gòu)件級(jí)設(shè)計(jì)指導(dǎo)方針n構(gòu)件n 對(duì)那些已經(jīng)確定為體系結(jié)構(gòu)模型一部分的構(gòu)件應(yīng)該建立命名約定,并對(duì)其做進(jìn)一步的細(xì)化和精化,使其成為構(gòu)件級(jí)模型的一部分。n接口n 接口提供關(guān)于通信和協(xié)作的重要信息 (也可以幫助我們實(shí)現(xiàn)OCP原則)。n依賴與繼承n 為了提高可讀性,依賴關(guān)系是自左向右,繼承關(guān)系是自下(派生類)向上(基類)。構(gòu)件間的依賴通過(guò)接口表示,而不

48、是構(gòu)件到構(gòu)件。Page 823.4 設(shè)計(jì)傳統(tǒng)構(gòu)件n 設(shè)計(jì)傳統(tǒng)構(gòu)件的工作主要集中在對(duì)模塊算法(程序邏輯)的設(shè)計(jì)上。n 算法設(shè)計(jì)是最接近編碼的設(shè)計(jì)活動(dòng)。n 算法設(shè)計(jì)的步驟:n復(fù)查組件的設(shè)計(jì)描述;n使用逐步求精法來(lái)開發(fā)算法;n使用結(jié)構(gòu)化程序設(shè)計(jì)方法來(lái)實(shí)現(xiàn)算法邏輯;n使用形式化方法來(lái)驗(yàn)證算法邏輯。Page 83逐步求精Page 84結(jié)構(gòu)化程序設(shè)計(jì)方法的特點(diǎn)n 使用限定好的一組邏輯構(gòu)造:n順序型n條件型 if-then-else, select-casen循環(huán)型 do-while, repeat untiln 能夠提高代碼的可讀性和可測(cè)試性;Page 85算法設(shè)計(jì)模型n 我們需要在一個(gè)能夠進(jìn)行質(zhì)量復(fù)查的

49、細(xì)節(jié)層次上描述算法。n 描述方法通常包括:n 圖形法 (e.g. flowchart, box diagram)n 判定表n 偽碼 (e.g., PDL)Page 86圖形化表示方法流程圖ax1x2b3x45cdefgxxadd a condition Z, if true, exit the programPage 87判定表C Co on nd di i t ti i o on ns sregul ar custom er si l ver custom er gol d custom er speci al di scountR Ru ul l e es sno di scount ap

50、pl y 8 percent di scount appl y 15 percent di scount appl y addi ti onal x percent di scountTFTTTTTF13564FTTT2R Ru ul l e es sPage 88程序設(shè)計(jì)語(yǔ)言 (PDL)if-then-elseif condition x then process a; else process b; endif PDLeasy to combine with source code machine readable, no need for graphics input graphics

51、can be generated from PDL enables declaration of data as well as procedure easier to maintainPage 894 面向?qū)ο蟮脑O(shè)計(jì)方法n 面向?qū)ο蟮脑O(shè)計(jì)過(guò)程同樣包括體系結(jié)構(gòu)設(shè)計(jì)、組件設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)和算法設(shè)計(jì)等活動(dòng)。n 面向?qū)ο蟮脑O(shè)計(jì)建模是在面向?qū)ο蠓治瞿P偷幕A(chǔ)上進(jìn)行進(jìn)一步的分析擴(kuò)展,搭建目標(biāo)系統(tǒng)的解決方案。Page 90面向?qū)ο蟮脑O(shè)計(jì)項(xiàng)目干系人Mental Modle需求模型(需求分析)架構(gòu)模型(架構(gòu)設(shè)計(jì))設(shè)計(jì)模型(構(gòu)件設(shè)計(jì))解決方案模型編碼NFRsFRsn架構(gòu)設(shè)計(jì)與構(gòu)件設(shè)計(jì)共同構(gòu)成系統(tǒng)的解決方案。Pa

52、ge 914.1 軟件架構(gòu)設(shè)計(jì)n 軟件架構(gòu)(Software Architecture)就是關(guān)于如何構(gòu)建軟件的一些最重要的設(shè)計(jì)決策,這些決策往往將圍繞將系統(tǒng)分成哪些部分、各部分之間如何交互展開的。Page 92架構(gòu)的類比-建造房屋Page 93為房屋建立一個(gè)模型- - 對(duì)早期成就的模仿對(duì)早期成就的模仿 - - 從失敗中學(xué)習(xí)從失敗中學(xué)習(xí) - - 對(duì)其他影響因素對(duì)其他影響因素的綜合的綜合 - - 試驗(yàn)試驗(yàn)任何時(shí)候要拋棄已經(jīng)任何時(shí)候要拋棄已經(jīng)具有的習(xí)慣時(shí),特別是大的項(xiàng)目中,您最好具有的習(xí)慣時(shí),特別是大的項(xiàng)目中,您最好要用多十倍的努力、要用多十倍的努力、多十倍的調(diào)查多十倍的調(diào)查. - LeMessui

53、erPage 94常見民用建筑的種類n 社區(qū)n住宅, 公寓, 花園, 教育, 醫(yī)院, 宗教設(shè)施n 商業(yè)n商店和零售店, 飯店, 賓館, 寫字樓, 銀行, 機(jī)場(chǎng)n 工業(yè)n工業(yè)建筑, 實(shí)驗(yàn)室, 農(nóng)場(chǎng)建筑n 休閑n運(yùn)動(dòng)場(chǎng)館, 戲劇院和電影院, 博物館Page 95民用建筑中的受力壓縮壓縮Load拉伸拉伸LoadPage 96多角度的視圖場(chǎng)地場(chǎng)地結(jié)構(gòu)結(jié)構(gòu)服務(wù)服務(wù)空間計(jì)劃空間計(jì)劃 材料材料Page 97軟件構(gòu)架中的受力性能性能容量容量功能性功能性可用性可用性恢復(fù)力恢復(fù)力失效安全失效安全容錯(cuò)能力容錯(cuò)能力Have an architecture that makes sense before you wri

54、te 3.5 millionlines of code. - Patrick Naugton技術(shù)因素技術(shù)因素Page 98軟件架構(gòu)視圖n 一個(gè)架構(gòu)視圖是對(duì)于從某一視角或某一點(diǎn)上看到的系統(tǒng)所做的簡(jiǎn)化描述,描述中涵蓋了系統(tǒng)的某一特定方面,而省略了與此方面無(wú)關(guān)的實(shí)體。 -Philippe KruchtenPage 99辦公室里的爭(zhēng)論n 辦公室里,關(guān)于什么是軟件架構(gòu),爭(zhēng)論正酣:n 程序員說(shuō),軟件架構(gòu)就是要決定需要編寫哪些類、使用那些現(xiàn)成的框架。n 程序經(jīng)理笑了,他說(shuō),軟件架構(gòu)就是模塊的劃分和接口的定義。n 系統(tǒng)分析員笑了,他說(shuō)軟件架構(gòu)就是為業(yè)務(wù)領(lǐng)域?qū)ο蟮年P(guān)系建模。n 配置管理員笑了,他說(shuō)軟件架構(gòu)就是開

55、發(fā)出來(lái)以及編譯后的軟件到底是個(gè)啥結(jié)構(gòu)。n 數(shù)據(jù)庫(kù)工程師笑了,他說(shuō)軟件架構(gòu)規(guī)定了持久化數(shù)據(jù)的結(jié)構(gòu)。n 部署工程師笑了,他說(shuō)軟件架構(gòu)規(guī)定了軟件部署到硬件的策略。n 用戶笑了,他說(shuō)軟件架構(gòu)規(guī)定了一個(gè)個(gè)功能子系統(tǒng)如何劃分。n 大家想了想說(shuō),這些架構(gòu)視圖好像我們都需要?。 軟件架構(gòu)師哭了Page 100軟件架構(gòu)為誰(shuí)設(shè)計(jì)客戶用戶開發(fā)人員管理人員軟件架構(gòu)師業(yè)務(wù)目標(biāo)約束條件功能和運(yùn)行期質(zhì)量開發(fā)期質(zhì)量管理的基礎(chǔ)Page 101架構(gòu)設(shè)計(jì)的5視圖法邏輯架構(gòu)開發(fā)架構(gòu)運(yùn)行架構(gòu)物理架構(gòu)數(shù)據(jù)架構(gòu)功能需求數(shù)據(jù)需求開發(fā)期質(zhì)量屬性安裝和部署需求運(yùn)行期質(zhì)量屬性Page 102例:設(shè)備調(diào)試系統(tǒng)案例設(shè)備調(diào)試員數(shù)據(jù)采集器查看設(shè)備狀態(tài)定

56、時(shí)器發(fā)送調(diào)試命令設(shè)備用例圖:Page 103邏輯架構(gòu)n 應(yīng)用層負(fù)責(zé)設(shè)備狀態(tài)的顯示,并提供模擬控制臺(tái)供用戶發(fā)送調(diào)試命令;n 通訊層負(fù)責(zé)在RS323協(xié)議之上實(shí)現(xiàn)一套專用的應(yīng)用協(xié)議;n 負(fù)責(zé)對(duì)調(diào)試設(shè)備的具體控制。應(yīng)用層(from Logical View)通訊層(from Logical View)設(shè)備控制層(from Logical View)Page 104物理架構(gòu)機(jī)調(diào)試機(jī)數(shù)采器設(shè)備專有連接專有連接桌面部分嵌入部分Page 105邏輯層到物理層的映射桌面部分嵌入部分應(yīng)用層通訊層設(shè)備控制層Page 106架構(gòu)設(shè)計(jì)流程1.為系統(tǒng)選擇架構(gòu)類型2.為架構(gòu)重要用例創(chuàng)造一個(gè)詳細(xì)的部署圖3.精煉架構(gòu)模型來(lái)滿足

57、NFRs4.創(chuàng)建和測(cè)試架構(gòu)基線5.在Tier和Layer圖中記錄技術(shù)選擇6.從最終的、詳細(xì)的部署圖中創(chuàng)建一個(gè)架構(gòu)模板Page 107為架構(gòu)中重要的用例創(chuàng)建詳細(xì)的部署圖為系統(tǒng)選擇一個(gè)架構(gòu)類型 精化架構(gòu)模型來(lái)滿足非功能性需求(NFRs) 創(chuàng)建架構(gòu)體系的基線在Tier 和 Layer圖中記錄技術(shù)選擇ArchCode SRSClient Server Client Server client domainBackendCOBRASwing DBMSPC Ultra60 SunFire TcpPage 108選擇架構(gòu)類型 選擇可使用的架構(gòu)依賴于很多因素,包含:系統(tǒng)需求的平臺(tái)約束用戶交互作用模式持續(xù)性機(jī)制

58、數(shù)據(jù)和事務(wù)的完整性Page 109選擇架構(gòu)類型n 數(shù)以百計(jì)的成功軟件架構(gòu)。他們之間有一些共同類型:獨(dú)立應(yīng)用(Standalone application)客戶服務(wù)器(層)應(yīng)用(Client/Server(2-tiers)applications) N層應(yīng)用(N-tiers applications) Web-centric(N層)應(yīng)用(Web-centricn-tiers applications) 企業(yè)N層應(yīng)用(Enterprise n-tiers applications)Page 110獨(dú)立應(yīng)用n 沒(méi)有外部數(shù)據(jù)源(所有的應(yīng)用數(shù)據(jù)都在文件服務(wù)中)n 沒(méi)有網(wǎng)絡(luò)通信(所有的應(yīng)用組件都在一臺(tái)機(jī)器

59、中)Page 111客戶服務(wù)器(層)應(yīng)用n 胖客戶端(業(yè)務(wù)邏輯在客戶端)n 數(shù)據(jù)存儲(chǔ)者管理數(shù)據(jù)的完整性Page 112N-層應(yīng)用n 瘦客戶端(業(yè)務(wù)邏輯在應(yīng)用服務(wù)端)n 應(yīng)用服務(wù)器管理數(shù)據(jù)完整性Page 113Web-Centric(N-層)應(yīng)用n Web瀏覽器成為瘦客戶端n Web服務(wù)器提供表示和業(yè)務(wù)邏輯Page 114企業(yè)(N-層)應(yīng)用類型Page 115企業(yè)(N-層)應(yīng)用類型n 兩個(gè)瘦客戶端 Web瀏覽器為Internet使用者提供 GUI瘦客戶端為Intranet使用者提供n Web應(yīng)用服務(wù)器提供表示邏輯n 應(yīng)用服務(wù)器提供業(yè)務(wù)邏輯Page 116酒店預(yù)定系統(tǒng)架構(gòu)Page 117創(chuàng)建詳細(xì)的

60、部署圖n 為架構(gòu)有影響的用例設(shè)計(jì)組件n 將設(shè)計(jì)組件置于架構(gòu)模型中n 將設(shè)計(jì)和基礎(chǔ)結(jié)構(gòu)組件合并后然后在畫出詳細(xì)的部署圖Page 118詳細(xì)的部署圖Page 119創(chuàng)建架構(gòu)模板n 簡(jiǎn)化詳細(xì)的部署圖讓其只剩下設(shè)計(jì)組件:邊界,服務(wù),實(shí)體。n 取代具有類型的設(shè)計(jì)組件名字(for example, ResvSvcImpl_Stub becomesServiceImpl_Stub)Page 120架構(gòu)模板實(shí)例Page 121應(yīng)用SunTone 架構(gòu)方法論n SunTone 架構(gòu)方法論推薦了下列架構(gòu)維度:用tier層次結(jié)構(gòu)分離應(yīng)用程序的邏輯關(guān)系。用layer層次結(jié)構(gòu)來(lái)組織組件及容器關(guān)系。系統(tǒng)質(zhì)量通過(guò)tier層

溫馨提示

  • 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)論