J'aime beaucoup la réponse de William Pietri (+1), mais je pense qu'elle doit être complétée. Même en supposant que ce que vous entendez par systèmes comprend uniquement des logiciels.
Mais avant d'entrer dans le vif du sujet, je ne connais pas de livre pour vous aider. Tout ce qui suit, j'ai appris par expérience (c'est-à-dire les trois points que William a soulevés).
Ce dont vous parlez s'étend sur au moins quatre grands rôles. Parfois, une personne peut remplir tous ces rôles, pour des projets de petite à moyenne taille, mais lorsque vous commencez sur de grands projets, vous devez au moins quelque peu séparer ces rôles. Il est difficile pour quiconque d'être expert dans tous les domaines de manière significative.
Analyste d'affaires
C'est la personne qui parle au client et traduit ses besoins en quelque chose qu'un architecte peut comprendre. Fondamentalement, une liste d'exigences correctement formulées. Cela comprend les exigences fonctionnelles évidentes (que doit fournir ce système?), Mais également les exigences non fonctionnelles (quelles sont les caractéristiques générales que le système doit remplir? Cela peut inclure la sécurité, la fiabilité, la disponibilité, la résilience, la capacité, les performances, la robustesse et d'autres exigences du point de vue de l'utilisateur).
C'est la première étape de ce que le système doit faire, le tout début d'une réflexion sérieuse.
Architecte système
Cette personne produit le cadre technique de haut niveau dans lequel travailler. Ils donnent le plan de match. Les outils généraux, techniques, constructions. Ils décomposent l'ensemble du système en composants plus petits, comment ils s'intègrent les uns aux autres, comment ils s'adaptent au monde extérieur ...
Cela aide à bien des égards à affiner ce qui doit être pensé. Très souvent, des problèmes seront découverts à ce stade concernant les exigences telles que rédigées par l'analyste commercial. Retour à eux pour quelques itérations pour améliorer leur compréhension de ce qu'ils veulent et leur expression.
Concepteur de système
Ce rôle consiste à faire en sorte que tout fonctionne. Cela pourrait être plus un travail d'équipe qu'un one-man show. Mais il y a probablement un concepteur principal pour superviser la conception globale du système. Cette personne doit creuser dans les détails et s'assurer que la vue de l'architecte peut réellement être construite.
Attendez-vous à un raffinement supplémentaire de l'architecture du système, et donc potentiellement de l'analyse commerciale.
Responsable des tests
Ce rôle est très souvent oublié. Mais au bout du compte, si vous ne pouvez pas le tester, comment pouvez-vous prouver que vous pouvez le construire? Il doit y avoir un examen des résultats de toutes les étapes: analyse commerciale, architecture et conception par une personne compétente en test qui sera en mesure de mettre en évidence les lacunes et donc de permettre des corrections précoces, bien avant qu'un code ne soit écrit.
Voilà un bref résumé.
Ces gars / filles ne sont que la direction générale des gens de l'usine dans la chaîne pour réfléchir à ce qui doit être pensé.
Pour les projets complexes tels que les grandes applications bancaires ou spatiales, pour ne prendre que deux exemples (pensez à plusieurs centaines à plusieurs milliers de jours-homme), il existe de nombreux experts en la matière que nous appelons pour examiner et soutenir les projets à chaque étape. Ces rôles comprennent l'analyse de la sécurité, le dimensionnement du système, la capacité, les performances, les bases de données, le clustering et de nombreux autres domaines d'expertise étroits, y compris des domaines d'activité précis. La variété des rôles dépend de la taille et de la complexité des systèmes.
Tout cela pour dire que vous ne devriez pas essayer de tout savoir, vous ne le ferez pas. Vous pouvez cependant avoir une idée globale et sur de petits projets, vous pouvez approfondir beaucoup plus que sur de grands projets, tout simplement parce que le niveau de complexité vous permet d'être plus complet.
Si vous voulez savoir comment concevoir des systèmes, vous devez commencer à poser des questions en sortant des sentiers battus. Mettez-vous suffisamment à la place du client et essayez de penser à ce qui pourrait mal tourner, à ce qui doit être testé. Rassemblez-vous ensuite avec un vrai client et incitez-le à expliquer l'étendue et les limites du système dont il envisage avoir besoin. De plus, chaque fois que je dis «client», vous devez comprendre que cela englobe plusieurs personnes très différentes. Il y a la personne qui utilise le système jour après jour pour ce qu'il a été conçu. Il y a l'opérateur, le support technique, le gestionnaire qui a besoin d'un rapport ou d'un autre, l'auditeur, l'équipe d'infrastructure, la partie prenante qui l'a payé, le responsable qualité qui a besoin de moyens pour tester votre système ... Demandez à tous (et si ils sont une seule personne, demandez-leur de mettre tous ces chapeaux un par un), alors demandez-leur tous ce dont ils ont besoin et vous aurez un bon début pour savoir quelles sont vos exigences système. De là, vous pouvez dériver l'architecture, et de là la conception.
Pour les systèmes complexes (logiciels uniquement ou à intégrer au matériel dans le sens le plus générique), non seulement une personne ne suffit pas pour chacun des quatre rôles énumérés ci-dessus, mais vous devez gérer le projet, même la définition de ce que le système doit faire, sans parler des autres phases.
HPH, asm.