Download Diapositiva 1 - Docencia FCA-UNAM

Document related concepts
no text concepts found
Transcript
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 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
Espacio del mundo real
Resultado
Algorítmo del
mundo real
Objetos reales
y actividades
Problema
Modelo
Objeto reales
(cambio de estado)
Espacio del programa
Representar mediante
abstracción
Programador
Usuario
Interpreta
Programa
Objetos abstractos y
operaciones en lenguaje de
programación
Algorítmo
Datos e
información
Resultado
Diferencia entre la programación
convencional
Dato 2
Dato 1
Procedimiento
2
Dato 4
Procedimiento
1
Dato 3
Procedimiento
3
Fig. 2 Sistema convencional
M1
INVOCA 4
M4 DATO 2 M2
M3
M1
INVOCA 1
M4 DATO 1 M2
M3
M1
M4 DATO 3 M2
INVOCA 3
M3
Fig.3 Sistema Orientado por objeto
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 de
un objeto
• Representación de
un objeto
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 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 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
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 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:
•
•
•
•
•
atributos,
mensaje
identidad,
relaciones
y métodos.
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 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 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 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 comportamiento de la clase.
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 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 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 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 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 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 MuestraPersona() {
System.out.print(“Hola, mi nombre es:”+m_sNombre);
System.out.println(“Tengo”+m_iEdad+”años”);
}
EI, Profesor Ramón Castro Liceaga
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 cambiarTamano(int tamano, String nombre, float patron){ }
Los siguientes métodos son sobrecargas legales del método cambiarTamano():
public void cambiarTamano(int tamano, String nombre){}
public int cambiarTamano(int tamano, float patron){}
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 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 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)
EdadM=Edad;
}
}
//constructor sin parametros
{//Constructor con parámetros
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
Principio de ocultación
Polimorfismo
Herencia
• ¿ 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
-Información
-Software
-Procesos
-Procedimientos
• 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.
• Por ejemplo, la operación "mover"
ejemplo
puede
comportarse
diferentemente sobre una clase llamada
Ventana
y
una
clase
llamada
Piezas_ajedrez.
Herencia
• 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
de métodos).
• Tipos de Herencia:
• Simple.
• Múltiple
• 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 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 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 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) , PowerBuilder,
Python, Ruby, Smalltalk, Magik (SmallWorld),
VB.NET Visual FoxPro , XBase++
• Utilizaremos en nuestros ejemplos el lenguaje Java
en su versión J2SDK.
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 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
* 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 el operador new
seguido por el nombre de la clase + parentesis.
Ejem.
nombreObjeto = new NombreClase();
psrPersona = 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
* Ejemplo de programacion de la clase persona en Java
*/
class Persona
{
String m_sNombre;
int m_iEdad;
Persona(String sNuevoNombre, int iNuevaEdad)
{
m_sNombre = sNuevoNombre;
m_iEdad = iNuevaEdad;
}
void MuestraPersona()
{
System.out.print(" Hola, mi nombre es " + m_sNombre);
System.out.println(" Tengo " + m_iEdad + " años ");
}
public static void main (String args[])
{
Persona psrPersona;
psrPersona = new Persona("Ramon Castro Liceaga ", 45);
psrPersona.MuestraPersona();
System.out.println("********************");
psrPersona = new Persona("Juan Perez ", 35);
psrPersona.MuestraPersona();
System.out.println("*** Fin de programa ****");
}
}
Ejemplo de la clase “ManoDerecha”
Clase: Mano
Objeto: ManoDerecha
Datos o Características
- Numero de dedos
- Color de la Mano
- Tamaño
- Fuerza
Rutinas o Acciones
- Abrir Mano
- Mover 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 “ManoDerecha”
Mano
-
Numero de dedos
Color de la Mano
Tamaño
Fuerza
-
Abrir Mano()
Mover 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 Castro Liceaga
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: MiMano, Finish…se crea el proyecto
LE, EI, Profesor Ramón Castro Liceaga
Programación de una clase en Java..
Crea la clase principal MiMano…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 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 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 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 podemos crear objetos
LE, EI, Profesor Ramón Castro Liceaga
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:
AbrirMano,MoverMano,MoverDedos,SujetarAlgo,HacerPuño,MoverPuño
y CerrarMano
LE, EI, Profesor Ramón Castro Liceaga
Después pondremos los métodos o acciones:
AbrirMano,MoverMano,MoverDedos,SujetarAlgo,HacerPuño,MoverPuño
y CerrarMano
LE, EI, Profesor Ramón Castro Liceaga
Pasamos a la clase principal MiMano para crear el objeto
ManoDerecha y tenga vida.
LE, EI, Profesor Ramón Castro Liceaga
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 “MiMano”. Que indica
que se ha construido el objeto Mano Derecha.
LE, EI, Profesor Ramón Castro Liceaga
Podemos ejecutar cualquier acción de la ManoDerecha de la siguiente
manera.
LE, EI, Profesor Ramón Castro Liceaga
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 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 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
Ingeniería de Negocios
Diseño OO de IU
Rational Unified
Process 5.0
Administración de
Configuración y Cambios
(Pure-Atria)
1997
1996
1995
1987
1967
Escuela de
Requerimientos
(Requisite Inc.)
OMT
Booch
Ingeniería de Datos
(Vigortech)
UML 1.2
Rational Objectory
Process 4.1
Proceso SQA
(SQA Inc.)
UML 1.0
Rational Objectory
Process 4.0
Rational
Approach
UML 0.8
Objectory
Process
Ericsson
method
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 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
• 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
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 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 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
• 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 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.- Java
Hacer la Base de Datos.- “tienda”
Tabla.- “venta”
Campos :
Id
Articulo
Cliente
DescArt
Precio
Cantinv
Cantvend
Venta
primaria
x(20)
x(20)
x(50)
decimal
num
num
decimal
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 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 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
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 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 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 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
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
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 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
• 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
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 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 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 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
Trabajador
Actividad
Pablo
Diseñador
Diseño de Objetos
María
Autor de Casos de Uso
Detallar un Caso de Uso
José
Diseñador de Casos de Uso
Diseñar un Caso de Uso
Silvia
Revisor de Diseño
Revisar el Diseño
Arquitecto
Análisis de Arquitectura
Diseño de Arquitectura
Recurso
Eduardo
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 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
• 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
debe hacer:
– Relevar requerimientos
– Documentar funcionalidad y
restricciones
– Documentar decisiones
– Identificar actores
– Identificar casos de uso
Im primir Informe
Cliente
Operador
Reciclar
Administrar Depósito
• 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
•
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 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 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.
•
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 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 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 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 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 ….!