Ce qui devrait être inclus dans une liste de contrôle Application Architecture?
-
06-09-2019 - |
Question
Je suis en train de trouver une liste de contrôle ou un ensemble de questions / critères pour évaluer et évaluer les propositions d'architectures ou émergentes (effectuer des revues d'architecture). Quelles sont les questions les plus importantes que vous demanderez en essayant de planifier, évaluer ou revoir une architecture?
Je sais que c'est un grand sujet donc je voudrais limiter à un seul système de bout en bout et non l'architecture d'une organisation.
code complet fournit un point de départ décent:
Architecture
- L'organisation générale du programme clair, y compris un bon Vue d'ensemble architectural et justification?
- Les modules sont bien définis, y compris leur fonctionnalité et leurs interfaces avec d'autres modules?
- Est-ce que toutes les fonctions énumérées dans les exigences sensiblement couvertes par ni trop ou trop peu de modules?
- L'architecture conçue pour tenir compte des changements probables?
- nécessaires buy-contre-construire des décisions incluses?
- Est-ce que l'architecture décrit comment le code Réutilisés sera fait pour se conformer aux d'autres objectifs architecturaux?
- sont toutes les principales structures de données cachées derrière des routines d'accès?
- L'organisation de base de données et le contenu justifié?
- Est-ce que tous les algorithmes clés décrits et justifiés?
- Est-ce que tous les principaux objets décrits et justifiés?
- Est-ce une stratégie de traitement des entrées utilisateur décrit?
- Est-ce une stratégie de gestion des E / S décrit et justifié?
- sont les principaux aspects de l'interface utilisateur défini?
- L'interface utilisateur modularisé afin que les changements dans ce ne sera pas une incidence sur la reste du programme?
- sont des estimations de l'utilisation de la mémoire et une stratégie de gestion de la mémoire décrit et justifié?
- Est-ce que les budgets de l'espace et l'architecture vitesse réglée pour chaque module?
- Est-ce une stratégie pour gérer les chaînes décrites et sont chaîne de caractères estimations de stockage fournies?
- Une stratégie de gestion des erreurs cohérente fournie?
- Ce sont des messages d'erreur gérés comme un ensemble pour présenter une interface utilisateur propre?
- Un degré de robustesse spécifié?
- Est-ce une partie sur ou sous-architecturé? Les attentes en ce domaine défini explicitement?
- sont les principaux objectifs du système clairement?
- Est-ce que toute l'architecture conceptuelle tenir ensemble?
- est-il indépendant de conception de haut niveau de la machine et la langue qui sera utilisée pour mettre en œuvre?
- sont les motivations pour toutes les décisions importantes fournies?
- Êtes-vous, en tant que programmeur qui mettra en œuvre le système, à l'aise avec l'architecture?
Je cherche des connaissances pratiques avec des exemples, par exemple, quels sont les points les plus douloureux dans une architecture que vous avez créé?
La solution
D'après mes recherches, voici quelques listes de contrôle d'architecture que j'ai trouvé que cette question font un peu plus de justice, et de fournir des renseignements généraux sur ce que l'examen de l'architecture est. (Semble être un peu de confusion à ce sujet ici.)
Chacun de ces candidats potentiels comprennent un certain nombre de différentes catégories. L'importance globale de ces catégories varie quelque peu en fonction des besoins des entreprises. À mon humble avis, c'est OK. Il est beaucoup moins coûteux de poser une autre question lorsque vous passez par une liste de contrôle pour un examen et la règle dehors que de manquer une question ou d'une catégorie tout à fait, car il ne semble pas assez important d'inclure sur une liste de contrôle au départ.
- " directives pour l'examen de l'architecture logicielle " par Alexander Nowak
- " Liste de contrôle pour le document de conception architecturale [s] » par Tom Verhoeff
- " Liste de contrôle: Architecture et Design Review " de modèles Microsoft & pratiques Centre de développeur
- " Architecture conceptuelle Liste de contrôle " par Craig Borysowich
- " App Guide Arc 2.0 base de connaissances: Liste de contrôle - architecture et design » par JD Meier, Alex Homer, et al. (Trouvé via le lien de Peter Stuer)
- " TOGAF architecture examen de la conformité Listes de contrôle" de Open Group
- " examen de l'architecture processus " par Ricky Ho
Il semble également être un livre blanc écrit sur ce sujet, même si je l'ai pas lu. Il tente de répondre à cette question au cours d'environ 11 pages.
- critiques Architecture: la pratique et de l'expérience par Maranzano , Rozsypal, et al.
En outre, un collègue a recommandé un ensemble de livres de Springer, bien que je n'ai pas vérifié l'un de ces moi-même:
- La série Enterprise Engineering Springer
Autres conseils
D'autres points à considérer:
- sont toutes les parties prenantes identifiées? (Exemples:. Clients, utilisateurs finaux, les analystes d'affaires, les concepteurs d'interface utilisateur, les développeurs, les testeurs, mainteneurs)? Est l'architecture vérifiée avec les parties prenantes
- Comment la sécurité adresse de l'architecture?
- sont les exigences de disponibilité et la fiabilité spécifiées? Comment l'adresse l'architecture de ces? (Exemples:. Le temps moyen entre pannes, temps moyen de réparation)
- Comment est gérée la reprise après incident?
Deux bons livres pour plus d'idées:
- architecture Software Systems par Nick Rozanski et Eoin Woods
- architecture logicielle en pratique par Len Bass, Paul Clements et Rick Kazman
Comment allez-vous tester
Est-il utiliser des principes solides?
est l'architecture conforme aux indications données par des fournisseurs de technologie et feuille de route?
Vous voulez obtenir le soutien de votre plate-forme choisie, pas le combattre.
par exemple. Pour des solutions centrées sur Microsoft, cela signifie la documentation où et pourquoi votre choix dévient de la conseils Microsoft architecture .
Y at-il une seule personne qui peut être responsable de l'architecture avec suffisamment de (1) les connaissances techniques de l'architecture proposée, (2) expérience dans la gestion des choses, (3) debout dans la société afin que ses décisions ne peuvent pas être remplacées par une direction qui ne sait pas une chose.
Depuis (2) et (3) ne pas vraiment dépendre de l'architecture, je trouverais la personne et lui demander ce qu'il aimerait faire.
Maintenant, vous êtes en supposant que personne (et ce n'est pas évident de votre question - ne sont appliquées que si vous pensez que vous serez toujours d'être un architecte en chef de cette chose pendant un certain temps), je prendrais un conseils de Joel sur blog du logiciel et écrire une spécification de conception, les plans, les objectifs, les clients, expliquant les choix de conception, tout. Cela devrait effacer la vue.
pensées ultérieures
J'ai essayé de penser un peu comme pour quelles questions exacte que vous pourriez vous demander après avoir écrit la spécification, comme « Est-il facile de mettre à jour votre projet », « Est-ce qu'il permet une certaine souplesse dans les objectifs finaux », « Est-ce qu'il rendre les choses faciles à soutenir », « y a-t-il des problèmes de sécurité », etc., mais, alors qu'il vaut la peine de poser des questions comme celles-ci, je ne vois pas simplement comme ils pourraient être utilisés pour toute « évaluation » parce autre que le filtrage les erreurs claires, je ne pense pas que toute question spécifique contribuerait beaucoup à «évaluer l'architecture. Peut-être que votre question bénéficierait de reformulant?