Revista Digital - Arquitectura del Software - Alfonso Arias M. - Sistemas I

Page 1

ARQUITECTURA DEL SOFTWARE Por Alfonso Arias M. C.I. 27.646.696 I.U.P.S.M – EXTENSIÓN MARACAY JULIO - 2021


INDICE

Definición de Arquitectura de Software .........................................................................3 Tipos de Arquitecturas de Software................................................................................5 Elementos que componen una Arquitectura de Software......................................7 Estándares de la Arquitectura de Software según la IEEE/ANSI .......................8 Métricas para la selección de la arquitectura y su verificación ........................ 11 Bibliografía................................................................................................................................. 14


Definición de Arquitectura de Software En los inicios de la informática, la programación se consideraba un arte y se desarrollaba como tal debido a la dificultad que entrañaba para la mayoría de las personas, pero con el tiempo se han ido descubriendo y desarrollando formas y guías generales, con base a las cuales se puedan resolver los problemas. A estas, se les ha denominado arquitectura de software, porque, a semejanza de los planos de un edificio o construcción, estas indican la estructura, funcionamiento e interacción entre las partes del software. La arquitectura de software es un conjunto de patrones que proporcionan un marco de referencia necesario para guiar la construcción de un software, permitiendo a los programadores, analistas y todo el conjunto de desarrolladores del software compartir una misma línea de trabajo y cubrir todos los objetivos y restricciones de la aplicación. Es considerada el nivel más alto en el diseño de la arquitectura de un sistema puesto que establecen la estructura, funcionamiento e interacción entre las partes del software. Se trata de una serie de decisiones basadas en una amplia gama de factores, y cada una de estas decisiones pueden tener un impacto considerable en la calidad, rendimiento, facilidad de mantenimiento, y en general el éxito de la aplicación. Es conveniente definir el concepto ya que a lo largo del tiempo distintos autores y organizaciones han dado su definición de arquitectura del software y no existe una acepción general del término. De acuerdo al Software Engineering Institute (SEI), la Arquitectura de Software se refiere a “las estructuras de un sistema, compuestas de elementos con propiedades visibles de forma externa y las relaciones que existen entre ellos. En el libro "An introduction to Software Architecture", David Garlan y Mary Shaw definen que la arquitectura es un nivel de diseño que hace foco en aspectos "más allá de los algoritmos y estructuras de datos de la computación; el diseño y especificación de la estructura global del sistema es un nuevo tipo de problema". 3


David Garlan y Mary Shaw

Philippe Kruchten, Grady Booch, Kurt Bittner, y Rich Reitman derivan y refin una definición de la arquitectura basada en el trabajo de Mary Shaw y David Garlan (Shaw y Garlan 1996). Su definición es: "La arquitectura de software abarca el conjunto de decisiones importantes sobre la organización de un sistema de software que incluye la selección de la estructura, los elementos y sus interfaces por el cual el sistema está compuesto; comportamiento especificado en la colaboración entre dichos elementos, composición de la estructura y elementos de comportamiento en subsistemas más grandes, y un estilo arquitectónico que guía esta organización.” En Arquitectura de Software en la práctica (2nd edición), Bass, Clements y Kazman definen la arquitectura de la siguiente manera: "La arquitectura de software de un sistema o programa de computación es la estructura o estructuras del sistema, que comprenden elementos de software, lo visible externamente, propiedades de esos elementos y las relaciones entre ellos. En las diferentes definiciones el termino estructura se utiliza para designar el “conjunto coherente de elementos arquitectónicos y sus relaciones” en sí y no la documentación de ese conjunto. Cuando hablamos de estructura, hablamos de elementos de software tal y como están en el sistema, en el código o en ejecución. Claramente, la arquitectura del sistema es el conjunto de estructuras, que no necesariamente coincide con la documentación que supuestamente le corresponden.

4


Tipos de Arquitecturas de Software Generalmente, no es necesario inventar una nueva arquitectura de software para cada sistema de información. Lo habitual es adoptar una arquitectura conocida en función de sus ventajas e inconvenientes para cada caso en concreto. Así, las arquitecturas más conocidas son:  Descomposición Modular: Donde el software se estructura en grupos funcionales muy acoplados.  Cliente-servidor: Donde el software reparte su carga de cómputo en dos partes independientes pero sin reparto claro de funciones.

 Arquitectura de tres niveles: Especialización de la arquitectura cliente-servidor donde la carga se divide en tres partes (o capas) con un reparto claro de funciones: una capa para la presentación (interfaz de usuario), otra para el cálculo (donde se encuentra modelado el negocio) y otra para el almacenamiento (persistencia). Una capa solamente tiene relación con la siguiente.  Arquitectura Orientada a Servicios: (SOA, siglas del inglés Service Oriented Architecture) es un estilo de arquitectura de TI que se apoya en la orientación a servicios. La orientación a servicios es una forma de pensar en servicios, su construcción y sus resultados. Un servicio es una representación lógica de una actividad de negocio que tiene un resultado de negocio específico.

5


 Arquitectura de Microservicios: (en inglés, Micro Services Architecture, MSA) es una aproximación para el desarrollo de software que consiste en construir una aplicación como un conjunto de pequeños servicios, los cuales se ejecutan en su propio proceso y se comunican con mecanismos ligeros (normalmente una API de recursos HTTP).  Arquitectura Dirigida por Eventos: Event-driven architecture o EDA, es un patrón de arquitectura software que promueve la producción, detección, consumo de, y reacción a eventos. Un evento puede ser definido como "un cambio significativo en un estado". Por ejemplo, cuando un consumidor compra un coche, el estado del coche pasa de "se vende" a "vendido". La arquitectura del sistema del vendedor de coches debe tratar este cambio de estado como un evento, cuyo suceso puede ser conocido en otras aplicaciones en la arquitectura.  Modelo Vista-Controlador (MVC): es un patrón de arquitectura de software, que separa los datos y principalmente lo que es la lógica de negocio de una aplicación de su representación y el módulo encargado de gestionar los eventos y las comunicaciones. Para ello MVC propone la construcción de tres componentes distintos que son el modelo, la vista y el controlador, es decir, por un lado define componentes para la representación de la información, y por otro lado para la interacción del usuario.

6


Elementos que componen una Arquitectura de Software Toda arquitectura definida en el proceso de construcción de un software debe incluir una serie de elementos o componentes que en su conjunto determinan la estructura o línea de trabajo entre todos los miembros del equipo de desarrollo para el inicio de un proyecto. La definición de los componentes dependerá de lo que se va a construir, por ejemplo no es lo mismo desarrollar una aplicación web que una aplicación móvil, para realizar lo anterior se debe tener en cuenta: clientes y servidores, examinar qué servicios son requeridos en el servidor web, servidores DNS, servidores FTP, entre otros, y de igual manera las aplicaciones de tipo cliente que son necesarias para acceder a estos servicios, bases de datos, sistemas operativos, lenguajes de programación, niveles en sistemas jerárquicos. En términos generales la arquitectura de desarrollo define los componentes del software, su función e interacción con otros componentes de software y hardware. La selección de los elementos es lo que nos lleva a construir una plataforma de desarrollo estable brindando un entorno común sobre la cual el equipo de creación realizará las actividades necesarias para la construcción del producto. Adicionalmente la plataforma es la base para la integración de los elementos del software y hardware que permiten el funcionamiento del sistema en entornos productivos una vez que se realizan los respectivos procesos de despliegue por lo cual es importante que la arquitectura de éste sea definida desde el inicio del proyecto.

7


Estándares de la Arquitectura de Software según la IEEE/ANSI

IEEE 1471 IEEE 1471 es un estándar IEEE reemplazado para describir la arquitectura de un "sistema intensivo en software", también conocido como arquitectura de software. En 2011 fue reemplazado por ISO / IEC / IEEE 42010: 2011, Ingeniería de sistemas y software - Descripción de la arquitectura. IEEE 1471 es el nombre corto para un estándar formalmente conocido como ANSI / IEEE 1471-2000, Práctica recomendada para la descripción de arquitectura de sistemas intensivos en software. Dentro del lenguaje del Instituto de Ingenieros Eléctricos y Electrónicos (IEEE), esta es una "práctica recomendada", la menos normativa de sus normas. En 2007, esta norma fue adoptada por ISO / IEC JTC1 / SC7 como ISO / IEC 42010: 2007, Ingeniería de sistemas y software: práctica recomendada para la descripción arquitectónica de sistemas intensivos en software. Ha sido reconocido por mucho tiempo que la "arquitectura" tiene una fuerte influencia sobre el ciclo de vida de un sistema. Sin embargo, hasta hace relativamente poco, problemas de hardware han tendido a dominar el pensamiento arquitectónico, y los aspectos de software, cuando se consideraron, fueron a menudo los primeros en verse afectados por l as presiones del desarrollo. IEEE 1471 fue creado para proporcionar una base para pensar sobre la arquitectura de los sistemas intensivos en software. ISO/IEC/IEEE 42010 ISO/IEC/IEEE 42010 Systems and software engineering — Architecture description es un estándar internacional para la descripción de la arquitectura de sistemas y productos software. ISO/IEC/IEEE 42010 define los requisitos que debén cumplir las descripciones que se hagan de arquitecturas empresariales, de sistemas o de software. Su principal objetivo es estandarizar la práctica de descripción de arquitecturas, presentando un glosario común y un fundamento conceptual que faciliten la especificación de requisitos, la definición, 8


