2010-08-23 14 views
11

Trabajo para una organización que es prácticamente una nueva empresa dentro de una gran corporación. El equipo tiene varios ingenieros de bases de datos y algunos ingenieros de software (en el campo de minería de datos). Estamos creciendo a un ritmo acelerado, lo que exige la necesidad de tener una estrategia de arquitectura general o una hoja de ruta tecnológica (o brújula) para los próximos años. Como ingeniero de software, se me ha asignado la tarea de comenzar las reuniones bimensuales para liderar esa discusión. Entonces, mi pregunta es, ¿cómo comienzas tu rol como arquitecto? ¿Cómo comienzas una discusión de arquitectura en toda la organización? Comencé a leer el libro "97 cosas que todo arquitecto de software debe saber", pero me gustaría saber más de sus experiencias. Entonces, como arquitecto, ¿cómo empezaste?¿Cómo se inicia una discusión de arquitectura de software?

Saludos,

Respuesta

3
  1. Descubre quién está en su equipo
  2. Descubre lo que les interesa a nivel de análisis de sistemas
  3. averiguar quién sabe que la gente en la sociedad más amplia
  4. averiguar lo que está en uso en la sociedad más amplia
  5. Estudia lo que la gente ha utilizado antes en su división particular
  6. se utilice toda la información anterior yu comienza a hablar de Ahora, Pronto y Eventualmente. Preste especial atención a cómo se conecta con el mundo exterior tanto en términos de fuera de la división como fuera de la corporación.

No empiece hablando de arquitectura hasta que sepa con qué está empezando. No comience una discusión sobre arquitectura hasta que todos los demás también lo hagan.

+1

gran respuesta, mucho mejor que la mía =) 1 –

1

no he tenido personalmente esta experiencia, pero aquí hay algunos consejos:

  • obtener capacitación, y hacer que la gente que estarán en estas discusiones capacitados en el tema. Tendrás un tiempo más significativo.
  • Obtenga un borrador inicial para mejorar según las ideas de otras personas. Es mucho más fácil comenzar desde un borrador que comenzar desde cero.
  • Tenga a alguien trabajando estrechamente con usted en esto (análoga a la programación de pares). Dos mentes que trabajan durante una hora generalmente brindan un mejor resultado que una mente trabajando durante una hora cuando se trata de actividades intelectualmente intensas.
0

Esto es menos por la experiencia y más por el pensamiento práctico. En primer lugar, es difícil definir la arquitectura del software: una gran referencia para comenzar es siempre "design patterns explained", ya que requiere un enfoque que no sea de software para comprender la arquitectura.

empezar a buscar en los temas básicos específicos de la arquitectura como

  • comunalidad y la variabilidad
  • separación de las preocupaciones
  • agregación sobre la abstracción

Arquitectura no se trata de eliminar la complejidad sino que más bien se trata de manejándolo Así que empieza por la comprensión de los temas que componen la complejidad en el contexto de su proyecto

0

Enfóquese en los requisitos no funcionales, y desde allí intente elegir un patrón arquitectónico. Un análisis de calidad de software será útil. Luego embelleciría el patrón y lo describiría al equipo, según los niveles de granularidad en los que están interesados.

2

Su pregunta es difícil porque afecta a muchas áreas: proceso, liderazgo y diseño de software (o arquitectura). Voy a suponer que ya tienes un proceso estándar, pero si no lo haces, prueba uno de los procesos ágiles. Hablaré sobre liderazgo y arquitectura de software.

Liderazgo. El gran libro de Fred Brooks, The Mythical Man-Month, habla de tener un líder técnico del mismo modo que un equipo quirúrgico tiene un líder. Personalmente, me gusta más la colaboración de la que veo con los médicos, así que tratemos al equipo quirúrgico de Brooks como un extremo. Aún así, necesita a alguien que coordine técnicamente quién hace qué, cosas como asignar gente a trabajar en diferentes partes del sistema, decidir cuáles son las partes más difíciles (más riesgosas) (para que no se difieran hasta que sean costosas). cambiar/corregir) y tomar decisiones cuando el equipo no está de acuerdo. Este tipo de liderazgo técnico es necesario ya sea que esté creando software, autos o pogo sticks.

Arquitectura/Diseño. El mantra estándar es que "cada sistema tiene una arquitectura", pero el corolario es que no todas las arquitecturas se eligen deliberadamente. Puede copiar implícitamente la arquitectura de su último proyecto, digamos un sistema de 3 niveles. O puede decidirse una vez que sepa que está utilizando un marco como EJB. Al comienzo de un proyecto, tomará decisiones arquitectónicas y algunas serán difíciles de cambiar más tarde. ¿Cómo persistirán los datos? ¿Usará un marco (por ejemplo, Spring, EJB, RoR)? ¿Procesará los datos de forma incremental o por lotes?

Casi cualquier arquitectura puede verse forzada a cumplir sus requisitos. Por ejemplo, podría usar RoR para construir un termostato. Pero le resultará más fácil cuando su arquitectura se ajuste bien a los requisitos. A veces tendrá requisitos, como una baja latencia de la interfaz de usuario, que pueden ser ayudados por una elección inteligente de arquitectura, como el uso de AJAX. Entonces, el comienzo de su proyecto es una oportunidad para pensar sobre estas cosas y hacerlas bien. (Y esto no significa que vayas a la montaña, pienses mucho, y luego dicta tus respuestas al equipo; una vez más, prefiero la colaboración).

No tenga miedo de pensar en la arquitectura por adelantado, especialmente sobre las formas en que puede ayudarlo a evitar dificultades, pero tampoco intente decidir todo con anticipación. Tendrá problemas si una parte de su equipo comenzó a usar Ruby on Rails mientras que otra parte comenzó a usar EJB, por lo que debe tomar algunas decisiones técnicas, las que se le imponen a usted y las que abordarán sus mayores riesgos.

Una última cosa: las primeras discusiones de arquitectura son una bendición y una maldición. Son una bendición, ya que obtienen sus ideas temprano y le permiten elegir su diseño en lugar de equivocarse en él. Pero son una maldición en el sentido de que todos tendrán opiniones, y puede ser difícil hacer que todos apunten en la misma dirección (es decir, a la necesidad de un liderazgo técnico).

Recomiendo el Capítulo 12 de Applied Software Architecture para obtener orientación sobre su pregunta. La lista de títulos da una buena idea de sus consejos: crear una visión, el arquitecto como asesor técnico clave, el arquitecto toma decisiones, los entrenadores de los arquitectos, las coordenadas del arquitecto, los instrumentos del arquitecto, los defensores del arquitecto. El libro 97 Things que mencionas es más una colección de perlas de sabiduría que una guía cohesiva de la arquitectura.

George Fairbanks, Autor de Just Enough Software Architecture

Cuestiones relacionadas