Introducción a la Arquitectura del Software

Documentos relacionados
Arquitectura Web. Arquitectura e Integración de Sistemas Software Curso 2012/2013. Índice

Modelado de Arquitectura Software

Consumo de Servicios RESTful (II)

Integración de datos

Patrones de Integración

BLOQUE II: Integración de Sistemas Software. Integración Web. Arquitectura e Integración de Sistemas Software Curso 2012/2013.

Consumo de Servicios RESTful (III)

Introducción a la Integración Software

Pruebas de Integración

Desarrollo de Aplicaciones con GWT (I)

Programación en Capas con Visual C#: desarrollo rápido de aplicaciones

LA INTEGRACIÓN DE SISTEMAS

Tema 1: Patrones Arquitectónicos

Introducción a las Aplicaciones Web

TEMA 5: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE. Definición de Ingeniería del Software

Framework Atlas. Introducción. Unidad de Arquitectura y Soporte de Aplicaciones Área de Aplicaciones Especiales y Arquitectura de Software DIAS

LINEAMIENTOS DE CONTENIDOS

Microsoft Visual Studio.NET 2010 desarrollador y diseñador. Fabricante: Microsoft Grupo: Desarrollo Subgrupo: Microsoft Visual

Líneas de producto de software. Casos de éxito: Teléfonos móviles de Nokia Toshiba

Introducción a los Sistemas Gestores de Bases de Datos

Análisis y Diseño de Sistemas Departamento de Sistemas - Facultad de Ingeniería

Lenguajes de Cuarta Generación (4GL)

Diseño de la Arquitectura Lógica con Patrones. mayo de 2008

Introducción n a Proyectos

:Universidad Salesiana de Bolivia. :Ingeniería de Sistemas PLAN DE DISCIPLINA GESTIÓN II

Tema 1: Patrones Arquitectónicos

Fibroline El presente proyecto

Nombre de la asignatura : Análisis y Diseño Orientado a Objetos. Carrera : Ingeniería en Sistemas Computacionales. Clave de la asignatura : SCB-

octubre de 2007 Arquitectura de Software

LAS ETAPAS DE LA METODOLOGIA METRICA

Dirección y Gestión de Proyectos

Guía del Curso Curso de Information System Management

360ºde la gestión del expediente. José Novillo Especialista Técnico en Gestión Documental #START013, 6 Noviembre 2012

Desempeño Alineación Riesgo

DOCUMENTO DE ARQUITECTURA

PUNTOS DE CASOS DE USO

TEMA 4. PROCESO UNIFICADO

Definimos un Sistema Gestor de Bases de Datos o SGBD, también llamado DBMS (Data Base Management System) como una colección de datos relacionados entr

Introducción al desarrollo de Software

Tienda Online: WebCine. Jose Luis Del Hoyo Fernández Consultor: Antoni Oller Arcas 13/01/2014

Facultad de Ciencias Económicas y Sociales

Curso Implementing Data Models and Reports with Microsoft SQL Server 2014 (20466)

CLASIFICACIÓN DE SERVICIOS EN SOA CONTENIDO

EVS. Estudio de Viabilidad del Sistema

UNIDAD I: INTRODUCCIÓN A LA ARQUITECTURA DE SOFTWARE

ITIL V3 Entender el enfoque y adoptar las buenas prácticas

METODOLOGÍA COMMONKADS.

MATEMÁTICAS 1ero ESO

1. Objetivos. Competencias Profesionales, Personales y Sociales

Todos los estados del país.

SÍLABO DE ANÁLISIS Y DISEÑO DE SISTEMAS

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMÉRICA)

Administración n de Proyectos

Objetivos y Temario CURSO SQL SERVER 2012

PERFIL COMPETENCIA ANALISTA DESARROLLADOR DE APLICACIONES DE SOFTWARE (TIC-PROG)

TEMA I PROGRAMACIÓN ORIENTADA A OBJETOS PROGRAMACIÓN N ORIENTADA A OBJETOS OBJETOS (I) OBJETOS (II)

Sistemas Operativos. Clase 2: Administración de procesos.

