¿Diseño, Ingeniería de Software o Arquitectura?

Que grande es el mundo de la arquitectura de sistemas y software, pero a la vez que tan pequeño es cuando uno a veces no tiene claros los conceptos y la forma de pensar, para no latear tanto con mis discursos fomes, adjunto una pequeña discución entre:

Juan Carlos Barroux (Arquitecto de Sistemas y profesor de UNAB)

Daniel Campos Domínguez (Director Magister Ingeniería en Informática)

y YO (jajaja..  el que menos pesa jajaa)….

___________________________________________________________________________________________

YO:

Profesor,

Tengo algunas dudas respecto de la forma en que planteó el trabajo personal de chrome.  Mi nota es un 4,5 (Después de todo me di cuenta que es lo que me merecía no mas jajajaja), donde obviamente puse decisiones de DISEÑO y no de ARQUITECTURA.   Ya que desde mi punto de vista es un tramo mas o menos grande.  Pero ahora resulta que su pauta de revisión habla de temas de arquitectura, y no de diseño.  Es mas, en el comic nunca mencionan a ningún ARQUITECTO, si no que intervienen en la discusión Ingenieros de Software y el PM del proyecto.  Entonces me asalta la duda cuando usted pone como primera instancia en la pauta “documentar cuáles fueron las principales decisiones de arquitectura…”, lo otro que me complica es que menciono los mismos términos que usted en su pauta (sandbox, omnibox, javascript, multithread, etc).

JCB:

Las preguntas que hace son muy interesantes y escribiré una nota sobre el tema antes del próximo lunes. Sin embargo, una respuesta resumida es que siempre se toman decisiones de nivel arquitectónico pero no siempre por personas con dicho título en una organización.

DCD:

Disculpen por meterme,..pero la Arquitectura de Sistemas forma parte del Diseño de Alto Nivel de una solución informática (en contraposición con el Diseño Detallado).

No son mundos independientes ni mutuamente excluyentes.

No hay que confundir el nombre de un rol, con la necesidad de hacer algo….

YO:

Buen aporte Daniel, pero el tema es:

Como llevo una solución de bajo nivel, por ejemplo, decido que mi aplicación tenga procesamiento multithread a nivel de las pestañas del browser;  a un diseño de arquitectura, ¿Que vistas utilizo para formar mi arquitectura de referencia?.  Desde mi humilde punto de vista, son desiciones de diseño, que van a llevar a que tenga que elegir algun modelo a nivel arquitectónico de mas alto nivel o hacer modificaciones a nivel de arquitectura.   Y estoy totalmente de acuerdo en que la Arquitectura forma parte importante de la Ingeniería.  Por ende, ¿Que metricas o modelos de bajo nivel me sirven para definir o tomar desiciones de diseño que tengan relación con la arquitectura?  (Por ejemplos vistas UML u otras).

Esto se parece a un foro..   jejeje  😀

JCB:

Estimado Juan José,

La discusión sobre qué es lo que exactamente hace distinto al Diseño de la Arquitectura es una discusión que lleva más de dos mil años en el ambiente de los arquitectos y de los diseñadores. De hecho, ya Vitruvius se refiere a tema. Si ellos no han sido capaces de definir una frontera en la cual todos concuerden en más de dos mil años es difícil para una disciplina tan nueva como lo es el desarrollo de software lleguemos a un consenso.

Es por eso que los términos diseño y arquitectura se usan de una manera bastante relajada y variable según las distintas comunidades de arquitectura y según el idiolecto de cada individuo. Para evitar estas confusiones todos los frameworks de arquitectura definen un vocabulario, en esencia, su propia ontología, sobre la cual entenderse. Un ejemplo de eso es muy claro en los mismos sitios del proyecto Google Chrome en donde los documentos de arquitectura se encuentran bajo la entrada de Design Documents, como el siguiente;

http://dev.chromium.org/developers/design-documents/multi-process-architecture

Entonces, ¿cómo reconocer una decisión de arquitectura independientemente de como el ingeniero la esté llamando?

No es una tarea simple y, justamente, el objetivo de este curso es el de entregarles las herramientas cognitivas para poder manejar estas distinciones. Como he dicho varias veces, uno de los grandes objetivos de una arquitectura es definir “el cómo cortar el monstruo”, o sea, de qué manera se van a descomponer el sistema en subsistema y cuáles van a ser las relaciones entre éstos. Cada vez que estamos frente a una conversación en donde se discute qué pedazo de funcionalidad va dónde, estamos en una conversación de arquitectura. Otra manera de verlo, es que lo que hace la arquitectura es la estructura. Cuando tomo decisiones estructurantes estoy tomando decisiones de arquitectura. Por ejemplo, el definir que el rendering de cada Tab se haría en un proceso separado es una decisión estructurante, y por ende, de arquitectura. Pero el decidir que se usará WebKit como motor de rendering es una decisión de diseño pues no es estructurante, al poder reemplazar a WebKit por otro motor de rendering sin cambiar nada en la estructura o arquitectura de Google Chrome. Cada vez que creo o muevo cajas en un diagrama es probable que sea una decisión de arquitectura mientras que cada vez que simplemente cambie el rótulo de una caja es casi seguro que es una decisión de diseño.

En cuanto al tema de las métricas, pues ese es un tema abierto hoy en día. O sea, es un tema de estudio sobre el cual se está publicando mucho hoy, Como vimos las métricas están basadas en el modelo de calidad definido para la arquitectura, y en base a ese modelo se definen las métricas. La más común es la tasa de relaciones sobre componentes que mide el nivel de acoplamiento de la arquitectura.

Ahora, la idea del foro es muy buena. UNAB Virtual tiene esa facilidad pero nunca la usamos y, en retrospectiva, habría sido muy bueno el contar con dicha herramienta de gestión del conocimiento. Podría partir por agregar esta interesante conversación al foro del curso. Por el otro lado, quizás sea interesante el poner un sitio con un foro público sobre estos temas con el auspicio de la UNAB.

Muchos saludos,

Juan Carlos Barroux

___________________________________________________________________________________________

Excelente discución!!!!

Espero pueda servir de algo a los mas avanzados y a los que recién comenzamos en este mundillo….   suerte a todos.

Anuncios

Deja un comentario

Archivado bajo Arquitectura de Sistemas, Arquitectura de Software, Magister en Informatica

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s