Вы находитесь на странице: 1из 173

Introduccin al modelado

Metodologas, UML y patrones de diseo

Ricardo Borillo Domnech borillo@si.uji.es

ndice

Conceptos Lenguajes de modelado: UML Metologas:


Metologas clsicas: RUP, Mtrica, MSF Metologas giles: eXtreme Programming

Patrones de diseo de sofware Arquitecturas dirigidas por modelos (MDA) Herramientas de modelado

Introduccin a las metodologas

Componentes bsicos

RUP. Tcnicas y su aplicacin a la gestin de proyectos software orientados a objeto. XP. Gestin gil de proyectos y grupos de desarrollo. UML. Diagramas, elementos notacionales y semntica de los modelos generados.

Modelado con UML

Qu es UML?

El UML modela sistema mediante el uso de objetos que forman parte de l as como, las relaciones estticas o dinmicas que existen entre ellos. UML puede ser utilizado por cualquier metodologa de anlisis y diseo orientada por objetos para expresar los diseos.

Qu es UML?

UML es un Lenguaje de Modelado Unificado basado en una notacin grfica la cual permite: especificar, construir, visualizar y documentar los objetos de un sistema programado. Este lenguaje es el resultado de la unificacin de los mtodos de modelado orientados a objetos de Booch, Rumbaugh (OMT: Object Modeling Technique) y Jacobson (OOSE: Object-Oriented Sotfware Engineering).

UML

UML es un lenguaje de modelado que sirve para visualizar, especificar , construir y documentar un sistema software. Lenguaje de modelado:
Lenguaje cuyo vocabulario y reglas se centran en la representacin conceptual y fsica de un sistema (Booch, Jacobson y Rumbaugh).

UML para visualizar


Smbolos con semntica bien definida. UML transciende al lenguaje de programacin. Modelo explcito, que facilita la comunicacin.

UML para especificar

Especificar es equivalente a construir modelos que cumplan las condiciones de no ambigedad y completitud. UML cubre la especificacin del anlisis, diseo e implementacin de un sistema software.

UML para construir

