• No se han encontrado resultados

Arquitectura de software

N/A
N/A
juan

Academic year: 2023

Share "Arquitectura de software"

Copied!
13
0
0

Texto completo

(1)

Instituto Politécnico Nacional

Unidad Profesional Interdisciplinaria De Ingeniería, Ciencias Sociales Y Administrativas

Arquitectura de software

Pérez Villegas Arturo Alejandro

Ingeniería de Diseño

Prof. Jose Luis García Rodríguez

(2)

Objetivo:

La creación de sistemas complejos, así como su desarrollo con el fin de gratificar a los usuarios en los requisitos y prerrequisitos deseados por ellos, es el enfoque de la disciplina de ingeniería de diseño de sistemas. Conocimientos de diversas

áreas de gestión de proyectos, tales como, la ingeniería de software, la ingeniería de sistemas y la ciencia de la computación, son parte de una malgama que este

campo académico de estudio que los toma como parte de los saberes que la componen.

Durante el proceso de diseño, se utilizan una gran variedad de representaciones

graficas para facilitar la comprensión sobre el sistema a crear; esto es relevante pues ayuda a los ingenieros a identificar posibles percances o problemas antes de

implementar el proyecto, incluso ayuda a generar mejoras plausibles para el sistema. Este proceso recurre a una gran variedad de técnicas y herramientas para

su implementación; entre estas herramientas podemos encontrar diagramas de flujo, diagramas de bloques y diagramas de casos de uso, entre otros.

El objetivo principal de la ingeniería de diseño de software radica en concebir soluciones eficaces para los usuarios que les permita llevar a cabo tareas específicas de

manera óptima, esto evitando en la mayor medida prolongar el tiempo de desarrollo

que el proyecto tome, o la cantidad de recursos necesaria para generarlo de forma eficiente. Esto engloba la identificación de los requerimientos que el sistema pueda

tener, el análisis de las restricciones, de igual forma que las limitaciones, y

la construcción de una sólida arquitectura que cumpla con los objetivos previamente establecidos.

Adicionalmente, es importante destacar que la ingeniería de diseño de sistemas no solo se enfoca en la integración de componentes y subsistemas dentro del

sistema global, sino que también aborda con detenimiento la verificación de que

todos estos elementos operen de manera óptima en conjunto y establezcan una comunicación altamente eficaz. Además de estos aspectos fundamentales, no se

pueden pasar por alto otros elementos cruciales, tales como la seguridad del

sistema, su confiabilidad en el desempeño, su capacidad de escalabilidad para adaptarse a posibles cambios futuros y su facilidad de mantenimiento para garantizar un funcionamiento continuo y sin problemas a lo largo del tiempo.

Misión:

(3)

La misión de la ingeniería de Diseño es concentrarse en la creación de soluciones tecnológicas que satisfagan las necesidades y requerimientos de los usuarios

mediante un diseño adecuado y desarrollo eficiente, tomando en consideración aspectos funcionales, de gestión y técnicos que puedan ser requeridos durante su creación. Comprendiendo e identificando cualquier necesidad que pueda implicar el usuario; de igual forma diseñar arquitecturas solidas que satisfagan los

requerimientos establecidos y analizar las restricciones o limitaciones dentro del sistema.

La ingeniería de diseño de sistemas abarca de manera integral y exhaustiva todo el ciclo de vida del sistema, desde sus primeras etapas de concepción y definición

del problema, atravesando la fase de implementación y llegando al subsiguiente mantenimiento.

Su objetivo central y primordial radica en asegurar que el

sistema funcione de manera altamente eficiente, efectiva y segura, en estricto cumplimiento de los estándares más rigurosos de calidad, y con la capacidad

de satisfacer en su totalidad las expectativas y requerimientos del usuario,

constituyendo así un proceso altamente especializado y holístico de creación y gestión de soluciones tecnológicas.

Además, esta disciplina pone un énfasis decidido en la meticulosa integración de componentes y subsistemas dentro de la estructura global del sistema, asegurando

