Oportunidades de vinculación academia industria en temas de arquitectura de software
Evento
Conferencista(s)
En esta charla se habla acerca de la deuda técnica y arquitectura
Desde 2004 me desempeño como profesor / investigador de tiempo completo en la Universidad Autónoma Metropolitana - Iztapalapa (UAM-I) en la ciudad de México. Mi área de especialidad es la Ingeniería de Software y obtuve un Doctorado en este tema en el laboratorio LSR Equipo Adele en Grenoble, Francia, en 2004. He estado colaborando estrechamente con la industria de desarrollo de software desde 2006. Estoy certificado como Software Architecture Professional y ATAM evaluator por parte del Software Engineering Institute (SEI). Actualmente estoy realizando un sabático en LIG, estaré de vuelta en mi oficina en Septiembre de 2019.
En esta charla se habla acerca de la deuda técnica y arquitectura
En este artículo presentamos una serie de criterios que ayudan a determinar cuándo tiene sentido almacenar datos en un blockchain. Para entender la manera en que se utiliza esta lista de criterios, los aplicamos en un ejemplo sencillo.
En esta ocasión tengo el gusto de compartir con ustedes la noticia de la reciente publicación del libro que escribí junto con mi colega Rick Kazman quien es investigador en el Software Engineering Institute (SEI). Nuestro libro lleva por título “Designing Software Architectures - A Practical Approach” (Diseñando Arquitecturas de Software - Un Enfoque Práctico) y fue publicado por la editorial Addison Wesley en la colección “SEI Series in Software Engineering”.
En esta ocasión les hablaré de Smart Decisions, un juego que he desarrollado junto con mis colegas Rick Kazman del Software Engineering Institute (SEI) así como Serge Haziyev y Olha Hrytsay de la empresa Softserve. El objetivo del juego es ilustrar la manera en que se realiza el diseño de la arquitectura mediante el método de diseño Attribute Driven Design (ADD). Como parte del juego, se simula el diseño de un sistema de Big Data.
En esta ocasión resumiré un trabajo que presenté en la conferencia SATURN 2014 de arquitectura de software junto con mis colegas Rick Kazman y Jungwoo Ryoo. Rick Kazman es investigador del Software Engineering Institute y académico en la Universidad de Hawaii. Jungwoo Ryoo es investigador de la Universidad del estado de Pennsylvania y experto en temas de seguridad.
En esta ocasión hablaré acerca del uso de técnicas de desarrollo de arquitectura de software como parte de la etapa de preventa de los proyectos de software.
En esta ocasión hablaré de un tema relacionado con las Interfaces de Programación de Aplicaciones (API) y con las pruebas que juega un papel fundamental dentro de la arquitectura: las interfaces. Las interfaces son los puntos de contacto que establecen un contrato que permite el intercambio de información entre elementos que forman parte de la arquitectura de un sistema de software. Estos elementos pueden ser lógicos (ej. módulos), dinámicos (ej. objetos) o físicos (ej. nodos de hardware).
En el año 2006, Mary Shaw y Paul Clements escribieron un artículo que recapitulaba lo sucedido en los últimos 20 años en relación con la arquitectura de software [1]. En dicho artículo los autores concluyen que, a partir del año 2000, la arquitectura de software entró en una fase de popularización: desde entonces existen gran cantidad de herramientas, servicios, aplicaciones, plataformas, estándares y cursos construidos alrededor de la arquitectura.
A diferencia de las computadoras “tradicionales”, los dispositivos móviles tienen características particulares que incluyen:
En esta ocasión presento en esta columna una entrevista con Luis Carballo, Arquitecto de software de uno de los sistemas más críticos para México. Luis trabaja desde hace 7 años en la Bolsa Mexicana de Valores (BMV) en el área de sistemas en una empresa llamada Bursatec. Él es egresado de la UAM en donde estudió Ingeniería Electrónica y posteriormente realizó una maestría en el ITAM de TI y Administración (luis.carballo@mac.com).
Aprovechando el tema principal de esta edición de SG, en esta ocasión dedicaremos esta sección a hablar sobre certificaciones en arquitectura de software.
En la columna dedicada al diseño de la arquitectura (SG #29) se mencionó que el proceso de diseño involucra la toma de decisiones que dan lugar a las estructuras del sistema. Estos incluyen aspectos tales como los patrones de diseño, las tácticas y los frameworks. En esta columna revisaremos en más detalle estos conceptos y discutiremos la relación que existe entre ellos.
En la última década la arquitectura de software ha cobrado una importancia cada vez mayor. Esta tendencia probablemente continuará, entre otras razones, por qué en la nueva versión de CMMI-DEV (v1.3), se han realizado actualizaciones en las áreas de proceso de ingeniería y se han considerado diversos aspectos relacionados con la arquitectura de software [2].
Quienes hayan estado siguiendo las distintas entregas de ésta columna y que laboren en una organización de desarrollo de software en donde actualmente no se sigan prácticas maduras de arquitectura de software probablemente se preguntarán ¿de qué manera se puede introducir esto en mi organización? En esta columna hablaré de la implantación de prácticas de arquitectura de software dentro de una organización en base a mi propia experiencia.
Etapas del cambio
La arquitectura de software es el resultado de un esfuerzo importante y su desarrollo puede representar una parte considerable del trabajo que se realiza en un proyecto de desarrollo. De lo anterior surge la pregunta, ¿habrá manera de aprovechar el esfuerzo que se hace respecto al desarrollo de la arquitectura de un sistema en el desarrollo de otros sistemas similares?
A lo largo de las distintas entregas de esta columna hemos cubierto las actividades del ciclo de desarrollo de la arquitectura de software y su integración dentro del ciclo de desarrollo de software. En todas estas actividades, hay un rol específico que juega un papel preponderante y es el del arquitecto de software.
A lo largo de las últimas ediciones de esta sección hemos realizado un recorrido a través de las distintas actividades asociadas con el desarrollo de la arquitectura de software, a saber: la captura y especificación de requerimientos que influyen en la arquitectura, el diseño de la misma, su documentación y su evaluación.
ENTENDIENDO Y CUESTIONANDO EL DISEÑO ARQUITECTÓNICO
A lo largo de las últimas entregas de ésta serie de artículos, nos hemos enfocado en tres categorías de actividades relacionadas con el desarrollo de la arquitectura de software y que (idealmente) ocurren como parte del desarrollo de cualquier sistema de software. Estas categorías de actividades han cubierto aspectos de requerimientos que influyen en el diseño arquitectónico (los drivers arquitecturales), el diseño de la arquitectura en si mismo y la documentación del diseño a través de diversas vistas. El cuidar estos aspectos como parte del desarrollo es una tarea clave que aumenta las probabilidades de tener un sistema de calidad que satisfaga requerimientos que influyen a la arquitectura. La arquitectura es, sin embargo, un aspecto tan importante dentro del desarrollo que es conveniente realizar actividades de verificación de la misma de forma temprana, con el fin de identificar problemas que podría resultar muy costoso eliminar posteriormente. La evaluación de la arquitectura de software permite justamente realizar la verificación del diseño y es la cuarta categoría de actividades que, junto con las tres categorías mencionadas previamente, cubren el conjunto de aspectos relacionados con el desarrollo de arquitectura de software.
En entregas previas de esta sección, nos hemos enfocado en aspectos relativos a los requerimientos que influyen a la arquitectura, y a la manera de diseñar la arquitectura con el fin de satisfacer estos requerimientos. Para ser útil, este diseño necesita ser comunicado de forma adecuada. Así que en esta ocasión abordamos aspectos de comunicación del diseño y más particularmente en la actividad de documentación de la arquitectura.
Continuando con nuestro recorrido alrededor del tema de la arquitectura de software, en esta ocasión, nos enfocaremos en la actividad de diseño de la arquitectura.
Como mencionamos en el número anterior, la arquitectura de software se enfoca en aspectos de diseño estructural del sistema con el fin de satisfacer ciertos requerimientos clave para el sistema, además de guiar el desarrollo del mismo. En este artículo nos enfocaremos en describir la relación que existe entre los requerimientos y la arquitectura de software.
En el ámbito del software cada vez es más común escuchar el término “arquitectura de software”, y encontrar oportunidades de empleo para “arquitectos de software”. Aún así, este concepto tiende a ser malentendido y la falta de comprensión al respecto de sus principios frecuentemente repercute de manera negativa en la construcción de sistemas de software.