顯示具有 CBSD 標籤的文章。 顯示所有文章
顯示具有 CBSD 標籤的文章。 顯示所有文章

Component Modeling for Classification and Retrieval : A Comparison of Previous Works

Recently, I am working on a small Lab. project about a novel approach for component storage and retrieval to assist component reuse in CBSD. In the domain analysis phase, some component modeling approaches were surveyed and compared. They were organized (ordered by publication year) in following table for anyone interested.

Works Modeling Approach Modeling Target Classification Base Retrieval Base
[Ostertag1992] Graph-based Functional Property /
Component Feature
AI-based /
Component Feature ( Feature Distance )

[Frakes1994]
( Survey Paper )
Keyword Indexing Component Characteristics Controlled Vocabulary /
Uncontrolled Vocabulary
Keyword/ Hypertext
[Zaremski1995] Signature-based Function Types /
User-defined Types
Signature Matching Signature(Function Types/ User-defined Types)
[Zaremski1997] Specification-based Component Behavior Specification Matching
[Mili1997] Specification-based Functional Property /
Component Feature
Functional Property /
Component Feature
Specification
[Henninger1997] Text-based /
Keyword Indexing
Component Characteristics Predefined Categories /
User-defined Categories
Keyword
[Seacord1998] Text-based Component Interface Component Interface Content-based Keyword
[Damiani1999] Context-based Description Component Characteristics Component Behavioral Characteristics
[Inverardi2000] Context-based Component Behavior /
Component Assumption
Component Behavior
[Plasil2002] Text-based Component Interface Component Behavior/ Component Interface
[Chatzigeorgiou2003]
Graph-based Message Exchange
( Component Function Call )
Component Quality
[Vitharana2003] Knowledge-based Component Structural Characteristics /
Component Functionality /
Business Rules/
Component Role in Use
Abstraction Hierarchy /
Component Role in Use
The Use of Component
[Inoue2005] Graph-based /
Text-based
Component Association Component Ranking /
Content-based Similarity
Content-based Keyword

It amazed me that the graph-based approach had been applied since 1992, although the approach in [Ostertag1992] was far from similar with recent researches.Most of them are functionality-based classification, only very few associated with non-funcitionall qualities. The knowledge-based approach seems to be an interesting direction based on these previous influential functionality-based approaches.