que cada uno de estos elementos funcione en armonía y se comunique de

manera altamente eficiente, lo que contribuye de manera significativa a lograr un rendimiento óptimo y a cumplir de manera rigurosa con los requisitos y expectativas

del usuario, conformando así un enfoque altamente especializado y completo para el diseño y gestión de soluciones tecnológicas.

Finalmente, la ingeniería de diseño de sistemas aborda una serie de aspectos adicionales de suma importancia, la seguridad en todas sus dimensiones, la garantía de una fiabilidad sólida, la

capacidad de escalabilidad para afrontar desafíos y demandas futuros, así como la facilitación de un mantenimiento continuo y actualizaciones sin complicaciones. Esto se traduce en la

implementación de medidas y salvaguardias para proteger el sistema de posibles amenazas y vulnerabilidades, asegurando su funcionamiento ininterrumpido y confiable a lo largo del tiempo, su adaptabilidad a las necesidades cambiantes del entorno y su mantenibilidad eficiente para garantizar que esté siempre al día y en pleno cumplimiento de las expectativas del usuario.

Visión:

La visión de la Ingeniería de Diseño y Desarrollo del Software es una perspectiva que se proyecta hacia un futuro en el cual la tecnología desempeñará

un papel central y crucial en la mejora constante de la calidad de vida de las personas y el rendimiento de las organizaciones. En este horizonte,

(4)

esta disciplina se esfuerza incansablemente por erigirse como la fuerza motriz que impulsa la evolución constante de la tecnología, destacándose de

manera destacada por su enfoque exhaustivo y su firme compromiso en lo

que respecta a la calidad, la seguridad y la capacidad de adaptación de las soluciones tecnológicas que crea y desarrolla. Además, aspira a ser reconocida como el principal artífice de soluciones que no solo satisfacen las necesidades actuales, sino que también se anticipan a las futuras demandas y desafíos tecnológicos, con el objetivo último de contribuir significativamente al progreso y bienestar de la sociedad en su conjunto.

En esta visión a futuro, se esboza un escenario en el cual la creatividad y la innovación se erigen como poderosos motores que impulsan el desarrollo incesante de soluciones tecnológicas de vanguardia. Estas soluciones no se circunscriben únicamente a la resolución de problemas, sino que trascienden esta limitación al inspirar y enriquecer la calidad de vida de las personas de maneras sorprendentes. La Ingeniería de Diseño y Desarrollo del Software, en su afán de liderar este proceso evolutivo, aspira a erigirse como la referencia indiscutible en la creación de software que coloca al usuario en el epicentro de cada diseño. De esta manera, garantiza experiencias de usuario intuitivas, altamente efectivas y profundamente satisfactorias, contribuyendo de manera activa y significativa a la mejora constante de la interacción entre la tecnología y la sociedad en general, consolidando así su compromiso con la innovación y la excelencia en la ingeniería de software.

Este enfoque también abarca la responsabilidad ética y la sostenibilidad como principios fundamentales. Se busca contribuir a un mundo más sostenible al desarrollar soluciones

tecnológicas que reduzcan el impacto ambiental y promuevan la eficiencia. Además, se opera con integridad y ética, considerando el impacto social y ético de cada solución desarrollada.

La visión se extiende hacia la superación de las limitaciones actuales de la tecnología, abriendo nuevas fronteras de posibilidad. La Ingeniería de Diseño y Desarrollo del Software aspira a ser un agente catalizador de cambios positivos en la sociedad y en el mundo en su conjunto. En última instancia, se busca que la tecnología sea un motor para la mejora continua, transformando la manera en que vivimos, trabajamos y nos relacionamos en el siglo XXI.

Alcance:

El alcance de la Ingeniería de Diseño de Sistemas es sumamente amplio y se encuentra enfocado de manera específica en la planificación, diseño y desarrollo de sistemas de gestión de datos altamente avanzados. Este ámbito de acción abarca de manera integral todas las etapas cruciales del proceso de diseño, comenzando con la tarea esencial de identificar de manera minuciosa y precisa los requisitos y objetivos del sistema, y proyectándose a través de la fase de concepción, planificación, implementación y evaluación de la solución diseñada. De esta forma, esta disciplina se convierte en el motor que impulsa la creación y optimización de sistemas de gestión de datos que no solo se alinean perfectamente con las necesidades específicas de cada

(5)

contexto, sino que también se destacan por su capacidad para ofrecer

soluciones tecnológicas avanzadas y eficientes que contribuyen de manera sustancial al éxito y la eficacia de las organizaciones y empresas.

Dentro de este contexto altamente dinámico y cambiante, la Ingeniería de Diseño de Sistemas desempeña un papel crucial al asumir la responsabilidad de concebir sistemas de alto calibre que tienen la capacidad de facilitar y agilizar la recopilación, almacenamiento, procesamiento y análisis de datos de manera altamente eficiente y efectiva, aplicándose con versatilidad en una amplia variedad de ámbitos. Estos ámbitos comprenden desde la gestión empresarial, donde se enfoca en la optimización de procesos y toma de decisiones, hasta la ciencia de datos, donde se convierte en un habilitador fundamental para la generación de conocimiento a partir de datos masivos,

pasando por la atención médica, donde juega un papel esencial en el diagnóstico y tratamiento de enfermedades, hasta la investigación científica, donde se convierte en un aliado indispensable para la generación de avances y descubrimientos en diversas disciplinas. De esta manera, la Ingeniería de Diseño de Sistemas se posiciona como una disciplina integral y altamente especializada que contribuye de manera significativa al progreso y la innovación en múltiples campos, consolidando su papel fundamental en la sociedad contemporánea.

El alcance adecuado para este tipo de sistemas de gestión de datos incluiría la definición clara de los límites del sistema, los objetivos de gestión de datos que se buscan alcanzar y los recursos disponibles para llevar a cabo el diseño. Al establecer un alcance bien definido, se enfocarían los esfuerzos en aspectos críticos como la seguridad de datos, la escalabilidad, la interoperabilidad y la capacidad de análisis.

La Ingeniería de Diseño de Sistemas podría tener un alcance específico en la creación de sistemas avanzados de gestión de datos que aborden las necesidades de organizaciones y proyectos que dependen en gran medida de la administración efectiva de información.

Arquitectura de software

En el vasto campo del software, el término "arquitectura de software" ha adquirido una relevancia cada vez mayor en los últimos años. Esta tendencia ha venido acompañada de una creciente demanda de profesionales conocidos como "arquitectos de software". No obstante, es esencial abordar este concepto con claridad y comprender su verdadera naturaleza, ya que su

malinterpretación puede tener consecuencias adversas en la creación de sistemas de software.

La arquitectura de software se refiere a la forma en que se estructura un sistema, y esta estructura se desarrolla idealmente en las etapas iniciales del proceso de desarrollo. Su función principal radica en servir como un diseño de alto nivel que busca cumplir con dos objetivos cruciales:

garantizar que el sistema cumpla con los requisitos de calidad establecidos, como el rendimiento óptimo, la seguridad robusta y la facilidad de modificabilidad, y proporcionar una guía sólida a lo largo de todo el proceso de desarrollo.

Para comprender mejor la importancia de la arquitectura de software, podemos hacer una analogía con la ingeniería civil. Al igual que en la construcción de un edificio o una infraestructura, las decisiones cruciales sobre el diseño general de un sistema de software complejo deben

(6)

tomarse desde el principio. Omitir esta fase inicial de diseño puede tener consecuencias perjudiciales, como limitar seriamente la capacidad del producto final para satisfacer las

necesidades de los clientes. Además, puede aumentar significativamente los costos asociados con correcciones posteriores relacionadas con problemas en la arquitectura.