UML El Lenguaje Unificado de Modelado Grady Booch, Jim Rumbaugh e Ivar Jacobson

Techniks es una empresa comprometida con el desarrollo de sistemas de. información de calidad y requiere de la recomendación o desarrollo de un método

Bloque 1. La sociedad de la información y el ordenador

Arquitectura y Diseño de Software

El Ciclo de Vida del Software

FICHA PÚBLICA DEL PROYECTO

TOOLS MARZO 2016 JAVASCRIPT SEDE EN LA INDUSTRIAL DIRECCIÓN: C/ SAN ANDRÉS 8, MADRID INFO:

UML: CASOS DE USO Y DIAGRAMA DE CASOS DE USO

Fundamentos de Programación y Bases de Datos

Introducción a la Gestión de la Innovación

LabVIEW en la Enseñanza del Control: Laboratorios Virtuales y Remotos de Automática

ORACLE 10g. Descripción A QUIEN VA DIRIGIDO?

Bases de Datos Especializadas. Sesión 3: Modelado de datos

CLAVE ASIGNATURA REQUISITOS HORA/SEMANA CREDITOS TI-8 PROGRAMACION II 80% DE ASISTENCIA 4 6

Contenido. Estructura del Modelo del análisis. Diagrama Entidad-Relación (DER) Diagrama de flujo de datos (DFD)

El Ciclo de Vida del Software

Cursos de INFORMÁTICA [ ] Diseño de Páginas Web

Arquitectura Empresarial. Ing. Omar G. Erazo C, MsC, PMP

Cristian Blanco

Algoritmos y Diagramas de flujo

Unidad II: Metodologías de Desarrollo. 2.1 Metodologías clásicas Cascada

20487 Desarrollo de Windows Azure y Servicios Web

Capítulo III. Fundamentos de la Manufactura Global. 3.1 Definición de manufactura Global

6 10 3,5 2,0 4,5. PROGRAMA DE CURSO Código Nombre EL Sistemas Digitales Nombre en Inglés Digital Systems SCT

CASO - Conceptos Avanzados de Sistemas Operativos

GERENCIA DE PROYECTOS APLICADA. Justificación:

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMÉRICA)

Clasificación de los planes:

Curso JAVA EE

Definición de Sistema Operativo

1. Programación y bases de datos

8 horas semanales 32 horas semestral. Suficientable

Empleo. CURSO FORMATIVO Desarrollo WEB con Ruby on rails. Coordinador Académico Antonio José Martín Sierra

AUTORES SOBRE DISEÑO DE SISTEMAS: 1.- KENDALL Y KENDALL:

REGLAS DE CODD DEL MODELO RELACIONAL

4.1 Dispositivos y manejadores de dispositivos: device drivers

El usuario selecciona el botón crear proyecto (Uniprograma o Interprograma).

Presentación de la asignatura ISO

GUÍA DE APRENDIZAJE PROYECTOS

Realizar en una hoja blanca el diseño de su menú de navegación y la abstracción de los elementos principales de su proyecto.

Transcripción:

Departamento de Lenguajes y Sistemas Informáticos BLOQUE I: Arquitectura del Software Introducción a la Arquitectura del Software Tema 2 Arquitectura e Integración de Sistemas Software Curso 2012/2013 Índice Introducción Estilos y patrones arquitectónicos Artefactos reutilizables Principios de diseño Resumen Bibliografía 1

Índice Introducción Estilos y patrones arquitectónicos Artefactos reutilizables Principios de diseño Resumen Bibliografía Introducción Ejemplo de otro dominio El diseño de la arquitectura del software es el equivalente del plano de una casa. Éste ilustra la distribución general de las habitaciones, su tamaño, forma y relaciones entre ellas, así como las puertas y ventanas que permiten el movimiento entre los cuartos R. S. Pressman 2

Introducción Ejemplo de otro dominio Diseño de la arquitectura Implementación de la arquitectura Índice Introducción Estilos y patrones arquitectónicos Artefactos reutilizables Principios de diseño Resumen Bibliografía 3

