¿CUÁL ES LA FUNCIÓN DE UN ARQUITECTO DE SOFTWARE?

arquitecturasoftwareMientras en la industria el término Desarrollador de Software está bastante claro, el término Arquitecto de Software sigue bastante difuso y muchas empresas se preguntan si necesitan o no a alguien que desempeñe dicho rol.

El Arquitecto de Software debe ser una persona con amplios conocimientos técnicos, gran experiencia en programación, liderazgo y que ejerza las siguientes funciones:

  • Gestión de los requisitos no funcionales y definición de la Arquitectura de Software
  • Selección de la Tecnología
  • Mejora continua de la Arquitectura
  • Facilitador
  • Líder y Formador
  • Aseguramiento de la Calidad
Gestión de los requisitos no funcionales y definición de la Arquitectura de Software

En muchos proyectos de software se suele preguntar a los usuarios qué características desean en el producto a desarrollar, pero muchas veces se pasan por alto los requisitos no funcionales, o cualidades del sistema, que se necesitan.

Los requerimientos no funcionales tienen que ser específicos, medibles, alcanzables y comprobables, para poder satisfacerlos (no basta con algo subjetivo como: “el sistema debe ser rápido”), y además hay que saber priorizarlos de manera que todos sean tomados en cuenta.

Características como el rendimiento, la escalabilidad, la disponibilidad, auditoría, etc., son requisitos no funcionales que deben ser definidos e incluso cuestionados cuando se considere oportuno y es el Arquitecto de Software quien debe asumir estas funciones.

Una vez obtenido el conjunto completo de requisitos no funcionales, el siguiente paso es pensar en cómo se resolverán los problemas expuestos y definir la arquitectura.

La definición de la arquitectura se trata de la introducción de la estructura, directrices, principios y liderazgo de los aspectos técnicos de un proyecto de software. Por lo tanto se requiere de una figura dedicada a pensar en estos aspectos, es decir, alguien tiene que asumir la propiedad del proceso de definición de la arquitectura y esto es sin duda, parte de las competencias del Arquitecto de Software.

An architect should have an idea of how to implement his or her architecture, but should be “prepared to accept any other way that meets the objectives as well.” – Frederick P. Brooks, Jr

Selección de la Tecnología

La selección de la tecnología suele ser un ejercicio con una serie de desafíos interesantes y en el cual se debe tomar en cuenta un universo de factores como el coste, las licencias, la relación con los proveedores, la estrategia de la tecnología, la compatibilidad e interoperabilidad, política de actualizaciones, etc.

Adicionalmente hay que conocer si las tecnologías funcionan realmente y se adaptan o no a los requerimientos del software.

El Arquitecto de Software debe asumir la propiedad del proceso de selección de la tecnología y por tanto es responsable del riesgo técnico.

Mejora continua de la Arquitectura

Hoy en día es imposible pensar en el desarrollo de software sin tomar en cuenta procesos de evaluación y feedback que permitan conocer si el software satisface las expectativas del usuario.

De igual manera es necesario someter a la arquitectura de software a dichos procesos, para demostrar que funciona, que efectivamente resuelve los requisitos no funcionales y por tanto reducir el riesgo general de fracaso del proyecto.

El Arquitecto de Software debe encargarse de la mejora continua de la Arquitectura y a su vez estar abierto a modificarla utilizando las sugerencias o feedback que se pueda obtener de otros miembros del equipo.

An architect should “listen to the builder’s suggestions for architecture improvements.” – Frederick P. Brooks, Jr

Facilitador

La arquitectura del software debe ser conocida y entendida no solo por el equipo de desarrollo sino también por otras áreas como seguridad informática, base de datos, operaciones, el equipo de mantenimiento, etc.

Es función del Arquitecto de Software servir de facilitador para la colaboración entre estos grupos de interés de manera de garantizar que la arquitectura se integrará con éxito en el entorno empresarial.

Líder y Formador

El Arquitecto de Software debe asumir la dirección técnica, para asegurar que todos los aspectos de la arquitectura se estén implementando de manera correcta.

 An architect “suggests” (“not dictates”) implementation because the programmer/coder/builder has the “inventive and creative responsibility.”-Frederick P. Brooks, Jr

De igual manera el Arquitecto de Software debe proporcionar orientación técnica y dar apoyo al equipo de desarrollo; debe estar preparado para entrenar al equipo en las tecnologías seleccionadas (Formador) y también debe estar abierto a sugerencias.

 An architect should be “ready to forego credit for suggested improvements.”- Frederick P. Brooks, Jr

Aseguramiento de la Calidad

Garantizar la calidad es parte fundamental del rol de un Arquitecto de Software, el cual debe apoyarse en procesos de integración continua que utilicen herramientas automatizadas de análisis de código fuente, pruebas unitarias y cobertura de código, para asegurar el cumplimiento de las normas, políticas y mejores prácticas establecidas.

 An architect should strive for work to be “spare and clean,” avoiding “functional ornamentation”… – Frederick P. Brooks, Jr

Más información:

Carlos-MendibleCarlos Mendible con más de 14 años de experiencia diseñando e implementado soluciones de software, comenzó su carrera en Venezuela, donde en 1999 obtuvo su primera certificación Microsoft. Actualmente está certificado como CISA, ITILF, MCSD, MCT, MCTS y MCP. Trabaja desde 2012 como Arquitecto Senior de Soluciones Microsoft en Sogeti España colaborando también como evangelista tecnológico, formador e ingeniero de pre-venta.

Para más información: carlos-fernando.mendible-porras@sogeti.com

