Il existe plusieurs façons de concevoir un système en génie logiciel, et chaque conception a ses propres mérites et défis. Ainsi, différentes approches de conception tentent parfois d’atteindre des objectifs similaires. Lorsque nous pensons à la conception d’architecture logicielle, en particulier dans le monde orienté objet, les trois modèles dont on parle le plus sont l’architecture propre, l’architecture hexagonale et l’architecture en oignon.
Lorsque j’observe ces modèles, j’ai l’impression que les trois modèles essaient de défendre des idées similaires. Ils définissent tous un système testable faiblement couplé qui évite toute dépendance directe en termes de mise en œuvre, tout en utilisant leur propre terminologie et chacun avec des nuances spécifiques. Ils suggèrent tous des approches pour rendre les architectures logicielles plus gérables et testables, mais le font à leur manière.