Definición LaDescripción arquitecturadedellosoftware subsistemas de un yprograma componentes es la estructura de un o estructuras sistema software del sistema, y de lo lasque interrelaciones comprende aentre los componentes ellos. del software, sus propiedades externas visibles y las relaciones entre ellos Bass et al. Definición Software architecture is the set of design decisions which, if made incorrectly, may cause your project to be cancelled. E. Woods 4

Por qué es importante? Durante la gestión del sistema: Documento sobre el que poder discutir. Aumenta la precisión en la estimación del coste y tiempo. Ayuda a gestionar la complejidad (abstracción). Durante el desarrollo del sistema: Es una excelente vista general del sistema. Proporciona la relación de puntos de diseño a tratar. Facilita el desarrollo simultáneo de componentes. Permite detectar errores de diseño en fases tempranas. Qué información incluye un diseño arquitectónico? El diseño de la arquitectura incluye: Estructura: descripción de subsistemas como composición de componentes. Comportamiento: descripción de la comunicación entre componentes. Cualquier otra información que el arquitecto considere relevante: Protocolos de comunicación, sincronización y acceso a datos. Distribución física. Puntos de variabilidad y extensión. Aspectos de seguridad. 5

Empleado Producto Cliente ListaEmpleados 14/02/2013 Qué información incluye un diseño arquitectónico? El documento de diseño arquitectónico suele incluir varias vistas. Una vista representa un aspecto parcial de una arquitectura software. Cada participante en el desarrollo estará interesado en una o varias vistas. Cuándo se diseña la arquitectura? Es el primer paso en el diseño de un sistema, previo al diseño detallado. Analizar el problema Diseño arquitectura Diseño detallado 6

Cuándo se diseña la arquitectura? El diseño de la arquitectura podrá evolucionar a lo largo del desarrollo y el tiempo de vida de la aplicación. El diseño arquitectónico es una actividad continúa. Qué se tiene en cuenta para el diseño? Contexto Requisitos Experiencia del arquitecto Documento de diseño arquitectónico (Arquitectura Software) 7

Qué se tiene en cuenta para el diseño?- Requisitos Qué se tiene en cuenta para el diseño? - Contexto Aspectos del negocio: Amortizar la infraestructura. Mantener bajos costes de instalación. Utilizar personal disponible, etc. Aspectos de la estructura organizacional: Promoción de los intereses creados, ej. mantener una BD existente. Mantener el método estándar de hacer negocio, etc. Tendencias actuales: Desplegar la aplicación en la nube. Interfaz para aplicaciones móviles, etc. Tecnología disponible: sistema centralizado vs distribuido, desarrollo desde cero vs. uso de servicios externos, etc. 8

Qué se tiene en cuenta para el diseño? - Arquitecto Los arquitectos desarrollan su modo de pensar a partir de experiencias anteriores. Experiencias anteriores buenas darán lugar a replicar esos diseños. Las experiencias anteriores malas se evitarán en el nuevo diseño. Quién diseña y gestiona la arquitectura? El arquitecto software Es un líder técnico. Puede ser un equipo. Posibles roles: arquitecto jefe (necesario), arquitecto de aplicaciones, arquitecto de infraestructuras, arquitecto de datos, etc. Tiene conocimientos tecnológicos y habilidades de programación. Tiene habilidades para el diseño. Conoce el dominio del negocio. Es consciente de las políticas organizacionales. Es un buen comunicador. Toma decisiones. Es un negociador. 9

Cómo se modela? La arquitectura de un sistema software puede modelarse mediante: Lenguajes de Descripción de Arquitectura (ADLs) Diagramas UML Diagramas de bloque de alto nivel Cómo se modela? - ADLs Lenguajes de descripción de arquitectura (ADLs). Lenguajes textuales formales ideados para describir una arquitectura software en términos de componentes y conectores. 10

Cómo se modela? Diagramas UML Diagramas UML Descripción de aspectos estructurales (estático): Diagrama de componentes, diagrama de despliegue, etc. Descripción de comportamiento (dinámico) Diagrama de actividad, diagrama de secuencia etc. cmp «component» Account Management TransactionLogger IdentityVerifier «component» Logger «component» CreditCardServ ices Ejemplo Diagrama de componentes (Proyecto Alcuza) 11

