Patrones de software y refactorización de código



Documentos relacionados
Metodología Orientada a Objetos Clave Maestría en Sistemas Computacionales

Proceso Unificado de Rational PROCESO UNIFICADO DE RATIONAL (RUP) El proceso de desarrollo de software tiene cuatro roles importantes:

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO

Resumen obtenido de: Roger S. Pressman, Ingeniería de Software. Un enfoque práctico, quinta edición, Introducción al Diseño de Software

Fundamentos del diseño 3ª edición (2002)

Ingeniería del Software I

Elementos requeridos para crearlos (ejemplo: el compilador)

Figure 7-1: Phase A: Architecture Vision

Gestión de Configuración del Software

El Software. Es lo que se conoce como el ciclo de vida del software.

BPMN vs UML. Los Requerimientos y el Modelo del Negocio. Autor: Norberto Figuerola

El Proceso Unificado de Desarrollo de Software

Configuración de Software

Ingeniería de Software en SOA

Figure 9-1: Phase C: Information Systems Architectures

INGENIERÍA DEL SOFTWARE I. Univ. Cantabria Fac. de Ciencias. Especificación de Requisitos. Práctica 2

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON)

Depto de Cs e Ing. de la Computación Universidad Nacional del Sur

Ingeniería del Software. Diseño. Diseño en el PUD. Diseño de software. Patrones arquitectónicos. Diseño Orientado a Objetos en UML

<Generador de exámenes> Visión preliminar

Diseño orientado a los objetos

Capitulo III. Diseño del Sistema.

2 EL DOCUMENTO DE ESPECIFICACIONES

DISEÑO DE FUNCIONES (TRATAMIENTOS)

CAPÍTULO 2. MODELOS Y ESTÁNDARES DE CALIDAD DE SOFTWARE

Plan de Administración del Proyecto

Universidad acional Experimental Del Táchira Decanato de Docencia Departamento de Ingeniería en Informática

CAPÍTULO 4. FORMA DE EVALUACIÓN CMM. 4.1 Evolución de los métodos de valoración del SEI

Conceptos Básicos. El Instituto de administración de Proyectos, PMI, define un proyecto como:

OMG UML 2.0 Marcando un hito en el desarrollo de software Resumen Keywords Historia del Surgimiento

Patrones de Alto nivel: Patrones de Arquitectura Patrones de nivel medio: Patrones de Diseño Patrones de bajo nivel: Idioms

RBAC4WFSYS: Modelo de Acceso para Sistemas Workflow basado en RBAC

Plan de estudios ISTQB: Nivel Fundamentos

Diagrama de Clases. Diagrama de Clases

GUÍA DOCENTE. Curso DESCRIPCIÓN DE LA ASIGNATURA. Ingeniería Informática en Sistemas de Información Doble Grado: Módulo: Módulo 6

GUÍA PARA LA PRESENTACIÓN DE IDEAS DE NEGOCIO

Introducción. Metadatos

Metodología y Framework para el Desarrollo de Aplicaciones Científicas con Computación de Alto Rendimiento a través de Servicios Web

ARC 101 Architecture Overview Diagram

El modelo de ciclo de vida cascada, captura algunos principios básicos:

Tratamiento Capacitativo en la implantación o mejora de los procesos de Gestión de la Configuración y Gestión de Problemas según ITIL

1.2 SISTEMAS DE PRODUCCIÓN

Sistema para Gestión Hotelera Visión

Empresa Financiera Herramientas de SW Servicios

Tutorial de UML. Introducción: Objetivos: Audiencia: Contenidos:

BPMN Business Process Modeling Notation

GUÍA DE SERVICIOS El puesto requiere desarrollar una variedad de actividades de oficina y/o aspectos técnicos.

implantación Fig. 1. Ciclo de vida tradicional

INGENIERÍA DEL SOFTWARE I Práctica 4 Interacciones

SISTEMAS DE INFORMACIÓN I TEORÍA

7. CONCLUSIONES Y TRABAJOS FUTUROS

Hacer Realidad BPM en su Organización ADOPTAR BPM A PARTIR DE UN PROYECTO O NECESIDAD DE AUTOMATIZACIÓN

PROCEDIMIENTO ESPECÍFICO. Código G Edición 0

Introducción a los Servicios Web. Ing. José Luis Bugarin ILUMINATIC SAC jbugarin@consultorjava.com

Interoperabilidad de Fieldbus

2.4 Modelado conceptual

Modelo para el Aseguramiento de Calidad en el Desarrollo de Software Libre

Una puerta abierta al futuro

La toma de decisiones está presente dentro de la vida de la mayoría de las personas. Los

CAPÍTULO 3 VISUAL BASIC

Metodología centrada en la Experiencia del Usuario

Ingeniería del Software I Clase de Testing Funcional 2do. Cuatrimestre de 2007

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE

Orientación acerca del enfoque basado en procesos para los sistemas de gestión de la calidad

