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
- [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
- [Chatzigeorgiou2003] A. Chatzigeorgiou, "Mathematical Assessment of Object-Oriented Design Quality," IEEE Transactions on Software Engineering, vol.29, No.11, pp.1050-1053, Nov. 2003
- [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
- [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
- [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
- [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
- [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
- [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
- [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
- [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
- [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
- [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
- [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
下午4:09 | 標籤: CBSD, software reuse | 0 Comments
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
- 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)
- 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
中午12:41 | 標籤: CBSD, software reuse | 0 Comments