武漢理工大學(xué) 軟件設(shè)計與體系結(jié)構(gòu) 復(fù)習(xí)1-31 整理

最近要考試了秸妥,綜合了一下老師的PPT和其他同學(xué)整理的資料员萍。如果存在什么問題塘安,可以留評論

1.各種性能指標(biāo)的定義及如何到達(dá)各種性能指標(biāo)的方法

  • 吞吐量 (Throughput)
    定義:單位時間內(nèi)成功地傳送數(shù)據(jù)的數(shù)量
    實現(xiàn):Average 平均难捌,Peak 峰值
    許多系統(tǒng)具有低平均但高峰值吞吐量的需求

  • 響應(yīng)時間(Response Time)
    定義:應(yīng)用程序在處理請求時顯示延遲的時間
    實現(xiàn):Guaranteed time 最大響應(yīng)時間 Average time 平均響應(yīng)時間
    95%的響應(yīng)在4秒以內(nèi)贺拣,全部在10秒之內(nèi)

  • 最后期限(Deadlines)
    定義:有些事情必須在指定的時間之前完成
    實現(xiàn):最后期限通常與IT系統(tǒng)中的批處理作業(yè)相關(guān)。

2.常用的中間件有那幾種類型(四種)

中間件是一種獨立的系統(tǒng)軟件或服務(wù)程序标锄,分布式應(yīng)用軟件借助這種軟件在不同的技術(shù)之間共享資源顽铸。

  • Business Process Orchestrators 業(yè)務(wù)流程
    例子:BizTalk, TIBCO StaffWare, ActiveBPEL
  • Message Brokers 消息代理
    例子:BizTalk, WebSphere Message Broker, SonicMQ
  • Application Servers 應(yīng)用服務(wù)器
    例子:J2EE, CCM, .NET
  • Transport 傳輸
    例子:Message-Oriented Middleware, Distributed Objects Systems

面向消息的中間件,分布式對象系統(tǒng)

1)CORBA---公用對象請求代理(調(diào)度)程序體系結(jié)構(gòu)料皇,它在對象間建立客戶-服務(wù)器的關(guān)系谓松,這樣一個客戶可以很簡單地使用服務(wù)器對象的方法而不論服務(wù)器是在同一機(jī)器上還是通過一個網(wǎng)絡(luò)訪問。 (常見的對象請求代理架構(gòu))
2)Basic Message-oriented middleware---- MOM指的是利用高效可靠的消息傳遞機(jī)制進(jìn)行平臺無關(guān)的數(shù)據(jù)交流践剂,并基于數(shù)據(jù)通信來進(jìn)行分布式系統(tǒng)的集成鬼譬。通過提供消息傳遞和消息排隊模型,它可在分布環(huán)境下擴(kuò)展進(jìn)程間的通信舷手,并支持多通訊協(xié)議拧簸、語言、應(yīng)用程序男窟、硬件和軟件平臺盆赤。 (面向消息的中間件)
3)J2EE---- J2EE核心是一組技術(shù)規(guī)范與指南,其中所包含的各類組件歉眷、服務(wù)架構(gòu)及技術(shù)層次牺六,均有共同的標(biāo)準(zhǔn)及規(guī)格,讓各種依循J2EE架構(gòu)的不同平臺之間汗捡,存在良好的兼容性淑际,解決過去企業(yè)后端使用的信息產(chǎn)品彼此之間無法兼容,企業(yè)內(nèi)部或外部難以互通的問題扇住。
4)Message brokers----消息代理是一種在數(shù)據(jù)源與目的地之間移動數(shù)據(jù)使信息處理流暢的軟件技術(shù)春缕,數(shù)據(jù)源與目的地包括已有的應(yīng)用、文件艘蹋、數(shù)據(jù)庫锄贼、對象钱雷、硬拷貝輸出及Web客戶端等扳抽。 (消息代理)
5)Business process orchestrators----“業(yè)務(wù)過程的部分或整體在計算機(jī)應(yīng)用環(huán)境下的自動化”,它主要解決的是“使在多個參與者之間按照某種預(yù)定義的規(guī)則傳遞文檔诡渴、信息或任務(wù)的過程自動進(jìn)行浸策,從而實現(xiàn)某個預(yù)期的業(yè)務(wù)目標(biāo)冯键,或者促使此目標(biāo)的實現(xiàn)”。(業(yè)務(wù)過程代理)

3.有那些常見架構(gòu)風(fēng)格

1)管道和過濾器(Pipe and Filter)

  • 管道-過濾器模式的體系結(jié)構(gòu)是面向數(shù)據(jù)流的軟件體系結(jié)構(gòu)庸汗。
  • 它最典型的應(yīng)用是在編譯系統(tǒng)惫确。
  • 一個普通的編譯系統(tǒng)包括詞法分析器,語法分析器,語義分析與中間代碼生成器,優(yōu)化器,目標(biāo)代碼生成器等一系列對源程序進(jìn)行處理的過程。
  • 人們可以將編譯系統(tǒng)看作一系列過濾器的連接體,按照管道-過濾器的體系結(jié)構(gòu)進(jìn)行設(shè)計。
  • 此外,這種體系結(jié)構(gòu)在其它一些領(lǐng)域也有廣泛的應(yīng)用改化。因此它成為軟件工程和軟件開發(fā)中的一個突出的研究領(lǐng)域昧诱。
  • 舉例:unix的shell腳本、傳統(tǒng)編譯器

2)面向?qū)ο?/strong>(Object-Oriented)

  • 適用于主要問題是識別和保護(hù)信息的相關(guān)主體所袁。 數(shù)據(jù)代理和它們相關(guān)的操作封裝在一個抽象數(shù)據(jù)類型里面盏档。
  • 舉例:java,c#開發(fā)的系統(tǒng)

3)隱式調(diào)用(Implicit Invocation)

  • 隱式調(diào)用風(fēng)格的思想是構(gòu)件不直接調(diào)用一個過程燥爷,而是觸發(fā)或廣播一個或多個事件蜈亩。
  • 基于事件的系統(tǒng)中的其它構(gòu)件中的過程在一個或多個事件中注冊,當(dāng)一個事件被觸發(fā)前翎,系統(tǒng)自動調(diào)用在這個事件中注冊的所有過程稚配,這樣,一個事件的觸發(fā)就導(dǎo)致了另一模塊中的過程的調(diào)用港华。
  • 支持基于事件的隱式調(diào)用的應(yīng)用系統(tǒng)很多道川。例如,在編程環(huán)境中用于集成各種工具立宜,在數(shù)據(jù)庫管理系統(tǒng)中確保數(shù)據(jù)的一致性約束冒萄,在用戶界面系統(tǒng)中管理數(shù)據(jù),以及在編輯器中支持語法檢查橙数。例如在某系統(tǒng)中尊流,編輯器和變量監(jiān)視器可以登記相應(yīng)Debugger的斷點事件。當(dāng)Debugger在斷點處停下時灯帮,它聲明該事件崖技,由系統(tǒng)自動調(diào)用處理程序,如編輯程序可以卷屏到斷點钟哥,變量監(jiān)視器刷新變量數(shù)值迎献。而Debugger本身只聲明事件,并不關(guān)心哪些過程會啟動腻贰,也不關(guān)心這些過程做什么處理。
  • 舉例:數(shù)據(jù)庫管理系統(tǒng)中執(zhí)行完整性約束(觸發(fā)器)鸦采。
    在用戶界面中用于將數(shù)據(jù)表示與管理該數(shù)據(jù)的應(yīng)用程序分離蓝厌。

