軟考筆記--構件與軟件復用

構件也稱為組件(component),是一個功能相對獨立的具有可復用價值的軟件單元。在面向對象的方法中,一個構件有一組對象組成,包含可一些協作的類的集成,它們協同工作來提供一種系統功能。可復用性是指系統和其組成部分能在其它系統重復使用的功能。軟件開發的聲生命周期都有可復用的價值,包括項目的組織,軟件需求、設計、文檔、實現,測試方法和測試用例,都是可以被重復利用和借鑒的有效資源,可復用性體現在軟件的各個層次。

軟甲復用的形式可分為垂直式復用和水平式復用。水平式復用是復用不同應用領域中的軟件元素。標準函數庫是一種典型的原始水平式復用機制;垂直式復用是在一類具有較多公共性的應用領域之間復用軟件構件。由于由于在兩個截然不同的應用領域之間進行軟件復用潛力不大,所以垂直式復用受到廣泛關注。

一.主流構件標準

為了達到復用的目的,構件應當是內聚的,并具有穩定的、公開的接口。為了是構件更切合實際、更有效地被復用,構件應當具備可變現,以提高其通用性。為了將不同軟件開發商在不同軟硬件平臺上開發的構件組裝成一個應用系統,必須解決異構平臺的各構件之間的互操作問題。目前,主流的構件標準有對象管理集團(OMG)的CORBA,Microsoft的構件對象模型COM和分布式構件對象模型DCOM和sun的java企業Bean,EJB。

1.CORMA

CORMA是由OMG指定的一個工業標準,其主要目標是提供一種機制,使得對象可以透明的發出請求和獲得應答,從而建立一個分布式應用環境。

在OMG的對象管理結構中,ORB是一個關鍵的通信機制,它以實現互操作性為主要目標,處理對象之間的消息分布。CORBA定義了一種面向對象的構件開發方法,使不同的應用系統可以共享構件。每個對象都將其內部操作細節封裝起來,同時又向外界提供精確定義的接口,從而降低了應用系統的復雜性,也減低了軟件開發費用。

2.EJB

EJB是用于開發和部署多層結構的、分布式的,面向對象的java應用系統的跨平臺的構件架構。使用EJS編寫的應用程序具有可擴展性和交互性,以及多用戶的安全的特性。這些應用只需要寫一次,就可以發布到任何支持EJB規范的服務器平臺上。

3.COM/DCOM

Microsoft的COM定義了構件和它們的客戶之間相互作用的方式,使得構件和客戶端無需任何中介構件就能相互聯系。DCOM擴展了COM,使其能夠支持在局域網、廣域網甚至Internet上不同計算機的對象之間的通信。DCOM是COM的無縫擴展,所以可以將基于COM的應用,構件、工具和知識轉移到標準化的分布式計算領域中。

二.構件的獲取與管理

存在大量的、可復用的構架是有效地使用復用技術的前提。對大量的構件進行有效地管理,以方便構件的存儲,檢索和提取,是成功復用構件的必要保證。

1.構件的獲取

基于構件的軟件開發中,可以通過多種不同的途徑來獲取構件:(1)從現有構件中獲取符和要求的構件;(2)通過遺留工程,將具有潛在復用價值的構件提取出來,得到可復用的構件。(3)從市場上購買現成的商業構件;(4)開發新的符和要求的構件。

2.構件的組織

當企業獲得了數量眾多的構件之后,就需要建立構件庫。為了給復用者在查詢構件時提供方便,同時也為了更好的復用構件,必須對獲取的構件進行分類,并置于構件庫的適當位置。可復用技術對構件庫組織的方法的要求如下所述。

(1)支持構件庫的各種維護動作;

(2)不僅要支持精確匹配,還要支持相似構件的查找

(3)不僅能進行簡單的語法匹配,而且能夠查找在功能或行為方面等價或相似的構件。

(4)對應用領域具有較強的描述能力和較好的描述精度。

(5)管理員和用戶容易使用。

構件的分類方法可以分為三大類:關鍵字分類法,刻面分類法和超文本組織方法。

(1)關鍵字分類法:關鍵字分類法將應用領域的概念按照從抽象到具體的順序逐次分解為樹形圖結構,每一個概念用一個描述性的關鍵字表示。

(2)刻面分類法。刻面分類法定義若干刻畫構件特征的刻面,每個面保護若干概念,這些概念描述構件在刻面上的特征。

