Dans Architecture logicielle - Fondements, théorie et pratique , je peux trouver des définitions pour les deux. Le problème est que je ne comprends pas ce que chacun d’entre eux signifie en clair:
Un modèle architectural est une collection nommée de décisions de conception architecturale applicables à un problème de conception récurrent paramétré pour prendre en compte différents contextes de développement logiciel dans lesquels ce problème apparaît.
Un style architectural est un ensemble nommé de décisions de conception architecturale qui (1) sont applicables dans un contexte de développement donné, (2) limitent les décisions de conception architecturale spécifiques à un système particulier dans ce contexte, et (3) dégagent des qualités bénéfiques dans chaque contexte. système résultant.
Que signifie chacun et quelles sont les différences entre eux?
Un motif architectural est un moyen de résoudre un problème architectural récurrent. MVC, par exemple, résout le problème de la séparation de l'interface utilisateur du modèle. Capteur-Contrôleur-Actionneur est un modèle qui vous aidera à résoudre le problème de l'activation face à plusieurs sens d'entrée.
Un style architectural, par contre, n’est qu’un nom donné à une conception architecturale récurrente. Contrairement à un modèle, il n’existe pas de solution à un problème.
Pipe & Filter ne résout aucun problème spécifique, c'est juste une façon d'organiser votre code. Client/serveur, programme principal & sous-routine et types de données abstraites/OO, les mêmes.
En outre, une architecture unique peut contenir plusieurs styles architecturaux, et chaque style architectural peut utiliser plusieurs modèles architecturaux.
Franchement, j'ai toujours considéré ces deux termes comme synonymes! Et la littérature profane (relativement parlant) les traite définitivement comme tels. Reportez-vous MSDN ou Wikipedia
Cependant, votre question m'a un peu intriguée, j'ai donc creusé un peu plus et franchement ... je n'ai pas trouvé grand chose à part une référence à Un guide pratique de l'architecture d'entreprise (The Coad Series) , dont je cite: -
An architectural style (Base et al. 1997) and an architectural pattern
(Buschmann et al. 1996) are essentially synonymous.
Basé sur un peu plus googler , voici ce que je pense pourrait être un moyen possible de différencier les deux
Comment un modèle architectural différera-t-il d'un modèle de conception, c'est-à-dire un adaptateur, l'observateur correspond essentiellement au niveau de granularité auquel ils sont appliqués (je sais que cela ne fait pas partie de la question mais correspond, je pense)
En termes très simples:
Est un concept, une théorie (et comment elle est mise en œuvre, cela dépend de vous). Cela peut aussi s'appliquer à l'extérieur du monde des logiciels.
Par exemple: REST ( Representational State Transfer ) est un style architectural basé sur certains principes utilisant les principes de base "Web" actuels.
Décrit une solution au niveau du système logiciel (ou du module). En d'autres termes, comment il interagit, par exemple vue avec modèle et modèle avec contrôleur.
Est une solution au niveau de base, il parle de classes, de fonctions et de la façon dont la logique s'écoule.
Le style architectural est abstrait, c'est-à-dire conceptuel.
+---------------+--------------------------------------------------------+
| Category | Architecture styles |
+---------------+--------------------------------------------------------+
| Communication | SOA, ROA, Message Bus |
| Deployment | Client/Server |
| Domain | Domain Driven Design,Monolithic application |
| Structure | Component-Based, Object-Oriented, Layered, Plug-ins |
+---------------+--------------------------------------------------------+
Un motif architectural est concret, c’est-à-dire qu’il s’applique à un style architectural.
Un modèle de conception est une solution générale réutilisable à un problème récurrent de la conception de logiciels au niveau architectural.
Analogie: Style d'architecture des temples pour différentes religions:
À mon avis, les modèles et les styles architecturaux sont des mécanismes complémentaires pour encapsuler l'expertise en conception. Un style architectural fournit une collection d'éléments de conception de blocs de construction, des règles et des contraintes pour la composition des blocs de construction, ainsi que des outils d'analyse et de manipulation des conceptions créées dans le style. Les styles fournissent généralement des conseils et des analyses pour la construction d’une vaste classe d’architectures dans un domaine spécifique, tandis que les modèles se concentrent sur la résolution de problèmes plus petits et plus spécifiques dans un style donné (ou peut-être plusieurs styles).
Pour les modèles architecturaux, identifiez des méthodes spécifiques pour styliser votre code comme décrit par le GoF like; Adaptateur, stratégie, constructeur, médiateur, etc.
Pour le style architectural, pensez au système global; I.E., utilisant MVC pour la présentation, DDD pour modéliser la couche de gestion, WCF (si vous êtes dans .NET) pour Interop, SOA pour l'intégration, etc.
Les modèles de conception architecturale sont plus spécifiques à un domaine, tandis que les styles architecturaux sont plus génériques et utilisables dans un large éventail d'applications. En raison de cela, les modèles architecturaux nécessitent davantage de connaissances du domaine.
Schémas architecturaux - définissent un ensemble général de types d'éléments et leurs interactions . Pipes et filtres, Modèle – Vue – Contrôleur et Réflexion sont des exemples de motifs architecturaux.
Style architectural - le terme a été inventé par Garlan et Shaw. Il s’agit d’un modèle Idiomatique d’organisation du système. Par exemple, un système client-serveur Est un style architectural.
p.s: Beaucoup de styles architecturaux originaux ont été reformulés sous forme de motifs.
Modèle d'architecture: contexte + problème -> solution
Style d'architecture: partie de solution du motif d'architecture
Le style d'architecture est donc analogue à la partie solution du modèle d'architecture. Il est souvent utilisé dans les ouvrages traitant de la documentation d'architecture où l'accent est mis sur la solution et non sur la manière dont le contexte et le problème sont apparus.