9 thoughts

    1. Hola Angel,

      en cuanto a la parte técnica debes prepararte y tener conocimientos sólidos en las siguientes áreas:

      – Estructuras de Datos,
      – Algoritmos
      – Ingenieroia del Software
      – Calidad
      – Lenguajes de Programación
      – Arquitectura de Software

      Y luego debes tener un conjunto de soft skills importantes:

      – Capacidad de comunicarte con personas técnicas y con personas que no lo son (i.e negocio)
      – Empatía
      – Liderazgo

      Aqui dejo un enlace con libros que ayudan en muchos de los aspectos que he mencionado: https://dzone.com/articles/you-want-become-software

      En cuanto a estudios mas “formales” te coloco como ejemplo el obtener las siguientes certificaciones Microsoft:

      – MCSD: App Builder
      – MCSE: Cloud Platform and Infrastructure

      Suerte!

      Me gusta

      1. Gracias por tu respuesta amigo, al igual que tu soy venezolano y graduado en informática, por tal motivo mi pregunta, me interesa mucho esta área para mi carrera, entonces puedo hacerme llamar arquitecto de software al yo estar conforme con el nivel de conocimientos y experiencia que posea? pensaba que era un titulo universitario y nuevamente gracias por contestar

        Me gusta

  1. Hola Carlos, entendiendo la importancia del arquitecto, mi pregunta es ¿que tipo de empresas deben tener un colaborador con estas características?
    Un Retail,Banco, empresas de salud o las grandes empresas de desarrollo de SW.

    Me gusta

    1. Hola Neil,

      en mi opinión toda empresa que realice desarrollo de software, independientemente del sector, requiere de uno o mas arquitectos, no solo por las funciones mencionadas en el post si no por la creciente necesidad de utilizar procesos ágiles y adoptar culturas como DevOps donde el rol del arquitecto cobra especial relevancia (https://itblogsogeti.com/2015/12/30/devops-y-el-rol-del-arquitecto-de-software/).

      Un saludo!

      Me gusta

  2. Cordial saludo. Quisiera saber si el trabajo de la ingenieria del software se fundamenta en
    las herramientas CASE, o si también es posible que la ingeniería del software se desarrolle
    sin utilizar estas herramientas. Agradezco su valiosa colaboración.

    otra pregunta. Cómo saber si un DBMS es una herramienta CASE o no?

    Me gusta

    1. Hola Gustavo,

      en mi opinión es difícil realizar un desarrollo de software sin el uso de herramientas CASE ya que hablando estrictamente, los compiladores, editores, sistemas de control de código fuente, sistemas de integración continua, software de diseño automatizado y las herramientas de modelado son todas herramientas de CASE.

      Sin embargo lo anterior no implica que en ciertas fases no se puedan realizar procesos sin la ayuda de estas herramientas. Por ejemplo, cuando un técnico convierte los requerimientos (provenientes de un prototipo) en diseños detallados de una manera tradicional usando diagramas de flujo y documentos narrativos, sin la ayuda de software de diseño automatizado.

      En el caso de los DBMS, creo que separaría lo que es el motor de la base de datos de las herramientas complementarias (CASE) que permiten tanto el diseño de base de datos, su análisis o la automatización de procesos.

      Un saludo,
      Carlos

      Me gusta

  3. Saludos Carlos.

    Primero felicitarlo por su progreso laboral. Desde Venezuela hasta España.
    Nos pareció excelente su articulo:

    ¿CUÁL ES LA FUNCIÓN DE UN ARQUITECTO DE SOFTWARE? En un Proyecto.
    · Gestión de los requisitos no funcionales y definición de la Arquitectura de Software
    · Selección de la Tecnología
    · Mejora continua de la Arquitectura
    · Facilitador
    · Líder y Formador
    · Aseguramiento de la Calidad
    https://itblogsogeti.com/2014/07/29/cual-es-la-funcion-de-un-arquitecto-de-software-carlos-mendible-sogeti/

    ​RESPETUOSAMENTE LO INVITAMOS A REALIZAR SU PUBLICACIÓN EN NUESTRO GRUPO LINKEDIN DE GERENCIA DE PROYECTOS EN VENEZUELA. O AUTORIZARNOS PARA REALIZARLO.

    http://www.linkedin.com/groups?gid=4407987&trk=hb_side_g

    Igualmente lo invitamos a realizar publicaciones sobre el tema de la gerencia de proyectos.

    Gracias por su apoyo.


    !!! Gracias por Pensar y Hablar de Nosotros !!!

    FERNANDO MARTINEZ (0416 7217462) fmartinez.ucv@gmail.com
    Presidente de la Fundación Gerencia de Proyectos en Venezuela (FGPV)
    http://gerenciadeproyectosenvenezuela.com.ve/gpv/
    http://www.linkedin.com/profile/view?id=50257148&trk=tab_pro
    http://www.linkedin.com/groups?gid=4407987&trk=hb_side_g
    Prof Titular UCV desde 1998
    Dr. Ciencias Sociales-Administración UCV-1993
    MSc. Administración-Planificación UCV-1988
    Lic. Computación UCV-1981
    Orden “JOSÉ MARÍA VARGAS”. UCV. Consejo Universitario. 2001.
    https://twitter.com/#!/OficinaProyecto
    https://www.facebook.com/groups/106251939413119/
    http://www.facebook.com/GERENCIAdePROYECTOenVENEZUELA?ref=tn_tnmn
    Skipe: fmartinez.ucv

    La misión de la Fundación Gerencia de Proyectos en Venezuela es mejorar la Gerencia de Proyectos, siguiendo los preceptos del PMI e ISO. Grupo que busca mejorar la Gerencia de Proyectos en Venezuela a través del desarrollo de competencias laborales, en los individuos y sus organizaciones públicas y privadas, siguiendo los preceptos del PMI e ISO con certificación nacional FGPV-PGP.

    Me gusta

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