Software reuse through information retrieval
ACM SIGIR Forum
Modern structured analysis
Implementing faceted classification for software reuse
Communications of the ACM - Special issue on software engineering
An Information Retrieval Approach for Automatically Constructing Software Libraries
IEEE Transactions on Software Engineering
ACM Computing Surveys (CSUR)
Signature matching: a key to reuse
SIGSOFT '93 Proceedings of the 1st ACM SIGSOFT symposium on Foundations of software engineering
GroupLens: an open architecture for collaborative filtering of netnews
CSCW '94 Proceedings of the 1994 ACM conference on Computer supported cooperative work
Artificial intelligence: a modern approach
Artificial intelligence: a modern approach
Sixteen questions about software reuse
Communications of the ACM
Signature matching: a tool for using software libraries
ACM Transactions on Software Engineering and Methodology (TOSEM)
SSR '95 Proceedings of the 1995 Symposium on Software reusability
Social information filtering: algorithms for automating “word of mouth”
CHI '95 Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Large-scale information retrieval with latent semantic indexing
Information Sciences: an International Journal
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
The Role of Opportunism in the Software Design Reuse Process
IEEE Transactions on Software Engineering
Storing and Retrieving Software Components: A Refinement Based System
IEEE Transactions on Software Engineering
Software agents
The case for user-centered CASE tools
Communications of the ACM
Enterprise resource planning: componentizing the enterprise application packages
Communications of the ACM
A Learning Agent that Assists the Browsing of Software Libraries
IEEE Transactions on Software Engineering
Item-based collaborative filtering recommendation algorithms
Proceedings of the 10th international conference on World Wide Web
Information delivery in support of learning reusable software components on demand
Proceedings of the 7th international conference on Intelligent user interfaces
Reuse-based software engineering: techniques, organization, and controls
Reuse-based software engineering: techniques, organization, and controls
Component Software: Beyond Object-Oriented Programming
Component Software: Beyond Object-Oriented Programming
Software Reuse
Information Retrieval
Strategy-driven reuse: Bringing reuse from the Engineering Department to the Executive Boardroom
Annals of Software Engineering
ACM '52 Proceedings of the 1952 ACM national meeting (Pittsburgh)
Reusing Software: Issues and Research Directions
IEEE Transactions on Software Engineering
Quality Improvement Using A Software Reuse Failure Modes Model
IEEE Transactions on Software Engineering
Specification-Based Component Retrieval by Means of Examples
DANTE '99 Proceedings of the 1999 International Symposium on Database Applications in Non-Traditional Environments
Supporting component-based software development with active component repository systems
Supporting component-based software development with active component repository systems
A semantic-based approach to component retrieval
ACM SIGMIS Database
Reuse-Conducive Development Environments
Automated Software Engineering
Using structural context to recommend source code examples
Proceedings of the 27th international conference on Software engineering
Ranking Significance of Software Components Based on Use Relations
IEEE Transactions on Software Engineering
Rascal: A Recommender Agent for Agile Reuse
Artificial Intelligence Review
Maintaining mental models: a study of developer work habits
Proceedings of the 28th international conference on Software engineering
IAT '06 Proceedings of the IEEE/WIC/ACM international conference on Intelligent Agent Technology
Privacy-preserving agent-based distributed data clustering
Web Intelligence and Agent Systems
Toward automated retrieval for a software component repository
ECBS'99 Proceedings of the 1999 IEEE conference on Engineering of computer-based systems
Empirical analysis of predictive algorithms for collaborative filtering
UAI'98 Proceedings of the Fourteenth conference on Uncertainty in artificial intelligence
Component retrieval using knowledge-intensive conversational CBR
IEA/AIE'06 Proceedings of the 19th international conference on Advances in Applied Artificial Intelligence: industrial, Engineering and Other Applications of Applied Intelligent Systems
A state-of-the-practice survey of off-the-shelf component-based development processes
ICSR'06 Proceedings of the 9th international conference on Reuse of Off-the-Shelf Components
Using the web as a reuse repository
ICSR'06 Proceedings of the 9th international conference on Reuse of Off-the-Shelf Components
ICSR'06 Proceedings of the 9th international conference on Reuse of Off-the-Shelf Components
Hi-index | 0.01 |
Software reuse can provide significant improvements in software productivity and quality whilst reducing development costs. Expressing software reuse intentions can be difficult though. A developer may aspire to reuse a software component but experience difficulty expressing their reuse intentions in a manner that is compatible with, or understood by, the component retrieval system. Various intelligent retrieval techniques have been developed that assist a developer in locating or discovering components in an efficient manner. These solutions share a common shortcoming: the developer must be capable of anticipating all reuse opportunities and initiating the retrieval process. There is a need for a comprehensive technique that not only assists with retrievals but that can also identify reuse opportunities. This paper advocates that component-based reuse can be supported through knowledge collaboration. Often programming tasks and solutions are replicated; this characteristic of software can be exploited for the benefit of future developments. Through the mining of existing source code solutions, knowledge, relating to how components are used by developers, can be extracted. Based on a developer's current programming task, this knowledge can subsequently be filtered and used to recommend a candidate set of reusable components. This novel recommendation approach applies and extends commonly used Information Retrieval and Information Filtering techniques such as Collaborative Filtering, Content-Based Filtering, and Bayesian Clustering Models, to the software reuse domain. This recommendation technology is applied to several thousand open-source Java classes. The most effective recommendation algorithm produces recommendations of a high quality at a low cost.