web-dev-qa-db-fra.com

Quelle est la différence entre les modèles de conception et les modèles architecturaux?

Lorsque nous lisons à propos de modèles de conception sur Internet, nous notons qu'il existe 3 catégories:

  • Création
  • De construction
  • Comportementale

Mais lorsque nous créons l'architecture d'un logiciel, nous pensons à MVP, MVC ou MVVM.

Par exemple, parmi les modèles de création, j'ai trouvé le modèle de singleton, mais j'ai également utilisé le singleton dans mon MPV.

Ma question est donc la suivante: un modèle de conception est-il une structure globale d’un produit?

  • Si oui, comment singleton peut-il être un motif de conception? Parce que je peux l'utiliser n'importe où dans mon application. Fondamentalement, la création d'une instance à la fois en mémoire est limitée, mais ce concept ne définit-il pas la conception du logiciel?

  • Sinon, où sont MVP, MVC et MVVM dans les trois catégories de modèles? Et quelle est la différence entre la conception et l'architecture de logiciels?

106
Jeevan Bhatt

Cela nécessite une explication détaillée, mais je vais essayer d’esquisser les différences au mieux de mes connaissances.

Les modèles sont des éléments communs distillés que vous trouvez dans les programmes. Cela nous permet de déconstruire une grande structure complexe et de construire à l'aide de pièces simples. Il fournit une solution générale à une classe de problèmes.

Un grand logiciel complexe subit une série de déconstruction à différents niveaux. Au niveau général, les modèles architecturaux sont les outils. À un niveau inférieur, les modèles de conception sont les outils et au niveau de la mise en œuvre, les paradigmes de programmation sont les outils.

Une tendance peut se produire à des niveaux très différents. Voir Fractales . Tri rapide, tri par fusion sont tous des modèles algorithmiques permettant d’organiser un groupe d’éléments dans un ordre.

Pour une vue des plus simplistes:

 Programming paradigms   Specific to programming language
 ......................
 Design patterns         Solves reoccurring problems in software construction
 ......................
 Architectural patterns  Fundamental structural organization for software systems
 ......................

Les idiomes sont des techniques de programmation spécifiques aux paradigmes et aux langages, qui complètent les détails de bas niveau.

Les modèles de conception sont généralement associés à des points communs au niveau du code. Il fournit divers schémas pour affiner et construire des sous-systèmes plus petits. Il est généralement influencé par le langage de programmation. Certains modèles sont insignifiants en raison de paradigmes de la langue . Les modèles de conception sont des tactiques à moyenne échelle qui précisent une partie de la structure et du comportement des entités et de leurs relations.

Tandis que , les modèles architecturaux sont considérés comme des points communs à un niveau supérieur aux modèles de conception. Les modèles architecturaux sont des stratégies de haut niveau qui concernent des composants à grande échelle, les propriétés globales et les mécanismes d'un système.

Comment les motifs sont-ils obtenus? À travers :

  1. réutilisation,
  2. classification
  3. et enfin l'abstraction pour distiller les points communs.

Si vous avez suivi les pensées énoncées ci-dessus. Vous verrez que Singleton est un "modèle de conception", tandis que MVC est l'un des modèles "architecturaux" permettant de traiter la séparation des problèmes.

Essayez de lire sur:

  1. http://en.wikipedia.org/wiki/Architectural_pattern_ (computer_science)
  2. http://en.wikipedia.org/wiki/Design_pattern
  3. http://en.wikipedia.org/wiki/Anti-pattern
157
pyfunc

Les modèles de conception sont des modèles bien connus pour résoudre les problèmes techniques d’une manière qui a fait ses preuves à maintes reprises. Les modèles de conception sont des structures et des pratiques de conception courantes permettant de créer un logiciel orienté objet réutilisable. Les exemples de modèles de conception sont Modèle d'usine, Singleton, Façade, État, etc. Les modèles de conception peuvent être utilisés pour résoudre des problèmes plus petits dans l'application, et sont beaucoup plus faciles à injecter, modifier, ajouter que l'architecture globale.

les modèles d'architecture sont des modèles bien connus pour résoudre les problèmes d'architecture d'applications logicielles. L'architecture d'application logicielle est le processus de définition d'une solution structurée qui répond à toutes les exigences techniques et opérationnelles. L'architecture de l'application est l'organisation globale du code. MVC, MVVM, MVP, la couche n (c.-à-d. UI-BLL-DAL), etc. sont des exemples d'architectures différentes. L'architecture doit généralement être décidée à l'avance et est souvent difficile à modifier une fois l'application construite.

9
Pawan Kumar Tiwari

Les éléments architecturaux tendent vers des collections de classes ou de modules, généralement représentés par des boîtes. Les diagrammes relatifs à l'architecture représentent le niveau le plus élevé, alors que les diagrammes de classes se situent au niveau le plus atomique. Les modèles d'architecture ont pour objectif de comprendre comment s'articulent les principales parties du système, comment les messages et les données circulent dans le système et d'autres problèmes structurels. Les modèles d'architecture utilisent divers types de composants, chacun étant composé de modules successivement plus petits. Chaque composant a une responsabilité au sein de l’architecture. Les modèles de conception sont des modèles de conception de bas niveau ou de niveau classe pour de plus petites particules d’applications.

Pour plus d'informations: https://www.oreilly.com/ideas/contrasting-architecture-patterns-with-design-patterns

1
Vishnu Chandel

Modèles de conception diffèrent des modèles architecturaux par leur étendue, ils sont plus localisés, ils ont moins d’impact sur la base de code, ils ont une incidence sur une section spécifique de la base de code, par exemple:

How to instantiate an object when we only know what type needs to be instantiated at run time (maybe a Factory Class?)
How to make an object behave differently according to its state (maybe a state machine, or a Strategy Pattern?)

Les modèles architecturaux ont un impact considérable sur la base de code, affectant le plus souvent l’application dans son ensemble, que ce soit horizontalement (comment structurer le code dans une couche) ou verticalement (comment retour). Exemples de modèles architecturaux: Modèle-Vue-Contrôleur, Modèle-Vue-VueModèle

0
Isuru vindula

Eh bien, pour l'essentiel, c'est une question de langue. Selon mon expérience, la frontière entre le design et l’architecture, en ce qui concerne les logiciels, est un large fleuve dont la largeur résulte du niveau de l’eau qui, à son tour, est principalement influencé par les saisons du marketing. Généralement, le terme "conception" est utilisé avec un aspect important du comportement du produit logiciel tel que reconnu par les utilisateurs finaux, alors que "architecture" désigne la structure technique d'un logiciel, i. e. les composants, les bibliothèques, les protocoles et tout ce dont il a besoin pour réaliser la conception. Les "modèles de conception" jouent deux rôles: premièrement, ils sont considérés comme les meilleures pratiques pour résoudre une catégorie de problèmes (plus ou moins) standard, et non de produits; 2ème ils aident les développeurs à communiquer. En restant avec votre exemple de Singleton, cela nous permet de savoir en quoi consiste la mécanique en utilisant simplement le mot, au lieu d’expliquer à chaque fois, que nous avons créé une seule instance en utilisant un espace de données désigné (variable ou autre) qui est défini dans une manière contrôlée et est garanti d'être le seul, parce que nous avons protégé le constructeur de la classe, etc. Donc, IMHO, la réponse courte à votre question est: Cela dépend de qui parle. Cela a-t-il un sens?

0
ofi