Abstract
As software organisations mature, their repositories of reusable software components from previous projects will also grow considerably. Remaining conversant with all components in such a repository presents a significant challenge to developers. Indeed the retrieval of a particular component in this large search space may prove problematic. Further to this, the reuse of components developed in an Agile environment is likely to be hampered by the existence of little or no support materials. We propose to infer the need for a component and proactively recommend that component to the developer using a technique which is consistent with the principles of Agile methodologies. Our RASCAL recommender agent tracks usage histories of a group of developers to recommend to an individual developer components that are expected to be needed by that developer. Unlike many traditional recommender systems, we may recommend items that the developer has actually employed previously. We introduce a content-based filtering technique for ordering the set of recommended software components and present a comparative analysis of applying this technique to a number of collaborative filtering algorithms. We also investigate the relationship between the number of usage histories collected and recommendation accuracy. Our overall results indicate that RASCAL is a very promising tool for allowing developers discover reusable components at no additional cost
Similar content being viewed by others
References
Alspector J., Kolcz A., Karunanithi N. (1998). Comparing Feature-based and Clique-based User Models for Movie selection. In Proceedings of the third ACM conference on Digital libraries, ACM Press, 11–18
Apache. (2003). Apache Software Foundation – Bytecode Engineering Library (2002–2003). http://jakarta.apache.org/bcel/index.html
Beck K. (2000). Extreme Programming Explained: Embrace Change. Addison-Wesley Longman Publishing Co. Inc
Beck, K., Beedle, M., van Bennekum, A., Cockburn, A., Cunningham, W., Fowler, M., Grenning, J., Highsmith, J., Hunt, A., Jeffries, R., Kern, J., Marick, B., Martin, R. C., Mellor, S., Schwaber, K., Sutherland, J. & Thomas, D. (2000). Agile Mainfesto. http://www.agilealliance.org/principles.html
Bezos, J. (2004). Amazon.com PLC (1995–2004). Seattle, WA 98108-1226, USA http://www.amazon.co.uk
Breese, J. S., Heckerman, D. & Kadie, C. (1998). Empirical Analysis of Predictive Algorithms for Collaborative Filtering. In Proceedings of the Fourteenth Annual Conference on Uncertainty in Artificial Intelligence, 43–52
Carroll J.M., Rosson M.B. (1987). Paradox of the Active User. In: Carroll J.M (eds). Interfacing Thought: Cognitive Aspects of Human-Computer Interaction. Books/MIT Press, Bradford, Chapt. 5, pp. 80–111
Chesnais P.R., Mucklo M.J., Sheena J.A. (1995). The Fishwrap Personalized News System. In IEEE Second International Workshop on Community Networking Integrating Multimedia Services to the Home
Claypool M., Gokhale A., Miranda T., Murnikov, P., Netes, D., Sartin, M. (1999). Combining Content-Based and Collaborative Filters in an Online Newspaper
Cusumano M., Yoffie D. (1999). Software Development on Internet Time. IEEE Computer 32(10):60–69
Daudjee K.S., Toptsis A.A. (1994). A Technique for Automatically Organizing Software Libraries for Software Reuse. In Proceedings of the 1994 conference of the Centre for Advanced Studies on Collaborative research, IBM Press, 12
Drummond C.G., Ionescu D., Holte R.C. (2000). A Learning Agent that Assists the Browsing of Software Libraries. IEEE Transactions Software Engineering 26(12):1179–1196
Frakes W., Terry C. (1996). Software Reuse: Metrics and Models. ACM Comput. Surv 28(2):415–435
Girardi M., Ibrahim B. (1995). Using English to Retrieve Software. Journals of Systems and Software 30(3):249–270
Griss M.L. (1991). Software Reuse at Hewlett-Packard. In: Frakes W (eds). In Proceedings of the 1st International Workshop on Software Reusability. Dortmund, Germany
Hooper J., Chester R. (1991). Software Reuse and Methods. Plenum Press, New York
Inoue K., Yokomori R., Fujiwara H., Yamamoto T., Matsushita M., Kusumoto S. (2003). Component Rank: Relative Significance Rank for Software Component Search. In Proceedings of the 25th international conference on Software engineering, IEEE Computer Society, 14–24.
Mili A., Mili R., Mittermeir R.T. (1998). A Survey of Software Reuse Libraries. Annals of Software Engineering 5:349–414
Movielens (2004). GroupLens Research at the University of Minnesota. http://www.movielens.org
Oard D., Marchionini G. (1996). A Conceptual Framework for Text Filtering Process. Technical report, University of Maryland, College Park
Ohsugi N., Monden A., Matsumoto K. (2002). A Recommendation System for Software Function Discovery. In Proceedings of the 9th Asia-Pacific Software Enginieering Conference (APSEC2002)
OSTG (2004). SourceForge.net is owned by the Open Source Technology Group Inc (OSTG), a subsidiary of VA Software Corporation. http://sourceforge.net
Page L., Brin S., Motwani R., Winograd T. (1998). The PageRank Citation Ranking: Bringing Order to the Web. Technical report, Stanford Digital Library Technologies Project
Prieto-Diaz R., Freeman P. (1987). Classifying Software for Reuse. IEEE Software 4(1):6–16
Raymond E. (2004). The Cathedral and the Bazar. http://www.tuxedo.org/esr/writings/cathedral-bazar
Resnick, P., Iacovou, N., Suchak, M., Bergstorm, P., Riedl, J. (1994). GroupLens: An Open Architecture for Collaborative Filtering of Netnews. In Proceedings of ACM 1994 Conference on Computer Supported Cooperative Work. Chapel Hill, North Carolina: ACM, 175–186
Sarwar B.M., Karypis G., Konstan J.A., Reidl J. (2001). Item-based Collaborative Filtering Recommendation Algorithms. In World Wide Web. 285–295
Schmidt D. (1999). Why Software Reuse has Failed and How to Make it Work for You. The C++ Report Magazine
Sindre G., Karlsson E., Staalhane T. (1993). A Method for Software Reuse Through Large Component Libraries. In Proceeding of the International Conference on Computing and Information. 464–468
Snelting G., Tip F. (2000). Understanding Class Hierarchies Using Concept Analysis. ACM Transactions Programing Language Systems 22(3):540–582
Sugumaran V., Storey V.C. (2003). A Semantic-based Approach to Component Retrieval. SIGMIS Database 34(3):8–24
Theunissen, W. H. M., Kourie, D. G. & Watson, B. W. (2003). Standards and Agile Software Development. In Proceedings of the 2003 annual research conference of the South African institute of computer scientists and information technologists on Enablement through technology, South African Institute for Computer Scientists and Information Technologists, 178–188
Tirso, J. R. (1991). IBM Reuse Program. In Proceedings of the 4th Annual Workshop on Software Reuse, University of Maine, 1–5
Turk, D., France, R., Rumpepe, B. (2002). Limitations of Agile Software Process. In Proceedings of Third International Conference on eXtreme Programming and Agile Processes in Software Engineering, 43–46
Wasfi A.M.A. (1999). Collecting User Access Patterns for Building user Profiles and Collaborative Filtering. In Proceedings of the 4th international conference on Intelligent user interfaces, ACM Press, 57–64
Yao H., Etzkorn L. (2004). Towards a Semantic-based Approach for Software Reusable Component Classification and Retrieval. In Proceedings of the 42nd annual Southeast regional conference, ACM Press, pp. 110–115
Yongbeom K., Stohr E. (1998). Software Reuse: Survey and Research Directions. Management Information Systems 14(4):113–147
Yunwen Y., Fischer G. (2002). Information Delivery in Support of Learning Reusable Software Components on Demand. In Proceedings of the 7th international conference on Intelligent user interfaces, ACM Press, 159–166
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
McCarey, F., Cinnéide, M.Ó. & Kushmerick, N. Rascal: A Recommender Agent for Agile Reuse. Artif Intell Rev 24, 253–276 (2005). https://doi.org/10.1007/s10462-005-9012-8
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10462-005-9012-8