skip to main content
10.1145/3422392.3422505acmotherconferencesArticle/Chapter ViewAbstractPublication PagessbesConference Proceedingsconference-collections
research-article

ArchPython: architecture conformance checking for Python systems

Authors Info & Claims
Published:21 December 2020Publication History

ABSTRACT

Dynamically typed languages provide several resources for developers, such as dynamic invocations and constructs. However, such resources combined with short deadlines, conflicts in requirements, or technical difficulties may increase the number of code decisions that go against the planned architecture, leading to the phenomenon known as architectural erosion. Even though Python is the 3rd most used programming language, there is no tool that allows developers to monitor the architecture of their systems. This is possibly justified by the complexity to infer types since the same variable can assume different types at run time. Facing such challenge, this article proposes ArchPython, the first complete architectural conformance and visualization tool for Python systems. In a nutshell, developers specify the architecture of their systems in a simple and natural way using JSON files and ArchPython takes care of the rest. Automatically, the tool infers types (Jedi + propagation heuristics) and detects architectural violations (divergences, absences, and even alerts). In addition to a JSON-based textual report, the tool also provides two ways of visualizing architectural violations (graph and DSM).

References

  1. Carliss Young Baldwin, Kim B Clark, Kim B Clark, et al. 2000. Design rules: The power of modularity. Vol. 1. MIT press.Google ScholarGoogle Scholar
  2. CoatiSoftware. 2015. SourceTrail. https://www.sourcetrail.com/Google ScholarGoogle Scholar
  3. Python Software Foundation. 2020. glob - Unix style pathname pattern expansion. https://docs.python.org/3/library/glob.htmlGoogle ScholarGoogle Scholar
  4. Python Software Foundation. 2020. json - JSON encoder and decoder. https://docs.python.org/3/library/json.htmlGoogle ScholarGoogle Scholar
  5. Martin Fowler. 2002. Patterns of enterprise application architecture (1 ed.). Addison-Wesley Longman Publishing.Google ScholarGoogle Scholar
  6. David Halter. 2012. Jedi. https://github.com/davidhalter/jediGoogle ScholarGoogle Scholar
  7. JetBrains. 2000. PyCharm. https://www.jetbrains.com/pycharm/Google ScholarGoogle Scholar
  8. Jens Knodel, Dirk Muthig, Matthias Naab, and Mikael Lindvall. 2006. Static Evaluation of Software Architectures. In 10th European Conference on Software Maintenance and Reengineering (CSMR). 279--294. https://doi.org/10.1109/CSMR.2006.53Google ScholarGoogle ScholarCross RefCross Ref
  9. Jens Knodel and Daniel Popescu. 2007. A Comparison of Static Architecture Compliance Checking Approaches. In 6th Working IEEE/IFIP Conference on Software Architecture (WICSA). 12.Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Sergio Miranda, Elder Rodrigues Jr, Marco Tulio Valente, and Ricardo Terra. 2016. Architecture Conformance Checking in Dynamically Typed Languages. Journal of Object Technology 15, 3 (2016), 1--1.Google ScholarGoogle ScholarCross RefCross Ref
  11. Gail C Murphy, David Notkin, and Kevin Sullivan. 1995. Software reflexion models: Bridging the gap between source and high-level models. In Proceedings of the 3rd ACM SIGSOFT symposium on Foundations of software engineering. 18--28.Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Leonardo Passos, Ricardo Terra, Marco Tulio Valente, Renato Diniz, and Nabor das Chagas Mendonca. 2009. Static architecture-conformance checking: An illustrative overview. IEEE software 27, 5 (2009), 82--89.Google ScholarGoogle Scholar
  13. Dewayne E. Perry and Alexander L. Wolf. 1992. Foundations for the study of software architecture. Software Engineering Notes 17, 4 (1992), 40--52.Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Kevin J Sullivan, William G Griswold, Yuanfang Cai, and Ben Hallen. 2001. The structure and value of modularity in software design. ACM SIGSOFT Software Engineering Notes 26, 5 (2001), 99--108.Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Ricardo Terra and Marco Tulio Valente. 2009. A Dependency Constraint Language to Manage Object-Oriented Software Architectures. Software: Practice and Experience 39, 12 (2009), 1073--1094.Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Ricardo Terra, Marco Tulio Valente, Krzysztof Czarnecki, and Roberto S Bigonha. 2015. A recommendation system for repairing violations detected by static architecture conformance checking. Software: Practice and Experience 45, 3 (2015), 315--342.Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. ArchPython: architecture conformance checking for Python systems

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in
      • Published in

        cover image ACM Other conferences
        SBES '20: Proceedings of the XXXIV Brazilian Symposium on Software Engineering
        October 2020
        901 pages
        ISBN:9781450387538
        DOI:10.1145/3422392

        Copyright © 2020 ACM

        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]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 21 December 2020

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • research-article
        • Research
        • Refereed limited

        Acceptance Rates

        Overall Acceptance Rate147of427submissions,34%
      • Article Metrics

        • Downloads (Last 12 months)10
        • Downloads (Last 6 weeks)3

        Other Metrics

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader