5 構件屬性
5.1 說明屬性
構件說明屬性:: = < 構件名字 >< 構件來源 >< 版權信息 >< 版本歷史 >< 內容摘要 >< 關鍵字 >
< 構件名字 > :: = 英語名字且唯一+漢語名字
<構件來源>::= 構件提供者 [+聯系人+聯系方式+構件提供日期]
< 版權信息 > :: = < 作者名字 >< 版權所有者名字 >< 版本號 >< 出版日期 >< 收錄日期 >
<版本號>::= 版權所有者定義的版本號 | CALyymmdd99 [注: 本室版權 編碼]
< 收錄日期 > :: = 收錄進構件庫的日期
< 版本歷史 > :: = 文字說明,用逗號“,”分隔的本版本前的版本號系列。
< 內容摘要 > :: = 文字說明,描述構件的應用領域、構件類型、開發工具、開發方式、
運行環境、主要功能和 復用 程度。
<關鍵字>::= 說明構件的應用領域、類型和重要功能的4個左右的英文詞。
5.2 使用屬性
構件使用屬性::= <應用領域><構件形式><構件類型><開發方式><開發工具>
<運行環境><復 用程度 > [10] <使用次數><修改次數><約束申明>
<應用領域>::= [公共 | PUB] | [辦公自動化 | OA] | [電子商貿 | EC] | [其它 | OTHER]
<構件形式>::= <文檔 | DOC>|<源碼 | CODE>|<二進制 | BIN>|<工程 | PROJ>
<文檔 | DOC >::= <規格說明 | RSD> | <設計說明 | DAD> | <實現說明 | IMD>
| <測試案例 | TCD> | <使用說明 | UD> | <工程書 | PJD>
<工程書 | PJD>::= [規格說明,設計說明,實現說明,測試案例,使用說明]
<源碼 | CODE >::= 程序的源碼形式,參見《構件的程序寫作規范》。
<二進制 | BIN >::= <DLL>|<LIB>|<ActiveX>|<CORBA對象>|<其它>
[注:構件的二進制形式可以通過對<源碼 | CODE >的封裝、編譯而來。如果要編譯為LIB(靜態庫),只要簡單的更改源程序的make文件中的輸出部分即可。對于Windows平臺而言,如果要編譯為DLL,只要增加一個定義文件,如interface.def,在其中定義要公開的函數名稱即可。如果要編譯為ActiveX,可以使用VC中的ActiveX向導生成一個具有相同接口的空ActiveX 控件 ,然后使用源碼構件的接口定義ActiveX的接口。如果要編譯成CORBA對象,需要使用OMG IDL定義接口,然后使用IDL編譯程序得到根程序和程序框架,然后使用源碼構件的界面實現CORBA對象。]
<工程 | PROJ >::= [文檔,源碼,二進制]
<構件類型> [15][16] ::= <人機界面 | HIC>|<任務構件 | TMC>|<數據訪問構件 | DMC>
|<數據庫接口 | DIC>|<子系統 | SUBS>|<應用系統 | APPS>
<人機界面 | HIC >::= GUI的“類”、函數、窗口、Web頁面、演示等。
<任務構件 | TMC >::= 在人機界面和數據庫接口之間的 中間件 。
<數據訪問構件 | DMC >::= 支持SQL操作(如增、刪、修、查等)的構件。
<數據庫接口 | DIC >::= 驅動數據庫管理系統命令 ( 如連接、斷開、事務、回
退、訪問等 ) 執行的構件。
<子系統 | SUBS >::= 應用的子系統程序包。
<應用系統 | APPS >::= 應用系統程序包。
<開發方式>::= [面向對象 | OO ] | [結構化 | SD ] | [混合 | MIX]
<開發工具>::= 說明主要的構件開發工具、開發環境和支持軟件。
<運行環境>::= 說明構件運行必須依賴的操作系統、數據庫或網絡等。
<復 用程度 >::= <完全復用>|< 小修改復 用>|<大修改復用>|<新構件>
<完全復用>::= 構件的所有代碼不加修改的復用
< 小修改復 用>::= 構件的操作或代碼被修改的量在25%以下
<大修改復用>::= 構件的操作或代碼被修改的量在25%以上
<新構件>::= 新制作的構件
[注:參考資料 [10] 中的上列經驗來自 NASA/Goddard Software Engineering Laboratory]
<使用次數>::= 構件被使用的次數。新構件為0, 每使用 一次加1。
< 修改次數 > :: = 構件被使用者在他的環境下修改的次數。初值為 0 ,每修改一次加 1 。
< 約束申明 > :: = 構件不能被使用的約束條件,可能是技術的、經濟的或法律的約束。
5.3 內容屬性
構件內容屬性:: = < 構件體 >< 構件關系 >
< 構件體 > :: = < 構件主體 >< 構件子體 >
< 構件主體 > :: = 不包含它所復用的構件的主程序、基本“類”、主函數等程序體
< 構件子體 > :: = 構件本身不包含它所復用的構件除了構件主體以外的其它程序體
< 構件關系 > :: = [ “構件主體”復用的“構件名字”+ < 構件的連接關系 > ] …
< 構件的連接關系 > :: = < 連接關系 >
< 連接關系 >::= 繼承關系 | 聚合關系 | 聯合關系 | 數據流關系
5.4 結構屬性 [17] [10] [18][19][20]
構件結構屬性:: = < 服務數 >< 方法 / 函數 數 >< 結構層數 >
< 繼承類數 >< 繼承重數 >< 最大繼承深度 >< 平均繼承深度 >
< 聚合對象數 >< 聯合對象數 >< 耦合度 >< 低內聚度 >
< 服務數 > :: = 構件本身和它復用的構件提供服務的方法數
| 構件本身和它所復用的構件直接存取外部數據的函數、方法數
| 構件本身和它所復用的構件的子系統數和所有子系統“功能點”總數
< 方法 / 函數 數 > :: = 構件本身和它復用的構件在構件主體中實例化的方法數或函數 數
< 結構層數 > :: = 構件本身(不包括復用構件)的結構化層次數。
< 繼承類數 > :: = 所有的被構件主體繼承的繼承“樹”的“類”的總和。
< 繼承重數 > :: = 所有的被構件主體繼承的繼承“樹”的根節點數。
< 最大繼承深度 > :: = 所有的繼承“樹”的 從根節點到葉 節點的最長路徑之 和 。
< 平均繼承深度 > :: = “繼承類數”除以“最大繼承深度”。
< 聚合對象數 > :: = 構件主體聚合的“類”的實例數。
< 聯合對象數 > :: = 構件主體的方法或函數在參數表中引用的“類”的實例數。
< 耦合度 > :: = “繼承重數”乘以“平均繼承深度”與“聚合對象數”、“聯合對象數”之 和 。
< 低內聚度 > :: = 構件主體中每個方法(或函數)、實例方法存取屬性(或變量)的“屬
性變量集 ” 進行“交”運算所形成的不相交集的個數。
5.5 評價屬性
構件評價屬性:: = < 功能復雜性 >< 結構復雜性 >
< 功能復雜性 > :: = Albrecht 復雜度 | COCOMO 2.0 復雜度 | DeMarco 復雜度
[ 注: COCOMO 2.0 復雜度的評價指標:“屏幕表示數”( Number of screen view )是一個用戶窗口中所含的數據輸入和數據顯示區的個數;“報告數”( Number of report )是在屏幕或打印機輸出的報表數和輸出的文件或數據庫“表”數;“ 3GL 構件數”是用戶界面上產生操作命令的對象數。 ]
< 結構復雜性 > :: = McCabe 復雜度
[注: McCabe 復雜度映射一個程序成為一個結構圖,圖中用白點表示程序中沒有調用關系的節點,用黑點表示調用了一個子程序的節點。程序的“基本結構復雜度”為判定節點數加 1 。圖的簡化規則是 a. 減去白點,保留黑點; b. 對于程序中的循環結構體、分支結構體和嵌套結構體(包括遞歸),計算結構體的“基本結構復雜度”,再加 1 ; c. 對于黑點表示的子程序結構體,計算子程序的“基本結構復雜度”,再加 1 ; d. 在結構體內如果有相同子程序的調用,所有相同子程序的 復雜度只計算 1 次; e. 整體結構復雜度是結構化的各子結構復雜度的和]
6 構架屬性
6.1 說明屬性
構架說明屬性::= “構件說明屬性”
6.2 使用屬性
構架使用屬性::= “構件使用屬性”
6.3 內容屬性
構架內容屬性::= “構件內容屬性”
6.4 結構屬性
構架結構屬性::= “構件結構屬性”+ <擴展點數> [21]
<擴展點數>::= 構架中提供給用戶自定義或自實現的操作或功能數。
6.5 評價屬性
構架評價屬性::= “構件評價屬性”
文章來源于領測軟件測試網 http://www.kjueaiud.com/