Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/1706356.1706384acmconferencesArticle/Chapter ViewAbstractPublication PagespepmConference Proceedingsconference-collections
demonstration

The SourceGraph program

Published: 18 January 2010 Publication History
  • Get Citation Alerts
  • Abstract

    As software has increased in size and complexity, a range of tools has been developed to assist programmers in analysing the structure of their code. One of the key concepts used for such analysis is the concept of a call graph, which is used to represent which entities in a code base call other entities. However, most tools which use call graphs are limited to either visualisation for documentation purposes (such as Doxygen) or for dynamic analysis to find areas to optimise in the software using profiling tools such as gprof.
    SourceGraph is a new tool which takes a different approach to software analysis using call graphs, for projects written in Haskell. It creates a static call graph directly from the source code and then uses it to perform static analysis using graph-theoretic techniques with the aim of helping the programmer understand how the different parts of their program interact with each other. Whilst still a work in progress, it can already be used to find possible problems in the code base such as unreachable areas and cycles or cliques in the function calls as well as other useful information. SourceGraph thus provides programmers not only with various ways of visualising their software, but helps them to understand what their code is doing and how to improve it.

    References

    [1]
    T. Ball and S.G. Eick. Software visualization in the large. Computer, 29(4):33--43, 1996. ISSN 0018-9162
    [2]
    C. Biemann. Chinese Whispers -- an Efficient Graph Clustering Algorithm and its Application to Natural Language Processing Problems. In Proceedings of the HLT-NAACL-06 Workshop on Textgraphs-06, New York, USA, 2006.
    [3]
    N. Broberg. haskell-src-exts: Manipulating Haskell source: abstract syntax, lexer, parser, and pretty-printer. http://hackage.haskell.org/package/haskell-src-exts
    [4]
    G. Gan, C. Ma, and J. Wu. Data Clustering: Theory, Algorithms, and Applications. ASA-SIAM Series on Statistics and Applied Probability. SIAM, 2007. ISBN 0898716233
    [5]
    E.R. Gansner and S.C. North. An Open Graph Visualization System and Its Applications. Software -- Practice and Experience, 30:1203--1233, 1999. http://graphviz.org
    [6]
    T. Hallgren, J. Hook, M.P. Jones, and R.B. Kieburtz. An overview of the programatica toolset. In High Confidence Software and Systems Conference, HCSS04, 2004.
    [7]
    B. Huber. Language.C -- a C99 library for Haskell. http://www.sivity.net/projects/language.c
    [8]
    I. Jones. The Haskell Cabal: a common architecture for building applications and libraries. In M. van Eekelen, editor, 6th Symposium on Trends in Functional Programming, pages 340--354, 2005.
    [9]
    I.L. Miljenovic. Graph theoretic analysis of relationships within discrete data. Mathematics honours thesis, University of Queensland, November 2008.
    [10]
    G. Narayan, K. Gopinath, and V. Sridhar. Structure and interpretation of computer programs. In Theoretical Aspects of Software Engineering, 2008. TASE '08. 2nd IFIP/IEEE International Symposium on, pages 73--80, June 2008.
    [11]
    S. Peyton Jones, L. Augustsson, D. Barton, B. Boutel, W.B.J. Fasel, K. Hammond, R. Hinze, P. Hudak, J. Hughes, T. Johnsson, M. Jones, J. Launchbury, E. Meijer, J. Peterson, A. Reid, C. Runciman, and P. Wadler. The Haskell 98 language and libraries: The revised report. Journal of Functional Programming, 13(1):0--255, Jan 2003. Also available at http://www.haskell.org/definition/ and through Cambridge Press.
    [12]
    S. Peyton Jones et al. GHC Language Features. http://www.haskell.org/ghc/docs/latest/html/users_guide/ghc-language-features.html
    [13]
    S.L. Peyton Jones, C.V. Hall, K. Hammond, W. Partain, and P. Wadler. The Glasgow Haskell compiler: a technical overview. In Proc. UK Joint Framework for Information Technology (JFIT) Technical Conference, 1993. http://haskell.org/ghc/.
    [14]
    N.F. Rodrigues and L.S. Barbosa. Component identification through program slicing. In Proc. of Formal Aspects of Component Software (FACS 2005). Elsevier ENTCS, pages 291--304. Elsevier, 2005.
    [15]
    B. Ryder. Constructing the call graph of a program. Software Engineering, IEEE Transactions on, SE-5(3):216--226, May 1979. ISSN 0098-5589
    [16]
    P. Wadler and S. Blott. How to make ad-hoc polymorphism less ad hoc. In POPL '89: Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 60--76, New York, NY, USA, 1989. ACM. ISBN 0-89791-294-2

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    PEPM '10: Proceedings of the 2010 ACM SIGPLAN workshop on Partial evaluation and program manipulation
    January 2010
    168 pages
    ISBN:9781605587271
    DOI:10.1145/1706356
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 18 January 2010

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. call graph
    2. graph theory
    3. haskell
    4. software analysis
    5. static analysis

    Qualifiers

    • Demonstration

    Conference

    PEPM '10
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 66 of 120 submissions, 55%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • 0
      Total Citations
    • 188
      Total Downloads
    • Downloads (Last 12 months)6
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 10 Aug 2024

    Other Metrics

    Citations

    View Options

    Get Access

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media