web-dev-qa-db-fra.com

Architecture logicielle vs architecture système vs diagrammes de classe?

Je suis assez confus au sujet des termes suivants:

Architecture logicielle

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, tout en optimisant les attributs de qualité communs tels que les performances, la sécurité et la gérabilité. Elle implique une série de décisions basées sur un large éventail de facteurs, et chacune de ces décisions peut avoir un impact considérable sur la qualité, les performances, la maintenabilité et le succès global de l'application. ( Microsoft )

Architecture du système

Une architecture système est un modèle conceptuel qui définit la structure, le comportement et plus de vues d'un système . 1 Une description d'architecture est une description formelle et une représentation d'un système, organisées de manière à prendre en charge le raisonnement sur les structures et les comportements du système ( wiki )

Diagrammes de classes

En génie logiciel, un diagramme de classes dans le langage de modélisation unifié (UML) est un type de diagramme de structure statique qui décrit la structure d'un système en montrant les classes du système, leurs attributs, opérations (ou méthodes) et les relations entre les objets. ( wiki )

Si je lis ces descriptions, elles décrivent toutes les interactions entre les différents modules de l'application. Cependant quelles sont les différences entre celles-ci?
Ce que je pense/j'ai essayé de comparer ces termes:

  • Les diagrammes de classes ne sont pas une forme d'architecture système, car la description ci-dessus (structure, behavior, and more views of a system) implique qu'aucun détail d'implémentation n'est présent dans une architecture alors que les diagrammes de classes décrivent l'implémentation et sont probablement plus dans le sens de la conception plutôt que de l'architecture?
  • Je pense que l'architecture système est une architecture qui comprend également des interactions externes (comme la base de données) alors que l'architecture logicielle se concentre sur l'application elle-même?
11
KingBoomie

Architecture du système décrit les composants du système. Par exemple, vous pourriez avoir un système de saisie des commandes composé de:

Web Front End, Business Layer Service et Data Store.

Donc, vous devriez avoir un diagramme de haut niveau montrant cela.

Architecture d'application logicielle décrit l'architecture d'un composant particulier. Par exemple, l'un des composants du système de saisie des commandes est le frontal Web. L'architecture de l'application montrera les différentes couches et interactions de ce composant. Interface utilisateur réactive, Model View Controller, appels de service Web, comment la journalisation sera accomplie, etc. Elle donne et une idée de chaque composant sera construit et les couches de ce composant qui fait partie du plus grand système.

en général, un ou des diagrammes plus détaillés montrant comment ce composant sera construit sont créés.

Enfin, Diagrammes de classes approfondissez l'architecture de l'application logicielle. Par exemple, à quoi ressemble le contrat de l'interface de journalisation? Comment View interagira-t-il avec le contrôleur ... et ainsi de suite. Celles-ci détailleront davantage l'architecture d'application logicielle pour un composant particulier du système.

Il devrait y en avoir beaucoup si le composant particulier est grand et complexe.

7
Jon Raynor

Quelques points supplémentaires:

  • Le système est le terme le plus large et généralement le plus haut niveau, le moins détaillé.
  • Une partie du système peut être classée comme logiciel.
  • Une partie du logiciel peut être décrite à l'aide de diagrammes de classes.

Dernier point mais non le moindre: l'architecture concerne des choix ponctuels difficiles ou impossibles à reprendre plus tard sans tout reconstruire. La meilleure définition de l'architecture, qui la distingue du design, est "tout ce qui coûte vraiment cher à changer". Ainsi, en architecture, vous trouverez généralement le choix d'un langage de programmation, du système d'exploitation, de la marque d'une base de données relationnelle, tout ce qui vous enferme dans un type de solution. Donc, ce qui est qualifié d'architecture dépend aussi du système lui-même et de sa (in) flexibilité en ce qui concerne l'aspect.

2
Martin Maat

Les diagrammes de classes sont assez différents des deux autres termes - ils montrent ce que les classes offrent aux autres classes et comment elles interagissent les unes avec les autres. Cependant, les termes "architecture système" et "architecture logicielle" créent de la confusion et nécessitent des éclaircissements supplémentaires.

Il est important de comprendre qu'un "système" fait référence non seulement aux composants logiciels mais également à d'autres composants tels que les composants matériels. Si un système ne contient qu'un système logiciel, il n'y a pas de différence entre les deux termes. Cependant, évidemment, si un système contient d'autres composants non logiciels, l'architecture logicielle sera considérablement différente de l'architecture système du système.

0
Tushar