comunicación y revisión de arquitecturas a partir de las descripciones que se realicen de la misma - a través de marcos de trabajo y de lenguajes para la descripción de arquitecturas. El estándar se basa en IEEE 1471 y por tanto hace una clara distinción entre Arquitectura y Descripciones de la Arquitectura. IEEE 1012 El estándar IEEE 1012 consiste en la verificación y validación de un software, es un procedimiento que está basado en normas de calidad en algunos modelos de vida de un software. Se describen los procesos de verificación y validación de software, que determinan si los productos de desarrollo de una actividad determinada cumplen con los requisitos de esa actividad, y si el software satisface su uso previsto y las necesidades del usuario. Esta determinación puede incluir análisis, evaluación, revisión, inspección, evaluación y prueba de productos y procesos de software. Los procesos de V&V evalúan el software en el contexto del sistema, incluidos el entorno operativo, el hardware, el software de interfaz, los operadores y los usuarios. ISO / IEC / IEEE 24765: 2017 ISO / IEC / IEEE 24765: 2017 proporciona un vocabulario común aplicable a todos los trabajos de ingeniería de sistemas y software. Fue preparado para recopilar y estandarizar la terminología. El estándar está destinado a servir como una referencia útil para aquellos en el campo de la tecnología de la información y para fomentar el uso de estándares de ingeniería de software y sistemas preparados por la ISO y las organizaciones de enlace IEEE Computer Society y Project Management Institute. ISO / IEC / IEEE 24765: 2017 incluye referencias a los estándares de fuente activa para definiciones, de modo que los conceptos y requisitos de ingeniería de sistemas y software puedan explorarse más a fondo.

9


10


Métricas para la selección de la arquitectura y su verificación

Método de diseño y uso de arquitecturas propuesto por Bosch Bosch plantea, en su método de diseño de arquitecturas de software, que el proceso de evaluación debe ser visto como una actividad iterativa, que forma parte del proceso de diseño, también iterativo. Una vez que la arquitectura es evaluada, pasa a una fase de transformación, asumiendo que no satisface todos los requerimientos. Luego, la arquitectura transformada es evaluada de nuevo. El proceso de evaluación propuesto por Bosch se divide en dos etapas:

11


Método de Comparación de Arquitecturas Varios son los esfuerzos realizados con el fin de comparar métodos, tanto de diseño como de evaluación arquitectónica. Por una parte, se pueden nombrar los trabajos de: Obbink et al. (2007); Tekinerdogan & Mehmet (2000), Losavio et al. (2001), los cuales comparan métodos de diseño arquitectónico. En cuanto a la comparación de métodos de diseño arquitectónico, Losavio et al. (2001) aplican DESMET (Kitchenham, 1996), para determinar la técnica de evaluación más idónea aplicable a un conjunt o de métodos de diseño. Al usar entonces el análisis a través del filtrado de características identifican los aspectos generales que deberían estar contenidos en un método de diseño arquitectónico basado en atributos de calidad. Con respecto a los métodos de evaluación arquitectónica, Dobrica & Niemelä (2002), proponen un conjunto de criterios para su comparación y caracterización, pero sin ofrecer una definición de los mismos. Sin embargo, asocian interrogantes a cada uno de los criterios que conforman el marco de comparación, por lo que se puede al menos inferir el significado de cada uno de estos.

12


13


Bibliografía

1. https://www.ecured.cu/Arquitectura_de_software 2. https://es.wikipedia.org/wiki/Arquitectura_de_software#Arquitecturas_ m%C3%A1s_comunes 3. https://es.wikipedia.org/wiki/Modelo_Vista_Controlador 4. https://es.wikipedia.org/wiki/Arquitectura_de_microservicios 5. https://es.wikipedia.org/wiki/Arquitectura_orientada_a_servicios 6. https://es.wikipedia.org/wiki/Arquitectura_dirigida_por_eventos 7. https://martinez2019blog.blogspot.com/2019/05/ieee-1012-elestandar-en-la.html 8. https://es.wikipedia.org/wiki/IEEE_1471 9. https://es.wikipedia.org/wiki/ISO/IEC/IEEE_42010 10. http://catarina.udlap.mx/u_dl_a/tales/documentos/lis/gonzalez_ d_h/capitulo4.pdf 11. https://arquitecturabosch.wordpress.com/ 12. http://ve.scielo.org/scielo.php?script=sci_arttext&pid=S079840652010000100008

14


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.