12
votes

Comment démarrez-vous une discussion d'architecture logicielle?

Je travaille pour une organisation qui est à peu près une start-up au sein d'une grande entreprise. L'équipe a plusieurs ingénieurs de base de données et quelques ingénieurs logiciels (dans le champ Mining de données). Nous grandissons à un rythme rapide, ce qui met la nécessité d'avoir une stratégie d'architecture globale ou une feuille de route technologique (ou une boussole) pour les prochaines années. En tant qu'ingénieur de logiciel, la tâche a été attribuée à la mise hors tension des réunions bimensuelles pour diriger cette discussion. Donc, ma question est de savoir comment vous lancez votre rôle en tant qu'architecte? Comment commencez-vous une discussion d'architecture à l'échelle de l'organisation? J'ai commencé à lire le livre "97 choses que chaque architecte logiciel devrait savoir", mais j'aimerais entendre davantage de vos expériences. Ainsi, en tant qu'architecte, comment avez-vous commencé?

meilleures salutations,


0 commentaires

5 Réponses :


1
votes

Je n'ai pas personnellement eu cette expérience, mais voici quelques indices:

  • Obtenez une formation et obtenez les gens qui seront dans ces discussions formées dans le sujet. Vous aurez un temps plus significatif.
  • Avoir un projet initial à améliorer sur la base des idées des autres personnes. Il est beaucoup plus facile de commencer à partir d'un brouillon que de commencer à partir de zéro
  • avez quelqu'un qui travaille de près avec vous à ce sujet (analogue à la programmation paire). Deux esprits travaillant pendant une heure offrent généralement une meilleure production qu'un esprit travaillant pendant une heure en matière d'activités intensives intenses.

0 commentaires

0
votes

Ceci est moins d'expérience et plus de la pensée pratique. Tout d'abord, il est difficile de définir une architecture logicielle - une excellente référence au démarrage est toujours ' Les modèles de conception ont expliqué 'comme cela prend une approche non logicielle pour comprendre l'architecture.

Commencez à regarder des problèmes de base spécifiques d'architecture tels que

  • Communauté et variabilité
  • Séparation des préoccupations
  • Agrégation sur l'abstraction

    L'architecture ne consiste pas à éliminer la complexité plutôt qu'il s'agit de la gérer. Donc, commencez par comprendre les problèmes qui comprennent la complexité dans le contexte de votre projet


0 commentaires

3
votes
  1. Découvrez qui est sur votre équipe
  2. Découvrez ce qui s'intéresse au niveau de l'analyse des systèmes
  3. Découvrez qui connaît des personnes dans la société plus large
  4. Découvrez ce qui est utilisé dans la société plus large
  5. Découvrez ce que les gens ont utilisé auparavant dans votre division particulière
  6. Prenez toutes les informations ci-dessus et utilisez-la pour commencer à parler maintenant, bientôt et éventuellement. Portez une attention particulière à la manière dont vous vous connectez avec le monde extérieur à la fois en termes d'extérieur de la division et de l'extérieur de la société.

    Ne commencez pas à parler de l'architecture avant de savoir ce que vous commencez. Ne commencez pas une discussion sur l'architecture jusqu'à ce que tout le monde ne le fait aussi.


1 commentaires

bonne réponse, beaucoup mieux que mine =) +1



0
votes

Concentrez-vous sur les exigences non fonctionnelles, et de là, essayez de choisir un modèle architectural. Une analyse de qualité logicielle sera utile. Je voudrais ensuite embellir sur le modèle et le décrire à l'équipe, sur la base des niveaux de granularité, ils sont intéressés.


0 commentaires

4
votes

Votre question est difficile parce qu'elle touche de nombreux domaines: processus, leadership et conception logicielle (ou architecture). Je vais supposer que vous avez déjà un processus standard, mais si vous n'essayez pas, essayez l'un des processus agiles. Je parlerai de leadership et de l'architecture logicielle.

leadership . Fred Brooks 'Super livre, Le mythique myth-mois , parle d'avoir un leader technique de la manière dont une équipe chirurgicale a un chef de file. Personnellement, j'aime plus de collaboration que je ne vois avec les médecins, essayons donc l'équipe chirurgicale de Brooks comme extrême. Néanmoins, vous avez besoin de quelqu'un pour coordonner techniquement qui fait quoi, comme alloué les gens à travailler dans différentes parties du système, décidant quelles sont les parties les plus difficiles (les plus risquées) sont (afin qu'elles ne soient pas diffusées avant d'être chères changer / correction) et faire des choix lorsque l'équipe est en désaccord. Ce type de leadership technique est nécessaire si vous construisez des logiciels, des voitures ou des bâtons de pogo.

architecture / design . Le mantra standard est que "chaque système a une architecture", mais le corollaire est que toutes les architectures ne sont pas délibérément choisies. Vous pouvez implicirement copier l'architecture de votre dernier projet, dites un système de 3 niveaux. Ou il peut être pré-décidé une fois que vous savez que vous utilisez un cadre comme EJB. Au début d'un projet, vous ferez des décisions architecturales et certaines seront difficiles à changer plus tard. Comment allez-vous persister les données? Allez-vous utiliser un cadre (par exemple, printemps, EJB, ROR)? Voulez-vous traiter des données progressivement ou par lots?

À peu près, toute architecture peut être obligée de répondre à vos besoins. Par exemple, vous pouvez utiliser ROR pour construire un thermostat. Mais vous aurez un moment plus facile lorsque votre architecture est bonne ajustée pour les exigences. Parfois, vous aurez des exigences, telles que la latence d'interface utilisateur faible, qui peut être aidée par un choix d'architecture sage, comme utiliser Ajax. Donc, le début de votre projet est une occasion de penser à ces choses et de les faire correctement. (Et cela ne signifie pas que vous montez à la montagne, pensez difficile, puis dictez vos réponses à l'équipe - ici encore une fois, je favorise la collaboration).

N'ayez pas peur de penser à l'architecture à l'avance, surtout de la manière dont il peut vous aider à éviter les difficultés, mais n'essayez pas de décider à l'avance. Vous aurez des problèmes si une partie de votre équipe a commencé à utiliser Ruby sur Rails, tandis qu'une autre partie a commencé à utiliser EJB - ainsi de prendre des décisions techniques, celles qui sont forcées sur vous et celles qui répondront à vos plus grands risques.

Une dernière chose: Les discussions anticipées de l'architecture sont une bénédiction et une malédiction. Ils sont une bénédiction en ce sens qu'ils obtiennent des idées tôt et vous permettent de choisir choisir votre conception plutôt que de la gaffe. Mais ils sont une malédiction dans ce que tout le monde aura des opinions et il peut être difficile de les faire preuve de toutes les mêmes directives (c'est-à-dire à la nécessité d'un leadership technique).

Je recommande le chapitre 12 de Architecture de logiciels appliqués Pour guider votre question. La liste des rubriques donne une bonne idée de ses conseils: créer une vision, l'architecte en tant que consultant technique clé, l'architecte prend des décisions, les entraîneurs d'architecte, les coordonnées des architectes, les outils d'architecte, les avocats de l'architecte. 97 choses Réserver que vous mentionnez est plus un Collection de perles de sagesse plutôt qu'un guide cohérent de l'architecture.

George Fairbanks, auteur de juste assez d'architecture logicielle


0 commentaires