UNIVERSIDAD LATINA UNILA INTRODUCCION LE EI Profesor Ramn

  • Slides: 107
Download presentation
UNIVERSIDAD LATINA (UNILA) INTRODUCCION LE, EI, Profesor Ramón Castro Liceaga

UNIVERSIDAD LATINA (UNILA) INTRODUCCION LE, EI, Profesor Ramón Castro Liceaga

Que es la Programación Orientada a Objetos ? • Es un estilo de programación

Que es la Programación Orientada a Objetos ? • Es un estilo de programación en que cada programa es visto como un objeto se forma por una serie de componentes, autocontenidos que cooperan para realizar las acciones de la aplicación completa.

Modelo de una tarea típica de programación

Modelo de una tarea típica de programación

Diferencia entre la programación convencional

Diferencia entre la programación convencional

Diferencias con la programación estructurada • Las principales diferencias entre la programación estructurada y

Diferencias con la programación estructurada • Las principales diferencias entre la programación estructurada y la orientada a objetos son: • La programación orientada a objetos es más moderna, es una evolución de la programación estructurada • La programación orientada a objetos se basa en lenguajes que soportan sintáctica y semánticamente la unión entre los tipos abstractos de datos y sus operaciones (a esta unión se la suele llamar clase). • La programación orientada a objetos incorpora en su entorno de ejecución mecanismos tales como el polimorfismo y el envío de mensajes entre objetos.

Conceptos orientados a objetos Objeto Clase Método Evento Mensaje Propiedad o atributo • Componentes

Conceptos orientados a objetos Objeto Clase Método Evento Mensaje Propiedad o atributo • Componentes de un objeto • Representación de un objeto • • •