Por lo tanto, es innegable que la arquitectura de software desempeña un papel fundamental en el proceso de desarrollo de software. Su correcta implementación y comprensión pueden marcar la diferencia entre el éxito y el fracaso de un proyecto de desarrollo de software. En un mundo donde la tecnología y el software desempeñan un papel crucial en la vida cotidiana y en las operaciones de las empresas, la arquitectura de software se convierte en un elemento esencial para garantizar sistemas efectivos, seguros y de alto rendimiento.

¿Qué es la arquitectura de software?

Es esencial establecer una definición sólida, especialmente en la era actual en la que el término

"arquitectura" se ha vuelto sumamente versátil y se aplica en diversos contextos relacionados con las Tecnologías de la Información (TI). Conforme a la definición proporcionada por el Software Engineering Institute (SEI), la Arquitectura de Software se refiere a "las configuraciones de un sistema, conformadas por componentes con características visibles desde el exterior y las relaciones que existen entre ellos."

Ahora bien, es crucial notar que el SEI emplea el término "componentes" de una manera

deliberadamente amplia y abarcadora, ya que puede hacer referencia a una variedad de entidades vinculadas con el sistema. Estas entidades pueden incluir elementos que tienen una existencia activa durante la ejecución del sistema, tales como objetos y hilos, entidades lógicas que se conceptualizan durante la fase de diseño, como clases y componentes, y entidades físicas, como nodos y directorios. Además, es importante destacar que las relaciones entre estos elementos se basan en sus características visibles o públicas, manteniendo los detalles de implementación en un plano oculto.

En última instancia, cada conjunto de elementos relacionados, pertenecientes a un tipo específico, contribuye a la creación de una estructura única. Esto implica que la arquitectura de software, en su esencia, se compone de una pluralidad de estructuras interconectadas, cada una de las cuales desempeña un papel crucial en la configuración y el funcionamiento global del sistema.

¿Por qué es importante la arquitectura de software?

La arquitectura de software desempeña un papel crucial debido a su influencia directa en la capacidad de un sistema para cumplir con los atributos de calidad del sistema. Los atributos de calidad, como el rendimiento (relacionado con la velocidad de respuesta), la usabilidad (que afecta la facilidad de uso para los usuarios) y la modificabilidad (que determina la facilidad de introducir cambios en el sistema), son elementos clave de los requisitos no funcionales del sistema y deben cuantificarse de manera precisa. No tiene sentido, por ejemplo, expresar que el sistema debe ser

(7)

"rápido" o que la interfaz debe ser "ligera", ya que estos términos carecen de una evaluación objetiva.

La estructura de un sistema tiene un impacto significativo en la capacidad de cumplir con estos atributos de calidad. Un sistema que requiere que una solicitud pase por numerosos componentes antes de obtener una respuesta puede experimentar un rendimiento deficiente. Del mismo modo, una estructura en la que los componentes están altamente interconectados puede limitar la capacidad de realizar cambios en el sistema. Es interesante notar que la estructura tiene un impacto mucho menor en relación con los requisitos funcionales del sistema, lo que significa que un sistema difícil de modificar puede, en teoría, cumplir plenamente con los requisitos funcionales impuestos.

Además de influir en los atributos de calidad, la arquitectura de software también desempeña un papel fundamental en la gestión del desarrollo. Una de las estructuras clave se centra en dividir el sistema en componentes que pueden ser desarrollados por individuos o grupos de trabajo. La identificación de esta estructura de asignación de tareas es esencial para respaldar la planificación del proyecto.

Por último, los diseños arquitectónicos desarrollados en una organización pueden ser reutilizados para crear sistemas diferentes, lo que puede resultar en la reducción de costos y una mayor calidad, especialmente si esos diseños han demostrado su eficacia en sistemas anteriores.

El proceso de elaboración de la arquitectura

Dentro de un proyecto de desarrollo, sin importar la metodología empleada, se puede referir al

"proceso de construcción de la arquitectura de software". Este proceso, que precede a la fase de construcción del sistema, se desglosa en las siguientes etapas: identificación de requerimientos, diseño, creación de documentación y evaluación. Es importante destacar que las tareas asociadas con el proceso de desarrollo de la arquitectura de software generalmente están integradas en las actividades establecidas dentro de las metodologías de desarrollo.