4)客戶-服務(wù)器風(fēng)格

  • 客戶服務(wù)器方式(簡稱C/S方式),為網(wǎng)絡(luò)邊緣的系統(tǒng)中運行的程序之間的一種通信方式萨驶。描述的是進(jìn)程之間服務(wù)和被服務(wù)的關(guān)系膛檀,客戶是服務(wù)請求方枫浙,服務(wù)器是服務(wù)提供方紧帕】唬客戶服務(wù)器模式是一種分布式系統(tǒng)體系結(jié)構(gòu)桅打。
  • 客戶(client)和服務(wù)器(server)都是指通信中所涉及的兩個應(yīng)用程序∮福客戶服務(wù)器方式描述的是進(jìn)程之間服務(wù)和被服務(wù)的關(guān)系挺尾。這里所說的客戶和服務(wù)器都指的是計算機(jī)進(jìn)程(軟件)。在C/S方式中站绪,請求一方為客戶遭铺,響應(yīng)請求一方稱為服務(wù)器,如果一個服務(wù)器在響應(yīng)客戶請求時不能單獨完成任務(wù)恢准,還可能向其他服務(wù)器發(fā)出請求掂僵,這時,發(fā)出請求的服務(wù)器就成為另一個服務(wù)器的客戶顷歌。從雙方建立聯(lián)系的方式來看锰蓬,主動啟動通信的應(yīng)用叫客戶,被動等待通信的應(yīng)用叫服務(wù)器眯漩。這里最主要的特征就是:客戶是服務(wù)請求方芹扭,服務(wù)器是服務(wù)提方。
  • 舉例:文件服務(wù)器赦抖、數(shù)據(jù)庫服務(wù)器舱卡、對象服務(wù)器

5)分層風(fēng)格

  • 把應(yīng)用的關(guān)注點分割為堆棧組(層)。
  • 適用于涉及到分布式的能夠分層的組織的類的服務(wù)队萤,每層給它的上一層提供服務(wù)轮锥,同時作為下一層的客戶端,只有仔細(xì)地從內(nèi)層選擇選擇過程要尔,才能用于他們臨近的外層舍杜。
  • 分層架構(gòu)的一個重要原則是:每層只能與位于其下方的層發(fā)生耦合。分層架構(gòu)也分為幾種:在嚴(yán)格分層架構(gòu)中赵辕,某層只能與直接位于其下方的層發(fā)生耦合既绩;而松散分層架構(gòu)則允許任意上方層與任意下方層發(fā)生耦合。由于用戶界面層和應(yīng)用服務(wù)通常需要與基礎(chǔ)設(shè)施打交道还惠,許多系統(tǒng)都是基于松散分層架構(gòu)的饲握。
  • 舉例:分層通信協(xié)議、操作系統(tǒng)

6)倉庫風(fēng)格

  • 適用于主要問題是建立蚕键、增加和維護(hù)復(fù)雜信息的主體部分救欧,信息一定要能夠用很多種方式操作。經(jīng)常需要長期的存在锣光。
  • 優(yōu)點:有效存儲大量數(shù)據(jù)笆怠、共享式模式模型、集中式管理
  • 缺點:必須先達(dá)成一個數(shù)據(jù)模型嫉晶、很難分配數(shù)據(jù)骑疆、數(shù)據(jù)升級很昂貴
  • 舉例:信息系統(tǒng)、編程環(huán)境替废、圖形編輯器箍铭、人工智能知識基礎(chǔ)、逆向工程系統(tǒng)

7)解釋程序風(fēng)格

  • 解釋程序是一種語言處理程序椎镣,在詞法诈火、語法和語義分析方面與編譯程序的工作原理基本相同,但在運行用戶程序時状答,它直接執(zhí)行源程序或源程序的內(nèi)部形式(中間代碼)冷守。因此,解釋程序并不產(chǎn)生目標(biāo)程序惊科,這是它和編譯程序的主要區(qū)別拍摇。
  • 適用于執(zhí)行 解決方案的最合適的語言 或是 機(jī)器不是直接可用的。
  • 舉例:編程語言編譯器馆截、基于規(guī)則的系統(tǒng)充活、腳本語言

8)過程控制風(fēng)格

  • 適用于目的是維護(hù)特殊過程的輸出屬性在給定參考值的情形下
  • 舉例:實時系統(tǒng)軟件用來控制(核電站、汽車巡航控制)

補(bǔ)充內(nèi)容:
分布式系統(tǒng)(distributed system)是建立在網(wǎng)絡(luò)之上的軟件系統(tǒng)蜡娶。分布式系統(tǒng)是由一組通過網(wǎng)絡(luò)進(jìn)行通信混卵、為了完成共同的任務(wù)而協(xié)調(diào)工作的計算機(jī)節(jié)點組成的系統(tǒng)。分布式系統(tǒng)的出現(xiàn)是為了用廉價的窖张、普通的機(jī)器完成單個計算機(jī)無法完成的計算幕随、存儲任務(wù)。其目的是利用更多的機(jī)器宿接,處理更多的數(shù)據(jù)赘淮。

4.架構(gòu)師需要的核心技能是什么
1) 團(tuán)隊之間的交流 Liaison with stakeholders
2) 技術(shù)知識 Technology knowledge
3) 軟件工程學(xué) Software engineering
4) 風(fēng)險管理 Risk managements

(來源 ppt 18頁)

5.什么是軟件架構(gòu)(好幾種定義,但是主要點是結(jié)構(gòu)睦霎,元素拥知,關(guān)系,接口)
(百度百科)

  • 軟件架構(gòu)(software architecture)是一系列相關(guān)的抽象模式碎赢,用于指導(dǎo)大型軟件系統(tǒng)各個方面的設(shè)計低剔。
  • 軟件架構(gòu)是一個系統(tǒng)的草圖。

(PPT ch1-ch8 slide 3- 7)

  • It’s about software design
    軟件架構(gòu)是軟件設(shè)計過程的一部分肮塞。
    All architecture is software design, but not all design is software architecture
    所有的架構(gòu)都是軟件設(shè)計襟齿,但不是所有的設(shè)計都是軟件架構(gòu)
    Part of the design process
    設(shè)計過程的一部分

  • Simply, architecture focuses on ‘issues that will be difficult/impossible to change once the system is built’
    簡單地說,架構(gòu)關(guān)注的是“一旦構(gòu)建系統(tǒng)枕赵,就很難/不可能更改的問題”
    Quality attributes like security, performance
    質(zhì)量屬性猜欺,如安全性、性能
    Non-functional requirements like cost, deployment hardware
    非功能性需求拷窜,如成本开皿、部署硬件

-“Architecture is the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution.”
體系結(jié)構(gòu)是一個系統(tǒng)的基本組織涧黄,體現(xiàn)在它的組件、它們彼此之間的關(guān)系和環(huán)境中赋荆,以及控制它的設(shè)計和演進(jìn)的原則中笋妥。

“The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.”
程序或計算系統(tǒng)的軟件架構(gòu)是 系統(tǒng)的一個或多個結(jié)構(gòu),
它包括 軟件元素窄潭、這些元素的外部可見屬性 和 它們之間的關(guān)系春宣。