Método • Es un algoritmo asociado a un objeto (o a una clase de

Método • Es un algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.

Evento • Es un suceso en el sistema (tal como una interacción del usuario

Evento • Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento, a la reacción que puede desencadenar un objeto, es decir la acción que genera.

Mensaje • Es una comunicación dirigida a un objeto, que le ordena que ejecute

Mensaje • Es una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.

Propiedad o atributo • Es contenedor de un tipo de datos asociados a un

Propiedad o atributo • Es contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.

Estado interno • Es una propiedad invisible de los objetos, que puede ser únicamente

Estado interno • Es una propiedad invisible de los objetos, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos).

Componentes de un objeto • Los componentes de un objeto son: • • •

Componentes de un objeto • Los componentes de un objeto son: • • • atributos, mensaje identidad, relaciones y métodos.

Representación de un objeto • Un objeto se representa por medio de una tabla

Representación de un objeto • Un objeto se representa por medio de una tabla o entidad que esté compuesta por sus atributos o datos y funciones correspondientes

Tipo • Es un conjunto de firma de métodos con un nombre que lo

Tipo • Es un conjunto de firma de métodos con un nombre que lo identifica. Un tipo puede ser definido a través de una Clase o una Interface.

Atributos • Los atributos son adjetivos ( palabra clave que acompaña al sustantivo para

Atributos • Los atributos son adjetivos ( palabra clave que acompaña al sustantivo para determinarlo o calificarlo; lo que expresa sus características o propiedades atribuidas a un sustantivo, ya sean concretas (el articulo ligero, el articulo grande) o ya sean abstractas (el articulo calculado, el articulo dibujado, etc) serán los atributos de clases que se vas a considerar en la programación orientada a objetos.

Atributos • Los atributos son las características individuales que diferencian un objeto de otro

Atributos • Los atributos son las características individuales que diferencian un objeto de otro y determinan su apariencia, estado u otras cualidades. • Los atributos se guardan en variables denominadas de instancia, y cada objeto particular puede tener valores distintos para estas variables. • Las variables de instancia también se les conoce como datos miembros, son declaradas en la clase pero sus valores son fijados y cambiados en el objeto. .

Métodos • Los métodos son los algoritmos asociados a un objeto y acciones o

Métodos • Los métodos son los algoritmos asociados a un objeto y acciones o comportamiento de la clase.

Métodos y los verbos • Cuando hablamos de verbos o acciones hablamos también de

Métodos y los verbos • Cuando hablamos de verbos o acciones hablamos también de métodos • Para desarrollar los métodos se recomienda hacer una lista de verbos (actividades humanas del sistema) que contienen las relaciones que tendrán los objetos y las clases entre si

Métodos y comportamiento de los objetos • El comportamiento de los objetos de una

Métodos y comportamiento de los objetos • El comportamiento de los objetos de una clase se implementa mediante funciones miembro o métodos. Un método es un conjunto de instrucciones que realizan una determinada tarea y son similares a las funciones o procedimientos de los lenguajes estructurados como en C o C++.

Métodos de instancia y clase • Del mismo modo que hay variables de instancia

Métodos de instancia y clase • Del mismo modo que hay variables de instancia y de clase, también hay métodos de instancia y de clase. En el primer caso, un objeto llama a un método para realizar una determinada tarea, en el segundo, el método se llama desde la propia clase.

Notación para representar una clase. Una clase se representa por una caja la cual

Notación para representar una clase. Una clase se representa por una caja la cual puede tener 3 regiones. • La primera región contiene el nombre de la clase. • La segunda región contiene la lista de atributos, cada nombre de atributo puede estar seguido por detalles opcionales tales como tipo de atributo y valores por defectos. • La tercera región contiene los nombres de las operaciones. Cada nombre de operación puede ser seguido por detalles opcionales tales como listas de argumentos y tipos de resultados. Los atributos y operaciones puede o no mostrarse; esto depende del nivel de detalle deseado.

Métodos y atributos (nivel de análisis UML) UML Nombre de la Clase Atributos Métodos

Métodos y atributos (nivel de análisis UML) UML Nombre de la Clase Atributos Métodos u Operaciones JAVA Persona Nombre, Edad. . etc Lee y muestra Nombre, edad

Atributos y Métodos • Atributos o Propiedades. - Características individuales que definen y diferencian

Atributos y Métodos • Atributos o Propiedades. - Características individuales que definen y diferencian a un objeto de otro (Nombre, edad, color, peso, etc). • Métodos. Controlan el comportamiento de la clase. Son funciones que especifican las acciones de los objetos. Ejem. Void Muestra. Persona() { System. out. print(“Hola, mi nombre es: ”+m_s. Nombre); System. out. println(“Tengo”+m_i. Edad+”años”); } EI, Profesor Ramón Castro Liceaga

Sobrecarga de Métodos • Un método sobrecargado se utiliza para reutilizar el nombre de

Sobrecarga de Métodos • Un método sobrecargado se utiliza para reutilizar el nombre de un método pero con diferentes argumentos (opcionalmente un tipo diferente de retorno). Las reglas para sobrecargar un método son las siguientes: + Los métodos sobrecargados deben de cambiar la lista de argumentos. + Pueden cambiar el tipo de retorno. + Pueden cambiar el modificador de acceso. + Pueden declarar nuevas o más amplias excepciones. + Un método puede ser sobrecargado en la misma clase o en una subclase. Ejemplo: public void cambiar. Tamano(int tamano, String nombre, float patron){ } Los siguientes métodos son sobrecargas legales del método cambiar. Tamano(): public void cambiar. Tamano(int tamano, String nombre){} public int cambiar. Tamano(int tamano, float patron){}

Mensaje • Es una comunicación dirigida a un objeto, que le ordena que ejecute

Mensaje • Es una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.

Encapsulación: Protección de variables y métodos accesos • Para implementar el encapsulamiento de las

Encapsulación: Protección de variables y métodos accesos • Para implementar el encapsulamiento de las clases Java utiliza: public Si un método o variable se define así, será accesible para cualquier otra clase (cualquiera accesarla) package Solo el que especifique el paquete de clases de que trate private Solo son visibles en la propia clase protected Publico para sus clases derivadas unicamente Estos especificadores de acceso preceden a las definiciones de los métodos y variables de las clases

Constructores. Un Constructor es una función o método, de las clases, la cual es

Constructores. Un Constructor es una función o método, de las clases, la cual es llamada automáticamente cuando se crea un objeto de esa clase. Por ser métodos, los constructores también aceptan parámetros. Cuando en una clase no especificamos ningún tipo de constructor, el compilador añade uno público por omisión sin parámetros, el cual NO hace nada. Características de los Constructores 1. 2. 3. 4. Un constructor, tiene el mismo nombre de la clase a la cual pertenece. No puede ser Heredado. No retorna ningún valor (Ni void), por lo cual no debe especificarse ningún tipo de dato. Debe declararse como public, sólo en casos realmente extraordinarios será de otro tipo. Supongamos una clase llamada Datos public class Datos { //declaracion de atributos public Datos(); public Datos(int Edad) Edad. M=Edad; } } //constructor sin parametros {//Constructor con parámetros

Destructores: Liberación automática de memoria en Java • Java no necesita destructores • Cuando

Destructores: Liberación automática de memoria en Java • Java no necesita destructores • Cuando una porción de memoria ya no se esta utilizando por el programa, el sistema automáticamente la devuelve.

Características de la POO Las características mas importantes son: • • • Abstracción Encapsulamiento

Características de la POO Las características mas importantes son: • • • Abstracción Encapsulamiento Principio de ocultación Polimorfismo Herencia

 • ¿ Qué es un Objeto ? Un objeto es una entidad física

• ¿ Qué es un Objeto ? Un objeto es una entidad física o abstracta que tiene un comportamiento antes ciertos estímulos, tanto externos como de otros objetos específicos que se encuentran dentro del sistema.

¿ Qué se puede considerar como objeto ? • • -Persona -Equipo Hardware -Materiales

¿ Qué se puede considerar como objeto ? • • -Persona -Equipo Hardware -Materiales -Información -Software -Procesos -Procedimientos

 • Objeto Físico: Horno • Operaciones asociadas: Encendido/Apagado/Cargado/Descargado. • Objeto Abstracto: Cola •

• Objeto Físico: Horno • Operaciones asociadas: Encendido/Apagado/Cargado/Descargado. • Objeto Abstracto: Cola • Operaciones: Agregar/Eliminar/Verificar vacía/ Verificar si llena/Primero cola/Siguiente cola/

Polimorfismo • Polimorfismo significa que la misma operación puede comportarse diferentemente sobre distintas clases.

Polimorfismo • Polimorfismo significa que la misma operación puede comportarse diferentemente sobre distintas clases. • Por ejemplo, la operación "mover" ejemplo puede comportarse diferentemente sobre una clase llamada Ventana y una clase llamada Piezas_ajedrez.

Herencia • La herencia consiste en el compartir atributos y métodos entre clases basándose

Herencia • La herencia consiste en el compartir atributos y métodos entre clases basándose en una relación jerárquica. • Una clase puede definirse ampliamente y redefinirse sucesivamente en subclases más refinadas. • Cada subclase que se incorpora, hereda todas las propiedades de su superclase y adiciona sus propias y únicas propiedades.

Elementos capaces de ser heredados • Herencia Estructural. • Herencia de Comportamiento ( herencia

Elementos capaces de ser heredados • Herencia Estructural. • Herencia de Comportamiento ( herencia de métodos).

 • Tipos de Herencia: • Simple. • Múltiple

• Tipos de Herencia: • Simple. • Múltiple

 • Definición de Herencia Múltiple: Una clase puede heredar rasgos de más de

• Definición de Herencia Múltiple: Una clase puede heredar rasgos de más de una superclase. Una clase con más de una superclase es llamada clase junta. Un rasgo de una clase ancestro que se encuentra más de una vez a lo largo de una ruta solo se hereda una vez.

 • Encadenamiento Dinámico: Una de las ventajas que promueve el estilo de programación

• Encadenamiento Dinámico: Una de las ventajas que promueve el estilo de programación orientada por objeto es la característica del encadenamiento dinámico, también llamado encadenamiento tardío. En efecto, no se tendrían sistemas orientados por objeto sin esa poderosa capacidad. • Simplemente, la declaración encadenamiento dinámico significa que el sistema encadenará una rutina a un selector para un método particular que está implantado sobre un objeto clase.

Que es un lenguaje de programación • Un lenguaje de programación es un idioma

Que es un lenguaje de programación • Un lenguaje de programación es un idioma artificial diseñado para expresar procesos que pueden ser llevadas a cabo por máquinas como las computadoras. • Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. • Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le llama programación. • Es aquel que utilizamos para poder transmitir ordenadamente nuestras ideas a una computadora.

Lenguaje de programación orientado a objetos • Entre los lenguajes orientados a objetos destacan

Lenguaje de programación orientado a objetos • Entre los lenguajes orientados a objetos destacan los siguientes: • Action Script , Ada, C++, C#, Clarion, C++Builder, D, Delphi, Harbour, Eiffel, Java, Lexico (en castellano), Objective-C, Ocaml, Oz, Perl (soporta herencia múltiple), PHP (en su versión 5) , Power. Builder, Python, Ruby, Smalltalk, Magik (Small. World), VB. NET Visual Fox. Pro , XBase++ • Utilizaremos en nuestros ejemplos el lenguaje Java en su versión J 2 SDK.

Lenguaje Java orientado a objetos • El diseño orientado a objeto puede ser programado

Lenguaje Java orientado a objetos • El diseño orientado a objeto puede ser programado en cualquier lenguaje. • Los desarrollos se organizan alrededor de los datos, y no de las funcionalidades. • Afortunadamente han aparecido nuevos lenguajes que facilitan la programación orientada a objetos, como es el caso de Java. • En adelante para explicar las funcionalidades de programación orientadas a objetos adoptaremos código de Java como ejemplo

Clases y Objetos • Objeto es la entidad provista de un conjunto de propiedades

Clases y Objetos • Objeto es la entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos). Corresponden a los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase. • Las Clases son definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.

Creación de clases en Java (Modelo básico) /* * Programa : Persona. java *

Creación de clases en Java (Modelo básico) /* * Programa : Persona. java * Ejemplo de programacion de la clase *persona en Java */ class Persona { // Métodos y atributos de los objetos }

Creación de objetos en Java: Constructores • Para crear un nuevo objeto, se utiliza

Creación de objetos en Java: Constructores • Para crear un nuevo objeto, se utiliza el operador new seguido por el nombre de la clase + parentesis. Ejem. nombre. Objeto = new Nombre. Clase(); psr. Persona = new Persona(“Ramon Castro”, 45); Nota: pasa los valores del nombre y la edad. EI, Profesor Ramón Castro Liceaga

 • Código de la clase persona. /* * Programa : Persona. java *

• Código de la clase persona. /* * Programa : Persona. java * Ejemplo de programacion de la clase persona en Java */ class Persona { String m_s. Nombre; int m_i. Edad; Persona(String s. Nuevo. Nombre, int i. Nueva. Edad) { m_s. Nombre = s. Nuevo. Nombre; m_i. Edad = i. Nueva. Edad; } void Muestra. Persona() { System. out. print(" Hola, mi nombre es " + m_s. Nombre); System. out. println(" Tengo " + m_i. Edad + " años "); } public static void main (String args[]) { Persona psr. Persona; psr. Persona = new Persona("Ramon Castro Liceaga ", 45); psr. Persona. Muestra. Persona(); System. out. println("**********"); psr. Persona = new Persona("Juan Perez ", 35); psr. Persona. Muestra. Persona(); System. out. println("*** Fin de programa ****"); } }

Ejemplo de la clase “Mano. Derecha” Clase: Mano Objeto: Mano. Derecha Datos o Características

Ejemplo de la clase “Mano. Derecha” Clase: Mano Objeto: Mano. Derecha Datos o Características - Numero de dedos - Color de la Mano - Tamaño - Fuerza Rutinas o Acciones - Abrir Mano - Mover Dedos - Sujetar algo - Hacer Puño - Mover Puño - Cerrar Mano Relaciones con otros objetos - Puede ser de una Persona - Puede ser de un robot - Es parecida a mano izquierda - Se puede relacionar con un pie LE, EI, Profesor Ramón Castro Liceaga

Diagrama de la Clase “Mano. Derecha” Mano - Numero de dedos Color de la

Diagrama de la Clase “Mano. Derecha” Mano - Numero de dedos Color de la Mano Tamaño Fuerza - Abrir Mano() Mover Dedos() Sujetar algo() Hacer Puño() Mover Puño() Cerrar Mano() LE, EI, Profesor Ramón Castro Liceaga

Programación de una clase en Java. . File, New Project… LE, EI, Profesor Ramón

Programación de una clase en Java. . File, New Project… LE, EI, Profesor Ramón Castro Liceaga

Programación de una clase en Java. . Java, Java Application, Next>… LE, EI, Profesor

Programación de una clase en Java. . Java, Java Application, Next>… LE, EI, Profesor Ramón Castro Liceaga

Programación de una clase en Java. . Create Main Class: Mi. Mano, Finish…se crea

Programación de una clase en Java. . Create Main Class: Mi. Mano, Finish…se crea el proyecto LE, EI, Profesor Ramón Castro Liceaga

Programación de una clase en Java. . Crea la clase principal Mi. Mano…Tenemos que

Programación de una clase en Java. . Crea la clase principal Mi. Mano…Tenemos que crear la clase “Mano” LE, EI, Profesor Ramón Castro Liceaga

Programación de una clase en Java. . En el paquete “mimano”, new, java class

Programación de una clase en Java. . En el paquete “mimano”, new, java class para crear la clase “Mano” LE, EI, Profesor Ramón Castro Liceaga

Programación de una clase en Java. . En la siguiente pantalla poner en Class

Programación de una clase en Java. . En la siguiente pantalla poner en Class Name Mano y click en Finish LE, EI, Profesor Ramón Castro Liceaga

Programación de una clase en Java. . En la siguiente pantalla poner en Class

Programación de una clase en Java. . En la siguiente pantalla poner en Class Name Mano y click en Finish LE, EI, Profesor Ramón Castro Liceaga

Programación de una clase en Java. . Crea la clase publica Mano y ya

Programación de una clase en Java. . Crea la clase publica Mano y ya podemos crear objetos LE, EI, Profesor Ramón Castro Liceaga

Programación de una clase en Java. . Primero creamos el constructor de objetos mismo

Programación de una clase en Java. . Primero creamos el constructor de objetos mismo nombre de la clase LE, EI, Profesor Ramón Castro Liceaga

Después pondremos los métodos o acciones: Abrir. Mano, Mover. Dedos, Sujetar. Algo, Hacer. Puño,

Después pondremos los métodos o acciones: Abrir. Mano, Mover. Dedos, Sujetar. Algo, Hacer. Puño, Mover. Puño y Cerrar. Mano LE, EI, Profesor Ramón Castro Liceaga

Después pondremos los métodos o acciones: Abrir. Mano, Mover. Dedos, Sujetar. Algo, Hacer. Puño,

Después pondremos los métodos o acciones: Abrir. Mano, Mover. Dedos, Sujetar. Algo, Hacer. Puño, Mover. Puño y Cerrar. Mano LE, EI, Profesor Ramón Castro Liceaga

Pasamos a la clase principal Mi. Mano para crear el objeto Mano. Derecha y

Pasamos a la clase principal Mi. Mano para crear el objeto Mano. Derecha y tenga vida. LE, EI, Profesor Ramón Castro Liceaga

Pasamos a la clase Mano para inicializar el constructor del objeto. LE, EI, Profesor

Pasamos a la clase Mano para inicializar el constructor del objeto. LE, EI, Profesor Ramón Castro Liceaga

Para ejecutar el programa desde la clase main “Mi. Mano”. Que indica que se

Para ejecutar el programa desde la clase main “Mi. Mano”. Que indica que se ha construido el objeto Mano Derecha. LE, EI, Profesor Ramón Castro Liceaga

Podemos ejecutar cualquier acción de la Mano. Derecha de la siguiente manera. LE, EI,

Podemos ejecutar cualquier acción de la Mano. Derecha de la siguiente manera. LE, EI, Profesor Ramón Castro Liceaga

Tarea: Completa el Programa agregando los objetos Mano Izquierda y Mano Robot…!

Tarea: Completa el Programa agregando los objetos Mano Izquierda y Mano Robot…!

Proceso Racional Unificado (Rational Unified Process RUP). Requisitos del usuario Proceso de desarrollo de

Proceso Racional Unificado (Rational Unified Process RUP). Requisitos del usuario Proceso de desarrollo de software Sistema de software • RUP es un proceso de desarrollo de software: – Forma disciplinada de asignar tareas y responsabilidades en una empresa de desarrollo (quién hace qué, cuándo y cómo). • Objetivos: – Asegurar la producción de software de calidad dentro de plazos y presupuestos predecibles. - caracteristicas: Dirigido por casos de uso, centrado en la arquitectura, iterativo (mini-proyectos) e incremental (versiones). • Es también un producto (tiene un proveedor): – Desarrollado y mantenido por Rational. – Actualizado constantemente para tener en cuenta las mejores prácticas de acuerdo con la experiencia.

¿Cuáles son sus ventajas: RUP? • Aumenta la productividad de los desarrolladores mediante acceso

¿Cuáles son sus ventajas: RUP? • Aumenta la productividad de los desarrolladores mediante acceso a: – Base de conocimiento, plantillas y herramientas. • Se centra en la producción y mantenimiento de modelos del sistema más que en producir documentos. • RUP es una guía de cómo usar UML de la forma más efectiva. • Existen herramientas de apoyo a todo el proceso: – Modelamiento visual, programación, pruebas, etc.

¿Qué antecedentes tiene RUP? Pruebas de rendimiento y carga (Performance Awareness) 1998 1997 1996

¿Qué antecedentes tiene RUP? Pruebas de rendimiento y carga (Performance Awareness) 1998 1997 1996 1995 1987 1967 Ingeniería de Negocios Administración de Configuración y Cambios (Pure-Atria) Escuela de Requerimientos (Requisite Inc. ) OMT Booch Rational Unified Process 5. 0 Diseño OO de IU Ingeniería de Datos (Vigortech) UML 1. 2 Rational Objectory Process 4. 1 Rational Objectory Process 4. 0 Rational Approach Objectory Process Proceso SQA (SQA Inc. ) UML 1. 0 UML 0. 8 Ericsson method

Mejores prácticas en RUP • RUP implementa las mejores prácticas actuales en ingeniería de

Mejores prácticas en RUP • RUP implementa las mejores prácticas actuales en ingeniería de software: – – – Desarrollo iterativo del software Administración de requerimientos Uso de arquitecturas basadas en componentes Modelamiento visual del software Verificación de la calidad del software Control de cambios (mantenimiento de software)

Desarrollo iterativo en RUP • El software moderno es complejo y novedoso. No es

Desarrollo iterativo en RUP • El software moderno es complejo y novedoso. No es realista usar un modelo lineal de desarrollo como el de cascada. • Un proceso iterativo permite una comprensión creciente de los requerimientos a la vez que se va haciendo crecer el sistema. • RUP sigue un modelo iterativo que aborda las tareas más riesgosas primero. • Con esto se logra reducir los riesgos del proyecto y permite tener un subsistema ejecutable tempranamente.

Administración de requerimientos • La base de RUP es la administración de requerimientos •

Administración de requerimientos • La base de RUP es la administración de requerimientos • RUP describe cómo: – Obtener los requerimientos – Como organizarlos – Como documentar requerimientos de funcionalidad y sus restricciones – Como rastrear requerimientos y documentar decisiones – Como captar y comunicar requerimientos del negocio • Los casos de uso y los escenarios indicados por el proceso han probado ser una buena forma de captar requerimientos y guiar el diseño, la implementación y las pruebas.

Arquitecturas basadas en componentes • Es el proceso se basa en diseñar tempranamente una

Arquitecturas basadas en componentes • Es el proceso se basa en diseñar tempranamente una arquitectura base ejecutable. • La arquitectura debe ser: – – Flexible Fácil de modificar Intuitivamente comprensible Promueve la reutilización de componentes • RUP apoya el desarrollo basado en componentes, tanto nuevos como preexistentes.

Modelamiento visual • Es el modelamiento visual de la estructura y el comportamiento de

Modelamiento visual • Es el modelamiento visual de la estructura y el comportamiento de la arquitectura y los componentes. • Con bloques de construcción que : – Ocultan detalles – Permiten la comunicación en el equipo de desarrollo – Permiten analizar la consistencia: • entre las componentes • entre diseño e implementación • UML es la base del modelamiento visual de RUP.

Verificación de cualidades • No sólo la funcionalidad es esencial, también el rendimiento y

Verificación de cualidades • No sólo la funcionalidad es esencial, también el rendimiento y la confiabilidad. • Es el proceso en el que RUP ayuda a planificar, diseñar, implementar, ejecutar y evaluar pruebas que verifiquen estas cualidades. • El aseguramiento de la calidad es parte del proceso de desarrollo y no la responsabilidad de un grupo independiente.

Control de cambios • Se refiere a los cambios que debe tener el software

Control de cambios • Se refiere a los cambios que debe tener el software • Los cambios son inevitables, pero es necesario evaluar si éstos son necesarios y rastrear su impacto. • Es el proceso en el que RUP indica como controlar, rastrear y monitorear los cambios dentro del proceso iterativo de desarrollo.

Práctica 02 Caso de estudio: punto de venta Supongamos como caso de estudio el

Práctica 02 Caso de estudio: punto de venta Supongamos como caso de estudio el sistema de una terminal de punto de venta. Esta terminal es un sistema automatizado con el que se registran las ventas y se realizan los pagos. Por lo general este tipo de sistemas comprenden hardware (un computador y un lector de código barras) y software (el sistema que se ejecuta en la terminal). El alumno entregará la programación del proyecto de “Punto de Venta” basado en la metodología RUP.

Práctica 02 Caso de estudio: punto de venta SMBD. - SQL Server LENGUAJE. -

Práctica 02 Caso de estudio: punto de venta SMBD. - SQL Server LENGUAJE. - Java Hacer la Base de Datos. - “tienda” Tabla. - “venta” Campos : Id Articulo Cliente Desc. Art Precio Cantinv Cantvend Venta primaria x(20) x(50) decimal num decimal

Ciclo de vida de sistemas y fases en RUP • El ciclo de vida

Ciclo de vida de sistemas y fases en RUP • El ciclo de vida de sistemas es el proceso de desarrollo de un sistema desde que es iniciado hasta su destrucción. • RUP divide el proceso de desarrollo en ciclos, teniendo un producto al final de cada ciclo. • Cada ciclo se divide en cuatro Fases: – – Inicio Elaboración Construcción Transición • Cada fase concluye con un elemento bien definido donde deben tomarse ciertas decisiones.

Fases del CVS de RUP FASES: INICIO, ELABORACION, CONSTRUCCIÓN Y TRANSICIÓN

Fases del CVS de RUP FASES: INICIO, ELABORACION, CONSTRUCCIÓN Y TRANSICIÓN

Fases de RUP: Inicio • Se establece la oportunidad y alcance el proyecto. •

Fases de RUP: Inicio • Se establece la oportunidad y alcance el proyecto. • Se identifican todas las entidades externas con las que se trata (actores) y se define la interacción a un alto nivel de abstracción: – Identificar todos los casos de uso – Describir algunos en detalle • La oportunidad del negocio incluye: – – Criterios de éxito Identificación de riesgos Estimación de recursos necesarios Plan de las fases

Fases de RUP: Inicio Productos considerados en esta fase: • • • Un documento

Fases de RUP: Inicio Productos considerados en esta fase: • • • Un documento de visión general: – Requerimientos generales del proyecto – Características principales – Restricciones Modelo inicial de casos de uso (por lo menos de 10% a 20 % listos). Glosario de términos del sistema. • • Caso de negocio: – Contexto – Criterios de éxito – Pronóstico financiero Identificación inicial de riesgos para la seguridad del sistema. Plan de proyecto. Uno o más prototipos.

Fases de RUP: Inicio Hito o posición: Objetivos del Ciclo de Vida Inicio Elaboración

Fases de RUP: Inicio Hito o posición: Objetivos del Ciclo de Vida Inicio Elaboración Construcción Transición • Las partes interesadas deben acordar el alcance y la estimación de tiempo y costo. • Comprensión de los requerimientos plasmados en casos de uso.

Fases de RUP: Elaboración • Objetivos: – – Analizar el dominio del problema Establecer

Fases de RUP: Elaboración • Objetivos: – – Analizar el dominio del problema Establecer una arquitectura base sólida Desarrollar un plan de proyecto Eliminar los elementos de mayor riesgo para el desarrollo exitoso del proyecto • Visión de que las decisiones de arquitectura requieren una visión global del sistema.

Fases de RUP: Elaboración Productos de esta fase: • • Es la parte más

Fases de RUP: Elaboración Productos de esta fase: • • Es la parte más crítica del proceso: – Claridad en el desarrollo del sistema – Se puede decidir si vale la pena seguir adelante A partir de aquí la arquitectura, los requerimientos y los planes de desarrollo son estables. • • Ya hay menos riesgos y se puede planificar el resto del proyecto con menor incertidumbre. Se construye una arquitectura ejecutable que contemple: – Los casos de uso críticos – Los riesgos identificados

Fases de RUP: Elaboración Productos de esta fase: • • • Modelo de casos

Fases de RUP: Elaboración Productos de esta fase: • • • Modelo de casos de uso (80% completo) con descripciones detalladas. Otros requerimientos no funcionales o no asociados a casos de uso. Descripción de la Arquitectura del Software. • • Un prototipo ejecutable de la arquitectura. Lista revisada de riesgos y del caso de negocio. Plan de desarrollo para el resto del proyecto. Un manual de usuario preliminar.

Fases de RUP: Elaboración Hito o posición: Concepción Arquitectura de Ciclo de Vida Elaboración

Fases de RUP: Elaboración Hito o posición: Concepción Arquitectura de Ciclo de Vida Elaboración Construcción Transición • Condiciones de éxito de la elaboración (preguntas): – ¿Es estable la visión del producto? – ¿Es estable la arquitectura? – ¿Las pruebas de ejecución demuestran que los riesgos han sido abordados y resueltos? – ¿Es el plan del proyecto algo realista? – ¿Están de acuerdo con el plan todas las personas involucradas?

Fases de RUP: Construcción • En esta fase todas las componentes restantes se desarrollan

Fases de RUP: Construcción • En esta fase todas las componentes restantes se desarrollan e incorporan al producto. (integración) • Todo es probado en profundidad. • El énfasis está en la producción eficiente y no ya en la creación intelectual. • Puede hacerse construcción en paralelo, pero esto exige una planificación detallada y una arquitectura muy estable.

Fases de RUP: Construcción Productos en esta fase : • El producto de software

Fases de RUP: Construcción Productos en esta fase : • El producto de software integrado y corriendo en la plataforma adecuada. • Manuales de usuario. • Una descripción del “release” actual. (versión actual)

Fases de RUP: Construcción Hito o posición: Concepción Capacidad Operacional Elaboración Construcción Transición •

Fases de RUP: Construcción Hito o posición: Concepción Capacidad Operacional Elaboración Construcción Transición • Se obtiene un producto Beta que debe decidirse si puede ponerse en ejecución sin mayores riesgos. • Condiciones de éxito: (preguntas) – ¿El producto está maduro y estable para instalarlo en el ambiente del cliente? – ¿Están los interesados listos para recibirlo?

Fases de RUP: Transición • El propósito en esta fase es: traspasar el software

Fases de RUP: Transición • El propósito en esta fase es: traspasar el software desarrollado a la comunidad de usuarios. • Una vez instalado surgirán nuevos elementos que implicarán nuevos desarrollos (ciclos). • Incluye: – – – Pruebas Beta para validar el producto con las expectativas del cliente Ejecución paralela con sistemas antiguos Conversión de datos Entrenamiento de usuarios Distribuir el producto

Fases de RUP: Transición Objetivos de esta fase : • Obtener autosuficiencia de parte

Fases de RUP: Transición Objetivos de esta fase : • Obtener autosuficiencia de parte de los usuarios. • Concordancia en los logros del producto de parte de las personas involucradas. • Lograr el concenso cuanto antes para liberar el producto al mercado. Concepción Elaboración Construcción Transición Producto final

Definiciones importantes en RUP Trabajador • Un trabajador define el comportamiento y las responsabilidades

Definiciones importantes en RUP Trabajador • Un trabajador define el comportamiento y las responsabilidades de un individuo. • Es como un “sombrero” que la persona usa durante el proyecto: – Una persona puede tener varios sombreros – Es el rol que desempeña en un momento dado • Responsabilidades: – Hacer una serie de actividades – Ser el responsable de una serie de artefactos (Elementos de información producidos, modificados o usados por el proceso)

Definiciones importantes en RUP Actividades • • Una actividad es una unidad de trabajo

Definiciones importantes en RUP Actividades • • Una actividad es una unidad de trabajo que se asigna a un trabajador. Ej. : – Crear o modificar un artefacto (Ejem. Algún código fuente de un lenguaje de programación) Una actividad que lleva entre un par de horas y un par de días, involucra un solo trabajador y un número pequeño de artefactos. • • Las actividades se consideran en la planificación y evaluación del progreso del proyecto. Ejemplos: – Planificar una iteración - Administrador de proyecto – Encontrar actores y casos de uso Analista – Revisar el diseño - Revisor de diseño – Ejecutar pruebas de performance - Ing. de pruebas de performance

Ejemplo de asignación de actividades

Ejemplo de asignación de actividades

Que son los Artefactos ? Son los productos de información creados , modificados o

Que son los Artefactos ? Son los productos de información creados , modificados o usados por los trabajadores para realizar nuevas actividades en el proceso de desarrollo de Software. • • • Elementos de información producidos, modificados o usados por el proceso. Son los productos tangibles del proyecto. Son usados por los trabajadores para realizar nuevas actividades y son el resultado de esas actividades. • Ejemplos: – Un modelo, como el modelo de casos de uso o el modelo de diseño. – Un elemento del modelo, como una clase o un caso de uso. – Un documento tal como el Caso del Negocio o la Arquitectura del Software. – Un Código fuente. – Un Código ejecutable.

Flujos de trabajo • • • Un proceso es una lista de actividades, trabajadores

Flujos de trabajo • • • Un proceso es una lista de actividades, trabajadores y artefactos en el proceso de desarrollo de sofware Un flujo de trabajo es una secuencia de actividades que produce un resultado significativo y valioso. Análisis de Arquitectura Diseño de Arquitectura Describir Concurrencia Describir Distribución Arquitecto Análisis de Casos de Uso Diseño de Casos de Uso Diseñador de Casos de Uso Análisis de Objetos Diseño de Objetos Diseñador No siempre es posible representar flujos de trabajo. Revisor de Diseño Revisar el Análisis Revisar el Diseño Revisar la Arquitectura

Flujos de trabajo esenciales Flujos de Trabajo de Ingeniería Flujos de Trabajo de Soporte

Flujos de trabajo esenciales Flujos de Trabajo de Ingeniería Flujos de Trabajo de Soporte

Flujos de trabajo • Existen habitualmente problemas de comunicación entre ingenieros de software e

Flujos de trabajo • Existen habitualmente problemas de comunicación entre ingenieros de software e ingenieros de negocios. • RUP proporciona un lenguaje y proceso común para estos dos ámbitos. • Para el modelamiento del negocio se usan “business use cases” (casos de uso del negocio): – La forma en que el software dará apoyo al negocio.

Requerimientos • Los desarrolladores y clientes deben acordar qué es lo que el sistema

Requerimientos • Los desarrolladores y clientes deben acordar qué es lo que el sistema debe hacer: – Relevar requerimientos – Documentar funcionalidad y restricciones – Documentar decisiones – Identificar actores – Identificar casos de uso • Los casos de uso describen la funcionalidad. • Los requerimientos no funcionales se incluyen en una especificación complementaria.

Análisis y diseño • Descripción de cómo se implementará el sistema: un plano •

Análisis y diseño • Descripción de cómo se implementará el sistema: un plano • Diseñar y validar la arquitectura es una tarea esencial. • Debe: – Ejecutar las tareas y funciones descritas en los casos de uso – Satisfacer todos los requerimientos – Flexible a cambios • El modelo de diseño consta de – Clases estructuradas en paquetes – Diseños de subsistemas con interfaces definidas (componentes) – Forma de colaboración entre las clases. • El diseño se centra en la noción de arquitectura.

Implementación • Propósito: – Definir la organización del código – Implementar clases y objetos

Implementación • Propósito: – Definir la organización del código – Implementar clases y objetos en forma de componentes (fuente, ejecutables, etc. ) – Probar las componentes desarrolladas – Integrar las componentes en un sistema ejecutable

Pruebas • • Propósito: – Verificar la interacción entre los objetos – Verificar la

Pruebas • • Propósito: – Verificar la interacción entre los objetos – Verificar la integración apropiada de componentes – Verificar que se satisfacen los requerimientos – Identificar los defectos y corregirlos antes de la instalación RUP describe como planear y ejecutar estas pruebas. • RUP propone probar las componentes desde el principio: – Confiabilidad, funcionalidad y performance • Las pruebas de regresión son importantes en desarrollos iterativos. • Rational tiene herramientas para automatizar algunas pruebas.

Distribución • Es el producir un producto y hacerlo llegar a sus usuarios finales.

Distribución • Es el producir un producto y hacerlo llegar a sus usuarios finales. • Incluye varias actividades: – Producir un “release” – Empaquetar el software – Distribuir el software – Instalar el software – Apoyar a los usuarios • A veces también incluye: – Realizar pruebas beta – Migración de datos – Aceptación formal • La mayor parte de la distribución ocurre durante la transición. • Este es uno de los flujos de trabajo menos documentados en RUP.

Administración de proyectos • Es el arte de balancear objetivos contrarios, manejar riesgos y

Administración de proyectos • Es el arte de balancear objetivos contrarios, manejar riesgos y producir software que satisface a clientes y usuarios. • Existen pocos proyectos realmente exitosos. • RUP incluye: – Un área o framework para manejo de proyectos de software – Guías para planificación, provisión de personal, ejecución y monitoreo de planes – Un framework para manejar riesgos

Administración de configuración y cambios • Es el proceso o forma de controlar los

Administración de configuración y cambios • Es el proceso o forma de controlar los artefactos producidos por las personas que trabajan en el proyecto. • Algunos problemas habituales: – Actualizaciones simultáneas – Múltiples versiones • RUP da guías para: – Desarrollos en paralelo – Automatizar la construcción – Administrar defectos

Ambiente • Es considerar el ambiente y las herramientas de desarrollo que harán posible

Ambiente • Es considerar el ambiente y las herramientas de desarrollo que harán posible llevar a cabo el proyecto de desarrollo de software. • RUP guía en la configuración de un ambiente de proceso apropiado a cada proyecto.

Gestión del Proyecto utilizando la metodología RUP • Es considerar el ambiente y las

Gestión del Proyecto utilizando la metodología RUP • Es considerar el ambiente y las herramientas de desarrollo que harán posible llevar a cabo el proyecto de desarrollo de software. • RUP guía en la configuración del proyecto apropiado.

Gracias por tu atención …. !

Gracias por tu atención …. !