NIFBdM A-3 NECESIDADES DE LOS USUARIOS Y OBJETIVOS DE LOS ESTADOS FINANCIEROS

El nuevo SAS 70. Entendiendo los nuevos reportes de control para las organizaciones de servicio

Desarrollo de un Sistema de Gestión de Proyectos mediante el framework GWT

6 Anexos: 6.1 Definición de Rup:

Plataforma desarrollo Java Formación elearning tutorizada en castellano. Fabricante: Java Grupo: Desarrollo Subgrupo: Master Java

Gerencia de Procesos de Negocio (Business Process Management, BPM). Lic. Patricia Palacios Zuleta

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.1 UML: Introducción

INGENIERÍA DE SOFTWARE. Sesión 3: Tipos

Notación de Modelado de Procesos de Negocio

Ingeniería de Software

CONCLUISIONES Y RECOMENDACIONES

LOGISTICA D E COMPRAS

Entidad Formadora: Plan Local De Formación Convocatoria 2010

Planificación de Sistemas de Información

POLÍTICAS DE SEGURIDAD PARA EL DESARROLLO DE SISTEMAS DE CAPUFE

Unidad VI: Supervisión y Revisión del proyecto

Planificación de Sistemas de Información

Calidad Escuela de Ingeniería de Sistemas y Computación Desarrol o de Software II Agosto Diciembre 2007

Actividades para mejoras. Actividades donde se evalúa constantemente todo el proceso del proyecto para evitar errores y eficientar los procesos.

Procesos Críticos en el Desarrollo de Software

Ingeniería de Software

La Necesidad de Modelar. Diseño de Software Avanzado Departamento de Informática

Seis Sigma. Nueva filosofía Administrativa.

Asignatura: Diseño de Máquinas [ ]

Proceso de desarrollo del software modelo en cascada

PERFIL DEL PUESTO POR COMPETENCIAS Sepa cómo construirlo y evitar bajos desempeños posteriores

Oferta tecnológica: Herramienta software y método para modelar aplicaciones web independientes de dispositivo

UNIVERSIDAD DE SALAMANCA

Tópicos Avanzados de Análisis y Diseño INGENIERIA DE SOFTWARE ING. MA. MARGARITA LABASTIDA ROLDÁN

Gestión de la Configuración

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

IWG-101: Introducción a la Ingeniería. Departamento de Informática, UTFSM 1

Transcripción:

Patrones de software y refactorización de código

Introducción y antecedentes de los patrones de software Los patrones permiten construir sobre la experiencia colectiva de ingenieros de software habilidosos. Los expertos que trabajan en un problema específico, rara vez atacan dicho problema inventando una solución que sea novedosa y completamente distinta a las soluciones existentes. Lo usual es que recuerden algún problema similar que ya resolvieron y que reutilicen lo esencial de esa solución para el nuevo problema. El método problema-solución es utilizado en varias áreas como la arquitectura, economía e ingeniería de software. Es una forma natural para atacar un problema.

Introducción y antecedentes de los patrones de software 2 El primer intento por documentar soluciones a problemas comunes lo realizó el arquitecto Christopher Alexander en 1977, quien desarrolló una teoría para la arquitectura, construcción y planeación basada en la construcción y uso de patrones. Alexander dijo: Cada patrón describe un problema que ocurre una y otra vez en nuestro ambiente y después describe la parte más importante de la solución a ese problema, de tal manera que se puede utilizar esta solución un millón de veces, sin hacerlo de la misma manera dos veces. Aún cuando Alexander estaba hablando de patrones para arquitectura, lo que dijo también puede aplicarse a patrones de software.

Introducción y antecedentes de los patrones de software 3 Nuestras soluciones son expresadas en términos de objetos e interfaces en vez de paredes y puertas, pero en el corazón de ambos tipos de patrones se encuentra una solución a un problema dentro de un contexto particular. En 1994 aparece el libro Design Patterns - Elements of Reusable Object-Oriented Software de Erich Gamma et al., el cual es considerado como la referencia obligada al tratar el tema de patrones de software. Aun cuando la idea de patrones de diseño que maneja Gamma en su libro no era algo novedoso, Gamma presenta el primer catálogo de patrones de diseño para los sistemas orientados a objetos.

Definición de patrón de software Un patrón de software describe un problema de diseño particular recurrente que aparece en contextos de diseño específicos y presenta un esquema bien probado para su solución. El esquema de solución se especifica describiendo sus componentes esenciales, sus responsabilidades y relaciones, así como la manera en que estos colaboran.

Definición de patrón de software 2 Los aspectos más importantes que se pueden destacar de los patrones de software son: Un patrón refiere un problema de diseño recurrente que aparece en una situación de diseño particular y presenta una solución para el problema. Los patrones documentan la experiencia de diseño existente y que ha sido bien probada. Los patrones identifican y especifican abstracciones que están por encima del nivel de las clases y las instancias o los componentes.

