Clean Architecture: A Craftsman's Guide to Software Structure and Design
@inproceedings{Martin2017CleanAA, title={Clean Architecture: A Craftsman's Guide to Software Structure and Design}, author={Robert C. Martin}, year={2017} }
Components You may find it strange that we would create a component—in this example, UService—that contains nothing but an interface. Such a component contains no executable code! It turns out, however, that this is a very common, and necessary, tactic when using statically typed languages like Java and C#. These abstract components are very stable and, therefore, are ideal targets for less stable components to depend on. When using dynamically typed languages like Ruby and Python, these…
No Paper Link Available
112 Citations
What is in a Name? An Analysis of Associations Among Java Packaging and Artifact Names
- Computer ScienceECSA
- 2021
The results of this research indicate that, on average, class names and inheritance (supper class names) tend to be considered as a packaging strategy, rather than textual factors (artifact names) associated with the package structure.
Did JHotDraw respect the Law of Good Style? - An exploratory deep dive into the nature of false positives of bad code smells
- BusinessArt Sci. Eng. Program.
- 2020
The realization that not only general design ideas but also specific design ideas have an influence on whether a potential smell is a true positive turns the problem of false positives from a scientific problem to a engineering problem.
ViMoTest: a low code approach to specify ViewModel-based tests with a projectional DSL using JetBrains MPS
- Computer ScienceMoDELS
- 2022
It is concluded that a low code approach using a projectional DSL to specify automated tests based on ViewModels could have several benefits compared to similar approaches.
Mind Overflow: A Process Proposal for Decomposing Monolithic Applications in Microservices
- Computer Science
- 2020
The case study showed promising results, indicating that Mind Overflow is feasible to break down monolithic to a microservice-based architecture, including reducing cyclomatic complexity and producing highly cohesive microservices.
Investigating Whether Clean Code Helps Developers in Understanding a New Project
- Computer Science
- 2019
This study researches two methods that could improve the understandability of the code for newcomers: Refactoring the code to adhere to Clean Code guidelines and providing an introductory document.
A preliminary evaluation on the relationship among architectural and test smells
- Computer Science2022 IEEE 22nd International Working Conference on Source Code Analysis and Manipulation (SCAM)
- 2022
By mining 798 releases of 40 open-source Java systems, the correlation between class-level architectural and test smells is studied, finding that Eager Test and Assertion Roulette smells often occur in conjunction with Cyclically-dependent Modularization, Deficient Encapsulation, and InsufficientEncapsulation architectural smells.
Determining Microservice Boundaries: A Case Study Using Static and Dynamic Software Analysis
- BusinessECSA
- 2020
A systematic approach for refactoring systems to microservice architectures that uses static analysis to determine the system's structure and dynamic analysis to understand its actual behavior is described.
Choosing a Global Architecture for Mobile Applications
- Computer Science
- 2021
An overview of the current situation and choices and a vision of using a mix-and-match approach with the following goals: provide an extendable approach suitable for small and large projects, use minimal integration into the platform, and sidestep traps and erroneous implementations are given.
Refactoring the Whitby Intelligent Tutoring System for Clean Architecture
- Computer ScienceTheory Pract. Log. Program.
- 2021
The architectures of two iterations of Whitby are evaluated with respect to the motivations behind the refactor: clean architecture enabling code reuse and extensibility and third-party libraries that can be reused in other applications.
Mask-Mediator-Wrapper: A revised mediator-wrapper architecture for heterogeneous data source integration
- Computer ScienceArXiv
- 2022
This paper identifies certain realistic and concrete scenarios where the mediator-wrapper architecture underperforms and these issues are addressed with the extension of the architecture via the mask component type.