(3)超文本方法。與基于數據庫系統的構件庫組織方法不同,基于全文檢索技術, 其主要思想是:所有構件必須輔以詳盡的功能或行為說明文檔;說明中出現的重要概念或構件以網狀鏈接方式相互連接;檢索者在閱讀文檔的過程中可按照人類的聯想思維方 式任意跳轉到包含相關概念或構件的文檔;全文檢索系統將用戶給出的關鍵字與說明文 檔中的文字進行匹配,實現構件的瀏覽式檢索。超文本組織方法為開發和復用構件提供了直觀的多媒體方式。由于網狀結構比較自由、松散,因此,超文本方法比前兩種方法更易于修改構件庫的結構。

三.構建復用的方法

軟件開發的目的是復用,要讓構件在新的軟件系統中發揮作用,復用者首先必須檢索與提取構件,然后理解與評價構件。

1.檢索與提取構件

(1)基于關鍵字的檢索

系統在圖形用戶界面上將構件庫的關鍵字樹形結構直觀地展示給用戶,復用者通過樹形結構的逐級瀏覽,尋找關鍵字并提取響應的構件。

(2)刻面檢索法。

該方法基于刻面分類法,有三部構成,分別是構造查詢、檢索構件和對構件進行排序。

(3)超文本檢索法。復用者首先給出一個或數個關鍵字,系統在構件的說明文檔中進行精確或模糊的語法匹配,匹配成功后,向復用者列出相應的構件說明。

2.理解與評價構件

要使庫中的構件在當前的開發項目中發揮作用,準確地理解構件是至關重要的,要求構件的開發過程遵循公共標準,在構件庫的文檔中全面而準的說明構件的功能與行為、相關領域的知識、可適應性約束條件與例外情形、可預見的修改部分及修改方法。對構件可復用性的評價,是通過收集并分析構件的復用者在實際復用該構件的歷史過程中的各種反饋信息來完成的。這些信息包括復用成功的次數、對構件的修改量、構件的健壯性度量和其他性能度量等。

3.修改構件

大多數情況下,必須對構件進行或多或少的修改,以適應新的需求。為了減少構件修改的工作要求開發人員盡量使構件的功能、行為和接口設計更為抽象化、通用化和參數化。這樣,復用者即可通過對實參的選取來調整構件的功能或行為。如果這種調整仍不足以使構件適用于新系統,復用者就必須借助設計信息和文檔來修改構件。

4.構件的組裝

構件的組裝時指將庫中的構件經適當修改后相互連接,或將他們與當前的開發系統中的軟件元素相連接,最終構成新的目標軟件。構件組裝技術大致可以分為三種:基于功能的組裝技術、基于數據的組裝技術和面向對象的組裝技術。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717603.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717603.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717603.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

138.樂理基礎-等音、等音程的意義

上一個內容:137.樂理基礎-協和音程、不協和音程 上一個內容里練習的答案: 等音、等音程的意義,首先在 19.音階 里寫了,一個調使用的音階應當是從主音快開始,以階梯狀的形式進行到主音結束,這樣才能明顯從樂…

在docker中運行 pip 報錯 Can‘t start new thread

原因源頭 stackoverflowhis is because the default seccomp profile of Docker 20.10.9 is not adjusted to support the clone() syscall wrapper of glibc 2.34 adopted in Ubuntu 21.10 and Fedora 35.由于docker 版本與最新版 python 容器沖突導致 解決方案 以下三種方…

b站小土堆pytorch學習記錄—— P16 神經網絡的基本骨架 nn.Module的使用

文章目錄 一、前置知識1.nn是什么2.nn如何使用 二、代碼 一、前置知識 1.nn是什么 在深度學習中,“nn” 通常是指神經網絡(Neural Network)的縮寫。神經網絡是一種由大量神經元(neurons)相互連接而成的模型&#xff…

【Python】成功解決TypeError: list indices must be integers or slices, not float

【Python】成功解決TypeError: list indices must be integers or slices, not float 🌈 個人主頁:高斯小哥 🔥 高質量專欄:Matplotlib之旅:零基礎精通數據可視化、Python基礎【高質量合集】、PyTorch零基礎入門教程&…

vue 打包配置

vue打包配置記錄一下 publicPath: 打包的路徑 默認值:/(根目錄); 任意路徑:""或者"./" (相對路徑) 參照:Vue CLI4.0 webpack配置屬性——publicPath_publicpath怎么寫相對路徑-CSDN…

springboot讀取自定義配置

springboot讀取自定義配置 application.yml自定義配置 my-app:ip1:#dmz1 ftp服務器ipAddress: 172.12.23.456port: 21username: adminpassword: adminip2:ipAddress: 172.12.23.457port: 21username: adminpassword: admin方式1,Value注解 Component public clas…

兩天學會微服務網關Gateway-Gateway工作原理