Cómo se modela? Diagramas de alto nivel Describen la arquitectura con una alto nivel de abstracción. Suele ser el primer paso antes de un diseño más detallado (ej. con diagramas de componentes) Ejemplo: Arquitectura de Tuenti Imagen tomada de www.slideshare.net/gurbani/tuenti-architecture 12

Ejemplo: Arquitectura de Facebook Imagen tomada de http://www.fmderana.lk/index.php?route=entertainment/kik_news&nid=196 Índice Introducción Estilos y patrones arquitectónicos Artefactos reutilizables Principios de diseño Resumen Bibliografía 13

Estilos y patrones arquitectónicos Un diseño arquitectónico se refiere a la arquitectura de un sistema concreto. Un estilo arquitectónico establece las restricciones sobre la arquitectura de una familia de diseños arquitectónicos. Algunos ejemplos: centrado en datos, flujo de datos, llamar y regresar, capas. Un patrón arquitectónico es una solución general a un problema común del diseño arquitectónico. Menor alcance que los estilos arquitectónicos. Estilos arquitectónicos: Centrado en datos (Blackboard) Fuente de Conocimiento El centro de la arquitectura es una pizarra y otros componentes tienen acceso a ella para actualizar, agregar, eliminar o consultar sus datos. Fuente de conocimiento Pizarra (datos compartidos) Fuente de conocimiento Facilita la integración pues los componentes son independientes. Fuente de conocimiento Se puede pasar datos entre componentes a través del almacén de datos. 14

Estilos arquitectónicos: Tuberías y filtros (Pipes and filters) Filtro Filtro Filtro Filtro Filtro Filtro 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). Estilos arquitectónicos: Capas (Layers) Capa Capa Capa Se definen distintas capas en la aplicación de manera que sólo se comunican entre si las capas adyacentes. Favorece el bajo acoplamiento. Este es el estilo arquitectónico empleado en las aplicaciones web convencionales. 15

Estilos arquitectónicos: Arquitectura Orientada a Servicios (SOA) Las arquitecturas orientadas a servicios (SOA) son un estilo arquitectónico basado fundamentalmente en el uso de servicios web. Estilos arquitectónicos: Arquitectura Orientada a Servicios (SOA) Uso de estándares. UDDI SOAP BPEL WSDL WS- Coordination Web Services WS-Reliable Messaging WS- Transaction WS-Security WS-Policy 16

Índice Introducción Estilos y patrones arquitectónicos Artefactos reutilizables Principios de diseño Resumen Bibliografía Artefactos reutilizables Un buen arquitecto no reinventa la rueda 17

Artefactos reutilizables Componentes Un componente es una unidad modular con interfaces bien definidas, que es reemplazable dentro del contexto (OMG). Los componentes definen su comportamiento en términos de interfaces proporcionadas y requeridas. Un componente debe poder ser reemplazable por otro que cumpla con las interfaces declaradas. Las características fundamentales que debe cumplir son: Ser reutilizable. Ser intercambiable. Poseer interfaces definidas. Ser altamente cohesivos. Artefactos reutilizables Servicios Web Un servicio web ofrece una interfaz de programación (no de usuario) de una determinada funcionalidad (servicio) accesible a través de Internet y basada en estándares W3C. Permiten intercambiar información entre aplicaciones software desarrolladas en lenguajes de programación diferentes y ejecutadas sobre distintas plataformas. Son la base para la integración Web. Ventajas: Facilita la interoperabilidad entre sistemas diversos. Uso de protocolos abiertos. Inconvenientes: Rendimiento. 18

Artefactos reutilizables Librerías Una librería proporciona código reutilizable que puede ser empleado por los desarrolladores de aplicaciones. Ejemplo: Librería de funciones matemáticas Math.lib Las librerías pueden incorporarse al programa en tiempo de compilación (ej. lib,jar) o en tiempo de ejecución (ej. DLLs). El desarrollo de librerías puede ser una buena idea para facilitar el uso de nuestras aplicaciones por parte de terceros. Ej. Amazon SDK para Java. Artefactos reutilizables Frameworks Un framework es un conjunto de clases parcialmente funcional (no es una aplicación) para un dominio de aplicación. Les falta aquello que es propio de la aplicación. Los frameworks suele implementar distintos patrones y estilos arquitectónicos. El uso de frameworks va a determinar en gran medida la arquitectura del sistema. 19

