Un arquitecto de sistemas es un profesional de las tecnologías de la información y la comunicación . Los arquitectos de sistemas definen la arquitectura de un sistema informático (es decir, un sistema compuesto de software y hardware) para cumplir con ciertos requisitos . Dichas definiciones incluyen: la división del sistema en componentes, las interacciones e interfaces entre los componentes (incluida la interacción con el entorno, especialmente con el usuario), y las tecnologías y los recursos que se utilizarán en su diseño e implementación.
El trabajo del arquitecto de sistemas debe procurar evitar problemas de implementación y permitir fácilmente extensiones o modificaciones imprevistas en etapas futuras. Debido a la amplia experiencia requerida, el arquitecto de sistemas suele ser un tecnólogo sénior con un conocimiento sustancial, aunque general, de hardware, software y sistemas similares (de usuario). Sobre todo, el arquitecto de sistemas debe conocer razonablemente bien el ámbito de experiencia de los usuarios. Por ejemplo, el arquitecto de un sistema de control de tráfico aéreo debe estar familiarizado, más que superficialmente, con todas las tareas de dicho sistema, incluidas las de usuarios de todos los niveles.
El título de arquitecto de sistemas implica responsabilidades de diseño de mayor nivel que las de un ingeniero de sistemas , un ingeniero de software o un programador , aunque las actividades diarias puedan solaparse.
Descripción general
Los arquitectos de sistemas interactúan con múltiples partes interesadas dentro de una organización para comprender los distintos niveles de requisitos, el dominio, las tecnologías viables y el proceso de desarrollo previsto. Su trabajo incluye determinar múltiples alternativas de diseño e implementación, evaluarlas en función de todas las restricciones identificadas (como costo, cronograma, espacio, energía, seguridad, usabilidad, confiabilidad, mantenibilidad, disponibilidad y otras características ) y seleccionar las opciones más adecuadas para el diseño posterior. El resultado de este trabajo define las propiedades fundamentales del sistema y aquellas que son más difíciles de modificar posteriormente.
En sistemas pequeños, la arquitectura suele ser definida directamente por los desarrolladores. Sin embargo, en sistemas más grandes, se debe designar un arquitecto de sistemas para definir el sistema general y servir de enlace entre los usuarios, patrocinadores y otras partes interesadas, por un lado, y los ingenieros, por el otro. Los sistemas muy grandes y complejos pueden incluir varios arquitectos, en cuyo caso estos colaboran para integrar sus subsistemas o aspectos y responden ante un arquitecto jefe responsable de todo el sistema. En general, la función del arquitecto es actuar como mediador entre los usuarios y los ingenieros, conciliando las necesidades y requisitos de los usuarios con lo que los ingenieros han determinado que es factible dentro de las limitaciones (de ingeniería) establecidas.
En el diseño de sistemas , los arquitectos (e ingenieros) son responsables de:
- Interactuar con el /los usuario (s), el/los patrocinador (es) y todas las demás partes interesadas para determinar sus necesidades (en constante evolución).
- Generar el nivel más alto de requisitos del sistema , basándose en las necesidades de los usuarios y otras restricciones.
- Garantizar que este conjunto de requisitos de alto nivel sea coherente , completo, correcto y esté definido operativamente .
- Realizar análisis de costo-beneficio para determinar si los requisitos se satisfacen mejor mediante funciones manuales, de software o de hardware ; aprovechar al máximo los componentes comerciales disponibles en el mercado o ya desarrollados .
- Desarrollar algoritmos de particionamiento (y otros procesos ) para asignar todos los requisitos presentes y previsibles a particiones discretas, de manera que se necesite un mínimo de comunicaciones entre particiones y entre los usuarios y el sistema.
- Dividir los sistemas grandes en subsistemas y componentes (en capas sucesivas), cada uno de los cuales puede ser gestionado por un solo ingeniero, un equipo de ingenieros o un arquitecto subordinado.
- Colaborar con los ingenieros y arquitectos de diseño e implementación, de modo que cualquier problema que surja durante el diseño o la implementación pueda resolverse de acuerdo con los conceptos fundamentales del diseño, así como con las necesidades y limitaciones de los usuarios.
- Garantizar el desarrollo de un diseño lo más robusto y extensible posible.
- Generar , junto con los diseñadores, los ingenieros de pruebas y los usuarios, un conjunto de requisitos de prueba de aceptación que determinen que se han cumplido todos los requisitos de alto nivel, especialmente para la interfaz hombre-máquina .
- Generar productos como bocetos , modelos , una guía de usuario inicial y prototipos para mantener a los usuarios y a los ingenieros constantemente actualizados y de acuerdo sobre el sistema que se proporcionará a medida que evoluciona.
- Garantizar que todos los productos arquitectónicos y aquellos que cuenten con la participación de arquitectos se mantengan actualizados y que nunca se permita que se queden obsoletos o se desfasen seriamente.
Arquitecto de sistemas: temas
La arquitectura de sistemas a gran escala se desarrolló para gestionar sistemas demasiado grandes para que una sola persona pudiera concebirlos, y mucho menos diseñarlos. Los sistemas de este tamaño se están convirtiendo rápidamente en la norma, por lo que se necesitan cada vez más enfoques arquitectónicos y arquitectos para resolver los problemas de los sistemas grandes y muy grandes. En general, los sistemas cada vez más grandes se reducen a proporciones más manejables mediante un enfoque de capas, donde cada capa se compone de varias subcapas individualmente comprensibles, cada una con su propio ingeniero o arquitecto principal. Una capa completa en un nivel se mostrará como un componente funcional de una capa superior (y puede desaparecer por completo en las capas más altas).
Usuarios y patrocinadores
Se espera que los arquitectos comprendan las necesidades humanas y desarrollen productos funcionales y estéticamente atractivos. Un buen arquitecto es también el principal responsable de preservar la visión del usuario sobre el producto final, así como del proceso de definición e implementación de dicha visión.
Los arquitectos no siguen procedimientos exactos. Se comunican con los usuarios/patrocinadores de forma altamente interactiva y relativamente informal; juntos extraen los requisitos reales necesarios para el sistema final diseñado. El arquitecto debe mantenerse en comunicación constante con los usuarios finales y con los ingenieros de sistemas (principales). Por lo tanto, debe conocer a fondo el entorno y el problema de los usuarios, así como los entornos de ingeniería de los posibles espacios de solución.
Requisitos de alto nivel
La especificación de requisitos del usuario debe ser un producto conjunto de los usuarios y el arquitecto: los usuarios aportan sus necesidades y deseos, y el arquitecto aporta su conocimiento sobre lo que es factible dentro de las limitaciones de costo, tiempo y demás. Cuando las necesidades de los usuarios se traducen en un conjunto de requisitos de alto nivel, es también el mejor momento para escribir la primera versión de la prueba de aceptación , que posteriormente debe mantenerse rigurosamente actualizada con los requisitos. De esta manera, los usuarios tendrán total claridad sobre lo que obtienen. Además, sirve como protección contra requisitos imposibles de probar, malentendidos y la ampliación de requisitos.
El desarrollo del primer nivel de requisitos de ingeniería no es un ejercicio puramente analítico, sino que también debe involucrar tanto al arquitecto como al ingeniero. Si se deben realizar concesiones para cumplir con las restricciones, el arquitecto debe asegurarse de que el producto final y su apariencia general no se alejen demasiado de la intención del usuario. El ingeniero debe centrarse en desarrollar un diseño que optimice las restricciones, pero que garantice un producto funcional, fiable, extensible y robusto. La verdadera función de un sistema de ingeniería es proporcionar los servicios necesarios a los usuarios. Sin embargo, a medida que los sistemas se vuelven más grandes y complejos, y que su enfoque se aleja de los componentes simples de hardware y software, se ha constatado que la aplicación limitada de los principios tradicionales de desarrollo de sistemas es insuficiente; se considera necesaria la aplicación de principios más generales de arquitectura de sistemas, hardware y software al diseño de (sub)sistemas. La arquitectura también puede considerarse un modelo simplificado del producto final. Su función principal es definir las partes y sus relaciones entre sí para que el conjunto sea una representación coherente, completa y correcta de lo que los usuarios tenían en mente, especialmente en el caso de la interfaz hombre-máquina. Asimismo, se utiliza para garantizar que las partes encajen y se relacionen de la forma deseada.
Es necesario distinguir entre la arquitectura del mundo del usuario y la arquitectura de los sistemas de ingeniería. La primera representa y aborda problemas y soluciones en el mundo del usuario . Se plasma principalmente en las interfaces hombre-máquina (IHM) del sistema de ingeniería. El sistema de ingeniería representa las soluciones de ingeniería : cómo el ingeniero propone desarrollar, seleccionar y combinar los componentes de la infraestructura técnica para dar soporte a las IHM. En ausencia de un arquitecto experimentado, existe una tendencia desafortunada a confundir ambas arquitecturas. Sin embargo , el ingeniero piensa en términos de hardware y software y en el espacio de soluciones técnicas, mientras que los usuarios pueden estar pensando en resolver el problema de transportar personas del punto A al punto B en un tiempo razonable y con un gasto energético razonable, o de hacer llegar la información necesaria a clientes y empleados. Se espera que un arquitecto de sistemas combine el conocimiento tanto de la arquitectura del mundo del usuario como de las arquitecturas de sistemas de ingeniería (todas las potencialmente útiles) . La primera es una actividad conjunta con los usuarios; la segunda, con los ingenieros. El producto consiste en un conjunto de requisitos de alto nivel que reflejan las necesidades de los usuarios y que los ingenieros pueden utilizar para desarrollar los requisitos de diseño de los sistemas.
Dado que los requisitos evolucionan a lo largo de un proyecto, especialmente si es largo, se necesita un arquitecto hasta que el sistema sea aceptado por el usuario: el arquitecto garantiza que todos los cambios e interpretaciones realizados durante el desarrollo no comprometan el punto de vista de los usuarios.
Análisis de costo/beneficio
Los arquitectos son generalistas. No se espera que sean expertos en una sola tecnología, sino que tengan conocimientos de diversas tecnologías y sean capaces de evaluar su aplicabilidad a situaciones específicas. Además, aplican sus conocimientos a situaciones prácticas, pero evalúan la relación costo-beneficio de distintas soluciones que utilizan diferentes tecnologías (por ejemplo, hardware, software o métodos manuales) y se aseguran de que el sistema en su conjunto funcione según las expectativas de los usuarios.
Muchos componentes de hardware y software comerciales, ya sean estándar o desarrollados, pueden seleccionarse de forma independiente según restricciones como el costo, la capacidad de respuesta, el rendimiento, etc. En algunos casos, el arquitecto puede ensamblar el sistema final prácticamente sin ayuda. En otros casos, puede necesitar la asistencia de un ingeniero de hardware o software para seleccionar componentes y diseñar y construir funciones específicas. Los arquitectos (o ingenieros) también pueden recurrir a otros especialistas en seguridad , comunicaciones , hardware especializado, gráficos , factores humanos , pruebas y evaluación , control de calidad , confiabilidad , mantenibilidad , disponibilidad , gestión de interfaces , etc. Un equipo de arquitectura de sistemas eficaz debe tener acceso a especialistas en áreas críticas según sea necesario.
Particionamiento y estratificación
Un arquitecto que planifica un edificio trabaja en el diseño general, asegurándose de que sea agradable y funcional para sus habitantes. Si bien un solo arquitecto puede ser suficiente para construir una vivienda unifamiliar, pueden ser necesarios varios ingenieros, además, para resolver los problemas específicos que surgen al diseñar un edificio de gran altura. Si el proyecto es lo suficientemente grande y complejo, algunas partes de la arquitectura pueden diseñarse como componentes independientes. Es decir, si estamos construyendo un complejo de viviendas, podemos tener un arquitecto para todo el complejo y otro para cada tipo de edificio, como parte de un equipo arquitectónico.
Los sistemas de automatización de gran tamaño también requieren un arquitecto y un gran talento en ingeniería. Si el sistema diseñado es lo suficientemente grande y complejo, el arquitecto de sistemas puede delegar parte del trabajo a un arquitecto de hardware o a un arquitecto de software, aunque todos ellos pueden formar parte de un equipo arquitectónico conjunto.
El arquitecto debe subdistribuir los requisitos del sistema entre componentes o subsistemas principales que estén dentro del alcance de un único ingeniero de hardware o software, o de un gerente y equipo de ingeniería. Sin embargo, el arquitecto nunca debe ser visto como un supervisor de ingeniería. (Si el elemento es suficientemente grande o complejo, el arquitecto jefe subdistribuirá partes a arquitectos más especializados). Idealmente, cada componente o subsistema es un objeto suficientemente independiente como para poder probarse como un componente completo, separado del conjunto, utilizando únicamente un banco de pruebas sencillo para proporcionar entradas simuladas y registrar salidas. Es decir, no es necesario saber cómo funciona un sistema de control de tráfico aéreo para diseñar y construir un subsistema de gestión de datos para el mismo. Solo es necesario conocer las restricciones bajo las cuales se espera que opere el subsistema.
Un buen arquitecto garantiza que el sistema, por complejo que sea, se base en conceptos relativamente simples y claros para cada subsistema o capa, y que sea fácilmente comprensible para todos, especialmente para los usuarios, sin necesidad de formación especializada. El arquitecto utilizará un mínimo de heurísticas para asegurar que cada partición esté bien definida y libre de chapuzas , soluciones improvisadas , atajos o detalles y excepciones confusos. A medida que evolucionan las necesidades de los usuarios (una vez implementado y en funcionamiento), resulta mucho más sencillo desarrollar posteriormente un concepto simple que uno plagado de excepciones, casos especiales y mucha letra pequeña.
La arquitectura por capas es importante para mantenerla suficientemente simple en cada nivel , de modo que siga siendo comprensible para una sola persona. A medida que se asciende en las capas, los sistemas completos de las capas inferiores se convierten en componentes simples de las capas superiores, e incluso pueden desaparecer por completo en las capas más altas.
Prueba de aceptación
La prueba de aceptación es una responsabilidad fundamental del arquitecto de sistemas. Es el principal medio por el cual el líder del programa demostrará a los usuarios que el sistema funciona según lo previsto originalmente y que todos los arquitectos e ingenieros involucrados han cumplido sus objetivos.
Comunicación con usuarios e ingenieros
Un arquitecto de edificios utiliza bocetos, modelos y planos. Un arquitecto de sistemas de automatización (o de software o hardware) debería utilizar bocetos, modelos y prototipos para analizar diferentes soluciones y resultados con usuarios, ingenieros y otros arquitectos. Una versión preliminar del manual de usuario es invaluable, especialmente junto con un prototipo. Sin embargo, es importante crear un conjunto de requisitos o especificaciones viables y bien redactados que sean razonablemente comprensibles para el cliente (para que pueda aprobarlos correctamente, pero los requisitos principales de los usuarios deben estar recogidos en un manual de usuario preliminar para mayor claridad). Debe utilizar un lenguaje preciso e inequívoco para que los diseñadores y otros implementadores no tengan dudas sobre los significados o intenciones. En particular, todos los requisitos deben ser verificables , y el borrador inicial del plan de pruebas debe desarrollarse simultáneamente con los requisitos. Todas las partes interesadas deben aprobar las descripciones de las pruebas de aceptación , o su equivalente, como único determinante del cumplimiento de los requisitos, al inicio del programa.
Metáfora del arquitecto
El uso de cualquier forma de la palabra "arquitecto" está regulado por "leyes de títulos" en muchos estados de EE. UU., y una persona debe tener licencia como arquitecto de edificios para usarla. [ 1 ]
En el Reino Unido, el colegio de arquitectos excluye el uso del término «arquitecto» (cuando se utiliza en el contexto de software e informática) de su uso restringido. [ 2 ]
Véase también
Referencias
- ↑ El término «arquitecto» es un título profesional protegido por ley y restringido, en la mayoría de las jurisdicciones del mundo, a quienes están capacitados en la planificación, el diseño y la supervisión de la construcción de edificios . En estas jurisdicciones, cualquier persona que no sea arquitecto titulado tiene prohibido usar este título de cualquier manera . En el estado de Nueva York y en otros estados de EE. UU., el uso no autorizado del título de «arquitecto» es un delito y está sujeto a procedimientos penales . «Arquitectura: ¿Qué es legal y qué no?» (PDF) . AIA Estado de Nueva York . Consultado el 9 de julio de 2012 ."Arquitectura del estado de Nueva York: Leyes, normas y reglamentos: Artículo 147 Arquitectura" . Consultado el 9 de julio de 2012 .
- ↑ "Qué hacemos para regular el uso del título de 'arquitecto'"" . Junta de Registro de Arquitectos . Consultado el 8 de julio de 2019 .
Lecturas adicionales
- Donald Firesmith et al.: El marco metodológico para la ingeniería de arquitecturas de sistemas , (2008)
- Mark W. Maier y Rechtin, Eberhardt, El arte de la arquitectura de sistemas , tercera edición (2009)
- Gerrit Muller, "Arquitectura de sistemas: una perspectiva empresarial", CRC Press, (2012).
- Eberhardt Rechtin , Arquitectura de sistemas: Creación y construcción de sistemas complejos , 1991.
- JH Saltzer , MF Kaashoek, Principios del diseño de sistemas informáticos: una introducción , Morgan Kaufmann, 2009.
- Rob Williams, Arquitectura de sistemas informáticos: un enfoque de redes , Segunda edición (diciembre de 2006).
Enlaces externos
- Principios del diseño de sistemas informáticos: Una introducción – MIT OpenCourseWare
- Arquitectura de sistemas: Canaxia incorpora a un arquitecto a su equipo (Artículo)
- ocupaciones de arquitectura
- ocupaciones en tecnología de la información
- Arquitectura empresarial
- Ingeniería de sistemas