Universidad Abierta y Distancia de México Evidencia de aprendizaje: Unidad II Nombre: Abraham Sánchez Juárez Materia: Diseño y arquitectura de software Facilitador: Gloria Martínez Martin Matricula: AL12526906 Evidencia de aprendizaje. Lenguaje descriptor y patrones de arquitectura de software Primero que nada para tener una mejor construcción de todo los procesos que se generan dentro de un negocio y conocer su funcionamiento es muy importante utilizar un lenguaje descriptor que nos ayude a modelar todo el funcionamiento de los procesos que se lleva a cabo dentro de la empresa para poder ser utilizado sus características y desarrollar un programa de software al conocer el funcionamiento de estos procesos. Un lenguaje descriptor nos ofrece expresar las características de un sistema, en otras palabras modelarlo, aplicando una convención gráfica a un alto nivel de abstracción. Dentro de la arquitectura de software existen varios ADL que nos ayuda a modelar muchas características de distintas formas de acuerdo al problema que se está enfrentando. Hay distintos lenguajes descriptores pero en este caso utilizaremos UML. Ya que el caso de estudio es una tienda de conveniencia donde el cliente va adquirir un producto, con un diagrama de funciones cruzadas podremos ver las características de cómo funciona este sistema gracias a un lenguaje descriptor. Diagrama de actvidades "Oxxito" Cliente Empleado de mostrador Recibir petición Buscar producto NO Revisar mercancia SI hay producto Solicitar producto Surtir producto NO Entregar producto SI hay producto Recibir producto Cobrar producto Fase Pagar producto Como podemos ver gracias al este tipo de lenguaje descriptor podemos conocer el funcionamiento de los procesos del de esta empresa, con esto ya tenemos identificados varios factores en cómo podemos construir un programa, teniendo en cuenta todo esto podemos analizar el contenido del modelado de estos procesos y analizar cuál es el mejor patrón para ser utilizado en este caso. Patrón de arquitectura de software ¿Qué es un patrón de arquitectura de software? Los patrones de diseño de software que ofrecen soluciones a problemas de arquitectura de software en ingeniería de software. Dan una descripción de los elementos y el tipo de relación que tienen junto con un conjunto de restricciones sobre cómo pueden ser usados. Un patrón arquitectónico expresa un esquema de organización estructural esencial para un sistema de software, que consta de subsistemas, sus responsabilidades e interrelaciones. En comparación con los patrones de diseño, los patrones arquitectónicos tienen un nivel de abstracción mayor. Los patrones de diseño de software nos ofrecen la manera en cómo debe de funcionar un programa por medio de este patrón, donde las peticiones que son enviadas por el usuario deben de reaccionar de acuerdo al patrón elegido al momento de la programación. Esto nos ayuda demasiado ya que un software debe de estar construido a base de un patrón para poder construir mejor software y funcione de manera adecuada para el usuario, hay distintos tipos de patrones entre ellos están: Cliente-servidor Modelo-vista-controlador Tubería-filtro Arquitectura en capas Lo más importante de los patrones arquitectónicos es saber elegir el patrón de acuerdo al funcionamiento que se le va a a dar resolución al software a través de algún tipo de patrón, ya que nos enfrentamos a una situación de que el patrón elegido va hacer el que determine como va a funcionar el software, ya que cada petición y llamado seguirá un camino de acuerdo a el tipo de patrón elegido. Patrones de arquitectura Cliente-servidor Se define como una arquitectura distribuida que permite a los usuarios finales obtener acceso la información en forma transparente aún en entornos multiplataforma. En el modelo cliente-servidor, el cliente envía un mensaje solicitando un determinado servicio (hace una petición), y este envía uno o varios mensajes con la respuesta (provee el servicio). Modelo-vista-controlador El modelo MVC nos ayuda a separar la lógica del negocio de la interfaz del usuario, facilita la evolución por separado de ambos aspectos, incrementa reutilización y flexibilidad. Ahora veremos como esta definido y definido el MVC, también como el funcionamiento de este mismo. Modelo: El modelo administra el comportamiento y los datos del dominio de aplicación, responde a requerimientos de información sobre su estado (usualmente formulados desde la vista) y responde a instrucciones de cambiar el estado (habitualmente desde el controlador). Vista: Maneja la visualización de la información. Controlador: Interpreta las acciones del ratón y el teclado, informando al modelo y/o a la vista para que cambien según resulte apropiado. Tanto la vista como el controlador dependen del modelo, el cual no depende de las otras clases. Esta separación permite construir y probar el modelo independientemente de la representación visual. La separación entre vista y controlador puede ser secundaria en aplicaciones de clientes ricos y, de hecho, muchos frameworks de interfaz implementan ambos roles en un solo objeto. En aplicaciones de Web, por otra parte, la separación entre la vista (el browser) y el controlador (los componentes del lado del servidor que manejan los requerimientos de HTTP) es muy más definida. Tuberia-filtro Una tubería (pipeline) es una popular arquitectura que conecta componentes computacionales (filtros) a través de conectores (pipes), de modo que las computaciones se ejecutan a la manera de un flujo. Los datos se transportan a través de las tuberías entre los filtros, transformando gradualmente las entradas en salidas. Se aplica cuando los datos de entrada se han de transformar en datos de salida mediante una serie de operaciones. Los componentes (filtros) van transmitiendo datos al siguiente por medio de tuberías. Los filtros no necesitan saber el funcionamiento de los vecinos. Sólo se preocupan de su entrada y su salida. Si hay una sola línea de transformaciones se denomina procesamiento por lotes secuencial (pipeline) Arquitectura por capas: Esta se define como un estilo de capaz como una organización jerárquica tal que cada capa proporciona a la capa inmediatamente superior y se sirve de las prestaciones de la capa inferior. Las capas pueden ser entidades complejas, compuestas de varios paquetes o subsistemas. Las ventajas del estilo en capas son obvias. Para el caso de estudio eh elegido como patrón arquitectónico el MVC, ya que dentro de este patrón tenemos muchas ventajas que podemos sacar mucho provecho de acuerdo a su funcionamiento. Contamos con un modelo (base de datos) con el cual podemos construir por medio de un lenguaje de base de datos SQL, un esquema de base de datos que contenga tablas bien definidas para poder hacer consultas de acuerdo a lo que el usuario pide. El usuario cuando una petición (GET) por ejemplo la consulta sobre la información de un precio de un producto el controlador hace una petición al modelo y este envía un respuesta (request) al controlador y este envía una respuesta(GET) a la vista donde el usuario recibe la contestación que es mostrada en la vista. Con las imágenes siguientes podemos constatar el funcionamiento del patrón elegido MVC y su funcionamiento: Dentro del MVC podemos enviar varios tipos de peticiones GET Y POST, con una se obtiene resultados y con la otra podemos enviar información a la base de datos. Para esto nos ayuda el controlador donde se define todo el código que va a controlar el manejo de todos estos datos que van hacer utilizados, formados y controlados dentro del todo el sistema de software, el controlador es la base del funcionamiento del programa. Dentro del controlador podemos utilizar distintos lenguajes de programación entre los más usados esta Python, PHP, ASP y otros más. Como se aprecia en la imagen en esta parte de código muestra el funcionamiento del controlador donde se definen las entradas y salidas de las peticiones, si la información es válida o no y qué hacer con toda la información que pasa por el ciclo de la aplicación. Dentro del servidor que también es una parte del controlador podemos ver las peticiones que pasan. Todas las peticiones van hacer mostradas la cara frontal de la aplicación, o sea la vista: Que este caso la vista está formado por una plantilla HTML/CSS. Una de las partes más importantes del MVC es el modelo donde se aloja toda la información almacenada a través de un lenguaje de base de datos, del cual el controlador obtendrá a través de las tablas construidas en el modelo.