hashtags architecture review

architecture - hashtags - ¿Qué debería incluirse en una lista de verificación de la arquitectura de la aplicación?



architecture hashtags instagram (6)

Estoy tratando de encontrar una lista de verificación o un conjunto de preguntas / criterios para evaluar y evaluar arquitecturas propuestas o emergentes (realizar revisiones arquitectónicas). ¿Cuáles son las preguntas más importantes que hace al tratar de planificar, evaluar o revisar una arquitectura?

Sé que este es un tema importante, por lo que me gustaría restringirlo a un único sistema de extremo a extremo y no a la arquitectura de una organización completa.

Code Complete proporciona un punto de partida decente:

Arquitectura

  • ¿Es clara la organización general del programa, incluida una buena descripción y justificación arquitectónicas?
  • ¿Los módulos están bien definidos, incluida su funcionalidad y sus interfaces con otros módulos?
  • ¿Están todas las funciones enumeradas en los requisitos cubiertas con sensatez, ni por demasiados o por muy pocos módulos?
  • ¿La arquitectura está diseñada para acomodar los posibles cambios?
  • ¿Se incluyen las decisiones necesarias de compra contra construcción?
  • ¿La arquitectura describe cómo se hará el código reutilizado para cumplir con otros objetivos arquitectónicos?
  • ¿Están todas las principales estructuras de datos ocultas detrás de las rutinas de acceso?
  • ¿Está justificada la organización y el contenido de la base de datos?
  • ¿Están todos los algoritmos clave descritos y justificados?
  • ¿Se describen y justifican todos los objetos principales?
  • ¿Se describe una estrategia para manejar la entrada del usuario?
  • ¿Se describe y justifica una estrategia para manejar las E / S?
  • ¿Están definidos los aspectos clave de la interfaz de usuario?
  • ¿La interfaz de usuario está modularizada para que los cambios en ella no afecten al resto del programa?
  • ¿Se describen y justifican las estimaciones de uso de la memoria y una estrategia para la gestión de la memoria?
  • ¿La arquitectura establece el espacio y los presupuestos de velocidad para cada módulo?
  • ¿Se describe una estrategia para manejar cadenas y se proporcionan estimaciones de almacenamiento de cadenas de caracteres?
  • ¿Se proporciona una estrategia coherente de manejo de errores?
  • ¿Los mensajes de error se administran como un conjunto para presentar una interfaz de usuario limpia?
  • ¿Se ha especificado un nivel de robustez?
  • ¿Hay alguna parte sobre o bajo arquitectura? ¿Las expectativas en esta área se establecen explícitamente?
  • ¿Los objetivos principales del sistema están claramente establecidos?
  • ¿Toda la arquitectura se junta conceptualmente?
  • ¿El diseño de nivel superior es independiente de la máquina y el lenguaje que se utilizará para implementarlo?
  • ¿Se proporcionan las motivaciones para todas las decisiones importantes?
  • ¿Es usted, como programador que implementará el sistema, cómodo con la arquitectura?

Estoy buscando conocimiento práctico con ejemplos, por ejemplo, ¿cuáles fueron los puntos más dolorosos en una arquitectura que ha creado?


¿Cómo vas a probarlo?


¿Está la arquitectura en línea con la guía y hoja de ruta de los proveedores de tecnología?

Desea obtener soporte de su plataforma elegida, no luchar contra ella.

Por ejemplo, para las soluciones centradas en Microsoft, esto significa documentar dónde y por qué sus opciones se desvían de la orientación de Arquitectura de Microsoft .


¿Hay una sola persona que puede ser responsable de la arquitectura con suficiente (1) conocimiento técnico de arquitectura propuesta, (2) experiencia en la gestión de cosas, (3) estar en la empresa para que sus decisiones no puedan ser anuladas por una administración que no lo hace? Sabes una cosa

Como (2) y (3) realmente no dependen de la arquitectura, encontraría a la persona y le preguntaría qué le gustaría hacer.

Suponiendo que seas esa persona (y eso no es obvio por tu pregunta, eso solo se aplica si crees que seguirás siendo el principal arquitecto de esto por un tiempo), tomaría un consejo de Joel On Software. blog y escriba una especificación de diseño, con los planes, objetivos, clientes, explicando las opciones de diseño, todo. Eso debería aclarar la vista.

Pensamientos posteriores

Traté de pensar un poco en cuanto a las preguntas exactas que podría formularse después de haber escrito la especificación, por ejemplo, "¿Es fácil actualizar su proyecto?", "¿Permitirá flexibilidad en los objetivos finales?", "¿Hará las cosas fáciles?" para apoyar '','' ¿Hay algún problema de seguridad '', etc., pero, si bien vale la pena hacer preguntas como estas, simplemente no veo ninguna manera de que puedan ser utilizadas para una'' evaluación ''porque no se trata de filtrar los errores claros No creo que una pregunta específica ayude mucho a ''evaluar la arquitectura''. Tal vez su pregunta se beneficiaría de la reformulación?


¿Utiliza principios SÓLIDOS?


Algunos otros puntos a considerar:

  • ¿Están todas las partes interesadas identificadas? (Ejemplos: cliente, usuarios finales, analistas de negocios, diseñadores de interfaces de usuario, desarrolladores, probadores, mantenedores). ¿Se verifica la arquitectura con los interesados?
  • ¿Cómo aborda la arquitectura la seguridad?
  • ¿Se especifican los requisitos de disponibilidad y confiabilidad? ¿Cómo aborda la arquitectura estos? (Ejemplos: tiempo medio entre fallas, tiempo medio para reparar).
  • ¿Cómo se maneja la recuperación de desastres?

Dos buenos libros para más ideas:


Con base en mi investigación, he aquí algunas listas de verificación de revisiones arquitectónicas que he encontrado que hacen que esta pregunta sea un poco más imparcial y proporcionan algunos antecedentes sobre lo que es una revisión de la arquitectura. (Parece ser un poco confuso al respecto aquí).

Cada uno de estos candidatos potenciales incluye varias categorías diferentes. La importancia general de estas categorías variará un poco dependiendo de las necesidades del negocio. En mi humilde opinión, eso está bien. Es mucho menos costoso hacer otra pregunta cuando revisa una lista de verificación y la descarta que perder una pregunta o categoría por completo porque no parecía lo suficientemente importante como para incluirla inicialmente en una lista de verificación.

También parece haber un libro blanco escrito sobre este tema, aunque no lo he leído. Intenta responder a esta pregunta en el transcurso de aproximadamente 11 páginas.

Además, un colega me recomendó un conjunto de libros de Springer, aunque yo mismo no los he revisado: