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

11

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é. Cela 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 davantage de vues d'un système. 1 Une description d'architecture est une description et une représentation formelles d'un système, organisées de manière à soutenir 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 UML (Unified Modeling Language) 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. Mais quelles sont les différences entre celles-ci?
Ce que je pense / 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 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?
KingBoomie
la source
1
Peut-être que les diagrammes de classes sont une sortie de l'activité d'architecture logicielle, de la même manière que les plans d'un bâtiment sont une sortie de l'architecte du bâtiment ...
FrustratedWithFormsDesigner

Réponses:

7

L'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 un diagramme de haut niveau montrant cela.

L'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 système plus large.

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

Enfin, les diagrammes de classes plongent plus profondément dans l'architecture des applications logicielles. Par exemple, à quoi ressemble le contrat de l'interface de journalisation? Comment View interagira avec le contrôleur ... et ainsi de suite. Ceux-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.

Jon Raynor
la source
2

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. Ainsi, ce qui est qualifié d'architecture dépend également du système lui-même et de sa flexibilité (in) en ce qui concerne l'aspect.

Martin Maat
la source
0

Les diagrammes de classes sont très différents des 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 réaliser 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.

Tushar
la source
L'architecture du système doit-elle également contenir quelque chose comme un module GUI? @Tushar
KingBoomie
Oui, il se peut que ce ne soit pas un composant logiciel. @RickBeeloo
Tushar
Mais vous auriez besoin d'une classe dans le logiciel pour accepter l'entrée d'utilisateur et afficher quelque chose à l'utilisateur? Ce devrait donc être aussi un composant logiciel?
KingBoomie
Oui et non. Tous les consommateurs d'un système logiciel ne sont pas des humains :)
Tushar