References

  1. [Seacord1998] R. C. Seacord, S. A. Hissam, and K. C. Wallnau, "Agora : A Search Engine for Software Components," IEEE Internet Computing, vol.6, no.2, pp.62-70, 1998
  2. [Chatzigeorgiou2003] A. Chatzigeorgiou, "Mathematical Assessment of Object-Oriented Design Quality," IEEE Transactions on Software Engineering, vol.29, No.11, pp.1050-1053, Nov. 2003
  3. [Plasil2002] F. Plasil and S. Visnovsky, "Behavior Protocols for Software Components," IEEE Transactions on Software Engineering, vol.28, No.11, pp.1056-1076, Nov. 2002
  4. [Inverardi2000] P. Inverardi, A. L. Wolf, and D. Yankelevich, "Static Checking of System Behaviors Using Derived Component Assumptions," ACM Transactions on Software Engineering and Methodology, vol.9, no.3, pp.239-272, July 2000
  5. [Zaremski1997] A. M. Zaremski and J. M. Wing, "Specification Matching of Software Components," ACM Transactions on Software Engineering and Methodology, vol.6, no.4, pp.333-369, Oct. 1997
  6. [Zaremski1995] A. M. Zaremski and J. M. Wing, "Signature Matching: A Tool for Using Software Libraries," ACM Transactions on Software Engineering and Methodology, vol.4, no.2, pp.146-170, April 1995
  7. [Mili1997] R. Mili, A. Mili, and R. T. Mittermeir, "Storing and Retrieving Software Components: A Refinement Based System," IEEE Transactions on Software Engineering, vol.23, No.7, pp.445-460, July 1997
  8. [Inoue2005] K. Inoue, R. Yokomori, T. Yamamoto, M. Matsushita, and S. Kusumoto, "Ranking Significance of Software Components based on Use Relations," IEEE Transactions on Software Engineering, vol.31, No.3, pp.213-225, March 2005
  9. [Damiani1999] E. Damiani, M. G. Fugini, and C. Bellettini, "Corrigenda: A Hierarchy-Aware Approach to Faceted Classification of Object-Oriented Components," ACM Transactions on Software Engineering and Methodology, vol.8, no.4, pp.425-472, Oct. 1999
  10. [Ostertag1992] E. Ostertag, J. Hendler, R. P. Díaz, and C. Braun, "Computing Similarity in a Reuse Library System: An AI-Based Approach," ACM Transactions on Software Engineering and Methodology, vol.1, no.3, pp.205-228, July 1992
  11. [Henninger1997] S. Henninger, "An Evolutionary Approach to Constructing Effective Software Reuse Repository," ACM Transactions on Software Engineering and Methodology, vol.6, no.2, pp.111-140, April 1997
  12. [Frakes1994] W. B. Frakes and T. P. Pole, "An Empirical Study of Representation Models for Reusable Software Components," IEEE Transactions on Software Engineering, vol.20, no.8, pp.617-630, August 1994
  13. [Vitharana2003] P. Vitharana, F. M. Zahedi, and H. Jain, "Knowledge-Based Repository Scheme for Storing and Retrieving Business Components: A Theoretical Design and Empirical Analysis," IEEE Transactions on Software Engineering, vol.29, no.7, pp.649-664, July 2003


SPARS-J

SPARS-J日本井上研究室(Software Engineering Labratory, Osaka University)SPARS project 所建立的 web-based software component search engine. 目前在 source code 部分還僅支援 java source, 另外支援部份的 document search (根據 paper [1]). 從 search engine 實際上的使用可以發現還提供 XML 以及 JSP search.


SPARS-J 的基本原理是利用 authors 所提的 component rank model 對於 component 做 weighting. 搭配上基於 text-based token analysis 對於 component 所建立的 keyword index 作為搜尋的支持. 整個運作分為兩個 phase.

Phase 1 為 source input phase, source provider 所提供的 source 會自動被分析, 做 compoennt ranking, 然後存起來. Phase 2 為 search phase. 使用者基於 keyword 進行 search, 結果會分為數個 component groups 以 component rank 做排序. 細節請參考 [1].

一個 component group 由數個 similar components 所組成, 大部份情況下一個 component group 內的 components 會是同一個 software source package 的不同版本, 例如搜尋 "qsort" "string" 就會看到有 Eclipse 內部不同版本的 Util.java 被歸納在同一個 group. 下圖可以看到搜尋結果共有 13 個 groups (綠色), 第一個 group 的 rank ordering 是 1 (藍色), 同一個 file 事實上是不同版本 (紅色).

至於怎樣決定 component similarity 則依據 SPARS-J 內定的 similarity comparison algorithm, 這是可以被調整的. 目前來說應該是使用 [2] 內所提到的 classification 方法.

[1] 文內也針對效能與 Google, Nazama 做比較, 不過可惜的是沒有跟 Google Code 做比較.


References

  1. K. Inoue, R. Yokomori, T. Yamamoto, M. Matsushita, and S. Kusumoto, "Ranking Significance of Software Components based on Use Relations," IEEE Transactions on Software Engineering, vol.31, No.3, pp.213-225, March 2005 ( available pdf)

  2. K. Kobori, T. Yamamoto, M. Matsusita, and K. Inoue, "Classification of Java Programs in SPARS-J," Proceedings of International Workshop on Community-Driven Evolution of Knowledge Artifacts, 2003

Designed by Posicionamiento Web | Modified by seLain | Bloggerized by GosuBlogger | Blue Business Blogger