6.軟件架構(gòu)主要關(guān)注那些問題
(來源PPT)
‘issues that will be difficult/impossible to change once the system is built’
“一旦系統(tǒng)建立后就很難或是不可能改變的問題”:
Quality attributes like security, performance
質(zhì)量屬性,例如 安全性 , 性能
Non-functional requirements like cost, deployment hardware
非功能性需求,像開銷, 硬件配置

7.現(xiàn)代復(fù)雜軟件設(shè)計的主要問題是那些

可能的答案 L1-8 Slide3
Major problems are architecture design, technology selection, application and business integration
主要問題是 架構(gòu)設(shè)計 、技術(shù)選擇嫉你、 應(yīng)用 和 業(yè)務(wù)集成

8.什么是架構(gòu)風(fēng)格
(百度百科來源)

  • 軟件體系結(jié)構(gòu)風(fēng)格是描述某一特定 應(yīng)用領(lǐng)域 中 系統(tǒng)組織方式 的 慣用模式月帝。
  • 體系結(jié)構(gòu)風(fēng)格定義一個系統(tǒng)家族,即一個體系結(jié)構(gòu)定義一個詞匯表和一組約束幽污。詞匯表中包含一些構(gòu)件和連接件類型嚷辅,而這組約束指出系統(tǒng)是如何將這些構(gòu)件和連接件組合起來的。

9.什么是架構(gòu)視圖
(來源doc)
架構(gòu)視圖:

  • 對于從 某一視角 或 某一點 上看到的系統(tǒng)所做的 簡化描述 距误,
  • 描述中涵蓋了系統(tǒng)的 某一特定方面 潦蝇,而省略了此方面無關(guān)的 實體 。

10.非功能需求包括哪些(三種)

NFRs(Non-functional requirements):非功能性需求:

  • Technical constraints 技術(shù)約束
  • Business constraints 業(yè)務(wù)約束
  • Quality attributes 質(zhì)量屬性
    是對整個系統(tǒng)性能等方面的 評估和驗證
    (來源PPT 12)

11.軟件架構(gòu)過程(三個迭代步驟)

1.png

1)確定架構(gòu)需求:架構(gòu)上重要的需求(結(jié)構(gòu)用例)---基本的質(zhì)量和系統(tǒng)的非功能性需求
2)架構(gòu)設(shè)計:迭代的設(shè)計步驟---風(fēng)險識別是一個重要的輸出設(shè)計
3)結(jié)構(gòu)驗證

  • 驗證階段---驗證階段的目的是增加信心的設(shè)計團(tuán)隊的架構(gòu)是適合的目的深寥;
  • 驗證必須實現(xiàn)在項目時間和預(yù)算的約束攘乒,關(guān)鍵是要盡可能嚴(yán)格的和有效的;
  • 驗證一個架構(gòu)設(shè)計提出了嚴(yán)峻的挑戰(zhàn)惋鹅,因為這是一個設(shè)計不能執(zhí)行或測試则酝,包括新和COTS組件集成;
    (來源 doc ppt202)

12.軟件質(zhì)量屬性主要包括哪些(五種)

  • Reliability 可靠性
    可靠性參數(shù):平均故障間隔時間(MTBF)闰集,顧名思義沽讹,是硬件模塊故障之間的平均時間。它是制造商在硬件模塊發(fā)生故障之前估計的平均時間武鲁。
    FITS是表示MTBF的更直觀的方式爽雄。FITS只是十億小時(即1000,000,000小時)內(nèi)模塊的故障總數(shù)。
  • Availability 可用性
    衡量系統(tǒng)的可用性可以用公式 MTBF/(MTBF+MTTR)沐鼠,其中MTBF為系統(tǒng)出錯的時間間隔也就是平均正常工作時間挚瘟,而MTTR表示系統(tǒng)修復(fù)錯誤用的時間。當(dāng)然上面的公式計算出的結(jié)果越大表示系統(tǒng)的可用性越好饲梭。
  • Portability 可移植性:跨平臺
  • Scalability 可伸縮性:擴(kuò)展的彈性
  • Performance (!) 性能:快

ppt1-8 116頁

13.軟件可用性取決于(三種時間)

  • Time to detect failure 故障 檢測 時間
  • Time to correct failure 糾正 失敗時間
  • Time to restart application 重新啟動 應(yīng)用程序時間
    (PPT 146頁)

14.伸縮性涉及那些方面(四種)

  • 伸縮性定義:(來源 百度百科) 可伸縮性/可擴(kuò)展性(Scalable/scalability)

  • 可伸縮性(可擴(kuò)展性)是一種對軟件系統(tǒng)計算處理能力的設(shè)計指標(biāo)乘盖,高可伸縮性代表一種彈性,在系統(tǒng)擴(kuò)展成長過程中憔涉,軟件能夠保證旺盛的生命力订框,通過很少的改動甚至只是硬件設(shè)備的添置,就能實現(xiàn)整個系統(tǒng)處理能力的線性增長兜叨,實現(xiàn)高吞吐量和低延遲高性能穿扳。

  • 可伸縮性和純粹性能調(diào)優(yōu)有本質(zhì)區(qū)別衩侥, 可伸縮性是高性能、低成本和可維護(hù)性等諸多因素的綜合考量和平衡矛物,可伸縮性講究平滑線性的性能提升茫死,更側(cè)重于系統(tǒng)的水平伸縮,通過廉價的服務(wù)器實現(xiàn)分布式計算泽谨;而普通性能優(yōu)化只是單臺機(jī)器的性能指標(biāo)優(yōu)化璧榄。他們共同點都是根據(jù)應(yīng)用系統(tǒng)特點在吞吐量和延遲之間進(jìn)行一個側(cè)重選擇特漩,當(dāng)然水平伸縮分區(qū)后會帶來CAP定理約束吧雹。

  • 縱向的可伸縮性——在同一個邏輯單元內(nèi)增加資源來提高處理能力。這樣的例子包括在現(xiàn)有服務(wù)器上增加CPU涂身,或者在現(xiàn)有的RAID/SAN存儲中增加硬盤來提高存儲量雄卷。

  • 橫向的可伸縮性——增加更多邏輯單元的資源,并令它們像是一個單元一樣工作蛤售。大多數(shù)集群方案丁鹉、分布式文件系統(tǒng)、負(fù)載平衡都是在幫助你提高橫向的可伸縮性

1)Request load 請求負(fù)載
當(dāng)同步請求負(fù)載增長時悴能,100個tps應(yīng)用程序的行為如何?如揣钦。
每秒100到1000個請求?
理想的解決方案,無需額外的硬件容量:
隨著負(fù)載的增加漠酿,吞吐量保持不變(即100 tps)冯凹,每個請求的響應(yīng)時間只線性增加(即10秒)。

2)Connections 連接
如果與應(yīng)用程序同時連接的數(shù)量增加炒嘲,會發(fā)生什么情況呢
如果每個連接都消耗資源?
超過連接的最大數(shù)量?
ISP的例子:
每個用戶連接生成一個新進(jìn)程
每個服務(wù)器上的虛擬內(nèi)存超過2000個用戶
需要支持100k用戶

3)Data size 數(shù)據(jù)大小
當(dāng)應(yīng)用程序處理的數(shù)據(jù)增大時宇姚,它的行為如何?
聊天應(yīng)用程序平均消息大小翻倍?
數(shù)據(jù)庫表大小從100萬行增長到2000萬行?
圖像分析算法處理100MB而不是1MB的圖像?
應(yīng)用程序/算法能否擴(kuò)展以處理增加的數(shù)據(jù)需求?

4)Deployments 部署
安裝/部署應(yīng)用程序的工作量如何隨著安裝基數(shù)的增長而增加?
安裝新用戶?
安裝新的服務(wù)器?
解決方案通常圍繞自動下載/安裝
例如從互聯(lián)網(wǎng)下載應(yīng)用程式
ppt1-8 127頁

15.吞吐率指標(biāo)
PPT 120
Measure of the amount of work an application must perform in unit time
度量應(yīng)用程序在單位時間內(nèi)必須執(zhí)行的工作量

  • Transactions per second 每秒事務(wù)數(shù)
  • Messages per minute 每分鐘的消息

PPT 121
Throughput of a message queuing system :
消息隊列系統(tǒng)的吞吐量

  • Messages per second (msp) 每秒的信息
  • Maximum sustainable throughput (MST) 最大可持續(xù)吞吐量

16.架構(gòu)元素的通信包括哪些

(PPT ch1-ch8 slide210、212夫凸、218)

  • Synchronous communications 同步通信
  • Asynchronous communications 異步通信
  • Flexible communications 靈活通信

(PPT ch1-ch8 10)
Architecture Specifies Component Communication 體系結(jié)構(gòu)指定組件通信
Communication involves: 架構(gòu)元素的通信:

Data passing mechanisms 數(shù)據(jù)傳遞機(jī)制:

  • Function call 函數(shù)調(diào)用
  • Remote method invocation 遠(yuǎn)程方法調(diào)用
  • Asynchronous message 異步消息

Control flow 控制流

  • Flow of messages between components to achieve required functionality
    組件之間的消息流來實現(xiàn)需要的功能
  • Sequential 順序
  • Concurrent/parallel 并發(fā)/并行
  • Synchronization 同步

17.各種架構(gòu)風(fēng)格的組件和連接器是什么

1)管道和過濾器架構(gòu)風(fēng)格PPT 40頁
組件:稱為過濾器浑劳,應(yīng)用于對局部的輸入流的轉(zhuǎn)換,經(jīng)常增長的計算夭拌,因此魔熏,在輸入結(jié)束前輸出就開始了。
連接器:稱為管道鸽扁,給流提供管道道逗,把一個過濾器的輸出傳輸?shù)搅硪粋€輸入。

2)面向?qū)ο箫L(fēng)格 PPT49頁
組件:對象
連接器:功能和過程調(diào)用(方法)

3)隱式調(diào)用風(fēng)格
組件:模塊(献烦?滓窍??)
連接器:廣播系統(tǒng)
隱式調(diào)用系統(tǒng)中的連接器除了
事件通知 過程調(diào)用 之間的綁定外巩那,
通常還包括 傳統(tǒng)的過程調(diào)用

4)客戶-服務(wù)器風(fēng)格 PPT64頁
組件:服務(wù)器:標(biāo)準(zhǔn)獨立的組件提供特別的服務(wù)吏夯,如打印此蜈,數(shù)據(jù)管理等≡肷客戶端:組件調(diào)用服務(wù)器提供的服務(wù)裆赵。
連接器:網(wǎng)絡(luò),允許客戶端訪問遠(yuǎn)程服務(wù)器跺嗽。

5)分層風(fēng)格 PPT72頁
組件:典型的過程的集合战授。
連接器:典型的在有限的可見性下的過程調(diào)用

6)倉庫風(fēng)格 PPT80頁
組件
表示系統(tǒng)正確狀態(tài)的中心數(shù)據(jù)結(jié)構(gòu)。
A central data structure representing the correct state of the system.
操作中心數(shù)據(jù)結(jié)構(gòu)的獨立組件的集合桨嫁。
A collection of independent components that operate on the central data structure.
連接器:典型地過程調(diào)用或是直接內(nèi)存訪問

7)解釋程序風(fēng)格 PPT87頁
組件
包括執(zhí)行引擎的一個狀態(tài)機(jī)和三個內(nèi)存:
include one state machine for the execution engine and three memories:
執(zhí)行引擎的當(dāng)前狀態(tài)
current state of the execution engine
程序解釋
program being interpreted
正在解釋的程序的當(dāng)前狀態(tài)
current state of the program being interpreted
連接器
procedure calls 過程調(diào)用
direct memory accesses. 直接內(nèi)存訪問

8)過程控制風(fēng)格 PPT94頁
組件:過程定義:包括操作一些過程變量的機(jī)制植兰,控制算法:決定如何去操作過程變量
連接器: 數(shù)據(jù)流關(guān)系 data flow relations

18.軟件性能指標(biāo)主要有哪幾種(三種)

吞吐量、響應(yīng)時間璃吧、最后期限 見第一題

19.響應(yīng)時間的度量(兩種)

Guaranteed time 最大響應(yīng)時間
Average time 平均響應(yīng)時間

PPT 122

20.安全性質(zhì)量指標(biāo)主要有哪幾種(五種)

  • Authentication: Applications can verify the identity of their users and other applications with which they communicate.
    身份驗證:應(yīng)用程序可以驗證他們的用戶的身份和他們通信的其他應(yīng)用程序楣导。
  • Authorization: Authenticated users and applications have defined access rights to the resources of the system.
    授權(quán):身份驗證的用戶和應(yīng)用程序定義了系統(tǒng)資源的訪問權(quán)限。
  • Encryption: The messages sent to/from the application are encrypted.
    加密:從應(yīng)用程序發(fā)送到/從應(yīng)用程序的消息是加密的畜挨。
  • Integrity: This ensures the contents of a message are not altered in transit.
    完整性:確保在傳輸過程中不會改變消息的內(nèi)容筒繁。
  • Non-repudiation: The sender of a message has proof of delivery and the receiver is assured of the sender’s identity. This means neither can subsequently refute their participation in the message exchange.
    不可否認(rèn)性:消息的發(fā)送方有交付證明,接收方可以確定發(fā)送方的身份巴元。這意味著毡咏,雙方隨后都不能否認(rèn)他們參與了信息交換。

PPT 142頁

21.實現(xiàn)高可用性的策略(三種)

  • Eliminate single points of failure 消除單點故障
    是指一個系統(tǒng)的這樣一個部件逮刨,如果它失效或停止運轉(zhuǎn)呕缭,將會導(dǎo)致整個系統(tǒng)不能工作。我們當(dāng)然不希望看到禀忆,在一個要求高度可用性的系統(tǒng)中存在這樣的部分臊旭,但這種情況在網(wǎng)絡(luò),軟件應(yīng)用以及其它工業(yè)系統(tǒng)中都存在箩退。
  • Replication and failover 復(fù)制和故障轉(zhuǎn)移
    failover n. 失效備援(為系統(tǒng)備援能力的一種离熏,當(dāng)系統(tǒng)中其中一項設(shè)備失效而無法運作時,另一項設(shè)備即可自動接手原失效系統(tǒng)所執(zhí)行的工作)
  • Automatic detection and restart 自動檢測和重新啟動

PPT 146

22.信息隱藏原理