El proceso de elaboración de la arquitectura, dentro de un proyecto de desarrollo,

independientemente de la metodología seleccionada, se conoce como el "proceso de construcción de la arquitectura de software". Esta fase, que precede a la etapa de construcción del sistema en sí, se divide en varias etapas clave, cada una de las cuales desempeña un papel fundamental en la creación de una base sólida para el desarrollo posterior.

En primer lugar, la fase de identificación de requerimientos implica la recopilación y análisis exhaustivo de las necesidades y expectativas del cliente, así como de los objetivos del proyecto. A partir de esta información, se establecen las bases para la arquitectura, determinando qué componentes y funcionalidades serán esenciales.

A continuación, la etapa de diseño se centra en la creación de un plano detallado que define la estructura del sistema y cómo interactuarán sus componentes. En esta fase, se toman decisiones críticas sobre la distribución de tareas, la asignación de recursos y la elección de tecnologías adecuadas para alcanzar los objetivos del proyecto.

(8)

La creación de documentación es otra parte esencial del proceso. Aquí, se elaboran documentos técnicos y diagramas que describen la arquitectura en detalle. Esta documentación sirve como referencia para los desarrolladores y otros miembros del equipo, garantizando una comprensión clara de la visión arquitectónica.

Por último, la etapa de evaluación se encarga de revisar y validar la arquitectura propuesta. Esto implica pruebas y análisis exhaustivos para garantizar que la arquitectura cumpla con los

requisitos de calidad y rendimiento establecidos. Las correcciones y ajustes necesarios se realizan en esta fase para garantizar que la arquitectura esté lista para la fase de construcción del sistema.

Es importante destacar que estas actividades relacionadas con el proceso de desarrollo de la arquitectura de software generalmente se integran de manera orgánica en las metodologías de desarrollo, asegurando una implementación coherente y efectiva de la arquitectura en todo el proyecto.

Requerimientos:

Captura de Requerimientos. La fase de captura de requerimientos se dedica a la recopilación, documentación y clasificación de los elementos esenciales que tienen un impacto en la arquitectura. Como se mencionó previamente, los atributos de calidad desempeñan un papel fundamental en estos requerimientos, por lo que esta etapa pone un énfasis especial en su identificación. Además de estos atributos, existen otros requisitos que también influyen en la arquitectura, incluyendo los requerimientos funcionales principales y las restricciones.

Diseño Arquitectónico:

La fase de diseño arquitectónico ocupa una posición central en relación con la arquitectura y, posiblemente, es la etapa más intricada. Durante este proceso, se definen las estructuras que conformarán la arquitectura. Estas estructuras se crean considerando patrones de diseño, tácticas de diseño y elecciones tecnológicas específicas. Es esencial destacar que el enfoque del diseño se centra en la satisfacción de los requerimientos que influyen en la arquitectura, en lugar de seguir tendencias tecnológicas simplemente porque están de moda.

Documentación:

Después de que se haya establecido el diseño de la arquitectura, surge la necesidad de transmitir esta visión a todos los interesados en el proceso de desarrollo. El éxito en la comunicación de este diseño suele depender de la adecuada documentación del mismo. La documentación de una arquitectura implica la representación de diversas estructuras a través de múltiples perspectivas.

Cada perspectiva suele incluir un diagrama, complementado con información adicional que facilita la comprensión del contenido del diagrama.

Evaluación:

Dado que la arquitectura de software desempeña un rol crítico en el proceso de desarrollo, resulta beneficioso someter el diseño a una evaluación una vez que ha sido debidamente documentado.

El propósito de esta evaluación es identificar eventuales problemas y riesgos que puedan surgir. La

(9)

ventaja clave de realizar esta evaluación radica en su capacidad de llevarse a cabo en una etapa temprana del proceso, incluso antes de la fase de codificación. Además, es importante destacar que el costo de corregir los defectos identificados durante esta evaluación suele ser

