Ir al contenido principal

Atributos de Calidad, Tácticas y Evaluación del Software - Introducción

Retomando mi blog y luego de un par de años bastante ajetreado, intentaré continuar con una serie de artículos que resumirán - a mi parecer - las principal preocupaciones de un Arquitecto de Software: Qué son los atributos de calidad, cómo diseñar un sistema soportando estos requerimientos no funcionales a través de cientos de tácticas y, finalmente, cómo evaluar que realmente el resultado del diseño y la construcción satisface estas necesidades. Intentaré organizarlo de tal forma que sirva de guía para consulta para cualquier momento.

Cuando inicié mi carrera como Ingeniero de Sistemas ignoraba la existencia de la Arquitectura de Software. Aún hoy me es difícil ubicar un mapa de ruta que nos indique cuáles pasos deberíamos seguir para ser buenos Arquitectos. Parte de este problema es el desconocimiento de qué artefactos producimos en nuestro trabajo; Sabemos que debemos diligenciar un Documento de Arquitectura de Software, realizar algunos diagramas y seleccionar uno que otro framework de desarrollo. ¿Es realmente eso todo lo que debemos hacer? ¿Es lo que espera el equipo de desarrollo y los usuarios finales?

No sé si han lidiado alguna vez con no tener la certeza de que un diseño propuesto cumplirá exactamente el rendimiento requerido, se ajustará a los acuerdos de nivel de servicio necesario (Disponibilidad, por ejemplo), tendrá la usabilidad (Que para mí solía ser el atributo más difícil de medir) correcta, y ese largo etcetera que durante el día a día nos preocupa y hace que, a opinión de terceros, algunos de nosotros no sean más que Arquitectos Power Point.

Me gustaría resaltar una frase que encontré mientras estudiaba para la OCM JEE 6. "El diseñador se preocupa por lo que sucede cuando un usuario presiona un botón y el Arquitecto se preocupa en lo que sucede cuando 10 mil usuarios presionan un botón" ([1] Pág. 22).

Así, el primer mensaje que quiero dejar con este artículo es que siempre debemos verificar y validar que el diseño propuesto no es únicamente un conjunto de patrones que resuelven un requerimiento funcional. No es un diseño para un componente o sistema que simplemente ejecuta una función que expone un servicio a través de un protocolo sofisticado, por ejemplo. Es, entre muchas cosas, una propuesta de Arquitectura, de diseño de alto nivel, que muestra los elementos y las relaciones arquitecturales, producto de decisiones y racionalización, para soportar los atributos de calidad seleccionados.

De esto se pueden desprender muchas charlas ¿Cuántos y cuáles atributos de calidad debería soportar el sistema?

Tal vez conocen la norma ISO/IEC 9126. Esta es, a mi parecer, un arma de doble filo. Como Arquitecto no puedo asegurar que todo sistema web es capaz de soportar tantas cualidades y lastimosamente así lo mal interpretan los usuarios.
Pero bueno, entrando en materia, dividí esta serie de artículos en 4 partes, que pueden variar a medida que vaya alimentando el contenido:
  1. ¿Qué son los atributos de Calidad?
  2. Catálogo de Atributos de Calidad.
  3. Tácticas de Arquitectura y su relación con los requerimientos funcionales que soporta.
  4. Métodos de evaluación de  la Arquitectura, en tiempo de diseño y en construcción.
Este es realmente el tema más importante y atractivo. Repasaremos cientos de tácticas, patrones de diseño a nivel de arquitectura, aplicaremos simulaciones y cálculos de dependencia y revisaremos herramientas útiles para generar indicadores que permitan validar objetivamente la correctitud del sistema. Debido a que la tecnología avanza, estos elementos no son ajenos a la evolución, trataré de adaptar el contenido a las estrategias que vaya aprendiendo.

Referencias
  1. Sun Certified Enterprise Architect for Java EE Study Guide. Mark Cade and Humphrey Sheil. Second Edition. 2010.

Comentarios

Entradas populares de este blog

Proceso para la creación de la Arquitectura

Hoy quiero contarles acerca de un modelo que he adoptado para la construcción y entrega de la Arquitectura de Software, el cual lo he relacionado con éxito al interior de la compañía para la cual trabajo y que considero, bien puede adaptarse a cualquier tipo de especialidad de la Arquitectura Empresarial. Cuando era desarrollador escuchaba hablar constantemente acerca de varias metodologías de desarrollo. Durante mucho tiempo apliqué RUP, XP y metodologías AGILES, usé PSP y TSP como procesos de desarrollo. Pero durante todo ese tiempo nunca oí hablar de metodologías orientadas a la generación de la Arquitectura de Software, aún luego de comenzar a estudiar y al día de hoy he tenido muy pocas referencias. Quiero aclarar que existen varios modelos y  frameworks bastante conocidos para la Arquitectura Empresarial que son confrontados a profundidad en unas entregas muy completas de Microsoft, estas pueden estudiarse en este link . Pues bien, el método al que me refiero es ACDM, ...

Expandir espacio en disco duro en Virtual Box y con Partition Logic

Cuando nos quedamos sin espacio en nuestra máquina virtual, tenemos problemas para seguir usándola adecuadamente. Los siguientes son  los pasos que seguí para aumentar el espacio en disco duro, para la unidad principal de una máquina virtual de Windows XP instalada en mi Mac Book.  Probé una herramienta llamada Partition Logic   y, debido a que no la conocía, decidí documentarlo. Tenía asignadas 5GB a la unidad donde está instalado el sistema operativo, y se veía así: Mi máquina, con 5GB de tamaño en disco duro. 1. Redimensionar la unidad vdi. el siguiente es el comando que realiza toda la magia en VirtualBox: VBoxManage modifyhd "ruta/unidad.vdi" --resize [tamaño] En mi caso aumenté el tamaño a 20GB. VBoxManage modifyhd "/Users/oscar/VirtualBox VMs/WindowsXP/WindowsXPClone.vdi" --resize 20000 Como anotación,  debí clonar la unidad, pues había creado el disco de tamaño fijo en Virtual Box y no me permitía aumentarlo (generaba error...

Atributos de Calidad

¿Qué son los Atributos de Calidad? Los Arquitectos debemos participar en el entendimiento de las necesidades de los usuarios. Sí, esa es nuestra principal responsabilidad.  En mi experiencia he debido iniciar con leer términos de referencia para aplicar a licitaciones públicas y privadas y luego acompañar al equipo de análisis en el levantamiento de requerimientos. Los usuarios finales, a excepción de algunos muy técnicos, hablarán en el lenguaje del negocio, de otros sistemas que conocen, de lo que hace la competencia, de lo que otro proveedor les contó, de lo que alguno de sus más influyentes operarios conoce o del patrón de trabajo que ejecutan a diario. Muy pocas veces nos dirán exactamente lo que quieren y por eso debemos estar presentes; debemos ayudar a traducir esos relatos prosaicos de necesidades a requerimientos técnicos.  Los requerimientos técnicos se dividen principalmente en 2: los funcionales (functional requirements) y los no funcionales (Non-functi...