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).
- Carliss Young Baldwin, Kim B Clark, Kim B Clark, et al. 2000. Design rules: The power of modularity. Vol. 1. MIT press.Google Scholar
- CoatiSoftware. 2015. SourceTrail. https://www.sourcetrail.com/Google Scholar
- Python Software Foundation. 2020. glob - Unix style pathname pattern expansion. https://docs.python.org/3/library/glob.htmlGoogle Scholar
- Python Software Foundation. 2020. json - JSON encoder and decoder. https://docs.python.org/3/library/json.htmlGoogle Scholar
- Martin Fowler. 2002. Patterns of enterprise application architecture (1 ed.). Addison-Wesley Longman Publishing.Google Scholar
- David Halter. 2012. Jedi. https://github.com/davidhalter/jediGoogle Scholar
- JetBrains. 2000. PyCharm. https://www.jetbrains.com/pycharm/Google Scholar
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- 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 Scholar
- Dewayne E. Perry and Alexander L. Wolf. 1992. Foundations for the study of software architecture. Software Engineering Notes 17, 4 (1992), 40--52.Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
Index Terms
- ArchPython: architecture conformance checking for Python systems
Recommendations
Ultimate architecture enforcement: custom checks enforced at code-commit time
SPLASH '13: Proceedings of the 2013 companion publication for conference on Systems, programming, & applications: software for humanityCreating a software architecture is a critical task in the development of software systems. However, the architecture discussed and carefully created is often not entirely followed in the implementation. Unless the architecture is communicated ...
Architecture Compliance Checking of Semantically Rich Modular Architectures: A Comparative Study of Tool Support
ICSM '13: Proceedings of the 2013 IEEE International Conference on Software MaintenanceArchitecture Compliance Checking (ACC) is an approach to verify the conformance of implemented program code to high-level models of architectural design. ACC is used to prevent architectural erosion during the development and evolution of a software ...
Checking Conformance with Reference Architectures: A Case Study
EDOC '13: Proceedings of the 2013 17th IEEE International Enterprise Distributed Object Computing ConferenceReference architecture can help in enterprise architecture management to develop and operate standardized and maintainable software landscapes. Similar to the software architectures of single systems, however, they are threatened by architecture erosion,...
Comments