PPT lecture 9 88頁

  • 信息隱藏指在設(shè)計和確定模塊時戴涝,使得一個模塊內(nèi)包含的特定信息(過程或數(shù)據(jù))滋戳,對于不需要這些信息的其他模塊來說,是不可訪問的啥刻。
  • 信息隱藏(封裝)主要是為了提高軟件的可重用性和可維護(hù)性奸鸯。信息隱藏造成了系統(tǒng)各個部分耦合性低。系統(tǒng)是由各個部分構(gòu)成的可帽,如果這些部分耦合性低的話娄涩,那么這個系統(tǒng)開發(fā)、維護(hù)等就較容易。
  • 假設(shè)A打算秘密傳遞一些信息給B蓄拣,A需要從一個隨機(jī)消息源中隨機(jī)選取一個無關(guān)緊要的消息C扬虚,當(dāng)這個消息公開傳遞時,不會引起人們的懷疑球恤,稱這個消息為載體對象(Cover Message)C辜昵;把秘密信息(Secret Message)M隱藏到載體對象C中,此時咽斧,載體對象就變成了偽裝對象C1.載體對象C是正常的堪置,不會引起人們的懷疑,偽裝對象C1與載體對象C無論從感官(比如感受圖像张惹、視頻的視覺和感受聲音舀锨、音頻的聽覺)上,還是從計算機(jī)的分析上诵叁,都不可能把他們區(qū)分開來雁竞,而且對偽裝對象C1的正常處理钦椭,不應(yīng)破壞隱藏的秘密信息拧额。這樣就實現(xiàn)了信息的隱藏傳輸。秘密信息的嵌入過程可能需要密鑰彪腔,也可能不需要密鑰侥锦,為了區(qū)別于加密的密鑰,信息隱藏的密鑰稱為偽裝密鑰k德挣。

信息隱藏涉及兩個算法:信息嵌入算法和信息提取算法恭垦,如下圖:
信息隱藏的原理框圖


1.png

23.關(guān)注點分離
關(guān)注點分離(Separation of concerns,SOC):
Presentation, business and data handling logic are clearly partitioned in different tiers.
表示格嗅、業(yè)務(wù)和數(shù)據(jù)處理邏輯清楚地劃分在不同的層中番挺。
ppt 210

SoC是將軟件分解成不同的特性的過程,這些特性封裝了其他類可以使用的獨特行為和數(shù)據(jù)屯掖。通常玄柏,關(guān)注點表示類的特性或行為。將程序分離成離散職責(zé)的行為顯著地提高了代碼重用贴铜、維護(hù)和可測試性粪摘。
PPT Review of Java Slide 36

關(guān)注點分離(Separation of concerns,SOC)
1)大體思路是,先將復(fù)雜問題做合理的分解,再分別仔細(xì)研究問題的不同側(cè)面(關(guān)注點)绍坝,最后綜合各方面的結(jié)果徘意,合成整體的解決方案。
2)是對只與“特定概念轩褐、目標(biāo)”(關(guān)注點)相關(guān)聯(lián)的軟件組成部分進(jìn)行“標(biāo)識椎咧、封裝和操縱”的能力,即標(biāo)識把介、封裝和操縱關(guān)注點的能力勤讽。是處理復(fù)雜性的一個原則竹宋。由于關(guān)注點混雜在一起會導(dǎo)致復(fù)雜性大大增加,所以能夠把不同的關(guān)注點分離開來地技,分別處理就是處理復(fù)雜性的一個原則蜈七,一種方法。

關(guān)注點分離是面向方面的[程序設(shè)計]的核心概念莫矗。分離關(guān)注點使得解決特定領(lǐng)域問題的代碼從業(yè)務(wù)邏輯中獨立出來飒硅,業(yè)務(wù)邏輯的代碼中不再含有針對特定領(lǐng)域問題代碼的調(diào)用(將針對特定領(lǐng)域問題代碼抽象化成較少的程式碼,例如將代碼封裝成function或是class)作谚,業(yè)務(wù)邏輯同特定領(lǐng)域問題的關(guān)系通過側(cè)面來封裝三娩、維護(hù),這樣原本分散在在整個應(yīng)用程序中的變動就可以很好的管理起來妹懒。
百度百科

24.什么是職責(zé)驅(qū)動的設(shè)計

Responsibility-Driven Design (RDD)

  • Detailed object design is usually done from the point of view of the metaphor of:
    詳細(xì)的對象設(shè)計通常是從隱喻的角度進(jìn)行的:
    1.Objects have responsibilities
    對象有責(zé)任
    2.Objects collaborate
    合作對象

  • Responsibilities are an abstraction.
    責(zé)任是抽象的雀监。
    1.The responsibility for persistence.
    堅持的責(zé)任。
    Large-grained responsibility.
    大粒度的責(zé)任眨唬。
    2.The responsibility for the sales tax calculation.
    負(fù)責(zé)營業(yè)稅的計算会前。
    More fine-grained responsibility.
    更細(xì)粒度的責(zé)任。
    ppt

  • 職責(zé)驅(qū)動設(shè)計即如何給相互協(xié)作的對象分配職責(zé)匾竿,主要關(guān)注的是職責(zé)瓦宜、角色以及協(xié)作。

  • 職業(yè)驅(qū)動設(shè)計就是職責(zé)必須匹配岭妖。
    什么是職責(zé)呢临庇?簡單地說,一個類或構(gòu)件的職責(zé)包括兩個方面:
    一個是知道的事昵慌,對于一個類來說就是他的屬性假夺;
    一個是能做的事,對于一個類來說就是他的方法斋攀。
    百度百科

25.GRASP模式的具體內(nèi)容已卷,各種模式的定義,解決的什么問題

1)創(chuàng)造者 Creator
分配給類B職責(zé)來創(chuàng)造類A的一個實例如果:
(1) B聚合A的對象
(2) B包含A的對象
(3) B記錄A的對象的實例
(4) B緊密地使用A的對象
(5) B被創(chuàng)建時有初始化的數(shù)據(jù)傳遞給

解決方案:將創(chuàng)建一個類A的實例的職責(zé)指派給類B的實例蜻韭,
如果下列條件滿足的話:
a) B聚合了A對象
b) B包含了A對象
c) B紀(jì)錄了A對象的實例
d) B要經(jīng)常使用A對象
e) 當(dāng)A的實例被創(chuàng)建時悼尾,B具有要傳遞給A的初始化數(shù)據(jù)(也就是說B是創(chuàng)建A的實例這項任務(wù)的信息專家)
f) B是A對象的創(chuàng)建者
如果以上條件中不止一條成立的話,那么最好讓B聚集或包含A

通俗點就是:我要用你所以我來創(chuàng)建你肖方,請不要讓別人創(chuàng)建你
這個模式是支持低耦合度原則的一個體現(xiàn)

2)信息專家 Information Expert
在設(shè)計對象(類)時闺魏,如果某個類能夠在某方面具有完整信息,足以實現(xiàn)某責(zé)任俯画,就將這個責(zé)任分配給這個類析桥,
解決方案:將職責(zé)分配給具有履行職責(zé)所需要的信息的類
通俗點就是:該干嘛干嘛去,別管別人的閑事或者我的職責(zé)就是搞這個,別的事不管泡仗。
舉個簡單的例子埋虹,如果有一個類是專門處理字符串相關(guān)的類,那么這個類只能有字符串處理相關(guān)的方法娩怎,而不要將日期處理的方法加進(jìn)來搔课。也就是提高軟件高內(nèi)聚一種原則。

3)控制器 Controller
控制器是在用戶接口層上的第一個對象截亦,負(fù)責(zé)接收和處理系統(tǒng)的操作信息爬泥。
解決方案:將處理系統(tǒng)事件消息的職責(zé)分派給代表下列事物的類:
a) 代表整個“系統(tǒng)”的類(虛包控制者)
b) 代表整個企業(yè)或組織的類(虛包控制者)
c) 代表真實世界中參與職責(zé)(角色控制者)的主動對象類(例,一個人的角色)
d) 代表一個用況中所有事件的人工處理者類崩瓤,通常用“<用例名>處理者”的方式命名(用例控制者)
這是一個控制者角色職責(zé)分配的原則袍啡,就是哪些控制應(yīng)該分派給哪個角色。

