[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
research-article

A search engine for finding and reusing architecturally significant code

Published: 01 August 2017 Publication History

Abstract

A code search engine to automate the discovery, extraction and indexing of tactics.A big data compatible architecture to search through 22 million source files.Novel techniques to detect tactics and technical context in which they are used.Introducing a novel ranking algorithm to order the retrieved tactical files.Enhancing the state-of-the-art code search engines in finding tactical-code. Architectural tactics are the building blocks of software architecture. They describe solutions for addressing specific quality concerns, and are prevalent across many software systems. Once a decision is made to utilize a tactic, the developer must generate a concrete plan for writing code and implementing the tactic. Unfortunately, this is a non-trivial task even for experienced developers. Often, developers resort to using search engines, crowd-sourcing websites, or discussion forums to find sample code snippets to implement a tactic. A fundamental problem of finding implementation for architectural tactics/patterns is the mismatch between the high-level intent reflected in the descriptions of these patterns and the low-level implementation details of them. To reduce this mismatch, we created a novel Tactic Search Engine called ArchEngine (ARCHitecture search ENGINE). ArchEngine can replace this manual internet-based search process and help developers find and reuse tactical code from a wide range of open source systems. ArchEngine helps developers find implementation examples of an architectural tactic for a given technical context. It uses information retrieval and program analysis techniques to retrieve applications that implement these design concepts. Furthermore, it lists and rank the code snippets where the patterns/tactics are located. Our case study with 21 graduate students (with experience level of junior software developers) shows that ArchEngine is more effective than other search engines (e.g., Krugle and Koders) in helping programmers to quickly find implementations of architectural tactics/patterns.

References

[1]
S. Bajracharya, T. Ngo, E. Linstead, Y. Dou, P. Rigor, P. Baldi, C. Lopes, Sourcerer: a search engine for open source code supporting structure-based search, ACM, 2006.
[2]
S. Bajracharya, J. Ossher, C. Lopes, Sourcerer: An internet-scale software repository, IEEE Computer Society, 2009.
[3]
L. Bass, P. Clements, R. Kazman, Adison Wesley, 2003.
[4]
A. Blum, A. Kalai, J. Langford, Beating the hold-out: Bounds for k-fold and progressive cross-validation, ACM, 1999.
[5]
Y. Cai, H. Wang, S. Wong, L. Wang, Leveraging design rules to improve software architecture recovery, ACM, Vancouver, Canada, 2013.
[6]
S. Chatterjee, S. Juvekar, K. Sen, Sniff: A search engine for java using free-form queries, Springer-Verlag, Berlin, Heidelberg, 2009.
[7]
S. Chatterjee, S. Juvekar, K. Sen, Sniff: a search engine for java using free-form queries, Springer, 2009.
[8]
M. Gordon, P. Pathak, Finding information on the world wide web: the retrieval effectiveness of search engines, Inf. Process. Manage., 35 (1999) 141-180.
[9]
M. Grechanik, C. Fu, Q. Xie, C. McMillan, D. Poshyvanyk, C. Cumby, A search engine for finding highly relevant applications, IEEE, 2010.
[10]
R. Hanmer, Patterns for Fault Tolerant Software, Wiley, 2007.
[11]
G. Huang, H. Mei, F.-Q. Yang, Runtime recovery and manipulation of software architecture of component-based systems, Autom. Softw. Eng., 13 (2006) 257-281.
[12]
O. Hummel, W. Janjic, C. Atkinson, Code conjurer: pulling reusable software out of thin air, Softw., IEEE, 25 (2008) 45-52.
[13]
A. Jansen, J. Bosch, P. Avgeriou, Documenting after the fact: recovering architectural design decisions, J. Syst. Softw., 81 (2008) 536-557.
[14]
J. Kim, S. Lee, S.-w. Hwang, S. Kim, Towards an intelligent code search engine., 2010.
[15]
C.-H. Lung, M. Zaman, A. Nandi, Applications of clustering techniques to software partitioning, recovery and restructuring, J. Syst. Softw., 73 (2004) 227-244.
[16]
D. Mandelin, L. Xu, R. Bodk, D. Kimelman, Jungloid mining: helping to navigate the api jungle, ACM SIGPLAN Not., 40 (2005) 48-61.
[17]
C.D. Manning, P. Raghavan, H. Schtze, Introduction to Information Retrieval, Cambridge University Press, New York, NY, USA, 2008.
[18]
C.D. Manning, P. Raghavan, H. Schtze, Cambridge University Press Cambridge, 2008.
[19]
L. Mathiassen, A. Munk-Madsen, P.A. Nielsen, J. Stage, Citeseer, 2000.
[20]
M. McCandless, E. Hatcher, O. Gospodnetic, Manning Publications Co., Greenwich, CT, USA, 2010.
[21]
C. McMillan, M. Grechanik, D. Poshyvanyk, C. Fu, Q. Xie, Exemplar: a source code search engine for finding highly relevant applications, IEEE Trans. Softw. Eng., 38 (2012) 1069-1087.
[22]
C. McMillan, M. Grechanik, D. Poshyvanyk, Q. Xie, C. Fu, Portfolio: finding relevant functions and their usage, IEEE, 2011.
[23]
C. McMillan, N. Hariri, D. Poshyvanyk, J. Cleland-Huang, B. Mobasher, Recommending source code for use in rapid software prototypes, 2012.
[24]
C. Mcmillan, D. Poshyvanyk, M. Grechanik, Q. Xie, C. Fu, Portfolio: searching for relevant functions and their usages in millions of lines of code, ACM Trans. Softw. Eng. Methodol. (TOSEM), 22 (2013) 37.
[25]
J.C.-H. Mehdi Mirakhorli, Detecting, tracing, and monitoring architectural tactics in code, IEEE Trans. Software Eng., 42 (2016) 205-220.
[26]
M. Mirakhorli, J. Cleland-Huang, Using tactic traceability information models to reduce the risk of architectural degradation during system maintenance, IEEE Computer Society, Washington, DC, USA, 2011.
[27]
M. Mirakhorli, A. Fakhry, A. Grechko, M. Wieloch, J. Cleland-Huang, Archie: A tool for detecting, monitoring, and preserving architecturally significant code, 2014.
[28]
M. Mirakhorli, P. Mder, J. Cleland-Huang, Variability points and design pattern usage in architectural tactics, ACM, 2012.
[29]
M. Mirakhorli, Y. Shin, J. Cleland-Huang, M. Cinar, A tactic-centric approach for automating traceability of quality concerns, IEEE Press, 2012.
[30]
L. Page, S. Brin, R. Motwani, T. Winograd, Stanford InfoLab, 1999.
[31]
M.F. Porter, An algorithm for suffix stripping, Program, 14 (1980) 130-137.
[32]
R.S. Pressman, Palgrave Macmillan, 2005.
[33]
G. Salton, Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1989.
[34]
S.E. Sim, M. Umarji, S. Ratanotayanon, C.V. Lopes, How well do search engines support code retrieval on the web?, ACM Trans. Softw. Eng. Methodol. (TOSEM), 21 (2011) 4.
[35]
J. Stylos, B.A. Myers, Mica: A web-search tool for finding api components and examples, IEEE, 2006.
[36]
N. Tsantalis, A. Chatzigeorgiou, G. Stephanides, S.T. Halkidis, Design pattern detection using similarity scoring, IEEE Trans. Softw. Eng., 32 (2006) 896-909.
[37]
University of California, I.,. The sourcerer project. sourcerer.ics.uci.edu.
[38]
L. Vaughan, New measurements for search engine evaluation proposed and tested, Inf. Process. Manage., 40 (2004) 677-691.
[39]
P. Velasco-Elizondo, R. Marn-Pia, S. Vazquez-Reyes, A. Mora-Soto, J. Mejia, Knowledge representation and information extraction for analysing architectural patterns, Sci. Comput. Program., 121 (2016) 176-189.
[40]
P. Willett, The porter stemming algorithm: then and now, Program, 40 (2006) 219-223.
[41]
Y. Ye, G. Fischer, Supporting reuse by delivering task-relevant and personalized information, ACM, 2002.

Cited By

View all
  • (2023)Big Code Search: A BibliographyACM Computing Surveys10.1145/360490556:1(1-49)Online publication date: 26-Aug-2023
  • (2023)Architectural tactics in software architectureJournal of Systems and Software10.1016/j.jss.2022.111558197:COnline publication date: 13-Feb-2023
  • (2019)Identifying availability tactics to support security architectural design of microservice-based systemsProceedings of the 13th European Conference on Software Architecture - Volume 210.1145/3344948.3344996(123-129)Online publication date: 9-Sep-2019
  1. A search engine for finding and reusing architecturally significant code

    Comments

    Please enable JavaScript to view thecomments powered by Disqus.

    Information & Contributors

    Information

    Published In

    cover image Journal of Systems and Software
    Journal of Systems and Software  Volume 130, Issue C
    August 2017
    111 pages

    Publisher

    Elsevier Science Inc.

    United States

    Publication History

    Published: 01 August 2017

    Author Tags

    1. Architecture
    2. Information
    3. Models
    4. Tactics
    5. Traceability

    Qualifiers

    • Research-article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)0
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 12 Dec 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2023)Big Code Search: A BibliographyACM Computing Surveys10.1145/360490556:1(1-49)Online publication date: 26-Aug-2023
    • (2023)Architectural tactics in software architectureJournal of Systems and Software10.1016/j.jss.2022.111558197:COnline publication date: 13-Feb-2023
    • (2019)Identifying availability tactics to support security architectural design of microservice-based systemsProceedings of the 13th European Conference on Software Architecture - Volume 210.1145/3344948.3344996(123-129)Online publication date: 9-Sep-2019

    View Options

    View options

    Login options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media