341 votes

Conception logicielle et architecture logicielle

Quelqu'un pourrait-il expliquer la différence entre la conception de logiciels et l'architecture de logiciels ? Plus précisément, si vous demandez à quelqu'un de vous présenter le "design", qu'attendez-vous qu'il vous présente ? Il en va de même pour l'"architecture".

D'après ce que je comprends actuellement :

conception : Diagramme UML, organigramme, maquettes simples (pour l'interface utilisateur) pour un module ou une partie spécifique du système.

architecture : diagramme des composants (montrant comment les différents modules du système communiquent entre eux et avec d'autres systèmes), quel langage doit être utilisé, patrons... ?

Corrigez-moi si je me trompe. Je vois que Wikipedia a des articles sur http://en.wikipedia.org/wiki/Software_design et http://en.wikipedia.org/wiki/Software_architecture mais je ne suis pas sûr de les avoir compris correctement.

0 votes

Les questions ci-dessous vous ont-elles été utiles ? ;)

0 votes

N'oubliez pas que, dans une certaine mesure, la distinction (qui est certainement réelle) est souvent faite par prétention. Aucun architecte ne peut être bon sans une bonne compréhension de la conception et de la construction, et aucun concepteur ne peut être bon sans une compréhension raisonnable de l'architecture.

0 votes

Et j'ai vu un jour l'architecture décrite comme "une conception adaptée à un objectif". C'est un peu banal, mais cela contient une part de vérité, car une bonne architecture doit en fin de compte être centrée sur l'objectif et non sur la mise en œuvre.

326voto

Razzie Points 14705

Vous avez raison, oui. L'architecture d'un système est son "squelette". C'est le plus haut niveau d'abstraction d'un système. Quel type de stockage de données est présent, comment les modules interagissent-ils entre eux, quels systèmes de récupération sont en place. Tout comme les modèles de conception, il existe des modèles d'architecture : MVC, conception en couches à 3 niveaux, etc.

La conception de logiciels consiste à concevoir les modules / composants individuels. Quelles sont les responsabilités, les fonctions, du module x ? De la classe Y ? Que peut-il faire et que ne peut-il pas faire ? Quels modèles de conception peuvent être utilisés ?

En résumé, l'architecture logicielle concerne davantage la conception de l'ensemble du système, tandis que la conception logicielle met l'accent sur le niveau des modules, des composants et des classes.

116 votes

De plus, l'architecture traite généralement du quoi (ce qui est fait) et du où (ce qui est fait), mais jamais du comment. C'est là que réside la principale différence : la conception complète le comment dont l'architecture ne parle pas (et ne devrait pas parler).

2 votes

Bonjour@AsafR ! Cela m'a fait penser à l'architecture comme à l'analyse, car l'analyse traite de ce qui est fait et la conception du comment.

2 votes

Aujourd'hui, les gens se chargent eux-mêmes de la conception, de la mise en œuvre, de la maintenance des serveurs dorsaux (probablement en nuage) et de la conception frontale (Web ou mobile). Je crois qu'on les appelle des développeurs "full stack". Pas vrai ?

80voto

Patrick Karcher Points 11927

Dans certaines descriptions de la SDLC (cycle de vie du développement logiciel) ils sont interchangeables, mais le consensus est qu'ils sont distincts. Ils sont à la fois : différents (1) étapes , (2) domaines de responsabilité et (3) les niveaux de décision .

  • Architecture est une vue d'ensemble : le choix des cadres, des langages, de la portée, des objectifs et des méthodologies de haut niveau ( Rationnel , cascade , agile etc.).
  • Design est la plus petite image : le plan de la façon dont le code sera organisé, la façon dont les contrats entre les différentes parties du système se présenteront, le processus continu d'élaboration de l'architecture du système. mise en œuvre des méthodologies et des objectifs du projet. Les spécifications sont rédigées au cours de cette étape.

Ces deux étapes semblent se mélangent pour différentes raisons.

  1. Les petits projets n'ont souvent pas une portée suffisante pour séparer la planification en deux étapes.
  2. Un projet peut faire partie d'un projet plus vaste, et donc certaines parties des deux étapes sont déjà décidées. (Il existe déjà des bases de données, des conventions, des normes, des protocoles, des cadres, du code réutilisable, etc.)
  3. De nouveaux modes de réflexion sur le SDLC (cf. Méthodologies agiles ) réorganisent quelque peu cette approche traditionnelle. La conception (l'architecture dans une moindre mesure) intervient tout au long du SDLC. à dessein . Il y a souvent plus itérations où tout le processus se répète encore et encore.
  4. Le développement de logiciels est de toute façon compliqué et difficile à planifier, mais les clients, les gestionnaires et les vendeurs compliquent généralement la tâche en modifiant les objectifs et les exigences à mi-parcours. Décisions de conception et même d'architecture doit être fait plus tard dans le projet, que ce soit prévu ou non.

Même si les étapes ou les domaines de responsabilité se mélangent et se déroulent un peu partout, il est toujours bon de savoir à quel niveau de décision on se situe. (Nous pourrions continuer indéfiniment avec ceci. J'essaie de garder un résumé.) Je vais terminer avec : Même s'il semble que votre projet n'a pas d'étape formelle d'architecture ou de conception/AOR/documentaiton, cela se passe, que quelqu'un le fasse consciemment ou non. Si personne ne décide de faire de l'architecture, alors il s'en produit une par défaut qui est probablement mauvaise. Idem pour le design. Ces concepts sont presque plus important s'il n'y a pas d'étapes officielles qui les représentent.

0 votes

Bonne réponse. J'aime l'accent mis sur la façon dont on peut semblent pour faire partie de l'autre. Le quatrième point soulève une question intéressante : La conception dans un domaine problématique particulier est-elle moins valable lorsqu'elle n'a pas encore d'architecture dans laquelle exister ? L'expérience suggère que oui, mais en théorie, j'aime à penser qu'une conception qui reste dans le cadre approprié (c'est-à-dire pour un composant particulier) devrait être tout aussi valable, quelle que soit son utilisation finale.

55voto

Chris Kannon Points 1901

L'architecture est stratégique, tandis que le design est tactique.

L'architecture comprend les cadres, les outils, les paradigmes de programmation, les normes d'ingénierie logicielle basées sur les composants, les principes de haut niveau

Alors que la conception est une activité qui s'intéresse aux contraintes locales, telles que les modèles de conception, les idiomes de programmation et les remaniements.

0 votes

Je voudrais moins de références à "design" et "architeture" dans la définition du "design" pour voter en faveur de cette proposition...

1 votes

D'accord peut-être : L'architecture comprend les cadres, les outils, les paradigmes de programmation, les normes de génie logiciel à base de composants, les principes de haut niveau Alors que la conception est une activité qui s'intéresse aux contraintes locales, comme les patrons de conception, les idiomes de programmation et les remaniements.

38voto

George S. Points 179

J'ai trouvé ceci alors que je cherchais moi-même une distinction simple entre architecture et design ;
Que pensez-vous de cette façon de voir les choses ?

  • l'architecture est "ce" que nous construisons ;
  • Le design est le "comment" de la construction ;

4 votes

Ce que nous construisons, ce sont les exigences du client. La façon dont nous le construisons dépend de l'architecture et du design. Donc non, c'est complètement faux.

1 votes

@Marek Je ne vois pas ce qu'il y a de mal à cela. L'architecture, c'est ce qu'il faut construire, ce que veut le client, à quoi cela doit ressembler en général, de quels composants cela doit être fait, etc. La conception est la façon dont ces choses sont ensuite effectivement réalisées : Les implémentations réelles des composants, des algorithmes, etc.

15voto

user662182 Points 131

Je dirais que vous avez raison, dans mes propres mots ;

Architecture est l'affectation des exigences du système aux éléments du système. Quatre affirmations sur une architecture :

  1. Elle peut introduire des exigences non fonctionnelles comme le langage ou les modèles.
  2. Il définit l'interaction entre les composants, les interfaces, le calendrier, etc.
  3. Il ne doit pas introduire de nouvelles fonctionnalités,
  4. Elle attribue aux éléments les fonctions (conçues) que le système est censé exécuter.

L'architecture est un étape essentielle de l'ingénierie lorsqu'une complexité du système est subdivisée.

Exemple : Pensez à votre maison, vous n'avez pas besoin d'un architecte pour votre cuisine (un seul élément impliqué) mais le bâtiment complet a besoin de définitions d'interaction, comme les portes et le toit. .

Design est une représentation informative de l'implémentation (proposée) de la fonction. Elle a pour but de susciter des réactions et de discuter avec les parties prenantes. Il peut s'agir d'une bonne pratique mais n'est pas une étape essentielle de l'ingénierie .

Il serait bien de voir le design de la cuisine avant qu'elle ne soit installée, mais ce n'est pas essentiel pour les besoins de la cuisine. :

Si j'y pense, on peut dire :

  • l'architecture est destinée à un public/des ingénieurs à un niveau d'abstraction plus détaillé
  • La conception est destinée au public à un niveau d'abstraction moins détaillé.

0 votes

+1 pour Architecture est l'attribution des exigences du système aux éléments du système. -1 virtuel pour l'utilisation du mot "a" dans la liste finale. Je pense que votre définition initiale (correcte) est l'antithèse de l'abstraction.

0 votes

Je ne suis pas sûr des points 1 et 3. Rien ne devrait introduire plus de fonctionnalités que ce qui est nécessaire pour satisfaire les exigences des parties prenantes. Les contraintes sont davantage une question de méthodologie. Les autres points sont utiles. L'analogie avec la cuisine n'est pas très bonne ; vous n'avez pas besoin d'un architecte, mais la conception d'une cuisine est un domaine assez spécialisé dans lequel quelque chose est conçu à l'aide de composants quelque peu modulaires. Je ne suis pas d'accord avec le fait que la conception ne soit pas une étape essentielle de l'ingénierie. Je ne suis pas sûr de la signification des deux derniers points.

0 votes

Quelle est la place de la mise en œuvre ? La mise en œuvre n'est-elle pas la conception ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X