Es posible hacer Ingeniera Directa corresponder con los Modelo CDIGO lenguajes de UML programacin Ingeniera Inversa (Java, C#, B.Datos, etc.).

UML para documentar

UML cubre la documentacin de un sistema:


Requisitos Arquitectura Diseo Cdigo fuente Planificacin Pruebas Prototipos Versiones

UML aglutina enfoques OO


Rumbaugh
Booch Odell Shlaer-Mellor
Object life cycles

Jacobson

Meyer
Pre- and Post-conditions

UML
State Charts

Harel

Gamma et. al.


Frameworks, patterns, notes

Embly
Singleton classes

Wirfs-Brock
Fusion
Responsabilities Operation descriptions, message numbering

Historia de UML
2001 2000 UML 2.0 UML 1.4 UML 1.3
UML aprobado por el OMG Revisiones menores

1999
1998 Nov 97

UML 1.2

Actualizaciones de UML

UML 1.3 es una versin madura de UML a la que se le han aadido una serie de pequeas revisiones, las cuales corrigen o mejoran la especificacin base (UML 1.2). UML 1.4 incorpora ciertas modificaciones sobre el estndar en base a los comentarios recogidos de los usuarios finales y de los fabricantes de software compatible con UML. UML 2.0 promete la puesta a punto del estndar para poder integrarse con el desarrollo basado en componentes que demanda el mercado.

UML 2.0

Arquitectura: refinamiento del ncleo del estndar para que est en consonancia con el resto de estndares del mercado. Personalizacin: mejora de los mecanismos de extensibilidad y personalizacin. Componentes: mejor soporte para el desarrollo basado en componentes (CORBA, EJB, COM+). Mecanismos generales: nuevos mecanimos para el control de las versiones dentro del modelo, as como el intercambio de los metadatos del mismo con XMI (XML Metadad Interchange).

Modelos y Diagramas
Un proceso de desarrollo de software debe ofrecer un conjunto de modelos que permitan expresar el producto desde cada una de las perspectivas de inters

El cdigo fuente del sistema es el modelo ms detallado del sistema (y adems es ejecutable). Sin embargo, se requieren otros modelos ...
Cada modelo es completo desde su punto de vista del sistema, sin embargo, existen relaciones de trazabilidad entre los diferentes modelos

Modelos y Diagramas

Modelo: captura una vista de un sistema del mundo real. Es una abstraccin de dicho sistema, considerando un cierto propsito.

Diagrama: representacin grfica de una coleccin de elementos


de modelado, a menudo dibujada como un grafo con vrtices conectados por arcos.

Organizacin de Modelos

Vista de Diseo

Vista de los Casos de Uso


Vista de Procesos

Vista de Implementacin

Vista de Despliegue

Diagramas de UML
Use Case Use Case Diagramas de Diagrams Diagrams Casos de Uso State State Diagramas de Diagrams Diagrams Clases

Use Case Use Case Diagramas de Diagrams Diagrams Secuencia Scenario Scenario Diagramas de Diagrams Diagrams Colaboracin

State State Diagramas de Diagrams Diagrams Objetos State State Diagramas de Diagrams Diagrams Componentes

Modelo

Scenario Scenario Diagramas de Diagrams Diagrams Estados

Diagramas de Actividad

Component Component Diagrams Diagramas Diagrams de

Distribucin

Mecanismos comunes en UML


Especificaciones. Es ms que un lenguaje grfico (semntica detrs de la notacin). Adornos. Detalles sobre un clase, nivel de acceso de sus mtodos, notas. Divisiones Comunes: Clase/Objecto o Interfaz/Implementacin. Extensibilidad. Estereotipos, valores etiquetados o restricciones.

Mecanismos comunes en UML


{orderById}

utility Producto -Paginas : int +Insert() +Update() +Delete() #GetNumPaginas() : int IDataManaged

utility p1 : Producto Paginas : int

utility p2 : Producto Paginas : int

Definicin de un producto gestionado desde base de datos

Casos de Uso

Casos de Usos

Un diagrama de Casos de Uso muestra la distintas operaciones que se esperan de una aplicacin o sistema y cmo se relaciona con su entorno (usuario u otras aplicaciones). Es una herramienta esencial para la captura de requerimientos y para la planificacin y control de un proyecto interactivo.

Casos de Usos

Los casos de Uso Se representa en el diagrama por una elipse que denota un requerimiento solucionando por el sistema. Cada caso de uso de uso es una operacin completa desarrollada por los actores y por el sistema en un dilogo. El conjunto de casos de uso representa la totalidad de operaciones desarrolladas por el sistema.

Casos de Usos

Casos de Usos

Actor: Es un usuario del sistema, que necesita o usa alguno de los casos de uso. Un usuario puede jugar ms de un rol. Un solo actor puede actuar en muchos casos de uso; recprocamente, un caso de uso puede tener varios actores. Los actores no necesitan ser humanos pueden ser sistemas externos que necesitan alguna informacin del sistema actual.

Casos de Usos

Tambin se puede encontrar tres tipos de relaciones, como son:

Comunica (comunicates) Entre un actor y un caso de uso, denota la participacin del actor en el caso de uso determinado.

Casos de Usos

Usa (uses): Relacin entre dos casos de uso, denota la inclusin del comportamiento de un escenario en otro. Se utiliza cuando se repite un caso de uso en dos o ms casos de uso separados. Frecuentemente no hay actor asociado con el caso de uso comn.

Casos de Usos

Extiende (extends): Relacin entre dos casos, denota cuando un caso de uso es una especializacin de otro. Se usa cuando se describe una variacin sobre el normal comportamiento.

Casos de Usos

Tcnicas comunes de modelado:


Modelado del contexto del sistema (utilidad similar a los DFD). Modelado de los requisitos de un sistema. Modelado del proceso de test y estrs del sistema.

Diagrama de Clases

Conceptos bsicos orientacin a objetos


Clase Objeto Herencia Interfaz Polimorfismo de clases Clases y atributos estticos Clases y atributos finales Clases y mtodos abstractos

Diagrama de clases

Un diagrama de clases o estructura esttica muestra el conjunto de clases y objeto importantes que forman parte de un sistema, junto con las relaciones existentes entre clases y objetos. Muestra de una manera esttica la estructura de informacin del sistema y la visibilidad que tiene cada una de las clases, dada por sus relaciones con los dems en el modelo.

Diagrama de clases

Usos comunes del diagrama:


Modelado del vocabulario del sistema. Modelado de colaboraciones simples. Modelado de un esquema lgico de base de datos. Modelado de un conjunto de clases de test.

Diagrama de clases

Clase: representa un conjunto de entidades que tienen en comn propiedades, operaciones, relaciones y semntica. Una clase es un constructor que define la estructura y comportamiento de una coleccin de objeto denominados instancia de la clase. En UML la clase est representada por un rectngulo con tres divisiones internas, son los elementos fundamentales del diagrama.

Diagrama de clases

Atributo: Representa una propiedad de una entidad. Cada atributo de un objeto tiene un valor que pertenece a un dominio de valores determinado. Las sintaxis de una atributo es: Visibilidad <nombre>: tipo = valor { propiedades} Donde visibilidad es uno de los siguientes: + pblico. # protegido. - privado.

Diagrama de clases

Operacin: El conjunto de operaciones que describen el comportamiento de los objetos de una clase. La sintaxis de una operacin en UML es: Visibilidad nombre (lista de parmetros): tipo que retorna { propiedades}

Diagrama de clases

Nombre de la clase Atributos

Mtodos

Diagrama de clases

Responsabilidades: Contrato u obligacin de una clase, asignada en el momento del diseo. Clase Producto: Registrar el cdigo de la publicacin. Mantener estructura del producto plantilla.

Diagrama de clases

Tcnicas de modelado: Modelado del vocabulario de un sistema a partir de las descripciones funcionales. Modelado de la distribucin de responsabilidades en un sistema. Modelado de cosas que no son software (hardware, personas, etc). Modelado de tipos primitivos.

Diagrama de clases

Objeto: es una instancia de una clase. Se caracteriza por tener una identidad nica, un estado definido por un conjunto de valores de atributos y un comportamiento representado por sus operaciones y mtodos. Asociacin (rol, multiplicidad, calificador): representan las relaciones entre instancias de clase. Una asociacin es una lnea que une dos o ms clases.

Diagrama de clases

Nombre: Identifica la asociacin entre los objetos, caracterizndola. Rol: Identificado como un nombre a los finales de la lnea, describe la semntica de la relacin en el sentido indicado. Cada asociacin tiene dos roles; cada rol es una direccin en la asociacin. El rol puede estar representado en el nombre de la clase.

Diagrama de clases

Multiplicidad: Describe la cardinalidad de la relacin, es decir, cuanto objetos de esa clase pueden participar en la relacin dada. Tipos:

Diagrama de clases

Dependencia: Es una relacin donde existen entidades independientes y otras dependientes, lo que implica que cambiar el elemento independiente puede requerir cambios en los dependientes. Se representa con una lnea punteada direccional, indicando el sentido de la dependencia.

Diagrama de clases

Diagrama de clases

Los tipos de asociaciones entre clases presentes en un diagrama esttico son:


Asociacin binaria. Asociacin n-aria. Composicin. Generalizacin. Refinamiento.

Diagrama de clases

Asociacin Binaria: Representa una relacin sencilla entre dos clases, no muy fuerte (es decir, no se exige dependencia existencial ni encapsulamiento). Se indica como una lnea slida que une dos clases. Asociacin n-aria: Es una asociacin entre tres o ms clases. Se representa como un diamante del cual salen lneas de asociacin a las clases.

Diagrama de clases

Diagrama de clases

Composicin: Es una asociacin fuerte que implica:

Dependencia existencial. El elemento dependiente desaparece al destruirse el que lo contiene y, si es de cardinalidad 1, es creado al mismo tiempo. Hay una pertenencia fuerte. Se puede decir que el objeto contenido es parte constitutiva y vital del que lo contiene.

Diagrama de clases

Los objetivos contenidos no son compartidos, esto es, no hacen parte del estado de otro objeto.

Se denota dibujando un rombo del lado de la clase que contiene a la otra en la relacin.

Diagrama de clases

Diagrama de clases

Agregacin: Relaciona una clase ya ensamblada con una clase componente. Es tambin una relacin de composicin menos fuerte (no se exige dependencia existencial) y se denota por un rombo sin rellenar en un o de los extremos.

Diagrama de clases

Diagrama de clases

Generalizacin: es un proceso de abstraccin en el cual un conjunto de clases existentes, que tienen atributos y mtodos comunes, es referido por una clase genrica a un nivel mayor de abstraccin. La relacin de generalizacin denota una relacin de herencia entre clases. Se representa dibujando un tringulo sin rellenar en el lado de la superclase. La subclase hereda todos los atributos y mensajes descritos en la superclase.

Diagrama de clases

Diagrama de clases

Refinamiento: Es una relacin que representa la especificacin completa de algo que ya ha sido especificado con cierto nivel de detalle. Por ejemplo, una clase del diseo es un refinamiento de una clase de anlisis.

Diagrama de clases

Diagrama de clases

Tcnicas de modelado: Modelado de dependencias simples. Modelado de herencia simple. Modelado de relaciones estructurales (composiciones y agregaciones). Modelado de comentarios.

Diagrama de clases

Diagrama de Interaccin

Diagrama de interaccin

Estos son modelos que describen como los grupos de objetos que colaboran en algunos ambientes. Por lo general, un diagrama de interaccin captura el comportamiento de un nico caso de uso. Hay dos tipos de diagramas de interaccin: diagramas de secuencia y diagramas de colaboracin.

Diagrama de interaccin

Un diagrama de secuencia muestra la interaccin de un conjunto de objetos de una aplicacin a travs del tiempo. Esta descripcin es importante porque puede dar detalle a los casos de uso, aclarndolos al nivel de mensajes de los objetos existentes, como tambin muestra el uso de los mensajes de las clases diseadas en el contexto de una operacin.

Diagrama de interaccin

Elementos bsicos interaccin:


del

diagrama

de

Objetos o actores para cada entidad. Enlaces entre los objetos. Procedimientos a invocar entre los objetos. Mensajes entre los objetos.

Diagrama de interaccin

Un objeto se representa como una lnea vertical punteada (lnea de vida), con un rectngulo de encabezado y con rectngulo a travs de la lnea principal que denotan la activacin, es decir, el perodo de tiempo en el cual el objeto se encuentra desarrollando alguna operacin. El rectngulo de encabezado contiene el nombre del objeto y el de su clase, en un formato nombreObjeto: nombreClase. El envo de mensajes entre objetos se denotan mediante una lnea slida dirigida, desde el objeto que emite el mensaje hacia el objeto que lo ejecuta.

Diagrama de interaccin

Diagrama de interaccin

Diagramas de Colaboracin:

Es una forma de representar interaccin entre los objetos, es decir, las relaciones entre ellos y la secuencia de los mensajes de las iteraciones que estn indicadas por un nmero A diferencia de los diagramas de secuencia, pueden mostrar el contexto de la operacin (cules objetos son atributos, cules temporales, etc) y ciclos en la ejecucin. Muestra como varios objetos colaboran en un solo caso de uso.

Diagrama de interaccin

Diagrama de interaccin

Tcnicas de modelado: Modelado dinmico del sistema. Implementacin de un caso de uso en concreto para cada diagrama. Modelado del flujo de control por ordenacin temporal (secuencia). Modelado del flujo de control por organizacin (colaboracin).

Diagrama de Estados

Diagrama de estados

Diagrama de Estados: Muestra el conjunto de estado por los cuales pasa un objeto durante su vida en una aplicacin junto con los cambios que permiten pasar de un estado a otro. Esta representado principalmente por los siguientes elementos:

Estado. Elemento. Transicin.

Diagrama de estados

Estado: Identifica un perodo de tiempo del objeto


(no instantneo) en el cual el objeto esta esperando alguna operacin, tiene cierto estado caracterstico o puede recibir cierto tipo de estmulos.

Diagrama de estados

Partes que componen un estado:


Nombre Acciones de entrada y de salida. Transiciones internas. Subestados. Eventos diferidos.

Diagrama de estados

Eventos: Es una ocurrencia que puede causar la transicin de un estado a otro de un objeto. Esta, puede ser una:

Condicin que toma el de verdadero o falso. Recepcin de una seal de otro objeto en el modelo. Recepcin de un mensaje. Paso de cierto perodo de tiempo, despus de entrar al estado o de cierta hora y fecha particular.

Diagrama de estados

Transicin: Es una relacin entre estados de un


fuente a un destino. Partes que componen una transicin:

Estado de origen. Evento de disparo. Condicin de guarda. Accin. Estado de destino.

Diagrama de estados

Otros elementos:

Subestados. Secuenciales o no, resultan en una nueva mquina de estados. Estados de historia. Estados de historia. Permiten a un conjunto de estados o subestados de un objeto, recordar el estado que estaba activo en su ltima ejecucin. Si no existe historia, se comenzara por el estado inicial. Subestados concurrentes.

Diagrama de estados

Diagrama de estados

Tcnicas de modelado: Modelado de la vida de un objeto. Este tipo de diagramas se asocian directamente a una clase.

Diagrama de Actividades

Diagrama de Actividades

Un diagrama de actividades es un caso especial de un diagrama de estados en el cual casi todos los estados son estados de accin (identifican que accin se ejecuta al esta en l ) y casi todas las transiciones son enviadas al terminar la accin ejecutada en el estado anterior. Generalmente modelan los pasos de un algoritmo y puede dar detalle a un caso de uso, un objeto o un mensaje en un objeto.

Diagrama de Actividades

Sirven para representar transiciones internas, sin hacer mucho nfasis en transiciones o eventos externos. Los elementos que conforman el diagrama son:

Accin Transicin. Objetos

Diagrama de Actividades

Estado de Accin: representa un estado con accin interna, con lo menos una transicin que indica la culminacin de la accin (por medio de un evento implcito).

Permite modular un paso dentro del algoritmo. Se representan por un rectngulo con bordes redondeados.

Diagrama de Actividades

Estado de Actividad: Estado ms general que permite su descomposicin en otro diagrama de actividades interno, de nivel ms bajo.

Su representacin, en cuanto a la notacin, es la misma que el de Accin.

Diagrama de Actividades

Casos especiales:

Estado inicial. Representa el punto de entrada del diagrama de actividades. Estado final. Su existencia depende de si el diagrama es cclico. tem de decisin. Representado con un rombo, permite tomar bifurcaciones condicionales.

Diagrama de Actividades

Casos especiales:

Carriles o Swim Lanes. Permiten acotar el rea a las cuales las actividades estn asociadas (departamentos, mdulos del sistema, etc). Flujos con objetos. Hacer explcita la relacin con una entidad en concreto.

Diagrama de Actividades

Transicin: Es la relacin entre dos estados y se encuentran unidos por flechas; indicando que un objeto que est en el primer estado realizar una accin especificada y entrar en el segundo estado cuando un evento implcito ocurra y unas condiciones especificas sean satisfechas.

Diagrama de Actividades

Tipos de transiciones:

Bifurcaciones condicionales. Permiten tomar distintos caminos dentro del diagrama en funcin de una condicin o guarda. Divisin y unin. Permiten representar el paralelismo en la ejecucin de actividades.

Diagrama de Actividades

Diagrama de interaccin

Tcnicas de modelado:

Modelado de un flujo de trabajo o Workflow. Uso intensivo de estados de actividad, swim lanes y bifurcaciones condicionales. Modelado de una operacin concreta que resulta muy complicada. Uso intensivo de transiciones (simples o paralelas) y de estados de accin.

Diagrama de Componentes

Diagrama de componentes
Los diagramas de componentes describen los elementos fsicos reemplazables del sistema y sus relaciones Muestran las opciones de realizacin incluyendo cdigo fuente, binario y ejecutable

Diagrama de componentes
Los componentes representan todos los tipos de elementos software que entran en la fabricacin de aplicaciones informticas. Pueden ser simples archivos, libreras, bibliotecas cargadas dinmicamente, etc.
Las relaciones de dependencia se utilizan en los diagramas de componentes para indicar que un componente utiliza los servicios ofrecidos por otro componente

Diagrama de componentes

Diagrama de componentes

Tcnicas de modelado:

Modelado de ejecutables y bibliotecas. Modelado de tablas, archivos y documentos. Modelado y diseo de un API. Modelado del cdigo fuente. Planificacin de versiones ejecutables para su implementacin con Nant.

Diagrama de Despliegue

Diagrama de despliegue
Los diagramas de despliegue muestran la disposicin fsica de los distintos nodos que componen un sistema y el reparto de los componentes sobre dichos nodos

Diagrama de despliegue
La vista de despliegue representa la disposicin de las instancias de componentes de ejecucin en instancias de nodos conectados por enlaces de comunicacin. Un nodo es un recurso de ejecucin tal como Dispositivos Procesadores Memoria Los nodos se interconectan mediante soportes bidireccionales que pueden a su vez estereotiparse.

Diagrama de despliegue

Los nodos se interconectan mediante soportes bidireccionales que pueden a su vez estereotiparse. Esta vista permite determinar las consecuencias de la distribucin y la asignacin de recursos.

Diagrama de despliegue

Diagrama de despliegue

Diagrama de despliegue

Tcnicas de modelado:

Modelado de procesadores y dispositivos. Modelado de distribucin de componentes.

RUP: El Proceso Unificado de Rational

Proceso Unificado de Rational

Orgenes

Modelo original Objectory definido por Ivan Jacobson (1987) Rational Software compra la empresa de Objectory (1995) Surge la primera versin de UML (1997) Se publica la primera versin del Proceso Unificado de Rational - RUP (junio 1998)

Casos de uso

Dirigido por casos de uso

Se centra en la funcionalidad que el sistema debe poseer para satisfacer las necesidades de un usuario (persona, sistema externo, dispositivo) que interactua con l Casos de uso como el hilo conductor que orienta las actividades de desarrollo

Casos de Uso
<<defineNecesidades>>
<<realiza>> Anlisis Recopilar, Clarificar y Validar los requerimientos Diseo <<verifica>> Pruebas Verificar que se satisfacen los casos de uso

Realizar los casos de uso

Arquitectura

Centrado en la arquitectura

Concepto similar a la arquitectura de un edificio


Varios planos con diferentes aspectos del edificio Tener una imagen completa del edificio antes que comience la construccin Diferentes vistas del sistema: estructural, funcional, dinmico, etc. Plataforma en la que va a operar Determina la forma del sistema

Arquitectura en software

Arquitectura: determina la forma del sistema Casos de uso: determinan la funcin del sistema

Modelo que implementa

Iterativo e incremental

Descomposicin de un proyecto grande en mini-proyectos Cada mini-proyecto es una iteracin Las iteraciones deben estar controladas Cada iteracin trata un conjunto de casos de uso Deteccin temprana de riesgos Administracin adecuada del cambio Mayor grado de reutilizacin Mayor experiencia para el grupo de desarrollo

Ventajas del enfoque iterativo


Estructura
Dinmica

Ciclo: cada ciclo una nueva versin del producto Fase: Etapas de un ciclo que finalizan en un HITO Iteracin: Proceso de ingeniera sobre una funcionalidad limitada del sistema
Artefactos Actividades Roles

Esttica - Flujos de trabajo


Estructura

Roles Actividades Artefactos Flujo de Trabajo

QUIN? CMO? QU? CUNDO?

realiza responsable de

diseador
diagrama de secuencia

diseo de caso de uso

Roles

Definicin del comportamiento y responsabilidades de los participantes Propietario de una serie de artefactos Recurso Patricia Juan Mnica Pedro Rol
Diseador Analista Dominio Diseador Funcional

Actividad
Diseo de Objetos Definicin de CU Diseo de CU

Artefacto
DC DCU DS

Actividades

Unidad de trabajo que puede ejecutar un individuo en un rol especfico Tiene un propsito claro y se expresa en trminos de actualizar artefactos La granularidad de la actividad es generalmente de horas o pocos das Ejemplos de actividades

Planear una iteracin (administrador del proyecto) Encontrar caso de uso y actores (analista del dominio) Revisin del diseo (probador)

Artefactos

Pieza de informacin producida, modificada y utilizada en un proceso Productos tangibles del proyecto Utilizados por los roles como entrada para la realizacin de sus actividades Resultado de las actividades realizadas por los roles Metamodelo: Clase rol tiene como mtodos las actividades y como parmetros los artefactos

Flujos de trabajo

Forma de describir significativamente la secuenciencias de actividades que producen resultados y las interacciones entre cargos En trminos de UML se puede utilizar: diagrama de actividades, de secuencia, de colaboracin En RUP hay nueve tipos de flujos de trabajo

De ingeniera

Negocio, Requerimiento, Anlisis, Diseo, Pruebas, Liberacin


Administracin del proyecto, Administracin del cambio, Ambiente

De soporte

Dimensin dinmica
fase

ciclo

Concepcin Elaboracin

Construccin

Transicin

hito 1
Iter. 1

hito 2
Iter. 2

hito 3
Iter. 3 Iter. 4 Iter. 5

hito 4
Iter. 6

Hito: punto en el tiempo en donde se evaluan objetivos logrados y se pueden tomar decisiones crticas

Desarrollo iterativo
Construccin Ciclo de desarrollo 1 Ciclo de desarrollo 2 Ciclo de desarrollo n

Perfeccionar el plan Anlisis Diseo

Sincronizar Artefactos Construccin Pruebas

Fase de concepcin

Objetivo: definir la razn de ser y el alcance del proyecto. Estudio de oportunidad.

Visin = QU + PARA QU + CUNTO Especificacin de los criterios de xito del proyecto Definicin de los requerimientos Estimacin de los recursos necesarios Cronograma inicial de fases Documento de definicin del proyecto

Actividades

Artefactos

Fase de elaboracin

Objetivo: establecer un plan de proyecto y una arquitectura correcta del sistema Actividades

Anlisis del dominio del problema Definicin de la arquitectura bsica Anlisis de riesgos Planificacin del proyecto Modelo del dominio Modelo de procesos Modelo funcional de alto nivel Arquitectura bsica

Artefactos

Fase de construccin

Objetivo: desarrollar el sistema a lo largo de una serie de iteraciones Actividades


Anlisis Diseo Codificacin Pruebas (individuales, de integracin)

XP: eXtreme Programming

eXtreme Programming

Es una metodologa gil


Diseada para entornos dinmicos Pensada para equipos pequeos (hasta 10 programadores) Orientada fuertemente hacia la codificacin nfasis en la comunicacin informal, verbal

Valores que fomenta XP


Comunicacin Simplicidad Retroalimentacin Coraje

Roles

Programador (Programmer)

Jefe de Proyecto

(Manager) Responsable de decisiones Organiza y gua las tcnicas reuniones Responsable de construir el Asegura condiciones sistema adecuadas para el proyecto Sin distincin entre analistas, diseadores o codificadores Cliente (Customer) En XP, los programadores Es parte del equipo disean, programan y realizan las Determina qu construir y pruebas cundo Establece las pruebas funcionales

Roles

Encargado de Pruebas (Tester)


Entrenador

(Coach)

Ayuda al cliente con las pruebas funcionales Se asegura de que las pruebas funcionales se superan

Responsable del proceso Tiende a estar en un segundo plano a medida que el equipo madura

Rastreador (Tracker)

Metric Man Observa sin molestar Conserva datos histricos

Captura de requisitos

Historias del Usuario (User-Stories) Establecen los requisitos del cliente Trozos de funcionalidad que aportan valor Se les asignan tareas de programacin con un n de horas de desarrollo Las establece el cliente Son la base para las pruebas funcionales

Planificacin

Planificacin por entregas (releases) Se priorizan aquellas user-stories que el cliente selecciona porque son ms importantes para el negocio Entregas:

Son lo ms pequeas posibles Se dividen en iteraciones (iteracin = 2 o 3 semanas) Estn compuestas por historias

A cada programador se le asigna una tarea de la userstory

Programacin

La programacin de tareas se realiza por parejas


La pareja disea, prueba, implementa e integra el cdigo de la tarea Cdigo dirigido por las pruebas Cdigo modular, intentando refactorizar siempre que se pueda

Modelo de un proyecto

Prcticas
El juego de la planificacin Entregas pequeas Metfora Diseo simple Pruebas Refactoring Programacin en parejas Propiedad colectiva Integracin contnua Semana de 40 horas

Cliente in situ
Estndares de programacin

El juego de la planificacin

Decisiones de negocio (cliente):

Alcance Cundo debe estar listo el producto para que sea valioso en produccin? Prioridad Prioriza la incorporacin de las user-stories Composicin de entregas Qu se necesita para que el negocio sea mejor antes de tener el sw? Fechas de entrega Fechas cuando el software funcionando causara una gran diferencia

El juego de la planificacin

Decisiones tcnicas (programadores y otros):


Estimaciones Cunto tiempo tardar en implementarse una user-story? Consecuencias Tener en cuenta las consecuencias tcnicas de determinadas decisiones de negocio Proceso Organizacin del proceso y el equipo Planificacin detallada Dentro de una entrega, qu user-stories se realizan primero. Intentar trasladar los segmentos de desarrollo ms arriesgados al principio, intentando respetar las prioridades del negocio

Entregas pequeas

Cada entrega es lo ms corta posible:


Contenga requisitos ms valiosos del sistema (bsicos) Reducen el riesgo mayor retroalimentacin desde el cliente, y ms frecuente

Minimizar el n de user-stories que componen una entrega No realizar user-stories a medias

Diseo simple

Se disea la cosa ms simple que pueda funcionar Uso de tarjetas CRC Diseo de software correcto, es aquel que:

Supera todas las pruebas No tiene lgica duplicada Pone de manifiesto las intenciones importantes de los programadores Tiene el mnimo nmero de clases y mtodos

Pruebas

Las pruebas unitarias se escriben ANTES que el cdigo Pruebas automatizadas Permiten el desarrollo de proyectos de forma rpida y segura Pruebas unitarias programadores Pruebas funcionales cliente Resultado Un programa cada vez ms seguro

NUnit

Framework para pruebas unitarias Escritura de pruebas Ejecucin de pruebas Hacer un Assert de los resultados Mostrar los fallos o xitos Mantener un cdigo que pase los tests http://nunit.org/

Ejemplo de un test en NUnit

Fallo en ejecucin de los tests

xito en ejecucin de los tests

Refactoring

Refactorizacin = Mejora del cdigo

Intentar eliminar complejidad


Cdigo duplicado Refactorizacin Se plantea su aplicacin despus de implementar cada user-story

C# Refactoring

Herramientas integradas con Visual Studio Simplifican la refactorizacin del cdigo Mtricas para el anlisis del cdigo http://www.xtreme-simplicity.net/

Integracin con Visual Studio

Mtricas de anlisis del cdigo

Refactoring con C# Refactory

Programacin en parejas

Toda el cdigo se escribe en parejas


Se produce cdigo de mayor calidad Extiende el conocimiento

Se realiza el trabajo de 1 persona en casi la mitad del tiempo y mejor (cuestionable)

Propiedad colectiva

Cualquiera puede modificar el cdigo en cualquier momento Se evitan cuellos de botella en la codificacin Todos asume las responsabilidades sobre el conjunto del sistema Todos conocen algo sobre todas las partes y conocen muy bien aqullas en las que trabajan

Integracin contnua

El cdigo se integra y se prueba despus de pocas horas Existe una ordenador dedicado para la integracin Cada pareja integra su cdigo en dicho ordenador

Cliente in situ

Cliente real = Aquel que usar el sistema cuando est en produccin


El cliente real debe estar con el equipo de trabajo: Responder preguntas Resolver disputas Establecer prioridades Discutir mejoras

Estndares de programacin

Son fundamentales cuando los programadores cambian de pareja o hacen refactoring del cdigo de otros Se consigue un cdigo con el mismo estilo, homogneo, legible

Patrones de diseo software

Definicin

Cada patrn describe un problema que ocurre una y otra vez en nuestro ambiente, y luego describe el ncleo de la solucin a ese problema, de tal manera que puedes usar esa solucin un milln de veces ms, sin hacer jams la misma cosa dos veces (Christopher Alexander) Son soluciones reutilizables a problemas recurrentes que encontramos durante el desarrollo de software

Ventajas que ofrece el uso de patrones

Disear cdigo orientado a objetos es costoso, y disear cdigo orientado objetos reutilizable an lo es ms Los patrones permiten a los programadores reconocer un problema e inmediatamente determinar la solucin sin tener que pararse a analizar el problema primero Permiten trabajar a un nivel de abstraccin mayor Aumentan la productividad, la reutilizacin del cdigo y su consistencia

Ventajas que ofrece el uso de patrones


Capturan la experiencia en diseo. Los patrones se crean a partir de ejemplos prcticos de diseo Utilizar patrones de diseo es reutilizar la experiencia adquirida diseando Estudiar los patrones existentes es una manera de aprender cmo los expertos disean sistemas Los patrones definen un conjunto de trminos que forman un vocabulario con el que poder hablar de diseo de software

Componentes que constituyen un patrn


Nombre Resumen o esencia de la solucin Contexto al que se aplica Razones para utlizar o no el patrn Consideraciones de implementacin Consecuencias e implicaciones de su uso Ejemplo de uso (Test Case) Patrones relacionados

Proceso de aplicacin de patrones


Problema

Fuerza

Solucin
Beneficios Consecuencias

Patrones relacionados

Clasificacin de los patrones

Fundamentales De creacin De particin Estructurales De comportamiento De concurrencia

Fundamentales

Son los patrones ms bsicos y fundamentales:


Muchos del resto de patrones utiliza al menos uno de ellos Son tan bsicos que muchas veces no se mencionan dndolos por supuestos

Fundamentales

Delegate Interface Abstract superclass Interface + abstract class Immutable Proxy

De creacin

Provee de una gua de cmo crear objetos cuando su creacin precisa de la toma de decisiones:

Las decisiones normalmente involucran la determinacin de forma dinmica de qu clase instanciar o a qu objeto delegar la responsabilidad Estos patrones nos ayudan a estructurar y encapsular las decisiones

De creacin

Factory Builder Prototype Singleton Object pool

De particin

Siguen el paradigma de divide y vencers

Nos proporcionan la gua de cmo particionar las clases e interfaces para llegar a un buen diseo

De particin

Filter Composite Read-only interface

Estructurales

Describen las formas ms comunes en las que diferentes tipos de objetos pueden organizarse para trabajar conjuntamente

Estructurales

Adapter Iterator Bridge Faade Flyweight Dynamic linkage Virtual proxy Decorator Cache management

De comportamiento

Patrones utilizados para organizar, gestionar y combinar comportamiento

De comportamiento

Chain of responsibility Command Little language Mediator Snapshot Observer State Null object Strategy Template method Visitor

De concurrencia

Patrones para la coordinacin de operaciones concurrentes y que permiten solucionar dos problemas principalmente:

Recursos compartidos Secuenciacin de operaciones

De concurrencia

Single threaded execution Lock object Guarded suspension Balking Scheduler Read/Write lock Producer-consumer Two-phase termination Double buffering Asynchronous processing Future

Arquitecturas dirigidas por modelos (MDA)

Introduccin

Nueva orientacin de las actividades del OMG La base de todo son los modelos (ni su implementacin, ni la plataforma) Basado en el desarrollo de modelos independientes de la plataforma (PIM) Define un segundo nivel en el que diseamos para una plataforma concreta pero de forma abstracta (PSM) Definicin de transformaciones de PIM a PSM Aunque la plataforma cambie, siempre mantenemos el PIM

PIM, PSM y transformaciones en MDA

Modelo independiente de la plataforma (PIM)

Reglas de transformacin

Modelo especfico (PSM)

Modelo especfico (PSM)

Ejemplos con MOF/XMI


UML Model (PIM)
XMI

XMI Document (PSM) <Auto>


<Color> Red </Color> <Door> 4 </Door> <Engine> 2 </Engine> </Auto>

IDL, Java (PSM) interface Auto { Class Auto }; {public String color; public int Door; public int Engine; }

XMI DTD, Schema (PSM) <!Element Auto (Color*, Door*, Engine*)>

Herramientas de apoyo al modelado

Herramientas de apoyo al modelado

Herramientas comerciales generales:


Borland Together IBM Rational Suite

Herramientas libres o con versiones bsicas gratuitas:


Argo UML Poseidon Umbrello Eclipse UML2 Eclipse Omondo

Integracin con los IDEs existentes

Ayuda a la generacin de cdigo


Herramientas con soporte de ingeniera inversa Herramientas de generacin en un solo sentido Herramientas de soporte MDA:

Together AndroMDA

Intercambio de metadatos

Formato XMI Importacin y exportacin a este formato por parte de las herramientas Base para las transformaciones en MDA

Вам также может понравиться