Introducción

En esta unidad se estudian los principios, métodos y técnicas para el desarrollo de software soportado por una arquitectura en capas (MVC Modelo Vista Controlador) y el patrón de diseño (DAO Objeto de Acceso a Datos). Haciendo especial énfasis en el modelado de la arquitectura utilizando el lenguaje de modelado UML.

Propósitos de aprendizaje

Propósito General

Conocer los conceptos de arquitectura de diseño de software, incluyendo patrones de arquitectura, lenguajes de definición de arquitectura y tecnologías más usadas.

Propósitos Específicos

  • Conocer los conceptos de arquitectura de sistemas de software, incluyendo patrones de arquitectura, lenguajes de definición de arquitectura y tecnologías más usadas.
  • Comprender cómo las diferentes capas de una arquitectura de software se relacionan entre ellas.
  • Saber aplicar una arquitectura y patrones a un problema de desarrollo de software.
  • Saber interpretar el modelo gráfico que representa la estructura de una arquitectura de software y poder adaptarlo al domino de un problema concreto.

Diseño y Arquitectura

El diseño de software es el proceso para la planificación del desarrollo de un producto de software. Pressman (2002) afirma: El objetivo del diseño es producir un modelo o representación de una entidad que se va a construir posteriormente (p. 219).

En el diseño de software se debe tener en cuenta el diseño de datos y el diseño arquitectónico. El diseño de datos se refiere a la estructura donde se almacenan los datos y facilita la representación de los componentes de datos de la arquitectura.
El diseño arquitectónico es una abstracción de un sistema de software y se centra en la representación de la estructura de los componentes del software, sus propiedades e interacciones.

Diseño y Arquitectura

Diseño de software

El diseño de software es una etapa del ciclo de vida del software, es en esta fase donde se inicia el proceso que permite definir la arquitectura, los componentes, las interfaces, y otras características del sistema que se desea construir. Este proceso se divide en dos subprocesos.

  1. Diseño de la arquitectura o de alto nivel. En este subproceso se describe cómo descomponer el sistema y organizarlo en sus diferentes componentes e interfaces (esto se conoce como la arquitectura del software), tema que estudiaremos más adelante.
  2. Diseño detallado. En este subproceso se describe el comportamiento específico de cada componente de software.
El proceso de diseño y construcción de software es un conjunto de niveles repetitivos que permiten describir todos los aspectos del sistema a construir. A lo largo del proceso se evalúa la calidad del software, tal y como se presenta en el gráfico que acompaña esta pantalla.

Diseño y Arquitectura

Arquitectura de software

Los conceptos de diseño enunciados en el tema pasado nos permiten entender los fundamentos de la arquitectura del software.

Para el concepto de arquitectura de software, no existe una definición única. El Software Engineering Institute, SEI, propone la siguiente definición, que es aceptada universalmente.

La arquitectura de software de un sistema es el conjunto de estructuras necesarias para razonar sobre el sistema. Comprende elementos de software, relaciones entre ellos, y propiedades de ambos.” (Bass, Clement y Kazman, 2012)

Dependiendo del tipo de proyecto, el diseño se describe seleccionando la técnica más apropiada, dentro de las cuales se encuentran:

El estándar IEEE de Prácticas recomendadas para la descripción de arquitectura de software (ISO/IEC 42010:2007) define la arquitectura de software como:“La arquitectura de un sistema software es la organización funcional de dicho sistema plasmada en sus componentes, las relaciones entre éstos y con el entorno, y los principios que guían su diseño e implementación.” estándar IEEE de Prácticas (ISO/IEC 42010:2007)

Material
de apoyo

Diseño Arquitectónico

El diseño arquitectónico o de alto nivel describe cómo descomponer el sistema y organizarlo en los diferentes componentes, a este proceso se le denomina la arquitectura del software.

Es en este proceso de diseño donde se identifican los subsistemas que conforman un sistema y la infraestructura de control y comunicación. Al terminar el proceso de diseño se documenta la descripción de la arquitectura de software para la construcción del sistema.

Para describir la arquitectura de un sistema y su diseño, existen diferentes notaciones, algunas son exclusivas del paradigma estructurado y otras del paradigma orientado a objetos, muchas veces en un proyecto se hace uso de notaciones diferentes en varias partes del proyecto.

Para el diseño arquitectónico por capas orientado a objetos se utiliza la notación UML versión 2. (Unifed Modeling Languaje o Lenguaje Unificado de Modelado). Es un estándar para crear esquemas, diagramas y documentación referente a la arquitectura y desarrollo de software.