considerablemente inferior al costo que conllevaría rectificar dichos defectos una La función del arquitecto

El rol y la responsabilidad del arquitecto:

Las tareas mencionadas previamente demandan habilidades específicas que recaen en la responsabilidad del arquitecto de software. El arquitecto representa un líder técnico que debe poseer un profundo entendimiento de los principios relacionados con la arquitectura de software, una amplia competencia en tecnología, y destacadas aptitudes en comunicación oral y escrita.

Lamentablemente, en la actualidad, son escasos los arquitectos de software en la industria que han recibido una formación teórica en este ámbito. Esto se debe a que los conceptos vinculados a la arquitectura de software se han formalizado en tiempos recientes, y actualmente, son pocas las instituciones que ofrecen programas educativos centrados en esta temática. La falta de

comprensión de los fundamentos de la arquitectura de software a menudo tiene un impacto adverso en los proyectos de desarrollo.

En el transcurso de esta columna inicial, exploraremos a fondo el fascinante mundo de la arquitectura de software, desglosando en detalle una serie de aspectos clave. Estos temas son fundamentales para comprender cómo la arquitectura de software impacta en el desarrollo de sistemas informáticos y en la consecución de sus objetivos.

Comenzaremos por examinar cómo los requerimientos ejercen una influencia significativa en la configuración de la arquitectura. Descubriremos cómo los objetivos y las necesidades del proyecto son los pilares sobre los cuales se erige la arquitectura de software, determinando su forma y funcionalidad.

Luego, ahondaremos en los procesos relacionados con el diseño, la documentación y la evaluación de la arquitectura. Estos son pasos cruciales en el ciclo de vida del desarrollo de software, y entenderemos cómo contribuyen a la creación de sistemas robustos y eficientes.

No podemos pasar por alto los desafíos que surgen al implementar prácticas de arquitectura de software en entornos organizativos. Abordaremos cómo la cultura corporativa, la gestión de proyectos y la colaboración entre equipos influyen en la adopción efectiva de la arquitectura de software.

Además, exploraremos el rol esencial que desempeña la arquitectura de software en diversas metodologías de desarrollo. Veremos cómo se integra en enfoques ágiles, en cascada y en otras metodologías, y cómo su presencia marca la diferencia en la calidad y eficacia del producto final.

Finalmente, profundizaremos en el perfil y las competencias del arquitecto de software, quien desempeña un papel crucial en la concepción y ejecución de la arquitectura. Conoceremos las habilidades y conocimientos necesarios para ejercer esta función de manera exitosa.

(10)

A medida que avanzamos en esta columna, obtendremos una visión completa y enriquecedora de la arquitectura de software y su importancia en el mundo del desarrollo tecnológico.

Capas de programación:

La programación por capas representa un enfoque en el desarrollo de software que prioriza la separación de las distintas partes que componen un sistema o una arquitectura cliente-servidor.

Estas partes incluyen la lógica de negocios, la capa de presentación y la capa de datos. El principal objetivo de esta separación es lograr un desacoplamiento efectivo, lo que significa que se pueden crear diversas interfaces en un mismo sistema sin necesidad de realizar modificaciones en la capa de datos o en la lógica de negocios.

Esta metodología presenta una ventaja fundamental, ya que permite llevar a cabo el desarrollo en múltiples niveles. Si se produce algún cambio en el sistema, este afectará únicamente al nivel relevante, sin la necesidad de revisar o modificar el código fuente de otros módulos. Esto se debe a que se reduce el acoplamiento informático al mínimo, limitándolo a una interfaz de paso de mensajes.

Además, la programación por capas facilita la distribución del trabajo en la creación de una aplicación, ya que cada grupo de trabajo se concentra en su nivel específico sin tener que preocuparse por los detalles de otros niveles. Esto implica que solo es necesario conocer la API que conecta los diferentes niveles.

