软件体系结构期末复习题
1.軟件體系結構主要包括哪3個部分?
答:軟件體系結構=構件+連接件+約束。軟件體系結構是具有一定形式的結構化元素,即構件的集合,包括處理構件、數據構件和連接構件。處理構件負責對數據進行加工,數據構件是被加工的信息,連接構件把體系結構的不同部分組組合連接起來。這一定義注重區分處理構件、數據構件和連接構件,這一方法在其他的定義和方法中基本上得到保持。
2.軟件重用相關內容。
答:
定義:軟件重用,是指在兩次或多次不同的軟件開發過程中重復使用相同或相似軟件元素的過程。軟件元素包括程序代碼、測試用例、設計文檔、設計過程、需要分析文檔甚至領域知識。通常,可重用的元素也稱作軟構件,可重用的軟構件越大,重用的粒度越大。
一、軟件重用定義
軟件重用(Software Reuse,又稱軟件復用或軟件再用)的概念對于大家并不陌生。早在1968年的NATO軟件工程會議上就已經提出可復用庫的思想。軟件重用的定義也很多,比較權威和通用的一種是:軟件重用是利用事先建立好的軟部品創建新軟件系統的過程。這個定義蘊含著軟件重用所必須包含的兩個方面:
1. 系統地開發可重用的軟部品。這些軟部品可以是代碼,但不應該僅僅局限在代碼。我們必須從更廣泛和更高層次來理解,這樣才會帶來更大的重用收益。比如軟部品還可以是:分析,設計,測試數據,原型,計劃,文檔,模板,框架等等。
2. 系統地使用這些軟部品作為構筑模塊,來建立新的系統。
二、軟件重用的好處
軟件重用會帶來以下好處:
1. 提高軟件生成率。
2. 縮短開發周期 。
3. 降低軟件開發和維護費用。
4. 生產更加標準化的軟件。
5. 提高軟件開發質量。
6. 增強軟件系統的互操作性。
7. 減少軟件開發人員數量。
8. 使開發人員能比較容易的適應不同性質的項目開發。
三、軟件重用形式
軟件重用的形式(或手段)很多,重用的級別有大有小。主要有以下幾種:
1. 源代碼模塊或者類一級的重用。這是最基本的軟件重用形式。
2. 二進制形式的重用。如組件重用。
3. 組裝式重用。比如:把好幾個應用程序的功能集成在一起。例如,要建立一個門戶站點應用,登陸用戶既可以查詢天氣情況,又可以查看股市行情,還可以在線購物。這些功能由不同網絡應用服務供應商提供,通過這種組裝式重用,就可以非常容易地把上述功能都集成到新的門戶站點中。
4. 分析級別重用。
5. 設計級別重用。
6. 軟件文檔重用。
?四、軟件重用分類
? 為軟件重用分類比較困難,因為軟件重用技術眾多,一種重用技術可以包括多種重用形式。比如說:框架即可以包括代碼級重用,也可以包括設計級重用。有一種分類方法是按照軟件重用所應用的領域范圍,把重用劃分為兩種:橫向重用和縱向重用。
1. 橫向重用是指重用不同應用領域中的軟件元素,例如數據結構、分類算法、人機界面構件等。標準函數庫是一種典型的原始的橫向重用機制。
2. 縱向重用是指在一類具有較多公共性的應用領域之間進行軟部品重用。因為在兩個截然不同的應用領域之間實施軟件重用非常困難,潛力不大,所以縱向重用才廣受矚目,并成為軟件重用技術的真正所在??v向重用活動的主要包括以下幾個步驟:
1) 首先進行域分析。根據應用領域的特征及相似性預測軟部件的可重用性。
2) 然后進行軟部品的開發。一旦確認了軟部件的重用價值,即可進行軟部品的開發并對具有重用價值的軟部品進行一般化,以便它們能夠適應新的類似的應用領域。
3) 最后,軟部件及其文檔即可進入軟部品庫,成為可供后續項目使用的可重用資源。
?五、流行的軟件重用技術
最理想的重用技術是它的重用產品能夠和用戶的需求完全一致,不需要用戶做任何自定義,并且能夠無需用戶學習就能夠被使用。然而,一種重用技術能夠適合今天,可能不適合明天。一個重用產品越是能夠被自定義,它越是可能在一個特定的環境下被使用,但是這也需要用戶進行更多的學習,研究和實踐。
自從軟件重用思想產生以來,計算機科學家和軟件工程師就致力與軟件重用的技術的研究和實踐。在30多年的時間內,出現多種軟件重用技術,如:庫函數,模板,面向對象、設計模式、組件、框架、構架。
下面是應用程序框架和其它三種軟件流行的重用技術的比較。
1. 庫函數
庫函數是很早的軟件重用技術。很多編程語言為了增強自身的功能,都提供了大量的庫函數。對于庫函數的使用者,他只要知道函數的名稱,返回值的類型, 函數參數和函數功能就可以對其進行調用。
2. 面向對象
面向對象技術是近三十年來學術界和工業界研究和應用的一個熱點。面向對象技術通過方法、消息、類、繼承、封裝、和實例等機制構造軟件系統,并為軟件重用提供強有力的支持。面向對象方法已成為當今最有效、最先進的軟件開發方法。與函數庫對應,很多面向對象語言為應用程序開發者提供了易于使用的類庫,如VC++中的MFC。
3. 模板
模板相當于工業生產中所用的“模具”。有各種各樣的模板(如文檔模板,網頁模板等),利用這些模板可以比較快速地建立對應的軟件產品。模板把不變的封裝在內部,對可能變化的部分提供了通用接口,由使用者來對這些接口進行設定或實現。
4. 設計模式
設計模式作為重用設計信息的一種技術,在面向對象設計中越來越來流行。設計模式描述了在我們周圍不斷重復發生的問題,該問題的解決方案的核心和解決方案實施的上下文。設計模式命名一種技術并且描述它的成本和收益,共享一系列模式的開發者擁有共同的語言來描述他們的設計。
5. 構件
普通意義上的構件應從以下幾個方面來理解:
1) 構件應是抽象的系統特征單元,具有封裝性和信息隱蔽,其功能由它的接口定義。
2) 構件可以是原子的,也可以是復合的。因此它可以是函數,過程或對象類,也可以是更大規模的單元。一個子系統是包含其它構件的構件。
3) 構件是可配置和共享的,這是基于構件開發的基石,且構件之間能相互提供服務。
6. 構架
普通意義上的構架應從以下幾個方面來理解:
1) 構架是與設計的同義理解,是系統原型或早期的實現。
2) 構架是高層次的系統整體組織。
3) 構架是關于特定技術如何合作組成一個特定系統的解釋。
7. 框架
如果把軟件的構建過程看成是傳統的建筑過程;框架的作用相當于為我們的房屋搭建的“架子”。框架從重用意義上說,是一個介于構件和構架之間的一個概念。構件,框架和構架三者的主要區別在于:對重用的支持程度的不同:
1) 構件是基礎,也是基于構件開發的最小單元。構件重用包括可重用構件的制作和利用可重用構件構造新構件或系統,
2) 一個框架和構架包含多個構件。這些構件使用統一的框架(構架)接口,使得構造一個應用系統更為容易。
3) 框架重用包括代碼重用和分析設計重用,一個應用系統可能需要若干個框架的支撐,從這個意義上來說,框架也是一個“構件”的同時,框架又是一類特定領域的構架。
4) 構架重用不僅包括代碼重用和分析設計重用,更重要的是抽象層次更高的系統級重用。
5) 框架和構架的重用層次更高,比構件更為抽象靈活,但也更難學習和使用。
3.黑盒重用和白盒重用。
答:
黑盒重用:是指對已有構建無需做任何修改,直接進行重用,這是理想的重用方式。
白盒重用:是指已有構建并不能完全符合用戶需求,需要根據用戶需求進行適應性修改后才可使用。
4.軟件構件。
答:軟件系統中具有相對獨立功能,可以明確辨識,接口由規約指定,與語境有明顯依賴關系,可獨立部署,且多由第三方提供的可組裝軟件實體。
5.基于UML的軟件體系結構中,什么是“4+1”視圖模型。
答:
?Philippe Kruchten提出的4+1視圖方法
該方法的不同架構視圖承載不同的架構設計決策,支持不同的目標和用途:
邏輯視圖:當采用面向對象的設計方法時,邏輯視圖即對象模型。
開發視圖:描述軟件在開發環境下的靜態組織。
處理視圖:描述系統的并發和同步方面的設計。
物理視圖:描述軟件如何映射到硬件,反映系統在分布方面的設計。
運用4+1視圖方法:針對不同需求進行架構設計
如前文所述,要開發出用戶滿意的軟件并不是件容易的事,軟件架構師必須全面把握各種各樣的需求、權衡需求之間有可能的矛盾之處,分門別類地將不同需求一一滿足。
6.類圖、用例圖、順序圖、狀態轉換圖。
答:
類圖:類圖(Class diagram)是顯示了模型的靜態結構,特別是模型中存在的類、類的內部結構以及它們與其他類的關系等。類圖不顯示暫時性的信息。類圖是面向對象建模的主要組成部分。它既用于應用程序的系統分類的一般概念建模,也用于詳細建模,將模型轉換成編程代碼。類圖也可用于數據建模。
用例圖:用例圖是指由參與者(Actor)、用例(Use Case),邊界以及它們之間的關系構成的用于描述系統功能的視圖。用例圖(User Case)是外部用戶(被稱為參與者)所能觀察到的系統功能的模型圖。用例圖是系統的藍圖。用例圖呈現了一些參與者,一些用例,以及它們之間的關系,主要用于對系統、子系統或類的功能行為進行建模。
順序圖:順序圖是將交互關系表示為一個二維圖。縱向是時間軸,時間沿豎線向下延伸。橫向軸代表了在協作中各獨立對象的類元角色。類元角色用生命線表示。當對象存在時,角色用一條虛線表示,當對象的過程處于激活狀態時,生命線是一個雙道線。
狀態轉換圖:通過描繪系統的狀態及引起系統狀態轉換的事件,來表示系統的行為。此外狀態轉換圖還指明了作為特定事件的結果系統將做哪些動作(例如,處理數據)。因此狀態轉換圖提供了行為建模機制。
在狀態轉換圖中,每一個節點代表一個狀態,其中雙圈是終結狀態。許多單片機教材上對工作模式的表達通常采用狀態圖的形式。
7.以圖書管理系統為例,分析本系統應有的模塊,掌握相關子系統的UML用例圖、圖書查詢預約系統的順序圖。
8.B/S、C/S。
答:B/S結構(Browser/Server結構)結構即瀏覽器和服務器結構。它是隨著Internet技術的興起,對C/S結構的一種變化或者改進的結構。在這種結構下,用戶工作界面是通過WWW瀏覽器來實現,極少部分事務邏輯在前端(Browser)實現,但是主要事務邏輯在服務器端(Server)實現,大大簡化了客戶端電腦載荷,減輕了系統維護與升級的成本和工作量,降低了用戶的總體成本(TCO)。
B/S結構最大的優點就是可以在任何地方進行操作而不用安裝任何專門的軟件。只要有一臺能上網的電腦就能使用,客戶端零維護。系統的擴展非常容易,只要能上網,再由系統管理員分配一個用戶名和密碼,就可以使用了。甚至可以在線申請,通過公司內部的安全認證(如CA證書)后,不需要人的參與,系統可以自動分配給用戶一個賬號進入系統。
C/S (Client/Server)結構,即大家熟知的客戶機和服務器結構。它是軟件系統體系結構,通過它可以充分利用兩端硬件環境的優勢,將任務合理分配到Client端和Server端來實現,降低了系統的通訊開銷。目前大多數應用軟件系統都是Client/Server形式的兩層結構,由于現在的軟件應用系統正在向分布式的Web應用發展,Web和Client/Server 應用都可以進行同樣的業務處理,應用不同的模塊共享邏輯組件;因此,內部的和外部的用戶都可以訪問新的和現有的應用系統,通過現有應用系統中的邏輯可以擴展出新的應用系統。這也就是目前應用系統的發展方向。
三、B/S、C/S結構軟件技術上的比較
C/S結構軟件(即客戶機/服務器模式)分為客戶機和服務器兩層,客戶機不是毫無運算能力的輸入、輸出設備,而是具有了一定的數據處理和數據存儲能力,通過把應用軟件的計算和數據合理地分配在客戶機和服務器兩端,可以有效地降低網絡通信量和服務器運算量。由于服務器連接個數和數據通信量的限制,這種結構的軟件適于在用戶數目不多的局域網內使用。國內目前的大部分ERP(財務)軟件產品即屬于此類結構。
B/S(瀏覽器/服務器模式)是隨著Internet技術的興起,對C/S結構的一種改進。在這種結構下,軟件應用的業務邏輯完全在應用服務器端實現,用戶表現完全在Web服務器實現,客戶端只需要瀏覽器即可進行業務處理,是一種全新的軟件系統構造技術。這種結構更成為當今應用軟件的首選體系結構。e通管理系列產品即屬于此類結構。
9.軟件是否具有一定的演化能力,主要體現在哪些方面?
答:是
1.可分析性:具有良好演化能力的軟件應該容易進行分析,以便可以快速的確定需要進行修改的部分。
2.可修改性:具有良好演化能力的軟件應該可以方便容易的修改
3.穩定性:具有良好演化能力的軟件應該具有避免由于修改而造成不良后果的能力。
4.可測試性:驗證一個軟件演化后修改有效的能力。
10.軟件演化與軟件維護的關系。
答:
軟件維護類型
糾錯性維護(Corrective maintenance)
由于軟件中的缺陷引起的修改
完善性維護(Perfective maintenance)
根據用戶在使用過程中提出的一些建設性意見而進行的維護活動
適應性維護(Adaptive maintenance)
為適應環境的變化而修改軟件的活動
預防性維護(Preventive maintenance)
為了進一步改善軟件系統的可維護性和可靠性,并為以后的改進奠定基礎
11.靜態演化、動態演化的概念。
答:靜態演化是指軟件在停機狀態下的演化,期優點是不用考慮運行狀態的遷移,同時也沒有活動的進程需要處理,然而停止一個應用程序就意味著中斷它提供的服務,造成軟件暫時失效。
動態演化是指軟件在執行期間的演化,相對于靜態演化而言,動態演化過程具有持續可用的顯著特點,軟件不會存在暫時的失效。但由于涉及狀態遷移等問題,比靜態演化更復雜,包括動態更新,增加,和刪除構件,動態配置系統結構等問題。
12.單體演化、全局演化的概念。
答:圖
13在體系結構層次上兩類評估技術
淺談軟件體系結構評估技術 - 百度文庫
14.類之間的關系:關聯,泛化,依賴,細化,
在UML類圖中,常見的有以下幾種關系: 泛化(Generalization), 實現(Realization),關聯(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)。
1. 泛化(Generalization)
【泛化關系】:是一種繼承關系,表示一般與特殊的關系,它指定了子類如何特化父類的所有特征和行為。
例如:老虎是動物的一種,即有老虎的特性也有動物的共性。
【箭頭指向】:帶三角箭頭的實線,箭頭指向父類
???
2. 實現(Realization)
【實現關系】:是一種類與接口的關系,表示類是接口所有特征和行為的實現.
【箭頭指向】:帶三角箭頭的虛線,箭頭指向接口。
3.關聯(Association)
【關聯關系】:是一種擁有的關系,它使一個類知道另一個類的屬性和方法;如:老師與學生,
丈夫與妻子關聯可以是雙向的,也可以是單向的。
雙向的關聯可以有兩個箭頭或者沒有箭頭,單向的關聯有一個箭頭。
【代碼體現】:成員變量
【箭頭及指向】:帶普通箭頭的實心線,指向被擁有
??? ? ??? ??? ? ? ? ? ? ?
上圖中,老師與學生是雙向關聯,老師有多名學生,學生也可能有多名老師。
但學生與某課程間的關系為單向關聯,一名學生可能要上多門課程,課程是個抽象的東西他不擁有學生。
下圖為自身關聯:
?4.聚合(Aggregation)?? ? ? ? ? ? ? ? ? ? ? ??
【聚合關系】:是整體與部分的關系,且部分可以離開整體而單獨存在。
如車和輪胎是整體和部分的關系,輪胎離開車仍然可以存在。
聚合關系是關聯關系的一種,是強的關聯關系;關聯和聚合在語法上無法區分,必須考察具體的邏輯關系。
【代碼體現】:成員變量
【箭頭及指向】:帶空心菱形的實心線,菱形指向整體
??? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ?
?5.組合(Composition)? ? ? ? ? ? ? ? ? ? ? ? ?
【組合關系】:是整體與部分的關系,但部分不能離開整體而單獨存在。
如公司和部門是整體和部分的關系,沒有公司就不存在部門。
組合關系是關聯關系的一種,是比聚合關系還要強的關系,
它要求普通的聚合關系中代表整體的對象負責代表部分的對象的生命周期。
【代碼體現】:成員變量
【箭頭及指向】:帶實心菱形的實線,菱形指向整體
??? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
6. 依賴(Dependency)
【依賴關系】:是一種使用的關系,即一個類的實現需要另一個類的協助,
所以要盡量不使用雙向的互相依賴.
【代碼表現】:局部變量、方法的參數或者對靜態方法的調用
【箭頭及指向】:帶箭頭的虛線,指向被使用者
??? ? ? ? ? ? ? ? ? ? ?
15軟件體系結構的定義和作用
16.什么是UML
答:??UML是統一建模語言,是一種可視化的面向對象建模語言,是一種用來對真實世界物理進行建模的標準標記,用圖形方式表現典型的面向對象系統的整個結構。它的作用域不局限于支持面向對象的分析與設計,還支持從需求分析開始的軟件開發的全過程。
UML的概念包括了UML語義(Semantics)和UML表(Notation)兩個部分。UML語義定義了靜態模型和動態模型。結構模型強調系統的對象結構,入對象的類、接口、屬性和關系;行為模型關注的是系統對象的行為動作,如對象的方法、交互、協作和狀態。UML表示符為開發者或開發工具使用這些圖形符號和文本語法為系統建模提供了標準。重要內容由9種圖來定義,包括用例圖、類圖、對象圖、狀態圖、構件圖、部署圖、協作圖、交互序列圖、活動圖。
17常用體系結構風格有哪些
數據流風格:批處理序列,管道/過濾器 調用/返回風格:主程序/子程序,面向對象風格,層次結構 獨立構件風格:進程通信,事件系統 虛擬機風格:解釋器,基于規則的系統 倉庫風格:數據庫系統,超文本系統,黑板系統
18飲水機售水系統用例圖
17.常用的體系結構風格
答:管道/過濾器體系結構風格
面相對象體系結構風格
分層體系結構風格
客戶機/服務器體系結構風格
瀏覽器/服務器體系結構風格
事件驅動體系結構風格
數據共享體系結構風格
解釋器體系結構風格
C2體系結構風格
19.MVC體系結構風格中,M/V/C分別代表什么?
答:(1)什么是mvc?
是一種軟件架構的思想,將軟件按照模型、視圖、控制器
來劃分。模型負責封裝業務處理邏輯,視圖負責輸入和輸出(
表示邏輯),控制器負責協調模型和視圖。
模型:
封裝:需要先寫接口,然后實現接口中聲明的方法。
業務處理邏輯:業務本身的處理流程,另外,還包括
為保證業務處理正??煽繄绦械幕A服務(事務、安全、
日志等等)。
視圖:
輸入:提供相應的操作界面,方便用戶使用。
輸出:將模型返回的結果以合適的方式來展現。
控制器:
協調: 視圖向控制器發請求,由控制器來選擇相應的
模型來處理;模型返回的結果給控制器,由控制器來
選擇合適的視圖,生成相應的界面給用戶。
(2)mvc最大的優點:
可以實現模型的復用:
一方面,模型只返回處理結果,并不用關心這些
結果如何展現。我們可以提供不同的視圖來展現這些
數據;另外一方面,對于同一個模型,我們可以提供
不同的操作界面來訪問。
(3)開發一個web應用,如何使用mvc? (javaee)
1)模型使用java類來實現,視圖使用jsp,
控制器使用servlet或者是filter來實現。
2)所有請求先發送給控制器(servlet),由控制器去選擇
模型(java類)來處理;模型的處理結果交給控制器,控制器
選擇視圖(jsp)。
1.軟件體系結構主要包括哪3個部分?
答:軟件體系結構=構件+連接件+約束。軟件體系結構是具有一定形式的結構化元素,即構件的集合,包括處理構件、數據構件和連接構件。處理構件負責對數據進行加工,數據構件是被加工的信息,連接構件把體系結構的不同部分組組合連接起來。這一定義注重區分處理構件、數據構件和連接構件,這一方法在其他的定義和方法中基本上得到保持。
2.軟件重用相關內容。
答:
定義:軟件重用,是指在兩次或多次不同的軟件開發過程中重復使用相同或相似軟件元素的過程。軟件元素包括程序代碼、測試用例、設計文檔、設計過程、需要分析文檔甚至領域知識。通常,可重用的元素也稱作軟構件,可重用的軟構件越大,重用的粒度越大。
一、軟件重用定義
軟件重用(Software Reuse,又稱軟件復用或軟件再用)的概念對于大家并不陌生。早在1968年的NATO軟件工程會議上就已經提出可復用庫的思想。軟件重用的定義也很多,比較權威和通用的一種是:軟件重用是利用事先建立好的軟部品創建新軟件系統的過程。這個定義蘊含著軟件重用所必須包含的兩個方面:
1. 系統地開發可重用的軟部品。這些軟部品可以是代碼,但不應該僅僅局限在代碼。我們必須從更廣泛和更高層次來理解,這樣才會帶來更大的重用收益。比如軟部品還可以是:分析,設計,測試數據,原型,計劃,文檔,模板,框架等等。
2. 系統地使用這些軟部品作為構筑模塊,來建立新的系統。
二、軟件重用的好處
軟件重用會帶來以下好處:
1. 提高軟件生成率。
2. 縮短開發周期 。
3. 降低軟件開發和維護費用。
4. 生產更加標準化的軟件。
5. 提高軟件開發質量。
6. 增強軟件系統的互操作性。
7. 減少軟件開發人員數量。
8. 使開發人員能比較容易的適應不同性質的項目開發。
三、軟件重用形式
軟件重用的形式(或手段)很多,重用的級別有大有小。主要有以下幾種:
1. 源代碼模塊或者類一級的重用。這是最基本的軟件重用形式。
2. 二進制形式的重用。如組件重用。
3. 組裝式重用。比如:把好幾個應用程序的功能集成在一起。例如,要建立一個門戶站點應用,登陸用戶既可以查詢天氣情況,又可以查看股市行情,還可以在線購物。這些功能由不同網絡應用服務供應商提供,通過這種組裝式重用,就可以非常容易地把上述功能都集成到新的門戶站點中。
4. 分析級別重用。
5. 設計級別重用。
6. 軟件文檔重用。
?四、軟件重用分類
? 為軟件重用分類比較困難,因為軟件重用技術眾多,一種重用技術可以包括多種重用形式。比如說:框架即可以包括代碼級重用,也可以包括設計級重用。有一種分類方法是按照軟件重用所應用的領域范圍,把重用劃分為兩種:橫向重用和縱向重用。
1. 橫向重用是指重用不同應用領域中的軟件元素,例如數據結構、分類算法、人機界面構件等。標準函數庫是一種典型的原始的橫向重用機制。
2. 縱向重用是指在一類具有較多公共性的應用領域之間進行軟部品重用。因為在兩個截然不同的應用領域之間實施軟件重用非常困難,潛力不大,所以縱向重用才廣受矚目,并成為軟件重用技術的真正所在??v向重用活動的主要包括以下幾個步驟:
1) 首先進行域分析。根據應用領域的特征及相似性預測軟部件的可重用性。
2) 然后進行軟部品的開發。一旦確認了軟部件的重用價值,即可進行軟部品的開發并對具有重用價值的軟部品進行一般化,以便它們能夠適應新的類似的應用領域。
3) 最后,軟部件及其文檔即可進入軟部品庫,成為可供后續項目使用的可重用資源。
?五、流行的軟件重用技術
最理想的重用技術是它的重用產品能夠和用戶的需求完全一致,不需要用戶做任何自定義,并且能夠無需用戶學習就能夠被使用。然而,一種重用技術能夠適合今天,可能不適合明天。一個重用產品越是能夠被自定義,它越是可能在一個特定的環境下被使用,但是這也需要用戶進行更多的學習,研究和實踐。
自從軟件重用思想產生以來,計算機科學家和軟件工程師就致力與軟件重用的技術的研究和實踐。在30多年的時間內,出現多種軟件重用技術,如:庫函數,模板,面向對象、設計模式、組件、框架、構架。
下面是應用程序框架和其它三種軟件流行的重用技術的比較。
1. 庫函數
庫函數是很早的軟件重用技術。很多編程語言為了增強自身的功能,都提供了大量的庫函數。對于庫函數的使用者,他只要知道函數的名稱,返回值的類型, 函數參數和函數功能就可以對其進行調用。
2. 面向對象
面向對象技術是近三十年來學術界和工業界研究和應用的一個熱點。面向對象技術通過方法、消息、類、繼承、封裝、和實例等機制構造軟件系統,并為軟件重用提供強有力的支持。面向對象方法已成為當今最有效、最先進的軟件開發方法。與函數庫對應,很多面向對象語言為應用程序開發者提供了易于使用的類庫,如VC++中的MFC。
3. 模板
模板相當于工業生產中所用的“模具”。有各種各樣的模板(如文檔模板,網頁模板等),利用這些模板可以比較快速地建立對應的軟件產品。模板把不變的封裝在內部,對可能變化的部分提供了通用接口,由使用者來對這些接口進行設定或實現。
4. 設計模式
設計模式作為重用設計信息的一種技術,在面向對象設計中越來越來流行。設計模式描述了在我們周圍不斷重復發生的問題,該問題的解決方案的核心和解決方案實施的上下文。設計模式命名一種技術并且描述它的成本和收益,共享一系列模式的開發者擁有共同的語言來描述他們的設計。
5. 構件
普通意義上的構件應從以下幾個方面來理解:
1) 構件應是抽象的系統特征單元,具有封裝性和信息隱蔽,其功能由它的接口定義。
2) 構件可以是原子的,也可以是復合的。因此它可以是函數,過程或對象類,也可以是更大規模的單元。一個子系統是包含其它構件的構件。
3) 構件是可配置和共享的,這是基于構件開發的基石,且構件之間能相互提供服務。
6. 構架
普通意義上的構架應從以下幾個方面來理解:
1) 構架是與設計的同義理解,是系統原型或早期的實現。
2) 構架是高層次的系統整體組織。
3) 構架是關于特定技術如何合作組成一個特定系統的解釋。
7. 框架
如果把軟件的構建過程看成是傳統的建筑過程;框架的作用相當于為我們的房屋搭建的“架子”??蚣軓闹赜靡饬x上說,是一個介于構件和構架之間的一個概念。構件,框架和構架三者的主要區別在于:對重用的支持程度的不同:
1) 構件是基礎,也是基于構件開發的最小單元。構件重用包括可重用構件的制作和利用可重用構件構造新構件或系統,
2) 一個框架和構架包含多個構件。這些構件使用統一的框架(構架)接口,使得構造一個應用系統更為容易。
3) 框架重用包括代碼重用和分析設計重用,一個應用系統可能需要若干個框架的支撐,從這個意義上來說,框架也是一個“構件”的同時,框架又是一類特定領域的構架。
4) 構架重用不僅包括代碼重用和分析設計重用,更重要的是抽象層次更高的系統級重用。
5) 框架和構架的重用層次更高,比構件更為抽象靈活,但也更難學習和使用。
3.黑盒重用和白盒重用。
答:
黑盒重用:是指對已有構建無需做任何修改,直接進行重用,這是理想的重用方式。
白盒重用:是指已有構建并不能完全符合用戶需求,需要根據用戶需求進行適應性修改后才可使用。
4.軟件構件。
答:軟件系統中具有相對獨立功能,可以明確辨識,接口由規約指定,與語境有明顯依賴關系,可獨立部署,且多由第三方提供的可組裝軟件實體。
5.基于UML的軟件體系結構中,什么是“4+1”視圖模型。
答:
?Philippe Kruchten提出的4+1視圖方法
該方法的不同架構視圖承載不同的架構設計決策,支持不同的目標和用途:
邏輯視圖:當采用面向對象的設計方法時,邏輯視圖即對象模型。
開發視圖:描述軟件在開發環境下的靜態組織。
處理視圖:描述系統的并發和同步方面的設計。
物理視圖:描述軟件如何映射到硬件,反映系統在分布方面的設計。
運用4+1視圖方法:針對不同需求進行架構設計
如前文所述,要開發出用戶滿意的軟件并不是件容易的事,軟件架構師必須全面把握各種各樣的需求、權衡需求之間有可能的矛盾之處,分門別類地將不同需求一一滿足。
6.類圖、用例圖、順序圖、狀態轉換圖。
答:
類圖:類圖(Class diagram)是顯示了模型的靜態結構,特別是模型中存在的類、類的內部結構以及它們與其他類的關系等。類圖不顯示暫時性的信息。類圖是面向對象建模的主要組成部分。它既用于應用程序的系統分類的一般概念建模,也用于詳細建模,將模型轉換成編程代碼。類圖也可用于數據建模。
用例圖:用例圖是指由參與者(Actor)、用例(Use Case),邊界以及它們之間的關系構成的用于描述系統功能的視圖。用例圖(User Case)是外部用戶(被稱為參與者)所能觀察到的系統功能的模型圖。用例圖是系統的藍圖。用例圖呈現了一些參與者,一些用例,以及它們之間的關系,主要用于對系統、子系統或類的功能行為進行建模。
順序圖:順序圖是將交互關系表示為一個二維圖??v向是時間軸,時間沿豎線向下延伸。橫向軸代表了在協作中各獨立對象的類元角色。類元角色用生命線表示。當對象存在時,角色用一條虛線表示,當對象的過程處于激活狀態時,生命線是一個雙道線。
狀態轉換圖:通過描繪系統的狀態及引起系統狀態轉換的事件,來表示系統的行為。此外狀態轉換圖還指明了作為特定事件的結果系統將做哪些動作(例如,處理數據)。因此狀態轉換圖提供了行為建模機制。
在狀態轉換圖中,每一個節點代表一個狀態,其中雙圈是終結狀態。許多單片機教材上對工作模式的表達通常采用狀態圖的形式。
7.以圖書管理系統為例,分析本系統應有的模塊,掌握相關子系統的UML用例圖、圖書查詢預約系統的順序圖。
8.B/S、C/S。
答:B/S結構(Browser/Server結構)結構即瀏覽器和服務器結構。它是隨著Internet技術的興起,對C/S結構的一種變化或者改進的結構。在這種結構下,用戶工作界面是通過WWW瀏覽器來實現,極少部分事務邏輯在前端(Browser)實現,但是主要事務邏輯在服務器端(Server)實現,大大簡化了客戶端電腦載荷,減輕了系統維護與升級的成本和工作量,降低了用戶的總體成本(TCO)。
B/S結構最大的優點就是可以在任何地方進行操作而不用安裝任何專門的軟件。只要有一臺能上網的電腦就能使用,客戶端零維護。系統的擴展非常容易,只要能上網,再由系統管理員分配一個用戶名和密碼,就可以使用了。甚至可以在線申請,通過公司內部的安全認證(如CA證書)后,不需要人的參與,系統可以自動分配給用戶一個賬號進入系統。
C/S (Client/Server)結構,即大家熟知的客戶機和服務器結構。它是軟件系統體系結構,通過它可以充分利用兩端硬件環境的優勢,將任務合理分配到Client端和Server端來實現,降低了系統的通訊開銷。目前大多數應用軟件系統都是Client/Server形式的兩層結構,由于現在的軟件應用系統正在向分布式的Web應用發展,Web和Client/Server 應用都可以進行同樣的業務處理,應用不同的模塊共享邏輯組件;因此,內部的和外部的用戶都可以訪問新的和現有的應用系統,通過現有應用系統中的邏輯可以擴展出新的應用系統。這也就是目前應用系統的發展方向。
三、B/S、C/S結構軟件技術上的比較
C/S結構軟件(即客戶機/服務器模式)分為客戶機和服務器兩層,客戶機不是毫無運算能力的輸入、輸出設備,而是具有了一定的數據處理和數據存儲能力,通過把應用軟件的計算和數據合理地分配在客戶機和服務器兩端,可以有效地降低網絡通信量和服務器運算量。由于服務器連接個數和數據通信量的限制,這種結構的軟件適于在用戶數目不多的局域網內使用。國內目前的大部分ERP(財務)軟件產品即屬于此類結構。
B/S(瀏覽器/服務器模式)是隨著Internet技術的興起,對C/S結構的一種改進。在這種結構下,軟件應用的業務邏輯完全在應用服務器端實現,用戶表現完全在Web服務器實現,客戶端只需要瀏覽器即可進行業務處理,是一種全新的軟件系統構造技術。這種結構更成為當今應用軟件的首選體系結構。e通管理系列產品即屬于此類結構。
9.軟件是否具有一定的演化能力,主要體現在哪些方面?
答:是
1.可分析性:具有良好演化能力的軟件應該容易進行分析,以便可以快速的確定需要進行修改的部分。
2.可修改性:具有良好演化能力的軟件應該可以方便容易的修改
3.穩定性:具有良好演化能力的軟件應該具有避免由于修改而造成不良后果的能力。
4.可測試性:驗證一個軟件演化后修改有效的能力。
10.軟件演化與軟件維護的關系。
答:
軟件維護類型
糾錯性維護(Corrective maintenance)
由于軟件中的缺陷引起的修改
完善性維護(Perfective maintenance)
根據用戶在使用過程中提出的一些建設性意見而進行的維護活動
適應性維護(Adaptive maintenance)
為適應環境的變化而修改軟件的活動
預防性維護(Preventive maintenance)
為了進一步改善軟件系統的可維護性和可靠性,并為以后的改進奠定基礎
11.靜態演化、動態演化的概念。
答:靜態演化是指軟件在停機狀態下的演化,期優點是不用考慮運行狀態的遷移,同時也沒有活動的進程需要處理,然而停止一個應用程序就意味著中斷它提供的服務,造成軟件暫時失效。
動態演化是指軟件在執行期間的演化,相對于靜態演化而言,動態演化過程具有持續可用的顯著特點,軟件不會存在暫時的失效。但由于涉及狀態遷移等問題,比靜態演化更復雜,包括動態更新,增加,和刪除構件,動態配置系統結構等問題。
12.單體演化、全局演化的概念。
答:圖
13在體系結構層次上兩類評估技術
https://wenku.baidu.com/view/88feb6d5a300a6c30d229f65.html
14.類之間的關系:關聯,泛化,依賴,細化,
在UML類圖中,常見的有以下幾種關系: 泛化(Generalization), 實現(Realization),關聯(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)。
1. 泛化(Generalization)
【泛化關系】:是一種繼承關系,表示一般與特殊的關系,它指定了子類如何特化父類的所有特征和行為。
例如:老虎是動物的一種,即有老虎的特性也有動物的共性。
【箭頭指向】:帶三角箭頭的實線,箭頭指向父類
???
2. 實現(Realization)
【實現關系】:是一種類與接口的關系,表示類是接口所有特征和行為的實現.
【箭頭指向】:帶三角箭頭的虛線,箭頭指向接口。
3.關聯(Association)
【關聯關系】:是一種擁有的關系,它使一個類知道另一個類的屬性和方法;如:老師與學生,
丈夫與妻子關聯可以是雙向的,也可以是單向的。
雙向的關聯可以有兩個箭頭或者沒有箭頭,單向的關聯有一個箭頭。
【代碼體現】:成員變量
【箭頭及指向】:帶普通箭頭的實心線,指向被擁有
?????????????????????????
上圖中,老師與學生是雙向關聯,老師有多名學生,學生也可能有多名老師。
但學生與某課程間的關系為單向關聯,一名學生可能要上多門課程,課程是個抽象的東西他不擁有學生。
下圖為自身關聯:
?4.聚合(Aggregation) ????????????????????????
【聚合關系】:是整體與部分的關系,且部分可以離開整體而單獨存在。
如車和輪胎是整體和部分的關系,輪胎離開車仍然可以存在。
聚合關系是關聯關系的一種,是強的關聯關系;關聯和聚合在語法上無法區分,必須考察具體的邏輯關系。
【代碼體現】:成員變量
【箭頭及指向】:帶空心菱形的實心線,菱形指向整體
???????????????????????????????????????
?5.組合(Composition) ????????????????????????
【組合關系】:是整體與部分的關系,但部分不能離開整體而單獨存在。
如公司和部門是整體和部分的關系,沒有公司就不存在部門。
組合關系是關聯關系的一種,是比聚合關系還要強的關系,
它要求普通的聚合關系中代表整體的對象負責代表部分的對象的生命周期。
【代碼體現】:成員變量
【箭頭及指向】:帶實心菱形的實線,菱形指向整體
??????????????????????????????????????????????????????
6. 依賴(Dependency)
【依賴關系】:是一種使用的關系,即一個類的實現需要另一個類的協助,
所以要盡量不使用雙向的互相依賴.
【代碼表現】:局部變量、方法的參數或者對靜態方法的調用
【箭頭及指向】:帶箭頭的虛線,指向被使用者
???????????????????????
15軟件體系結構的定義和作用
16.什么是UML
答:??UML是統一建模語言,是一種可視化的面向對象建模語言,是一種用來對真實世界物理進行建模的標準標記,用圖形方式表現典型的面向對象系統的整個結構。它的作用域不局限于支持面向對象的分析與設計,還支持從需求分析開始的軟件開發的全過程。
UML的概念包括了UML語義(Semantics)和UML表(Notation)兩個部分。UML語義定義了靜態模型和動態模型。結構模型強調系統的對象結構,入對象的類、接口、屬性和關系;行為模型關注的是系統對象的行為動作,如對象的方法、交互、協作和狀態。UML表示符為開發者或開發工具使用這些圖形符號和文本語法為系統建模提供了標準。重要內容由9種圖來定義,包括用例圖、類圖、對象圖、狀態圖、構件圖、部署圖、協作圖、交互序列圖、活動圖。
17常用體系結構風格有哪些
數據流風格:批處理序列,管道/過濾器 調用/返回風格:主程序/子程序,面向對象風格,層次結構 獨立構件風格:進程通信,事件系統 虛擬機風格:解釋器,基于規則的系統 倉庫風格:數據庫系統,超文本系統,黑板系統
18飲水機售水系統用例圖
17.常用的體系結構風格
答:管道/過濾器體系結構風格
面相對象體系結構風格
分層體系結構風格
客戶機/服務器體系結構風格
瀏覽器/服務器體系結構風格
事件驅動體系結構風格
數據共享體系結構風格
解釋器體系結構風格
C2體系結構風格
19.MVC體系結構風格中,M/V/C分別代表什么?
答:(1)什么是mvc?
是一種軟件架構的思想,將軟件按照模型、視圖、控制器
來劃分。模型負責封裝業務處理邏輯,視圖負責輸入和輸出(
表示邏輯),控制器負責協調模型和視圖。
模型:
封裝:需要先寫接口,然后實現接口中聲明的方法。
業務處理邏輯:業務本身的處理流程,另外,還包括
為保證業務處理正常可靠執行的基礎服務(事務、安全、
日志等等)。
視圖:
輸入:提供相應的操作界面,方便用戶使用。
輸出:將模型返回的結果以合適的方式來展現。
控制器:
協調: 視圖向控制器發請求,由控制器來選擇相應的
模型來處理;模型返回的結果給控制器,由控制器來
選擇合適的視圖,生成相應的界面給用戶。
(2)mvc最大的優點:
可以實現模型的復用:
一方面,模型只返回處理結果,并不用關心這些
結果如何展現。我們可以提供不同的視圖來展現這些
數據;另外一方面,對于同一個模型,我們可以提供
不同的操作界面來訪問。
(3)開發一個web應用,如何使用mvc? (javaee)
1)模型使用java類來實現,視圖使用jsp,
控制器使用servlet或者是filter來實現。
2)所有請求先發送給控制器(servlet),由控制器去選擇
模型(java類)來處理;模型的處理結果交給控制器,控制器
選擇視圖(jsp)。
總結
以上是生活随笔為你收集整理的软件体系结构期末复习题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android ContentProvi
- 下一篇: HDU 2818 Building Bl