Arquitectura de Software

Slides:



Advertisements
Presentaciones similares
Ciclo de vida de desarrollo de software
Advertisements

MODELOS ORIENTADOS A OBJETOS
Ingeniería de Software II
INGENIERÍA DE SOFTWARE Introducción Arquitectura de Software
2011Integración de Aplicaciones Desarrollo Basado en Componentes.
Lenguaje Unificado de Modelado
PROCESO Y MODELOS EN LA INGENIERIA DE SOFTWARE
ANÁLISIS DE REQUERIMIENTOS
Diseño y Arquitectura sobre productos de software
MODELADO DE ANALISIS Y DISEÑO
Análisis y Diseño de Aplicaciones Ingeniería de Software
IEEE-std Práctica Recomendada para la Especificación de Requerimientos de Software Fuente: IEEE Recommendad Practice for Software Requirements.
Administración de Procesos de Pruebas
Ingeniería del Software
Versión 2004 Enrique Bañuelos Gómez
Aspectos Avanzados de la Tecnología de Objetos
DIAGRAMA DE COMPONENTES INTEGRANTES Córdova Vásquez Giovanny Escobar Alvares Calixto Gomez Quinteros Adelaida Pinto Flores Yarmila.
M.S.C. Ivette Hernández Dávila
Unified Modeling Language (Lenguaje de Modelamiento unificado)
DEPARTAMENTO DE INGENIERÍA INFORMÁTICA
Diseño del Software Diseño de datos Diseño arquitectónico
Ingeniería de Software
DISEÑO DE SOFTWARE 1ª. Parte
Diseño e Implementación
Unidad 4 Diseño Arquitectónico Basado en la Funcionalidad
Rational Unified Process (RUP)
Las etapas de un proyecto
LA IMPORTANCIA DE LAS PyMEs
Gestión de Proyectos Informáticos Sesión N° 5 Ciclo de Vida de un Proyecto Roberto Jijena I.
Arquitectura Orientada a Servicios
Comunicación y Multimedia
Ciclo de Vida del Software
CONCEPTOS BÁSICOS Diseño de Sistemas.
Ingeniería de Software: Metodologías Agustín J. González ElO329: Diseño y Programación Orientados a Objeto Adaptado de:
Ingeniería de Software: Parte 2 Agustín J. González ElO329: Diseño y Programación Orientados a Objeto Adaptado de:
VII Congreso de Expotecnología UVM 2007 Jonás A. Montilva C.
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
Ximena Romano – Doris Correa
Importancia en la efectividad del:
Diseño de Software y su Proceso
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
VISIÓN GENERAL DE LA IS Con independencia del modelo de proceso hay tres fases genéricas: Fase de definición Fase de desarrollo Fase de mantenimiento Cada.
Unidad 3: Adquisición de Paquetes de Software Msc. Lic. Susana I. Herrera - Lic. Paola Budán UNSE 2012.
Diseño Arquitectonico
INGENIERIA DE SOFTWARE
Alexander Aristizabal Ángelo flores herrera
Las etapas de un proyecto Yussef Farran L.
Diseño de Sistemas.
DISEÑO CURRICULAR Presentado por: Cesar Augusto Sáenz María Alejandra Hernández 1.contenidos curriculares de competencia.
Proceso de desarrollo de software Pablo Gervás F. Informática, UCM, noviembre 2007.
Relación con otras asignaturas del plan de estudio
Modelo Prescriptivos de proceso
Ingeniería del Software I
Unified Modeling Language (Lenguaje de Modelamiento unificado)
1 Introducción a la Arquitectura de Sistema Maximiliano Déboli Director De Desarrollo MVP Azure Lagash
Estructurar tus ideas para hacerlas realidad
Un requerimiento es una condición o capacidad a la que el sistema (siendo construido) debe conformar [ Rational ]. Un requerimiento de software puede.
INGENIERIA DE SOFTWARE
Elementos Conceptuales de proyectos: ¿Qué es un proyecto
Ing del Software Libre1 Ingeniería del Software Libre y Modelos de Calidad Instructora: Ing. Erika Veliz Correo Electrónico:
Capas de ingeniería del Software. Rosendo Antonio Manuel Ingeniería en Sistemas Computacionales.
República Bolivariana de Venezuela Universidad Nacional Experimental Politécnica de la Fuerza Armada (UNEFA) Carrera: Ingeniería de Sistemas Cátedra: Análisis.
Las fases del ciclo de la vida de desarrollo de sistemas
Software de Comunicaciones
Modelo de procesos de software
Bachillerato Ingeniería en Informática Fundamentos de Computación.
Fundamentos de Ingeniería de Software
Arquitectura de Negocio ARQUITECTURA EMPRESARIAL (AE)
Junio, 2013.
Transcripción de la presentación:

Arquitectura de Software Ingeniería en Sistemas Computacionales Especialidad en Ingeniería de Software Arquitectura de Software Unidad 1. Introducción

Importancia del software En que áreas del quehacer humano se usa el software? El uso de software ha generado problemas? Que pasaría si dejara de funcionar el software? Deberíamos de dejar de usar el software?

1.1 Evolución del software Como era el software a: Inicios de los años 60´s Década de los años 70’s (multiusuarios) Década de los años 80´s (redes, PC’s) Década de los años 90’s (internet) 2000-2010?

Método Tradicional de Desarrollo de Software Características: Desarrollo de un sistema a la vez. (proyecto) Enfoque en tiempo de entrega. Generalmente NO se considera la evolución. Problemas: En costo y tiempo de entrega. Calidad inaceptable (funcionamiento) Costos de mantenimiento (80% del costo total) Decremento de la competitividad (mantener software en vez de desarrollar nuevo software)

Objetivos de mejoramiento Bosch describe 4 objetivos como los mas importantes para mejorar el desarrollo de software: Reducir el costo de desarrollo de cada producto Mejorar la calidad Mejorar el tiempo de terminación del producto Decrementar el costo de mantenimiento

La meta es: Reusar componentes Es ampliamente aceptado que el costo del software puede reducirse cuando se desarrolla usando componentes ya existentes. Algunos ejemplos son: Sistemas operativos Sistemas manejadores de bases de datos Bibliotecas de funciones Interfaces gráficas (componentes) Etc.

Reusar para evolucionar La funcionalidad es parte del código de la aplicación. La funcionalidad se identifica como una entidad conceptual y se modela como un subsistema. Investigadores inician el desarrollo de prototipos basados en la funcionalidad. Las compañías comerciales transforman un prototipo en un producto. El producto logra aceptación en el mercado. El producto se incorpora en la infraestructura y se asume que estará presente.

Donde ha fallado el reuso? Ha habido poco reuso de software (en un dominio especifico) de un producto a otro producto. Los elementos identificados son raramente diseñados como componentes reutilizables.

2 Consejos para Reuso El reuso de componentes debe planearse mas que usarlo por oportunidad. Debe existir un plan de reuso el cual debe ser de arriba-abajo (top-down) no de abajo-arriba (bottom-up).

Arquitectura de Software La arquitectura de un sistema de software se ocupa de la descomposición del sistema en sus componentes principales. 3 Propósitos para una representación explicita: Evaluación de los atributos de calidad Comunicación con los clientes Líneas de productos de software

Atributos de calidad La selección de una arquitectura impone restricciones sobre los atributos de calidad (valores de rendimiento máximos o mínimos, confiabilidad, etc.) Categorías de los atributos de calidad Calidad de desarrollo (mantenimiento) Calidad operacional (rendimiento/eficiencia) Los atributos de calidad tienen mayor influencia en la arquitectura de software

Comunicación con los clientes Una arquitectura propuesta debe ser presentada a los clientes durante el proceso de desarrollo. Estos deben participar en las revisiones. El desarrollo de la AS debe continuar hasta que todos los clientes estén de acuerdo.

Líneas de productos de software La arquitectura se usa para definir componentes comunes a toda la línea de producto. Algunos componentes serán desarrollados específicamente para un producto particular. Algunos de los componentes comunes podrán ser configurados para cumplir con los requerimientos específicos.

1.4 Componentes Definición del libro: “un componente de software es una unidad de composición con especificaciones explícitas de interfaces requeridas y provistas y atributos de calidad”

Niveles de reuso de componentes Reuso de componentes en versiones sucesivas de un producto de software. Reuso de componentes sobre versiones de productos y variedad de productos. Reuso de componentes sobre versiones de productos, varios productos y diferentes organizaciones (Ejemplo GUI, Web Servers).

Diferencias y similitudes

Arquitectura de Software La productividad en el desarrollo de software es menor en proyectos grandes que en proyectos pequeños.

1.3 Modelos de AS La Arquitectura de software sienta las bases para: Diseño inicial Organización de equipos y asignación de trabajo Reuso de componentes Evolución del sistema Construcción modular y pruebas Integración Mantenimiento

Que es la Arquitectura de Software? Concepto de Barry Horowitz: “La arquitectura de software se refiere a los atributos estructurales que son fundamentales de un sistema de software” Propiedades de la arquitectura de software Particionamiento (componentes) Flujo de datos Control de flujo de ejecución Relaciones de tiempo y salidas Interfaces de comunicación y protocolos Componentes de hardware

Que es la Arquitectura de Software? Philippe Kruchten (Rational Software Co.) La arquitectura de software involucra el diseño y la implementación a un ato nivel de la estructura del software. Es el resultado de ensamblar elementos arquitectónicos de buena manera para satisfacer los requerimientos de funcionalidad y rendimiento del sistema, así como otros requisitos no funcionales tales como confiabilidad, portabilidad, escalabilidad, etc.

La arquitectura de software se ocupa de: La organización del sistema de software La selección de los elementos estructurales e interfaces que componen el sistema La composición de estos elementos en subsistemas mas grandes El estilo arquitectónico guía la organización, los elementos y sus interfaces, la colaboración entre elementos y su composición.

Que NO es Arquitectura de Software? Arquitectura de software no es lo mismo que: La estructura de directorio donde residen los archivos fuente o ejecutables La plataforma de hardware usada para el sistema

Por que estudiar la Arquitectura de Software? Los requerimientos funcionales se encuentran relacionados entre si y algunas veces el cumplimiento de uno de ellos implica el no cumplir con otro. La Arquitectura de software nos permite razonar y planear para: Confiabilidad del sistema Evolución Reuso Eficiencia Mejorar el mantenimiento Etc.

Por que estudiar la Arquitectura de Software? Garlan y Shaw. El reconocer arquitecturas comunes permite que los diseñadores construyan los sistemas basados en variaciones de sistemas anteriores. Entender detalles de arquitecturas propicia que se seleccionen mejores alternativas en el diseño. Fluidez al usar notaciones para comunicar a otras personas detalles del sistema La representación de una arquitectura es esencial para el análisis y descripción de las propiedades del sistema.

Problemas por la falta de Arquitectura Rendimiento inadecuado Mantenimiento costoso Diseño inadecuado para evolucionar Reuso limitado Proyectos ineficientes (el arquitecto particiona el trabajo de tal manera que cada ingeniero debe comunicarse con todos los demás para hacer su trabajo)

Referencias Bass, Len, Paul Clements, Rick Kazman, Software Architecture in Practice, Addison-Wesley, 1998. Hofmeister, Christine, Robert Nord, Dilip Soni, Applied Software Architecture, Addison-Wesley, 1999. Kruchten, Philippe, “Architectural Blueprints – the “4 + 1” View Model of Software Architecture”, IEEE Software, vol. 12, November 1995. Shaw, Mary and David Garlan, Software Architecture: Perspectives on an Emerging Discipline, Prentice Hall, 1996. Jan Bosch, Design and use of software architecture (capítulo 1), Addison Wesley Dana Bredemeyer, Introduction to Software Architecture, http://www.bredemeyer.com