4)低耦合 Low Coupling
測量存在于模塊之間的依賴程度
解決方案:在分配一個職責(zé)時要使保持低耦合度却桶。
耦合度(coupling)是一個類與其它類關(guān)聯(lián)境输、知道其他類的信息或者依賴其他類的強(qiáng)弱程度的度量。一個具有低(弱)耦合度的類不依賴于太多的其他類颖系。

5)高內(nèi)聚 High Cohesion
測量一個共享的模塊內(nèi)元素的相關(guān)性 嗅剖;一個單獨模塊執(zhí)行任務(wù)的程度是功能相關(guān)的
解決方案:分配一個職責(zé)的時候要保持類的高聚合度
聚合度或內(nèi)聚度(cohesion)是一個類中的各個職責(zé)之間相關(guān)程度和集中程度的度量。一個具有高度相關(guān)職責(zé)的類并且這個類所能完成的工作量不是特別巨大集晚,那么他就是具有高聚合度窗悯。

6)多態(tài) Polymorphism
當(dāng)相關(guān)的供選方案或行為隨著類型的變化而變化時区匣,給行為分配職責(zé)—使用多態(tài)操作—來適合行為變化的類型偷拔。
也就是說盡量對抽象層編程,用多態(tài)的方法來判斷具體應(yīng)該使用那個類亏钩,而不是用if instanceof 來判斷該類是什么接來執(zhí)行什么莲绰。

7)純虛構(gòu) Pure Fabrication
分配一系列高度聚合的職責(zé)給虛假的類或是不表現(xiàn)某事完成的領(lǐng)域問題概念的有用的類,它支持高內(nèi)聚姑丑、低耦合蛤签、可重用。
一個純虛構(gòu)意味著虛構(gòu)某些事物栅哀,而不是到了迫不得已我們才這樣做震肮。
例,我們的Sale類的數(shù)據(jù)要存入數(shù)據(jù)庫留拾,但是他必須和數(shù)據(jù)庫接口相連接戳晌,如果將接口連接放入Sale類中勢必增加該類的耦合度,所以我們可以虛構(gòu)一個類來處理與數(shù)據(jù)庫接口連接的問題痴柔。這個類就是我們虛構(gòu)出來的一個事物沦偎。

8)間接 Indirection
問題:如何分配職責(zé)避免直接耦合?如何減弱對象的耦合?
解決方案:分配職責(zé)給中間的調(diào)解對象來調(diào)解兩個組件之間的關(guān)系豪嚎。
內(nèi)容:將職責(zé)分配給一個中間對象以便在其他構(gòu)件或服務(wù)之間仲裁搔驼,這樣這些構(gòu)件或服務(wù)沒有被直接耦合。這個中間對象(intermediary)在其他構(gòu)件或服務(wù)間創(chuàng)建一個中介者(Indirection)侈询。這個中間對象也就事7)中的純虛構(gòu)舌涨。

9)防止編譯/變化預(yù)防 Protected Variations
問題:如何設(shè)計對象向瓷,子系統(tǒng)和系統(tǒng)姚炕,使其內(nèi)部的變化和不穩(wěn)定不會對其他元素產(chǎn)生不良影響?
解決方案:識別設(shè)計變化或不穩(wěn)定之處琅关,分配職責(zé)用以在這些變化之外創(chuàng)建穩(wěn)定接口
內(nèi)容:分配職責(zé)給一個客戶端的直接對象以使它與一個間接對象進(jìn)行協(xié)作啦租,這樣客戶端無需知道這個間接對象哗伯。
這個模式-也被叫做(Demeter)準(zhǔn)則。
通俗點就是:只與你直接的朋友們通信篷角,不要跟“陌生人”說話焊刹,每個軟件單位對其他的單位都只有最少的知識,而且局限于那些與本單位密切相關(guān)的軟件單位

GRASP的主要特征:

  • 對象職責(zé)分配的基本原則恳蹲。
  • 主要應(yīng)用在分析和建模上虐块。

GRASP的核心思想的理解:

  • 自己干自己的事(職責(zé)的分配)
  • 自己干自己的能干的事(職責(zé)的分配)
  • 自己只干自己的事(職責(zé)的內(nèi)聚)

來源 doc

26.OO設(shè)計的五個基本原則及課件中講述的其它軟件原理

五個基本原則:(S.O.L.I.D):
1)單一職責(zé)原則 (SPR 單一功能原則)
這個原則和關(guān)注點分離緊密聯(lián)系。它陳述了每個對象應(yīng)該只有一個理由去改變嘉蕾,單一聚焦在職責(zé)上贺奠。通過依附這個原則,你避免了龐大的類的設(shè)計問題错忱,那就像瑞士的軍刀儡率。有了精確的對象,你再次增加了系統(tǒng)的可讀性和可維護(hù)性以清。

2)開閉原則 (OCP 開閉原則)
這個原則陳述了類應(yīng)該對擴(kuò)展開放儿普,對修改關(guān)閉,那樣你就能夠添加新的特征掷倔,擴(kuò)展一個類而不用改變它內(nèi)部的行為眉孩。這個原則旨在避免破壞存在的類及依賴它的其他類,這使得你的整個應(yīng)用程序中產(chǎn)生故障和錯誤的漣漪勒葱。

3)Liskov替換原則 (LSP 里式替換原則)
Liskov替換原則要求你應(yīng)該能夠使用任何衍生出的類代替父類浪汪,不用修改就有同樣的行為。這個原則與開閉原則一致凛虽,它保證了一個衍生出的類不影響父類的行為死遭,或者說,衍生出的類必須能夠被它們的基類替代涩维。

4)接口分離原則 (ISP 接口隔離原則)
這個原則是將一個抽象方法分裂成幾組職責(zé)殃姓,給這些組分配接口來防止客戶端實現(xiàn)一個很大的接口袁波,這個接口容納了很多它們不使用的方法。目的是為了讓類使用相同的接口只需要實現(xiàn)一些具體的方法蜗侈,而不是有很多方法的龐大的接口篷牌。不應(yīng)強(qiáng)迫客戶程序?qū)崿F(xiàn)一個它用不上的接口。

5)依賴反轉(zhuǎn)原則 (DIP依賴反轉(zhuǎn)原則)
把你的類從具體的實現(xiàn)中隔離開踏幻,使它們依賴于抽象類或接口枷颊。它促進(jìn)了對接口而不是實現(xiàn)的譯碼,這通過保證對實現(xiàn)的低耦合來增加系統(tǒng)的靈活性该面。
高層模塊不應(yīng)該依賴于底層模塊夭苗。二者都應(yīng)該依賴于抽象
抽象不應(yīng)該依賴于細(xì)節(jié)隔缀,細(xì)節(jié)應(yīng)該依賴于抽象题造。

更多解釋:
https://blog.csdn.net/zn_echonn/article/details/80198053

【其它基本原理】
A.保持代碼簡單而不過于簡單,避免不必要的復(fù)雜性猾瘸;
B.把公共事物抽象出來界赔,放在固定的位置;
C.給類分配正確的職責(zé)牵触,告訴對象做什么淮悼,而不是詢問對象的狀態(tài);
D.把自認(rèn)為需要卻不一定需要的特性延遲揽思;
E.把特性分離封裝成類袜腥,增強(qiáng)重用、維護(hù)和穩(wěn)定钉汗。(關(guān)注點分離)
F.將類及其成員的訪問性降到最懈睢;
G.使用訪問器和修改器儡湾,而不是公共成員特恬;
H.組合優(yōu)于繼承;
I.面向接口編程徐钠,而不是實現(xiàn)。

  • 面向抽象原則
    設(shè)計一個類時役首,不讓該類面向具體的類尝丐,而是面向抽象類或接口
  • 高內(nèi)聚-低耦合原則
    如果類中的方法是一組相關(guān)的行為,則稱該類是高內(nèi)聚的衡奥,反之稱為低內(nèi)聚的爹袁。 所謂低耦合就是盡量不要讓一個類含有太多的其它類的實例的引用,以避免修改系統(tǒng)的其中一部分會影響到其它部分矮固。

27.組合失息,繼承譬淳,針對接口編程,黑盒盹兢,白盒重用

1)組合:
指在新類里面創(chuàng)建原有類的對象邻梆,重復(fù)利用已有類的功能。

優(yōu)點:
包含對象由包含類通過其接口訪問
“黑盒”重用绎秒,因為包含對象的內(nèi)部細(xì)節(jié)不可見

  • 良好的封裝
  • 更少的實現(xiàn)依賴性
  • 每個類只關(guān)注一個任務(wù)
  • 可以在運行時通過獲取對相同類型的其他對象的引用的對象來動態(tài)地定義組合
    缺點:
    結(jié)果系統(tǒng)往往有更多的對象
    接口必須仔細(xì)定義浦妄,以便使用許多不同的對象作為組合塊

2)繼承:

新功能的重用方法獲得通過擴(kuò)展現(xiàn)有對象的實現(xiàn) ?见芹?剂娄?
繼承是從已有的類中派生出新的類,新的類能吸收已有類的數(shù)據(jù)屬性和行為玄呛,并能擴(kuò)展新的能力阅懦。
泛化類(超類)明確了共同的屬性和方法
專業(yè)類(子類)擴(kuò)展了實現(xiàn)額外的屬性和方法

優(yōu)點:
新的實現(xiàn)很容易,因為它的大部分是繼承的
容易修改或擴(kuò)展的實現(xiàn)被重用
缺點:
打破封裝徘铝,因為它暴露一個子類到其超類的實現(xiàn)細(xì)節(jié)
“白盒”重用故黑,因為超類的內(nèi)部細(xì)節(jié)對子類通常是可見的
如果超類的實現(xiàn)更改,則可能必須更改子類
從超類繼承的實現(xiàn)不能在運行時更改

3)針對接口編程又稱為面向接口編程庭砍,

針對接口編程就是要先設(shè)計以系列的接口场晶,把設(shè)計和實現(xiàn)分開,使用時只需要引用接口即可怠缸,也由于系統(tǒng)各部分的解耦合诗轻。針對接口編程是為了提高程序的可維護(hù)性、可伸縮性和可復(fù)用性揭北。如果你在一個類中直接使用另外的一個扳炬,這樣就把兩個類緊密聯(lián)系在一起了,以后如果想做出改變就很難了搔体。如果針對接口編程恨樟,當(dāng)業(yè)務(wù)變化時我們只需要用一個新的類實現(xiàn)接口即可

優(yōu)點:
客戶端不知道他們正在使用的對象的特定類
一個對象可以很容易地被另一個替換
對象連接不需要硬連線到特定類的對象,從而增加了靈活性
松耦合
增加重復(fù)使用的可能性
改進(jìn)合成的機(jī)會疚俱,因為包含的對象可以是實現(xiàn)特定接口的任何類
缺點:
適度增加設(shè)計復(fù)雜性

4)白盒復(fù)用:
源代碼可見劝术,可修改和擴(kuò)展
– 復(fù)制已有代碼當(dāng)正在開發(fā)的系統(tǒng),進(jìn)行修改
– 可定制化程度高
– 對其修改增加了軟件的復(fù)雜度呆奕,且需要對其內(nèi)部充分的了解

白盒重用"White-box" reuse(PPT Review of Java Slide 45)
"White-box" reuse, since internal details of super classes are often visible to subclasses
“白盒”重用养晋,因為超類的內(nèi)部細(xì)節(jié)對子類通常是可見的

5)黑盒復(fù)用:
源代碼不可見,不能修改
– 只能通過API接口來使用梁钾,無法修改代碼
– 簡單绳泉,清晰
– 適應(yīng)性差些

黑盒重用"Black-box" reuse(PPT Review of Java Slide 43)
"Black-box" reuse, since internal details of contained objects are not visible
因為包含對象的內(nèi)部細(xì)節(jié)不可見

  • 補(bǔ)充:
    組合(has-a)關(guān)系可以顯式地獲得被包含類(繼承中稱為父類)的對象,而繼承(is-a)則是隱式地獲得父類的對象姆泻,被包含類和父類對應(yīng)零酪,而組合外部類和子類對應(yīng)冒嫡。

組合關(guān)系是 局部類和整體類的關(guān)系
繼承關(guān)系 父類和子類的關(guān)系
(來源doc,網(wǎng)絡(luò))

28.MVC模式
(來源DOC)
?MVC是 模型-視圖-控制器 的縮寫
它代表了一種軟件設(shè)計模式,1978年開發(fā)在施樂帕克研究中心(!)
它解釋了一種分離視覺四苇、交互和數(shù)據(jù)組件的方法孝凌。
非常受歡迎,廣泛用于Java和其他語言

(百度百科)
Model(模型)是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分。
通常模型對象負(fù)責(zé)在數(shù)據(jù)庫中存取數(shù)據(jù)蛔琅。
View(視圖)是應(yīng)用程序中處理數(shù)據(jù)顯示的部分胎许。
通常視圖是依據(jù)模型數(shù)據(jù)創(chuàng)建的。
Controller(控制器)是應(yīng)用程序中處理用戶交互的部分罗售。
通彻家ぃ控制器負(fù)責(zé)從視圖讀取數(shù)據(jù),控制用戶輸入寨躁,并向模型發(fā)送數(shù)據(jù)穆碎。

模型 :維護(hù)應(yīng)用程序的狀態(tài)和數(shù)據(jù)的XML文檔
?“模型”包含的數(shù)據(jù)
?有一些方法來訪問并可能更新它的內(nèi)容。
?通常,它實現(xiàn)了一個允許模型交互的接口职恳。
?實現(xiàn)了一個允許退出和取代的接口所禀,并不伴隨編程改變

視圖 :XML文檔的呈現(xiàn)
?視圖提供模型的可視化表示。
?在任何時候都可以有多個視圖表示模型放钦。
?例如,一個公司財務(wù)狀況隨著時間的推移可以用一個表和圖表示色徘。
?只有兩種不同的視圖表示相同的數(shù)據(jù)。
?當(dāng)模型更新時操禀,所有視圖被通知然后有機(jī)會更新

控制器 :用戶界面呈現(xiàn)給用戶操作的應(yīng)用程序
?用戶與控制器進(jìn)行交互褂策。
?它解釋鼠標(biāo)移動,點擊按鍵等
?活動與模型溝通,如:刪除行,插入行等
?它的模型的交互間接導(dǎo)致視圖的更新

2.png