En la actualidad, en el diseño de sistemas informáticos, se emplean comúnmente arquitecturas multinivel o programación por capas. Estas arquitecturas asignan a cada nivel una tarea sencilla, lo que posibilita la creación de arquitecturas escalables que pueden expandirse fácilmente si las necesidades aumentan. El diseño en tres niveles (o en tres capas) es uno de los enfoques más utilizados en la actualidad.

Arquitectura de software:

En el campo del software, es cada vez más frecuente escuchar el término "arquitectura de software" y encontrar oportunidades laborales para "arquitectos de software". Sin embargo, este concepto suele ser malinterpretado, y la falta de comprensión de sus principios a menudo tiene consecuencias negativas en la creación de sistemas de software.

La arquitectura de software se refiere a la manera en que se estructura un sistema, idealmente durante las etapas iniciales de desarrollo. Esta estructura representa un diseño de alto nivel del sistema que persigue dos objetivos principales: cumplir con los atributos de calidad, como el rendimiento, la seguridad y la capacidad de modificación, y servir como guía a lo largo del proceso de desarrollo. Al igual que en la ingeniería civil, las decisiones críticas acerca del diseño general de un sistema de software complejo deben tomarse desde el principio. No desarrollar esta estructura

(11)

desde las primeras etapas puede limitar gravemente la capacidad del producto final para satisfacer las necesidades de los clientes, además de aumentar significativamente los costos relacionados con correcciones vinculadas a problemas en la arquitectura. Por lo tanto, la arquitectura de software desempeña un papel fundamental en el proceso de desarrollo.

¿Qué es?

Antes de adentrarnos en el tema, es importante establecer una definición, ya que en la actualidad, el término "arquitectura" se utiliza en diversos contextos relacionados con las Tecnologías de la Información (TI). Según el Software Engineering Institute (SEI), la Arquitectura de Software se refiere a "las configuraciones de un sistema, conformadas por componentes con características visibles desde el exterior y las relaciones que existen entre ellos.

El SEI emplea el término "componentes" de manera amplia y deliberada en su definición, ya que puede hacer referencia a una variedad de entidades relacionadas con el sistema. Estas entidades pueden ser elementos que existen durante la ejecución del sistema, como objetos y hilos, entidades lógicas que se desarrollan en la etapa de diseño, como clases y componentes, y entidades físicas, como nodos y directorios. Además, las relaciones entre estos elementos se basan en sus propiedades visibles o públicas, manteniendo los detalles de implementación ocultos. En última instancia, cada conjunto de elementos relacionados de un tipo específico da lugar a una estructura única, lo que significa que la arquitectura se compone de diversas estructuras.

La relevancia de la arquitectura de software

La importancia de la arquitectura de software radica en su influencia directa en la capacidad de un sistema para cumplir con los atributos de calidad, que son aspectos esenciales del rendimiento del sistema. Estos atributos, como el rendimiento (medido por el tiempo de respuesta), la usabilidad (evaluada por la facilidad de uso) y la modificabilidad (considerando la adaptabilidad a cambios), son parte integral de los requerimientos no funcionales del sistema y deben cuantificarse de manera precisa. Es importante evitar términos vagos como "rápido" o "ligero", ya que no permiten una evaluación objetiva de si el sistema cumple con estos requisitos.

La estructura del sistema tiene un impacto significativo en la capacidad de satisfacer estos atributos de calidad. Por ejemplo, un sistema con una estructura que requiere que las solicitudes pasen por numerosos componentes antes de obtener una respuesta podría experimentar un rendimiento deficiente. De manera similar, una arquitectura en la que los componentes están altamente interconectados puede limitar en gran medida la capacidad de realizar modificaciones en el sistema. Sin embargo, es importante destacar que la estructura tiene un impacto menor en relación con los requerimientos funcionales del sistema, lo que significa que un sistema que es difícil de modificar aún puede cumplir plenamente con los requerimientos funcionales específicos.

Además de su influencia en los atributos de calidad, la arquitectura de software desempeña un papel fundamental al guiar el desarrollo. Una de las múltiples estructuras que componen la arquitectura se enfoca en la asignación de componentes a individuos o grupos de trabajo, lo que resulta esencial para planificar eficazmente el proyecto.