Patrones Arquitectónicos

Un patrón arquitectónico es una descripción abstracta que describe la organización de un sistema y que da una solución ya probada y documentada a problemas de desarrollo de software.

Como un patrón arquitectónico es una forma reutilizable de resolver un problema común incluye en su documentación información como: su nombre, el problema a solucionar, cuando aplicarlo, la descripción abstracta del problema y las consecuencias costos y beneficios.

A continuación, se describen los patrones de diseño Modelo Vista Controlador (MVC), N Capas y el Patrón de diseño Data Access Object (DAO). De uso común en el diseño e implementación de diferentes aplicaciones de software.

Material
de apoyo

Patrones Arquitectónicos

Modelo Vista Controlador

Un patrón arquitectónico o patrón de arquitectura, es una descripción abstracta que ofrece soluciones a problemas de arquitectura de software, describe un esquema estructural organizado para un sistema de software, que incluye los subsistemas, las responsabilidades e interrelaciones.

Un patrón de diseño es una solución a un problema recurrente de carácter general en términos de clases, interfaces, objetos e interacciones entre estos elementos. Al comparar un patrón de diseño vs. un patrón de arquitectura, concluimos que los patrones arquitectónicos tienen un nivel de abstracción mayor.

La idea central del MVC es la reutilización del código, propone tres componentes que son: representación de los datos, la lógica de negocio y la interfaz de usuario, (modelo, vista, controlador), permitiendo aislar los datos y la lógica de negocio de la interfaz gráfica de usuario.

A continuación se explicará cómo se diseña e implementa la arquitectura MVC.

Patrones Arquitectónicos

N Capas

El Patrón de arquitectura N Capas es un patrón de arquitectura cuyo objetivo es la separación de la lógica de negocio de la lógica de diseño y consiste en separar la capa datos de la capa de presentación de usuario. Es un patrón utilizado en arquitectura cliente servidor.

Veamos a profundidad la explicación de este modelo.

Patrones Arquitectónicos

DAO

El Patrón DAO (Data Access Object) es un patrón de diseño que divide las responsabilidades en una aplicación de software, de tal forma que propone unas clases que se encargan de la representación de datos (DTO) y otras clases que se encargan de la lógica de negocio y el acceso a la base de datos (DAO).

De esta forma se garantiza la portabilidad del sistema en los diferentes sistemas gestores de bases de datos (SQLServer, Oracle, MySql, etc). A continuación se presenta el estudio detallado de este patrón.

Actividad de aprendizaje

Actividad de Aprendizaje

Juega y coloca a prueba lo estudiado acerca del Diseño de la arquitectura del software en la siguiente actividad.

Resumen

En esta unidad hemos definido los conceptos fundamentales de diseño de software, arquitectura de software y patrones de diseño, proporcionando una visión global de los conceptos y mecanismos para el diseño de software.

Se estudiaron los principios, métodos y técnicas para el desarrollo de aplicaciones de software soportados por patrones de arquitectura como el modelo vista controlador, el estilo de arquitectura, N capas, la arquitectura orientada a objetos y el patrón de diseño DAO.

De igual manera, se estudió los componentes, contenedores y elementos que integran la interfaz gráfica de usuario, así como los eventos y acciones que se realizan en ella, y que son gestionados por la capa de lógica o el controlador y enviados al modelo para la gestión de los datos realizada por el patrón DAO.

Al final de la unidad se hace una introducción a la capa de datos y el acceso a datos, utilizando el API de Java JDBC para la gestión de los datos sobre el sistema gestor de base de datos.

Caso de Estudio

De acuerdo a lo estudiado, visualiza el siguiente caso de estudio, realiza el planteamiento y revisa si estás en lo correcto.

Bibliografía ()

  • Bass, L. (2013). Software Architecture in Practice. México: Addison Wesley.
  • Sánchez, S. (2012). Ingeniería de Software un enfoque desde la guía SWEBOK. México: Alfaomega Grupo Editorial.
  • Cervantes, M. (2016). Arquitectura de Software Conceptos y Ciclo de Desarrollo. México: Cengage Learning Editores s.a.
  • Cervantes, H. (2013). Designing Software Architectures A practical Approach. México: Addison Wesley.
  • Sommerville, I. (2011). Ingeniería de Software. México: Pearson Educación.
  • Roger, S. (2010). Ingeniería de Software un Enfoque Práctico. México D.F: McGraw-Hill.

Referencias Web