29.企業(yè)應(yīng)用架構(gòu)有那三層颓屑,各層主要做什么斤寂。在各層有那些主要的模式,各層揪惦,各層的各種模式的定義和結(jié)構(gòu)內(nèi)容(展現(xiàn)層遍搞,領(lǐng)域?qū)樱瑪?shù)據(jù)源層)

(PPT ch9 slide 110)
1)表現(xiàn)層:提供服務(wù)器腋,顯示信息溪猿。頁面控制器,模板視圖蒂培,前端控制器再愈,轉(zhuǎn)換視圖。
2)領(lǐng)域?qū)樱侯I(lǐng)域邏輯护戳,領(lǐng)域中真正的核心。也稱為業(yè)務(wù)邏輯垂睬,它是應(yīng)用程序必須做的所有領(lǐng)域相關(guān)工作:包括根據(jù)輸入數(shù)據(jù)和已有數(shù)據(jù)進(jìn)行計算媳荒,對從表現(xiàn)層輸入的數(shù)據(jù)進(jìn)行驗證以及根據(jù)從表現(xiàn)層接受的命令來確定應(yīng)該調(diào)試哪些數(shù)據(jù)源邏輯抗悍。事物腳本,領(lǐng)域模型钳枕,表模塊缴渊,活動記錄。
3)數(shù)據(jù)源層:與數(shù)據(jù)庫鱼炒、系統(tǒng)消息系統(tǒng)衔沼、事務(wù)管理器及其他軟件包進(jìn)行通信。最主要的數(shù)據(jù)源邏輯就是數(shù)據(jù)庫昔瞧,主要責(zé)任是存儲持久數(shù)據(jù)指蚁。行數(shù)據(jù)網(wǎng)關(guān),表數(shù)據(jù)網(wǎng)關(guān)自晰,數(shù)據(jù)映射程序,表模塊酬荞,活動記錄。

30.4+1視圖

“4+1”視圖模型即從5個不同的視角(邏輯視圖混巧,進(jìn)程視圖枪向,物理視圖,開發(fā)視圖
和場景視圖)來描述軟件體系結(jié)構(gòu)咧党。
每個視圖之關(guān)心系統(tǒng)的一個側(cè)面秘蛔,5個視圖結(jié)合在一起才能反映系統(tǒng)的軟件體系結(jié)構(gòu)的全部內(nèi)容。

邏輯視圖(Logical View):
過程視圖:描述架構(gòu)元素之間的并發(fā)和通信
物理視圖:描繪主要的過程和組件是如何映像到硬件上的
開發(fā)視圖:俘獲軟件組件內(nèi)部的結(jié)構(gòu)凿傅,如配置管理工具

架構(gòu)用例:俘獲架構(gòu)的需求缠犀;和不止一種視圖相關(guān)

百度百科
邏輯視圖(Logical View)設(shè)計的對象模型(使用[面向?qū)ο骫的設(shè)計方法時)。
過程視圖(Process View)捕捉設(shè)計的并發(fā)和同步特征聪舒。
物理視圖(Physical View)描述了軟件到硬件的映射辨液,反映了分布式特性。
開發(fā)視圖(Development View)描述了在[開發(fā)環(huán)境]中軟件的靜態(tài)組織結(jié)構(gòu)箱残。

架構(gòu)的描述滔迈,即所做的各種決定,可以圍繞著這四個視圖來組織被辑,然后由一些用例 (use cases)或場景(scenarios)來說明燎悍,從而形成了第五個視圖。

3.png

來源DOC

31.應(yīng)用的集成策略

2.png

  • Data – expose application data for access by other components
    公開應(yīng)用程序數(shù)據(jù)供其他組件訪問
  • API – offers services to read/write application data through an abstracted interface
    即數(shù)據(jù)——公開應(yīng)用程序數(shù)據(jù)訪問的其他組件盼理,提供服務(wù)來讀/寫應(yīng)用程序數(shù)據(jù)通過一個抽象接口

API(Application Programming Interface,應(yīng)用程序編程接口)是一些預(yù)先定義的函數(shù)谈山,目的是提供應(yīng)用程序與開發(fā)人員基于某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼宏怔,或理解內(nèi)部工作機(jī)制的細(xì)節(jié)奏路。

來源DOC

補(bǔ)充內(nèi)容:
1.一些指標(biāo)

  • Performance:Application performance must provide sub-four second response times for 90% of requests.
    性能:應(yīng)用程序性能人工跑道跑四秒的響應(yīng)時間必須提供90%的請求畴椰。
  • Security: All communications must be authenticated and encrypted using certificates.
    安全性:所有通信都必須使用證書進(jìn)行身份驗證和加密。
  • Resource Management:The server component must run on a low end office-based server with 512MB memory.
    資源管理:服務(wù)器組件必須運行在一個低端辦公室服務(wù)器512 mb內(nèi)存鸽粉。
  • Usability:The user interface component must run in an Internet browser to support remote users.
    可用性:用戶界面組件必須運行在一個網(wǎng)絡(luò)瀏覽器支持遠(yuǎn)程用戶斜脂。
  • Availability: The system must run 24x7x365, with overall availability of 0.99.
    有效性:系統(tǒng)必須運行24x7x365,總體可用性為0.99触机。
  • Reliability:No message loss is allowed, and all message delivery outcomes must be known with 30 seconds
    可靠性:沒有信息損失是允許的,和所有的消息傳遞的結(jié)果必須是已知的30秒
  • Scalability:The application must be able to handle a peak load of 500 concurrent users during the enrollment period.
    可伸縮性:應(yīng)用程序必須能夠處理500個并發(fā)用戶的峰值負(fù)載在招生期間帚戳。
  • Modifiability: The architecture must support a phased migration from the current Forth Generation Language (4GL) version to a .NET systems technology solution.
    可修改性:體系結(jié)構(gòu)必須支持從當(dāng)前的第四代語言(4GL)版本到. net系統(tǒng)技術(shù)解決方案的階段性遷移。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末儡首,一起剝皮案震驚了整個濱河市片任,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌椒舵,老刑警劉巖蚂踊,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異笔宿,居然都是意外死亡犁钟,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門泼橘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涝动,“玉大人,你說我怎么就攤上這事炬灭〈姿冢” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵重归,是天一觀的道長米愿。 經(jīng)常有香客問我,道長鼻吮,這世上最難降的妖魔是什么育苟? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮椎木,結(jié)果婚禮上违柏,老公的妹妹穿的比我還像新娘。我一直安慰自己香椎,他們只是感情好漱竖,可當(dāng)我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著畜伐,像睡著了一般馍惹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天讼积,我揣著相機(jī)與錄音肥照,去河邊找鬼脚仔。 笑死勤众,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鲤脏。 我是一名探鬼主播们颜,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼猎醇!你這毒婦竟也來了窥突?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤硫嘶,失蹤者是張志新(化名)和其女友劉穎阻问,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沦疾,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡称近,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了哮塞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刨秆。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖忆畅,靈堂內(nèi)的尸體忽然破棺而出衡未,到底是詐尸還是另有隱情,我是刑警寧澤家凯,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布缓醋,位于F島的核電站,受9級特大地震影響绊诲,放射性物質(zhì)發(fā)生泄漏送粱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一驯镊、第九天 我趴在偏房一處隱蔽的房頂上張望葫督。 院中可真熱鬧,春花似錦板惑、人聲如沸橄镜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽洽胶。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間姊氓,已是汗流浹背丐怯。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留翔横,地道東北人读跷。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像禾唁,于是被迫代替她去往敵國和親效览。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,543評論 2 349