Definición de patrón de software 3 Los patrones proveen un vocabulario común y entendimiento para los principios de diseño. Los patrones son un medio para documentar las arquitecturas de software. Los patrones apoyan la construcción de software con propiedades definidas.

Descripción de un patrón de software Existen varios formatos para la documentación de un patrón de software, pero en esencia todos los autores hacen referencia a los mismos elementos. Según Buschmann un patrón se compone de tres partes: el contexto, el problema y la solución.

Descripción de un patrón de software 2 El contexto describe situaciones en las cuales ocurre el problema. El contexto de un patrón puede ser bastante general, como desarrollar software que tenga una interfaz de usuario o demasiado específico, como implementar el mecanismo de manejo de eventos para las interfaces de usuario colaborativas. El problema describe lo que ocurre repetidamente en el contexto dado.

Descripción de un patrón de software 3 Se inicia con una especificación general que capture la esencia y se complementa con un conjunto de aspectos que deben ser considerados al resolver el problema, tales como: Requisitos que la solución debe cumplir Restricciones que se deben considerar Propiedades deseadas que la solución debe tener La solución muestra como resolver el problema recurrente, o aun mejor, como balancear los aspectos importantes asociados a éste.

Descripción de un patrón de software 4 La solución debe incluir dos partes: Estructura Comportamiento en ejecución La estructura se refiere a la configuración espacial de los elementos, describe los aspectos estáticos de la solución. La estructura se describe usualmente a través de distintos tipos de diagramas que pueden ser dibujados apegándose a alguna notación específica, por ejemplo UML.

Descripción de un patrón de software 5 El comportamiento en ejecución se refiere a los aspectos dinámicos de la solución: Como colaboran los elementos involucrados? Como se organiza el trabajo entre ellos? Como se comunican?

Descripción de un patrón de software 6 Patrón ------- Contexto ------- Situación de diseño que da origen al problema ------- Problema ------- Conjunto de aspectos recurrentes en el contexto ------- Solución ------- Configuración para balancear los distintos aspectos ------- Estructura incluyendo componentes y relaciones ------- Comportamiento en ejecución

Categorías de patrones Los patrones cubren varios rangos en escala y abstracción. Algunos patrones ayudan a estructurar un sistema de software en subsistemas. Otros patrones apoyan el refinamiento de subsistemas y componentes o de las relaciones entre estos. También existen patrones que apoyan en la implementación de aspectos de diseño particulares en un lenguaje de programación específico. Los patrones se pueden clasificar en tres categorías: patrones arquitectónicos, patrones de diseño e idiomas.

Categorías de patrones 2

Categorías de patrones 3 Patrones arquitectónicos Un patrón arquitectónico expresa un esquema de organización estructural para los sistemas de software. Estos patrones proveen un conjunto de subsistemas predefinidos, especifican sus responsabilidades e incluyen reglas y guías para organizar las relaciones entre ellos.

Categorías de patrones 4 Patrones de diseño Un patrón de diseño provee un esquema para refinar los subsistemas o componentes de un sistema de software o las relaciones entre ellos. Estos patrones describen una estructura recursiva de componentes en comunicación que solucionan un problema de diseño general dentro de un contexto particular.

Categorías de patrones 5 Idiomas Un idioma es un patrón de bajo nivel, específico a un lenguaje de programación. Un idioma describe como implementar aspectos particulares de componentes o las relaciones entre estos utilizando las características del lenguaje dado.

Sistema de patrones Un patrón soluciona un problema particular, pero su aplicación trae consigo otros problemas. Algunos de estos pueden ser solucionados por otros patrones. Los componentes simples o relaciones dentro de un patrón particular pueden ser descritos por patrones más pequeños, todos ellos integrados por el patrón en el cual están contenidos. Así es como nace la idea de sistema de patrones. Un sistema de patrones es una colección de patrones para arquitectura de software, junto con guías para su implementación, combinación y uso práctico en el desarrollo de software.

Sistema de patrones 2 Sistema de patrones Patrón arquitectónico define la organización Patrón de diseño documenta Marco de clases

Sistema de patrones 3 Un sistema de patrones es una forma muy poderosa para expresar y construir arquitecturas de software. Un sistema de patrones reúne varios patrones individuales. Describe como es que están conectados sus patrones constituyentes con otros patrones dentro del mismo sistema, como pueden ser implementados los patrones y como es apoyado el desarrollo de software por medio de estos patrones. El objetivo principal de un sistema de patrones para arquitecturas es el apoyar el desarrollo de sistemas de software de alta calidad.

Sistema de patrones 4 Por alta calidad, se quiere decir, sistemas que cumplan tanto sus requerimientos funcionales como no funcionales. Para llevar a cabo este objetivo, un sistema de patrones debe satisfacer los siguientes requisitos: Contener una base con suficientes patrones. Describir todos sus patrones de manera uniforme. Explicar las distintas relaciones entre los patrones. Organizar los patrones que lo constituyen. Apoyar la construcción de sistemas de software. Apoyar su propia evolución.