(12)

Finalmente, los diseños arquitectónicos desarrollados en una organización pueden ser reutilizados para crear sistemas diferentes, lo que conlleva una reducción de costos y un aumento en la calidad, especialmente si dichos diseños ya han demostrado su eficacia en sistemas anteriores.

Ciclo de desarrollo de la arquitectura:

En el contexto de un proyecto de desarrollo, sin importar la metodología empleada, es posible referirse al "proceso de construcción de la arquitectura de software". Este proceso, que ocurre antes de la fase de construcción del sistema, se divide en las siguientes etapas: identificación de requerimientos, diseño, creación de documentación y evaluación. Es importante destacar que las tareas vinculadas al desarrollo de la arquitectura de software suelen estar integradas en las actividades definidas dentro de las metodologías de desarrollo. Esto conlleva distintas etapas:

Requerimientos. La fase de requerimientos se centra en la captura, registro y priorización de los requisitos que impactan en la arquitectura. Como mencionamos previamente, los atributos de calidad desempeñan un papel fundamental en estos requisitos, por lo que esta etapa hace hincapié en ellos. Sin embargo, también hay otros requisitos que son relevantes para la arquitectura, como los requisitos funcionales principales y las restricciones.

Diseño. La fase de diseño representa el núcleo en lo que respecta a la arquitectura y puede considerarse la fase más desafiante. Durante esta etapa, se establecen las estructuras que conformarán la arquitectura. Estas estructuras se desarrollan con base en patrones de diseño, tácticas de diseño y elecciones tecnológicas específicas. El diseño debe estar orientado

principalmente a satisfacer los requisitos que influyen en la arquitectura, en lugar de simplemente adoptar tecnologías populares.

Documentación. Una vez que se ha creado el diseño arquitectónico, es esencial comunicarlo eficazmente a otros miembros del equipo de desarrollo. El éxito en la comunicación del diseño a menudo depende de que este esté documentado adecuadamente. La documentación de una arquitectura implica la representación de sus diversas estructuras a través de diferentes

perspectivas. Cada perspectiva suele incluir un diagrama, junto con información complementaria que facilita la comprensión del contenido del diagrama.

(13)

Bibliografía:

Pressman, R.S., Ingeniería del Software. Un enfoque práctico, quinta edición, 2002, España. Parte 2

Booch, G., Maksimchuk, R. A., & Engel, M. W. (2007). Diseño de Software Orientado a Objetos con UML. Addison-Wesley.

Pressman, R. S. (2010). INGENIERIA DE SOFTWARE. Séptima edición, pp. 554-570

Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1995). Patrones de Diseño: Elementos de Software Reutilizable. Addison-Wesley.

Referencias

Documento similar

Este documento de Arquitectura de Software (DAS), puede ser usado por todos aquellos usuarios que deseen comprender el diseño y construcción de la aplicación de

‹ El objetivo principal no es definir la arquitectura El objetivo principal no es definir la arquitectura de un sistema concreto sino encontrar patrones de un sistema concreto

El presente trabajo describe una arquitectura orientada a servicios para un software que tiene como objetivo facilitar la implementación de un Proceso Personal de Software en

Este trabajo presenta una arquitectura de software para aplicaciones que requieran comunicación en tiempo real y bidireccional entre servidor y clientes..

El presente trabajo de diploma contiene un estudio de los principales elementos que constituyen la Arquitectura de Software, durante su desarrollo se realiza un análisis de

Estructura de la asignatura Unidad I Unidad II Unidad III Unidad IV Introducción a la arquitectura de software Diseño orientado al dominio Capa de infraestructura de persistencia

Este documento de Arquitectura de Software (DAS), puede ser usado por todos aquellos usuarios que deseen comprender el diseño y construcción de la aplicación de

El Máster en Desarrollo y Arquitectura Software (MDAS) de La Salle-URL, tiene como objetivo dotar de herramientas a aquellos desarrolladores de software que quieran dar un paso