鋒哥原創的微服務網關Gateway視頻教程: Gateway微服務網關視頻教程(無廢話版)_嗶哩嗶哩_bilibiliGateway微服務網關視頻教程(無廢話版)共計17條視頻,包括:1_Gateway簡介、2_Gateway工作原理、3…

【網站項目】144校園二手物品交易平臺

🙊作者簡介:擁有多年開發工作經驗,分享技術代碼幫助學生學習,獨立完成自己的項目或者畢業設計。 代碼可以私聊博主獲取。🌹贈送計算機畢業設計600個選題excel文件,幫助大學選題。贈送開題報告模板&#xff…

FRM模型十四:FRA估值

什么是FRA FRA(Forward rate agrreement)遠期利率協議,是一種場外衍生品。FRA在0時刻確定,在未來時刻進行交易的協議。例如FRA3,6表示雙方約定在3個月后以Rk的利率水平借款3個月。 應用場景:某公司未來3個月有融資需…

XWPFTemplate:基于Apache POI的Word文檔模板引擎

1. 前言 在Java領域中,處理Office文檔是一項常見的需求,尤其是對于生成報告、合同或其他結構化文檔。Apache POI是一個廣泛使用的庫,用于讀寫Microsoft Office格式文件(包括Word、Excel等)。然而,直接操作…

Kotlin 中編寫靜態方法的方式詳解

在 Kotlin 中,與 Java 不同,沒有 static 關鍵字來定義靜態方法。但是 Kotlin 提供了一種類似的機制來實現靜態方法。本文將介紹 Kotlin 中編寫靜態方法的兩種方式,并給出 Kotlin 和 Java 中的調用示例代碼。 方式一:使用頂層函數…

Vue 3 中的 $emit 函數是如何工作的

在 Vue.js 框架中,組件間的通信是一個核心概念。Vue 提供了多種方式來實現父子組件間的通信,其中 $emit 是子組件向父組件發送消息的一種常用手段。在 Vue 3 中,隨著 Composition API 的引入,$emit 的使用方式也發生了一些變化&am…

[HackMyVM] 靶場 Wave

kali:192.168.56.104 主機發現 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (Un…

OpenCV:開源計算機視覺的魔力之門

在當今這個信息爆炸的時代,圖像和視頻已經成為我們獲取和傳遞信息的主要方式之一。從社交媒體上的照片分享,到安防監控、自動駕駛等領域的圖像識別與處理,計算機視覺技術正日益改變著我們的生活。而在這場技術革命中,OpenCV(Open Source Computer Vision Library)這一開源…

Java JDBC JDBC事務管理 JDBC連接池(阿里巴巴Druid連接池、C3P0連接池) JDBC工具類

Java數據庫連接 Java DataBase Connectivity。JDBC 規范定義接口,具體的實現由各大數據庫廠商來實現。 JDBC可讓Java通過程序操作關系型數據庫,JDBC基于驅動程序實現與數據庫的連接與操作。 JDBC 是 Java 訪問數據庫的標準規范,真正怎么操作…

C++ 滑動窗口

例1 209. 長度最小的子數組 ①窗口大小不固定 ②求最小長度 -> ret INT_MAX ③數組內的值都大于0, 符合單調性(sum nums[right] -> sum增大) while里面符合條件,在里面更改ret 參考代碼 class Solution { public:i…

redis常見面試問題合集

什么是Redis? Redis是一個開源的、基于內存的數據結構存儲系統,它可以用作數據庫、緩存和消息隊列。Redis支持多種數據類型,包括字符串、列表、集合、有序集合和哈希表。 Redis支持的數據類型有哪些? Redis支持五種主要的數據類…

【LeetCode打卡】Day25|216.組合總和III、17.電話號碼的字母組合

學習目標: 216.組合總和III 17.電話號碼的字母組合 學習內容: 216.組合總和III 題目鏈接 &&文章講解 找出所有相加之和為 n 的 k 個數的組合,且滿足下列條件: 只使用數字1到9每個數字 最多使用一次 返回所有可能的有效…

集成測試之我的初步學習與總結

基本概念 將軟件集成起來后進行測試。 集成測試又叫子系統測試、組裝測試、部件測試等。集成測試主要是針對軟件高層設計進行測試,一般來說是以模塊和子系統為單位進行測試。 集成測試包含的層次 模塊內的集成,主要是測試模塊內各個接口間的交互集成…

我是如何系統自學python的,值得一看!

當然,我很樂意幫助你規劃一個系統的Python自學計劃。以下是我為你準備的一個簡潔、高效、實戰的Python自學指南: 第一步:基礎語法和數據結構 學習Python的基本語法,包括變量、數據類型、運算符、條件語句、循環語句等。理解Pyth…