Quelle est la différence entre un architecte logiciel et un ingénieur logiciel ?


Je pense que le titre d'architecte logiciel est un peu galvaudé et souvent confondu avec celui de concepteur de logiciels (qui est encore un autre terme déroutant, car il n'a rien à voir avec la conception en tant qu'effort artistique.)

Mes définitions seraient :


Architecte logiciel - cette personne s'occupe des blocs de haut niveau. La connectivité entre les systèmes, le choix des meilleures technologies pour les systèmes eux-mêmes, et la cartographie des exigences commerciales en exigences techniques. Il a suffisamment d'expérience pour comprendre quand il faut utiliser push/pull vs pub/sub, par exemple, ou quand une db NoSQL est acceptable à la place d'une base de données SQL. Il comprend également les coûts de la technologie résultante (en termes de performances et de dépenses opérationnelles réelles). Enfin, un architecte doit comprendre l'entreprise, et pas seulement la technologie.


Concepteur de logiciels - une fois l'architecture établie, un concepteur est chargé de créer la conception réelle du logiciel. Il peut créer une conception pour chaque bloc architectural en modélisant les classes ou les relations de base de données appropriées. Il peut également définir des protocoles de fil, des formats de fichiers, etc.

Programmeur de logiciels - une fois la conception établie, le développeur de logiciels met en œuvre la conception.

Par ordre d'importance, les décisions prises au niveau de l'architecture sont critiques et sont souvent très difficiles et coûteuses à modifier en cas d'erreur. Une erreur d'architecture peut coûter des années dans des systèmes complexes. Une erreur de conception peut coûter quelques sprints. Une erreur de programmation peut être corrigée dès qu'elle est identifiée.

En outre, gardez à l'esprit qu'il n'y a aucune obligation qu'une personne ne puisse pas remplir plus d'un rôle. Dans les organisations formelles, vous pouvez avoir l'architecte logiciel comme personne senior (ou même un cadre), le concepteur étant une sorte de chef d'équipe, et le programmeur un contributeur individuel dans cette équipe. Cependant, dans la pratique, l'architecte logiciel ne quitte généralement pas un projet une fois que le travail d'architecture est terminé, et une fois que le travail d'architecture ralentit, il s'implique généralement dans la conception, et dans la programmation.

La mise en garde est toutefois que l'architecte est responsable du choix des blocs technologiques en fonction de leurs mérites, et non de sa familiarité, auquel cas il peut se retrouver avec un choix dans lequel il peut contribuer peu au niveau du code. Dans ces cas, il devrait savoir mieux et laisser la mise en œuvre aux experts du domaine.

Ce n'est que mon opinion cependant, je'suis sûr qu'il y a beaucoup d'autres interprétations. De plus, plus l'application est simple, plus certains rôles deviennent superflus. Pour une application simple, vous n'avez pas besoin d'un architecte. Si l'application est suffisamment simple, vous n'aurez peut-être même pas besoin d'un concepteur. Mais vous avez toujours besoin de quelqu'un pour la mettre en œuvre.