Artefactos reutilizables Librerías vs. frameworks Librería Framework Código de nuestra aplicación Índice Introducción Estilos y patrones arquitectónicos Artefactos reutilizables Principios de diseño Resumen Bibliografía 20

Principios de diseño Principios de diseño Nociones clave a tener en cuenta para el diseño efectivo de sistemas software. Principios de diseño Abstracción. Omitir detalles no relevantes. Cliente Capa de presentación Capa de lógica Capa de datos / recursos Alto nivel de abstracción. Bajo nivel de abstracción. 21

Principios de diseño Para el diseño de la arquitectura se recomienda comenzar con un alto grado de abstracción y refinar sucesivamente hasta llegar al nivel de componente. Principios de diseño Descomposición. Dividir los problemas en problemas más pequeños. (Divide y vencerás) 22

Principios de diseño Cohesión. Es un indicador cualitativo del grado en el que un módulo se centra en hacer una sola cosa. La cohesión de un diseño debería ser alta. Un elemento es altamente cohesivo si todos sus elementos trabajan juntos para proporcionar algún comportamiento bien delimitado Grady Booch Principios de diseño Acoplamiento. Es un indicador cualitativo del grado en el que un módulo está conectado con otros y el mundo exterior. El acoplamiento debe ser bajo. 23

Principios de diseño Variaciones protegidas. Intentar ocultar/proteger de los cambios al resto del sistema. Objetivo: Lograr que los cambios involucren la menor cantidad de código posible y estén lo más acotados posible. Índice Introducción Estilos y patrones arquitectónicos Artefactos reutilizables Principios de diseño Resumen Bibliografía 24

Resumen Qué hemos aprendido? La arquitectura software Define la estructura y el comportamiento del software. Puede tener múltiples vistas. Es el primer paso en la fase de diseño. Es un actividad continua. Se diseña a partir de los requisitos, el contexto y la experiencia del arquitecto. Se modela mediante ADLs, diagramas UML y/o diagramas de bloque. Artefactos reutilizables: componentes, librerías, frameworks Estilos vs. patrones arquitectónicos. Estilos arquitectónicos: centrado en datos, tuberías y filtros, capas, arquitecturas orientadas a servicios. Principios de diseño a tener en cuenta: cohesión, acoplamiento Índice Introducción Estilos y patrones arquitectónicos Artefactos reutilizables Principios de diseño Resumen Bibliografía 25

Bibliografía Pressman R. Software Engineering: A Practitioner s Approach. McGraw-Hill. 2009 (7th edition) The Process of Software Architecting, Peter Eeles y Peter Cripps. Addison-Wesley, 2009 Beautiful Architecture: Leading Thinkers Reveal the Hidden Beauty in Software Design, Diomidis Spinellis, Georgios Gousios. O'Reilly Media, Inc., 2009 Bibliografía Buschmann F. et al.pattern-oriented Software Architecture. John Wiley & Sons. 1996 Bass L. et al. Software Architecture in Practice Addison-Wesley Professional. 2003 Alonso G. et al. Web Services Concepts, Architectures and Applications. Springer. 2004 26

Disclaimer and Terms of Use All material displayed onthis presentation is for teaching and personal use only. Many of the images that have been used in the presentation are Royalty Free images taken from http://www.everystockphoto.com/. Other images have been sourced directly from the Public domain, from where in most cases it is unclear whether copyright has been explicitly claimed. Our intention is not to infringe any artist s copyright, whether written or visual. We do not claim ownership of any image that has been freely obtained from the public domain. In the event that we have freely obtained an image or quotation that has been placed in the public domain and in doing so have inadvertently used a copyrighted image without the copyright holder s express permission we ask that the copyright holder writes to us directly, upon which we will contact the copyright holder to request full written permission to use the quote or images. 27