You are on page 1of 151

Desarrollo de Proyectos de Software

Ingeniería en Sistemas Computacionales

Salvador Gurrola Velazquez


salvador.gurrola@yahoo.com.mx
Desarrollo de Proyectos de Software
 Aportación de la asignatura al perfil del egresado
◦ Desarrolla aplicaciones de software de cualquier
dominio.
 OBJETIVO GENERAL DEL CURSO

◦ El estudiante diseñará y construirá un proyecto


de software conforme a los
◦ requerimientos establecidos en el dominio del
proyecto de software.
Desarrollo de Proyectos de Software
 Conceptos Introductorios.
Construcción.
◦ 1.1 La arquitectura de 4+1 vistas. 3.1 Despliegue de componentes y
◦ 1.2 Desarrollo orientado a objetos. arquitectónico.
3.2 Técnicas de desarrollo de las
◦ 1.3 Diagramación.Tipos de arquitecturas de referencia en
controladores. diferentes dominios.
 Diseño orientado a objetos. 3.2.1 Los modelos de componentes.
3.2.2 Arquitectura de referencia para
◦ 2.1 Diseño del sistema en base a sistemas de tiempo real fuente
◦ procesos. de alimentación.
3.2.3 Arquitectura de referencia para
◦ 2.1.1 Actividades y casos de uso. sistemas móviles con conexión
◦ 2.1.2 Interfaces de usuario. a Internet.
◦ 2.2 Diseño de la lógica. 3.2.4 Arquitectura de referencia para
sistemas de información.
◦ 2.2.1 Clases y Objetos. 3.2.5 Arquitectura de referencia para
◦ 2.2.2 Interacción. ambientes virtuales de
aprendizaje.
◦ 2.2.3 Estados y Transiciones. 3.2.6 Arquitecturas de referencia para
líneas de productos.
 
Desarrollo de Proyectos de Software
 Pruebas de software.
4.3 Técnicas de diseño de casos de
◦ 4.1 Definiciones. pruebas.
◦ 4.1.1 Prueba, caso de prueba, 4.4 Enfoque práctico recomendado para
◦ defecto, falla, error, verificación, el diseño de casos.
4.5 Estrategias de aplicación de las
◦ validación. pruebas.
◦ 4.1.2 Relación entre defecto-fallaerror. 4.5.1 De unidad.
◦ 4.1.3 Pruebas estructurales, 4.5.2 De integración.
4.5.3 Del sistema.
◦ funcionales y aleatorias.
4.5.4 De aceptación
◦ 4.1.4 Documentación del diseño de Implantación y mantenimiento.
◦ las pruebas. 5.1 Implantación e Integración de casos
de uso y componentes de software.
◦ 4.2 Proceso de pruebas.
5.2 Mantenimiento del software.
◦ 4.2.1 Generar un plan de pruebas.  
◦ 4.2.2 Diseñar pruebas especificas.
◦ 4.2.3 Tomar configuración del
◦ software a probar.
◦ 4.2.4 Configurar las pruebas.
◦ 4.2.5 Evaluar resultados.
◦ 4.2.5.1 Depuración.
◦ 4.2.5.2 Análisis de errores.
Desarrollo de Proyectos de Software
Agenda
◦ Semana1 Agosto -27 Conceptos Introductorios
◦ Semana2 Septiembre -3
◦ Semana3 Septiembre - 10
◦ Semana4 Septiembre- 17 Diseño orientado a objetos.
◦ Semana5 Septiembre – 24
◦ Semana6 Octubre - 1
◦ Semana7 Octubre - 8
◦ Semana8 Octubre - 15 Construcción.
◦ Semana9 Octubre – 22
◦ Semana10 Octubre - 29
◦ Semana11 Noviembre- 5
◦ Semana12 Noviembre - 12 Pruebas de software.
◦ Semana13 Noviembre - 19
◦ Semana14 Noviembre – 26
◦ Semana15 Diciembre - 3 Implantación y mantenimiento.
◦ Semana16 Diciembre - 10
◦ Semana17 Diciembre – 17 Examenes de Regularizacion y Extraordinarios
Desarrollo de Proyectos de Software
Evaluación
◦ Asistencia 10%
◦ Examenes 70%
◦ Proyecto 20%
Desarrollo de Proyectos de Software
Proyecto
◦ Diseño, implantación y pruebas de un sistema
computacional en las diferentes
organizaciones de la localidad.
Desarrollo de Proyectos de Software
 FUENTES DE INFORMACIÓN
◦ 1. Fowler, Martin. UML Gota a Gota Addison Wesley. 1999
◦ 2. Larman, Craig. UML y patrones. Pearson. 1999
◦ 3. Bruegge Bernd .Ingeniería de Software Orientada a Objetos. Prentice
◦ Hall. 2001.
◦ 4. Braude, Eric. Ingeniería de Software Una perspectiva Orientada a
◦ Objetos. Alfaomega. 2003.
◦ 5. Meyer, Bertrand. Construcción de Software Orientada a Objetos.
◦ Prentice Hall. 1999.
◦ 6. Oestereich Bernd. Developing Software with UML, Object-Oriented
◦ Analysis and Desing in Practice. Addison Wesley. 1999.
◦ 7. Reed R.Paul. Developing Applications with Visual Basic and UML.
◦ Addison Wesley. 2001.
◦ 8. Jacobson,Ivar. El Proceso unificado de desarrollo de Software. Addison
◦ Wesley. 2000.
◦ 9. Humphrey, Watts S. Introducción al Proceso Software Personal.
◦ Addison Wesley. 2000
◦ 10. Sommerville, Ian. Ingeniería de Software. Prentice Hall. 2001.
◦ 11. Pressman Roger S. Ingeniería del Software, 5/E. Mc.Gaw-Hill. 2001.
◦ 12. Laudon & Laudon 8/E. Management Information Systems. Prentice-Hall.
◦ 2003.
Unidad I
Conceptos Introductorios.

1.1 La arquitectura de 4+1 vistas.


1.2 Desarrollo orientado a objetos.
1.3 Diagramación.
La arquitectura de 4+1 vistas
1.   Arquitectura Lógica (Logical Architecture)   Soporta el
análisis y la especificación de los requisitos funcionales: lo
que el sistema debería proporcionar en términos de
servicios a sus usuarios.
El sistema se descompone en un conjunto de abstracciones
clave tomadas mayormente del dominio del problema, en
forma de objetos o clases.
En esta vista se usan comúnmente los diagramas de clases,
los de interacción y objetos.
Notación: La notación más usada es UML, y dentro de esta
diagramas de clases y paquetes.
Estilo: El estilo más usado para la vista lógica es el
Orientado a Objetos.
La arquitectura de 4+1 vistas
2.   Arquitectura de Procesos (Process Architecture)   Se tratan
algunos requisitos no funcionales.
Ejecución, disponibilidad, tolerancia a fallos, integridad, etc.
Esta vista también especifica que hilo de control ejecuta cada
operación identificada en cada clase identificada en la vista lógica.
La vista se centra por tanto en  la concurrencia y distribución
de procesos.
Notación: La notación más usada es UML, y dentro de esta
diagramas estados, actividad y similares.
Estilo:  pueden encajar varios estilos. Por ejemplo, tomando la
taxonomía de Garlan y Shaw (1993), pueden usarse tuberías y
filtros (pipes and filtres) o Cliente – Servidor (con variantes de
múltiples clientes – simple servidor y múltiples clientes –
múltiples servidores).
La arquitectura de 4+1 vistas
 3.   Arquitectura de Desarrollo (Development Architecture)   La vista de desarrollo o
despliegue se enfoca en la organización de los módulos software en el entorno de desarrollo.
El software es empaquetado en pequeños trozos (librerías de programa, subsistemas,
componentes, etc.), los subsistemas se organizan en capas jerárquicas, y cada capa
proporciona una interfaz bien definida a sus capas superiores  
La vista de desarrollo toma por tanto requisitos internos relacionados con facilidad de
desarrollo, gestión del software (reparto de requisitos, trabajo del equipo), evaluación de
costes, planificación, monitorización del progreso del proyecto, reutilización, portabilidad,
seguridad y restricciones impuestas por las herramientas o por el lenguaje de programación  
Esta organización del software se suele apoyar en diagramas de módulos o de subsistemas que
muestran las relaciones de exportación (export) e importación (import).   Y destacar que
podrá describirse la vista de desarrollo por completo solamente después de haber identificado
todos los elementos software.
Notación: La notación más usada es UML, y dentro de esta diagramas de componentes y
paquetes.  
Estilo: se recomienda definir de cuatro a seis capas de subsistemas en la vista de desarrollo.
Una regla de diseño es que un subsistema puede solamente depender de subsistemas en la
misma capa o en las menores.
Esto minimiza las dependencias entre módulos a favor de una más simple estrategia capa –
capa.   
La arquitectura de 4+1 vistas
4.   Arquitectura Física (Physical Architecture)   La vista
física se centra en los requisitos no funcionales, tales como
la disponibilidad del sistema, la fiabilidad (tolerancia a
fallos), ejecución y escalabilidad.
Y también presenta cómo los procesos, objetos, etc.,
corresponden a nodos de roceso:  
Componentes: nodos de proceso.
Conectores: LAN, WAN, bus, etc.
Contenedores: subsistemas físico Varias configuraciones
físicas pueden usarse.
La correspondencia de el software a los nodos debe ser
altamente flexible y tener el mínimo impacto en el código
fuente.  
La arquitectura de 4+1 vistas
5.  Escenarios (Scenarios)   La vista de
escenarios corresponde con instancias de
casos de uso que unifican todas las vistas.
Así, desde casos de uso se debiera poder
hacer una trazabilidad a todos los
componentes del sistema de software,
viendo, por ejemplo, que máquinas, o
clases, o componentes, o procesos, son los
responsables de que el sistema cubra una
cierta funcionalidad.  
Desarrollo orientado a objetos.
Programación Orientada a Objetos
 Características principales del Diseño Orientado a Objetos:
◦ Los objetos son abstracciones del mundo real o entidades
del sistema que se administran entre ellas mismas
◦ Los objetos son independientes y encapsulan el estado y
la representación de información
◦ La funcionalidad del sistema se expresa en términos de
servicios de los objetos
◦ Las áreas de datos compartidas son eliminadas. Los
objetos se comunican mediante paso de parámetros
◦ Los objetos pueden estar distribuidos y pueden
ejecutarse en forma secuencial o en paralelo
Programación Orientada a Objetos
Programación Orientada a Objetos
◦ En la Programación Procedural la unidad básica es el
procedimiento, el cual se comporta como una caja negra puede
recibir unos parámetros de entrada, los procesa y puede devolver
datos de salida .
◦ En un programa con procedimientos los datos pueden ser comunes o
globales a todos ellos, y no existe un control más detallado de ellos,
o no existe una entidad encargada de su ciclo de vida. No existen
formas de esconder funcionalidades ni de controlar accesos.
◦ En la Programación Orientada a Objetos la unidad básica es el
objeto. Un objeto tiene atributos y métodos que le dan
comportamiento. Cada objeto controla sus propios datos y se
comunica con otros objetos a través de sus métodos (mensajes). Los
objetos encapsulan su funcionamiento mostrando a otros objetos
sólo lo necesario.
UML
UML (Unified Modeling Language) es un lenguaje que permite
modelar, construir y documentar los elementos que forman un
sistema software orientado a objetos.
Se ha convertido en el estándar de facto de la industria, debido a
que ha sido concebido por los autores de los tres métodos más
usados de orientación a objetos: Grady Booch, Ivar Jacobson y
Jim Rumbaugh.
Estos autores fueron contratados por la empresa Rational
Software Co. para crear una notación unificada en la que basar
la construcción de sus herramientas CASE.
En el proceso de creación de UML han participado, no obstante,
otras empresas de gran peso en la industria como Microsoft,
Hewlett-Packard, Oracle o IBM, así como grupos de analistas y
desarrolladores.
Modelos
Un modelo representa a un sistema software desde una
perspectiva específica.
Al igual que la planta y el alzado de una figura en dibujo
técnico nos muestran la misma figura vista desde distintos
ángulos, cada modelo nos permite fijarnos en un aspecto
distinto del sistema.
Los modelos de UML que se tratan en esta parte son los
siguientes:
◦ · Diagrama de Estructura Estática.
◦ · Diagrama de Casos de Uso.
◦ · Diagrama de Secuencia.
◦ · Diagrama de Colaboración.
◦ · Diagrama de Estados.
Diagramación
Diagramas UML
 La figura debajo muestra la taxonomía de los 13 diagramas UML, como está definido por la
especificación de UML 2.0 de Grupos de Desarrollo de Objetos.
 Como se puede ver, hay dos grupos mayoritarios de diagramas:
 diagramas Estructurales los cuales muestran una vista estática del modelo; y
 diagramas de Comportamiento los cuales muestran una vista dinámica del modelo.
modelo del proceso de negocio
 El Modelo del Proceso del Negocio describe tanto el comportamiento como el flujo de
información dentro de una organización o sistema. Como un modelo de actividad de
negocio, éste captura los eventos significantes, entradas, recursos, procesos y salidas
asociadas con los procesos de negocio relevantes. 
modelo del dominio
 Un Modelo del dominio es un modelo conceptual de alto nivel, que define objetos físicos y abstractos, en
un área de interés para el Proyecto.
 Se puede usar para documentar relaciones entre ellos y responsabilidades de clases conceptuales (es
decir, las clases que representan el concepto de un grupo de cosas en lugar de Clases que definen un
objeto de programación). Esto también es útil para definir los términos de un dominio.
 
  Diagrama del Paquete
 Los Diagramas de Paquetes se usan para reflejar la organización de los paquetes y sus
elementos, y para proveer una visualización de sus correspondientes nombres de espacio.

                                                                                     
Diagrama del Paquete
Diagrama del Paquete
Modelo de Proyecto
 El Modelo del proyecto detalla el plan del proyecto global, fases, hitos y requisitos de recursos
para el proyecto actual.
 Los administradores del proyecto pueden usar Microsoft Project para asignar recursos a los
elementos, medidas de riesgo y esfuerzo y para estimar el tamaño del proyecto.
 
  Diagrama de Análisis
 Un diagrama del Análisis es un diagrama de actividad simplificado, que se usa para
capturar procesos del negocio del alto nivel y modelos tempranos del comportamiento y de
los elementos del sistema. Es menos formal que algunos otros diagramas, pero proporciona
                                                                                     
buenos medios de capturar las características y las necesidades esenciales del negocio.
modelo de requisitos
 El Modelo de requisitos es un catálogo estructurado de requerimientos del usuario final y las
relaciones entre ellos. La Administración de requisitos se puede usar para definir elementos de
requerimientos, vincular requerimientos para los elementos del modelo, vincular requerimientos
juntos en una jerarquía y reportar requerimientos.
Diagrama de Requisitos
 Un diagrama de Requisitos es un diagrama personalizado usado para describir los
requisitos o características de un sistema como un modelo visual.
 Los requisitos se definen usando elementos de requisitos (elementos personalizados de
tipo Requisito). Para ver la descripción detallada de un requisito, haga doble clic en el
elemento para mostrar sus propiedades. Los elementos de requisito se pueden vincular
para los casos de uso y componentes en el sistema para mostrar como se cumple un
requisito del sistema en particular.
 
  Diagrama Personalizado


Un diagrama Personalizado es un diagrama de Clase extendido que se usa para capturar
requisitos, interfaces de usuario o modelos de diseño personalizado. 
El ejemplo de abajo refleja un diagrama de requisitos. Los elementos requisito se pueden
                                                                                     
vincular a los casos de uso y a los componentes en el sistema para ilustrar cómo se cumple
el requisito en un sistema en particular.
Diagrama de Capas
modelo de casos de uso(999)
 El Modelo de casos de uso describe la funcionalidad de un sistema en términos de Casos de uso.
Cada Caso de uso representa una sola interacción repetida que el usuario o "actor"
experimenta cuando usa el sistema, acentuando la perspectiva de los usuarios del sistema y las
interacciones.
 
  Diagrama de Casos de Uso
 Un diagrama de Casos de Uso captura las interacciones de los casos de uso y los actores.
Describe los requisitos funcionales del sistema, la forma en la que las cosas externas (actores)
interactúan a través del límite del sistema y la respuesta del sistema. 
                                                                                     
 
  Diagrama de Actividades
 Los diagramas de actividades se usan para modelar el comportamiento de un sistema, y la
manera en que éste comportamiento está relacionado con un flujo global del sistema. Se usan
los caminos lógicos que sigue un proceso basado en varias condiciones, concurrencia en el
proceso, los datos de acceso, interrupciones y otras alternativas del camino lógico para
                                                                                     
construir un proceso, sistema o procedimiento. 
 
  Diagrama de Secuencia


Un diagrama de Secuencia es una representación estructurada de comportamiento como una serie de
pasos secuenciales a lo largo del tiempo. Se usa para representar el flujo de trabajo, el paso de
mensajes y cómo los elementos en general cooperan a lo largo del tiempo para lograr un resultado.  
• Cada elemento de la secuencia está ordenado en una secuencia horizontal, con paso de mensajes hacia
                                                                                     
atrás y hacia adelante entre los elementos. 
• Un elemento actor se puede utilizar para representar al usuario iniciando el flujo de eventos. 
• Los elementos estereotipados, tales como límite, control y entidad, se puede utilizar para ilustrar
pantallas, controladores e ítems de bases de datos, respectivamente. 
• Cada elemento tiene una línea de trazos llamada línea de vida, en donde este elemento existe y
potencialmente toma parte en las interacciones.
Diagrama de Secuencia
 
  Diagramas de Comunicaciones (formalmente
Diagrama de Colaboraciones)


Un diagrama de Comunicaciones muestra las interacciones entre los elementos en tiempo de
ejecución en forma semejante a un diagrama de Secuencia. No obstante, los diagramas de
Comunicación se usan para visualizar relaciones inter-objetos, mientras que los diagramas de
                                                                                     
Secuencia son más efectivos para visualizar procesamiento a lo largo del tiempo.   
Los diagramas de Comunicaciones emplean asociaciones ordenadas y etiquetadas para ilustrar el
procesamiento. Es importante la numeración para indicar el orden y el anidamiento del
procesamiento. Un esquema de numeración podría ser 1, 1.1, 1.1.1, 1.1.2, 1.2, etc. Comienza un
nuevo segmento de números para una nueva capa de procesamiento, y sería equivalente a la
invocación de un método. 
 
  Diagrama de Descripción de la Interacción
 Los diagramas de Descripción de
las Interacciones muestran la
cooperación entre otros
                                                                                     
diagramas de interacción para
reflejar el flujo de control que
responde a un propósito
abarcativo. Como los Diagramas
de Descripción de las
Interacciones son una variante de
los diagramas de actividades, la
mayor  parte de la notación es
similar, al igual que el proceso de
construcción del diagrama. Los
puntos de decisión, bifurcación,
unión, puntos de inicio y final son
los mismos. En lugar de
actividades se usan elementos
rectangulares. Hay dos tipos de
estos elementos:
 Los elementos de interacción
muestran un diagrama de
interacción en línea , el cual puede
ser un diagrama de Secuencias,
Comunicaciones, de Tiempos, o de
Descripción de las Interacciones.
Diagrama de Máquina de Estado
 Un diagrama de Máquina de estados ilustra cómo un elemento (a menudo una clase) se puede
mover entre estados, clasificando su comportamiento de acuerdo con los disparadores de
transiciones y las guardas de restricciones.  Otros aspectos de los diagramas de Máquinas de
Estados describen y explican el movimiento y el comportamiento. 
Diagrama de Máquina de Estado
 
  Diagrama de Tiempos


El diagrama de Tiempo define el comportamiento de los diferentes objetos con una escala de tiempo.
Provee una representación visual de los objetos cambiando de estado e interactuando a lo largo del tiempo. 
Puede usar diagramas de tiempos para definir componentes de software dirigidos por hardware o
embebidos; por ejemplo, aquellos usados en un sistema de inyección de combustible, un controlador de
                                                                                     
microondas. También puede usar diagramas de tiempo para especificar procesos de negocio dirigidos por
tiempo.
modelo de clases
 El Modelo de clase es un modelo riguroso y lógico del sistema de software bajo
construcción.
 Las clases generalmente tienen una relación directa con el código fuente y otros
artefactos de software que se pueden agrupar juntos en componentes ejecutables.
 
  Diagrama de Clases
 El diagrama de Clases captura la estructura lógica del sistema - las clases y cosas que
constituyen el modelo -. Es un modelo estático, describiendo lo que existe y qué
atributos y comportamiento tiene, más que cómo se hace algo. Los diagramas de Clases
                                                                                     
son los más útiles para ilustrar las relaciones entre las clases e interfaces. Las
generalizaciones, las agregaciones y las asociaciones son todas valiosas para reflejar la
herencia, la composición o el uso y las conexiones respectivamente.
Diagrama de Objetos
 Un diagrama de Objetos está relacionado de cerca con un diagrama de Clases, con la
diferencia de que éste describe las instancias de los objetos de clases en un punto en el
tiempo. Esto podría parecer similar al diagrama de Estructura Compuesta, que modela el
comportamiento en tiempo de ejecución; la diferencia es que el diagrama de Objetos
ejemplifica al diagrama de Clases estático, mientras que los diagramas de Estructura
Compuesta refleja las arquitecturas diferentes de sus contrapartes estáticas. Los diagramas
de Objetos no presentan arquitecturas que varíen de sus correspondientes diagramas de
Clases, pero reflejan la multiplicidad y los roles a los que las clases instanciadas podrían
servir. Ellos son muy útiles en la comprensión de diagramas de Clases complejos, al crear
diferentes casos en los que se aplican las relaciones y las clases. Un diagrama de Objetos
puede ser también un tipo de diagrama de Comunicaciones, el cual modela también las
conexiones entre pares de objetos y además las secuencias de eventos a lo largo de cada
camino. 
modelo de los componentes
 El Modelo del componente define como las clases, artefactos y otros elementos de bajo nivel
se agrupan en componentes de alto nivel, y las interfaces y conexiones entre ellos.
 Los componentes son artefactos de software compilados que trabajan juntos para proveer el
comportamiento requerido dentro de las restricciones de operación definidas en el modelo de
requisitos.
 
  Diagrama de Componentes
 Un diagrama de Componentes ilustra los fragmentos de software, controladores
embebidos, etc. que conformarán un sistema. Un diagrama de componentes tiene un nivel
de abstracción más elevado que un diagrama de clase - usualmente un componente se
                                                                                     
implementa  por una o más clases (u objetos) en tiempo de ejecución. Estos son bloques de
construcción, como así eventualmente un componente puede comprender una gran porción
de un sistema.
modelo de base de datos
 El Modelo de base de datos describe la información que debe ser almacenada y recuperada
como parte del sistema completo.
 Normalmente esto referirá a los modelos de base de datos relacional que describen las tablas y
datos en detalle y permitirá la generación de scripts DDL para crear e instalar base de datos.
 
  Esquema de Base de Datos

                                                                                     
 
  Diagrama de la Interfaz del Usuario


Los Diagramas de la Interfaz del Usuario usados para imitar visualmente la interfaz del
usuario del sistema usando formas, controles y etiquetas.
El siguiente diagrama de la Interfaz del Usuario de ejemplo, las formas, controles y
                                                                                     
etiquetas se organizan en el diagrama para describir su apariencia. Los elementos UI
también se pueden rastrear a otros elementos del modelo vinculando el UI con la
implementación de base.
modelo de despliegue
 El Modelo de despliegue describe cómo y dónde un sistema se desplegará.
 Las máquinas físicas y los procesadores son representados por nodos, y la construcción interna
se puede describir embebiendo nodos y artefactos.
 Como los artefactos se ubican en los nodos para modelar el despliegue del sistema, la ubicación
se guía por el uso de especificaciones de despliegue.
 
  Diagrama de Despliegue
 Un diagrama de Despliegue muestra cómo y dónde se desplegará el sistema. Las máquinas
físicas y los procesadores se representan como nodos, y la construcción interna puede ser
representada por nodos o artefactos embebidos. Como los artefactos se ubican en los nodos
                                                                                     
para modelar el despliegue del sistema, la ubicación es guiada por el uso de las
especificaciones de despliegue. 
Modelo de Mantenimiento
 El Modelo de mantenimiento permite una representación visual de incidencias que surgen
durante y después del desarrollo del producto de software.
 El modelo puede ser mejorado con la integración de elementos de cambios y pruebas.
 
  Diagrama de Mantenimiento


Un diagrama de Mantenimiento es un diagrama personalizado usado para describir pedidos de cambios
e items de incidencia dentro de un modelo del sistema.
El siguiente ejemplo ilustra un diagrama de mantenimiento de ejemplo. Los elementos de cambios,
                                                                                     

tareas e incidencias se pueden luego vincular a otros elementos del modelo en el sistema para ilustrar
como necesitan ser modificados, fijados o actualizados.  
Los modelos de Mantenimiento proveen extensiones al modelo UML y permiten la administración de
cambios de los items de cambios, y los elementos del modelo que requieren hacer los cambios en ellos
modelo de pruebas
 El Modelo de pruebas describe y mantiene un catálogo de pruebas, planes de prueba
y resultados que se ejecutan en comparación con el modelo actual.
Unidad II
Diseño orientado a objetos.

◦ 2.1 Diseño del sistema en base a


◦ procesos.
 2.1.1 Actividades y casos de uso.
 2.1.2 Interfaces de usuario.

◦ 2.2 Diseño de la lógica.


 2.2.1 Clases y Objetos.
 2.2.2 Interacción.
 2.2.3 Estados y Transiciones.
◦ Diagrama de casos de uso 9/6 1,2
◦ Diagrama de Secuencia 9/6 3,4
◦ Diagrama de Colaboracion 9/7 5,6
◦ Diagrama de Estados 9/7 7,8
◦ Diagrama de Clases 9/8 9,10
◦ Diagrama de Objetos 9/8 11
◦ Teoria de Patrones de diseno Daniel 9/20
◦ Patrón DELEGATION Mauro 9/20
◦ Patrón INTERFACE Elizabeth 9/20
◦ Patrón MARKER INTERFACE Manuel 9/21
◦ Patrón SINGLETON Ana L 9/21
◦ Patrón FACTORY METHOD Jorge 9/21
◦ Patrón ADAPTER Lourdes A 9/22
◦ Patrón FAÇADE Patricia 9/22
◦ Patrón OBSERVER Edgar 9/22
◦ Patrón STRATEGY Julio C 9/23
◦ Patrón ITERATOR Adiel 9/23
Diseño orientado a objetos.
El Diseño Orientado a los Objetos (DOO) crea
una representación del problema del mundo
real y la hace corresponder con el ámbito de la
solución, que es el software.

A diferencia con otros métodos de diseño, el DOO


produce un diseño que interconecta objetos de
datos y operaciones de procesamiento para
esos objetos, de forma que se modulariza la
información y el procesamiento, en lugar de aislar
el procesamiento.
Diseño orientado a objetos.
Todos los métodos de diseño intentan
desarrollar software basándose en:
◦ • Abstracción
◦ • Ocultamiento de información
◦ • Modularidad

El DOO proporciona un mecanismo que


permite al diseñador consigue estas tres
características sin dificultad.
Objetos, operaciones y mensajes

Para conseguir un DOO, tenemos que


establecer un mecanismo para:
◦ • Representar la estructura de datos
◦ • Especificar el proceso
◦ • Realizar el procedimiento de invocación
Objetos, operaciones y mensajes
Objeto: Componente del mundo real que
se hace corresponder con el software.
En un Sistema de Información basado en
Computador, un objeto es un producto o
consumidor de información, o un
elemento de información.
Objetos, operaciones y mensajes
Operaciones, métodos o servicios:
Procesos a los que se le permite
transformar estructuras de datos.
Objetos, operaciones y mensajes
Mensajes: Peticiones que se realizan a los
objetos para que realicen alguna de sus
operaciones.

Las operaciones contienen construcciones


procedimentales y de control, que se
invocan mediante un mensaje.
Aspectos de diseño
Descomponibilidad: Facilidad con la que un método de diseño ayuda al
diseñador a descomponer un problema en subproblemas más sencillos.

Componibilidad: Grado en el que un método de diseño permite la


reutilizabilidad de módulos.

Comprensibilidad: Facilidad para comprender un componente del


programa sin tener que hacer referencia a otros módulos.

Continuidad: Capacidad de realizar cambios en un programa y que


esos cambios afecten a un número mínimo de módulos.

Protección: Característica arquitectónica que reduce la propagación de


errores.
Principios de diseño
principios
de diseño para arquitecturas
modulares:

◦ • Unidades modulares
◦ • Pocas interfaces
◦ • Interfaces pequeñas (acoplamiento
débil)
◦ • Interfaces explícitas
◦ • Ocultamiento de información
Principios de diseño
Para conseguir un acoplamiento débil, se debe minimizar el
número de interfaces entre módulos y minimizar la cantidad
de información que se mueve a través de una interfaz.

Siempre que los módulos tengan que comunicarse tiene que


hacerlo de forma clara, mediante interfaces explícitas, y no
mediante una zona global de datos.

El principio de ocultamiento de información se consigue


cuando toda la información del módulo está oculta para el
acceso desde el exterior, a menos que la información se
defina explícitamente de forma pública.
Descripciones de los objetos
La descripción del diseño de un objeto (una instancia de una
clase o de una subclase) está compuesta de dos partes:

Descripción de la interfaz: Establece la interfaz del objeto,


definiendo los mensajes que puede recibir el objeto y las
operaciones que puede realizar cuando el objeto recibe el
mensaje.

Descripción de la implementación: Muestra los detalles de cada


una de las operaciones implicadas como consecuencia de la
recepción de un mensaje. Los detalles de implementación
incluyen información sobre la parte privada del objeto, es decir,
los detalles de las estructuras de datos y los detalles
procedimentales que describen las operaciones.
METODOS DE DISEÑO ORIENTADOS A OBJETOS

Debemos comprender la diferencia entre


el Análisis Orientado a Objetos, que es
una actividad de clasificación, y el
Diseño Orientado a Objetos, que define
los objetos que se derivan de cada clase.
Pasos del Diseño Orientado a Objetos

1) Definición del problema

2) Desarrollo informal de la forma de procesamiento


para la realización del software

3) Formalización de la forma de procesamiento


◦ a) Identificar los objetos y sus atributos
◦ b) Identificar las operaciones de los objetos
◦ c) Establecer las interfaces que muestren las relaciones entre
los objetos y las operaciones
◦ d) Crear un diseño detallado que proporcione una descripción
de la implementación de los objetos
DEFINICIÓN DE CLASES Y DE OBJETOS

La aplicación de los principios y métodos de análisis de requisitos permite al


analista y al diseñador llevar a cabo dos subpasos necesarios.
◦ a) Descripción del problema
◦ b) Análisis y aclaración de las limitaciones conocidas

La realización del software del problema del mundo real debe describirse de
forma sencilla y correcta para que permita a los ingenieros del software que
trabajan en el proyecto comprender el problema de forma sencilla y uniforme.

El cometido del AOO es el de aislar todos los nombres y frases del texto
explicativo del procesamiento que describe que es lo que ha de realizar el
sistema.

Esta primera selección nos puede ayudar a definir las clases, subclases y objetos
del sistema.
◦ a) Un nombre común suele representar una clase de objetos (una abstracción de datos),
como puede ser automóvil.
◦ b) Un nombre propio suele representar una instancia de una clase, como puede ser Juan.
PROCESO DEL ANÁLISIS Y DISEÑO ORIENTADO A LOS
OBJETOS (99)

El resultado del diseño orientado a


objetos es una jerarquía de clases.

Los elementos iniciales de un DOO son


los propios objetos, y posteriormente, a
medida que se van identificando aspectos
comunes, los objetos se van agrupando en
clases, que a su vez serán subclases de
clases más abstractas.
Pasos del DOO

Esencialmente, el DOO consta de cuatro pasos


fundamentales:
◦ a) Identificación y definición de objetos y clases
◦ b) Organización de relaciones entre clases
◦ c) Extracción de estructuras en una jerarquía de clases
◦ d) Construcción de bibliotecas de clases reutilizables

Como en todas las fases de Ingeniería del Software,


el DOO es cíclico, es decir, los diseñadores
comienzan definiendo un conjunto de clases, que se
amplían, modifican, ..., y vuelta a empezar.
Identificación y definición de objetos

El principal problema del desarrollo de un sistema orientado a


objetos es encontrar los objetos en la fase de AOO y DOO.

El método que utilizaremos para la identificación de objetos es el


propuesto por Booch en 1983, que dio origen al método
gramatical.

Esta metodología sugiere que se comience con una descripción


textual del sistema deseado y que el diseñador vea:
◦ • A los nombres como posibles identificadores de las clases de los objetos
◦ • A los verbos como posibles métodos

La lista resultante de clases (nombres) y métodos (verbos) se


utilizará para comenzar el proceso de diseño.
Directrices para la identificación y definición de clases y métodos

◦ • Modelar con clases las entidades que ocurren de forma natural en


el problema
◦ • Diseñar métodos con una sola finalidad
◦ • Diseñar un método nuevo antes de ampliar uno existente
◦ • Evitar métodos extensos
◦ • Guardar como instancia los datos necesitados por más de un
método o por una subclase
◦ • El diseñador debe trabajar para obtener una biblioteca de clases.

Además, para evitar la creación de clases innecesarias o


declaración de clases que no lo sean, una clase debe ofrecer
una serie de servicios a objetos de un tipo determinado.
Directrices para la identificación y definición de clases y métodos

Una clase se debería crear cuando:

◦ • La nueva clase represente una abstracción


significativa del problema
◦ • Es probable que los servicios que
proporciona sean utilizados por otras clases.
◦ • Su comportamiento sea complejo.
◦ • Si se representara como un método de otra
clase, pocos usuarios de ésta lo invocarían.
Definición y organización de clases

La identificación y definición de objetos es sólo el primer


paso en el diseño de un Sistema OO.

La abstracción es la tarea continua de un diseñador OO.

Una vez definidos los objetos, el paso siguiente consiste en


observar características comunes para crear abstracciones a
nivel de clase, pero no existe ninguna metodología formal
para la realización de estas abstracciones.

La definición de una clase para generar múltiples instancias


de un objeto ofrece la primera visión del poder de la
abstracción.
Clasificacion

Analicemos la siguiente definición de requerimientos:

◦ El <<sistema de tratamiento de información documental>> es un


gestor de <<documentos>>, de tal manera que puedan clasificar en
uno o varios <<índices>>, recuperar para su modificación, visualizar,
para su consulta, reclasificar, archivar y destruir.
◦ El <<sistema>> procesa la petición del <<usuario>>, devolviendo un
mensaje e indicando el éxito o el fracaso de la petición.

De una manera general hemos indicado entre comillas los


sustantivos y en cursiva los verbos. De esta forma hemos
identificado los objetos principales de la aplicación y las
operaciones asociadas a cada uno de los objetos.
Clasificacion

 Observe el siguiente diagrama.


 traducido los requerimientos a un conjunto de objetos.

 Estos están inconexos entre sí, pero aplicando la <<lógica


>> podemos ver las relaciones que existen entre ellos.
Clasificacion

 Sin salirnos de las especificaciones de la aplicación, vemos que existen las


asociaciones que aparecen en la siguiente figura:

 Como podemos observar, algunas asociaciones cíclicas como Indice <-> Documento.
Estas asociaciones pueden simplificarse.
 También existen otras implícitas que examinaremos más adelante, como Usuario-
>Documento->Indice.
Clasificacion

 Observemos gráficamente las asociaciones que mantienen los


objetos entre sí en la siguiente figura
Clasificacion (999)

 LA RELACION DE HERENCIA.
 A continuación vamos a centrarnos en la relación de herencia.
 Como ya sabemos ésta puede agrupar objeto son similares característica o
bien especializar objetos a partir de una genérico. Observemos nuevamente
los requerimientos de nuestro sistema:
Asociaciones
 Las asociaciones entre dos clases se representan mediante una línea
que las une. La línea puede tener una serie de elementos gráficos
que expresan características particulares de la asociación.
 A continuación se verán los más importantes de entre dichos
elementos gráficos.
 El nombre de la asociación es opcional y se muestra como un texto
que está próximo a la línea.
 Se puede añadir un pequeño triángulo negro sólido que indique la
dirección en la cual leer el nombre de la asociación. En el ejemplo
de la Figura se puede leer la asociación como “Director manda
sobre Empleado”.
Multiplicidad
 La multiplicidad es una restricción que se pone a una asociación, que limita
el número de instancias de una clase que pueden tener esa asociación con
una instancia de la otra clase. Puede expresarse de las siguientes formas:
◦ · Con un número fijo: 1.
◦ · Con un intervalo de valores: 2..5.
◦ · Con un rango en el cual uno de los extremos es un asterisco. Significa que es un
intervalo abierto. Por ejemplo, 2..* significa 2 o más.
◦ · Con una combinación de elementos como los anteriores separados por comas:
1, 3..5, 7, 15..*.
◦ · Con un asterisco: * . En este caso indica que puede tomar cualquier valor (cero
o más).
Roles
 Para indicar el papel que juega una clase en una asociación se puede
especificar un nombre de rol. Se representa en el extremo de la asociación
junto a la clase que desempeña dicho rol.
Agregación
 El símbolo de agregación es un diamante colocado en el extremo en el que
está la clase que representa el “todo”.
Clases Asociación
 Cuando una asociación tiene propiedades propias se representa como una
clase unida a la línea de la asociación por medio de una línea a trazos.
 Tanto la línea como el rectángulo de clase representan el mismo elemento
conceptual: la asociación.
 Por tanto ambos tienen el mismo nombre, el de la asociación.
 Cuando la clase asociación sólo tiene atributos el nombre suele ponerse
sobre la línea (como ocurre en el ejemplo de la Figura).
 Por el contrario, cuando la clase asociación tiene alguna operación o
asociación propia, entonces se pone el nombre en la clase asociación y se
puede quitar de la línea.
Asociaciones N-Arias
 En el caso de una asociación en la que participan más de dos clases, las
clases se unen con una línea a un diamante central. Si se muestra
multiplicidad en un rol, representa el número potencial de tuplas de
instancias en la asociación cuando el resto de los N-1 valores están fijos.
 En la Figura 12 se ha impuesto la restricción de que un jugador no puede
jugar en dos equipos distintos a lo largo de una temporada, porque la
multiplicidad de “Equipo” es 1 en la asociación ternaria.
Herencia
 La relación de herencia se representa mediante un triángulo en el extremo
de la relación que corresponde a la clase más general o clase “padre”.
 Si se tiene una relación de herencia con varias clases subordinadas, pero en
un diagrama concreto no se quieren poner todas, esto se representa
mediante puntos suspensivos.
 En el ejemplo de la Figura, sólo aparecen en el diagrama 3 tipos de
departamentos, pero con los puntos suspensivos se indica que en el modelo
completo (el formado por todos los diagramas) la clase “Departamento”
tiene subclases adicionales, como podrían ser “Recursos Humanos” y
“Producción”.
Conceptos básicos de la OxO
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.
Conceptos básicos de la OxO
 Polimorfismo Paramétrico: Se obtiene cuando una
función trabaja uniformemente sobre un rango de tipos;
esos tipos normalmente exhiben una estructura común y
puede comportarse de manera distinta para cada tipo.

 Polimorfismo de Inclusión: Es un polimorfismo


utilizado por modelos de subtipos y herencia. En este
tipo de polimorfismo un objeto puede pertenecer a
clases diferentes que no necesariamente son disjuntas.
Conceptos básicos de la OxO
Polimorfismo por Overloading: En este
caso el mismo nombre se utiliza para
denotar diferentes funciones, y el contexto
se utiliza para decidir cual función se
debería ejecutar para una invocación
particular del nombre.
Conceptos básicos de la OxO
 
Polimorfismo por Coerción: Es una operación
semántica que convierte argumentos a los tipos
esperado por una función, en una situación que
de otra forma resultaría en un tipo de error.
La coerción puede estar dada estáticamente,
insertándose automáticamente entre argumentos
y funciones a tiempo de compilación o pueden
tener que determinarse dinámicamente, con
pruebas a tiempos de ejecución sobre los
argumentos.
Conceptos básicos de la OxO (999)
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.
Conceptos básicos de la OxO
Elementos capaces de ser heredados
Herencia Estructural.
Herencia de Comportamiento ( herencia
de métodos).
Conceptos básicos de la OxO

Nombre
Persona Edad
Dirección
Sexo

Cargo

Empleado Estudiante Carrera


Denominación

Profesión

Director

Año de experiencia Dependencia


Secretaría
Dependencia
Idiomas
Conceptos básicos de la OxO
Tipos de Herencia:

Simple.

Múltiple
Conceptos básicos de la OxO

Nombre
Persona Edad
Dirección
Sexo

Cargo

Empleado Estudiante Carrera


Denominación

Profesión

Director

Año de experiencia Dependencia


Secretaría
Dependencia
Idiomas
Conceptos básicos de la OxO
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.
Conceptos básicos de la OxO

Vehículos

Vehículos Terrestres Vehículos Acuáticos

Vehículos
Carros Bote
Anfibios
Conceptos básicos de la OxO
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.
Patrones de Diseño
Patrones de Diseño
• El diseño OO es difícil y el diseño de software
orientado a objetos reutilizable lo es aún más.
• Los diseñadores expertos no resuelven los
problemas desde sus principios; reutilizan
soluciones que han funcionado en el pasado.
◦ – Se encuentran patrones de clases y objetos de
comunicación recurrentes en muchos sistemas
orientados a objetos.
◦ – Estos patrones resuelven problemas de diseño
específicos y hacen el diseño flexible y reusable.
Definición de un patrón
Alexander(arquitecto/urbanista)
Cada patrón describe un problema que ocurre
una y otra vez en nuestro entorno y describe
también el núcleo de la solución al problema, de
forma que puede utilizarse un millón de veces
sin tener que hacer dos veces lo mismo.
Definición de un patrón de diseño
[Gamma]
Un patrón de diseño es una descripción de clases
y objetos comunicándose entre sí adaptada para
resolver un problema de diseño general en un
contexto particular.
Introducción
• Es un tema importante en el desarrollo de
software actual: permite capturar la experiencia
• Busca ayudar a la comunidad de
desarrolladores de software a resolver
problemas comunes, creando un cuerpo literario
de base
◦ – Crea un lenguaje común para comunicar
ideas y experiencia acerca de los problemas y
sus soluciones
• El uso de patrones ayuda a obtener un software
de calidad (reutilización y extensibilidad)
Elementos de un patrón
• Nombre: describe el problema de
diseño.
• El problema: describe cuándo aplicar el
patrón.
• La solución: describe los elementos que
componen el diseño, sus relaciones,
responsabilidades y colaboración.
Clasificación de los patrones
Según su propósito:
– De creación: conciernen al proceso de
creación de objetos.
– De estructura: tratan la composición
de clases y/o objetos.
– De comportamiento: caracterizan las
formas en las que interactúan y reparten
responsabilidades las distintas clases u
objetos.
Clasificación de los patrones
GoF (gang of Four) [Gamma]
Patrones de diseño fundamentales
Son patrones que no aparecen la tabla
definida por Gamma, pero se utilizan
habitualmente:
◦ • DELEGATION
◦ • INTERFACE
◦ • MARKER INTERFACE
Patrón DELEGATION
Utilidad:
◦ Cuando se quiere extender y reutilizar la
funcionalidad de una clase SIN UTILIZAR
LA HERENCIA
Ventajas:
◦ • En vez de herencia múltiple
◦ • Cuando una clase que hereda de otra quiere
ocultar algunos de los métodos heredados
◦ • Compartir código que NO se puede heredar
Patrón DELEGATION
El problema
- El lenguaje utilizado NO PERMITE
HERENCIA MÚLTIPLE
- La clase C no desea TODOS los
métodos de B
Patrón DELEGATION
La solución
Patrón DELEGATION
Implementación
Class C extends A {
B objB;
C ( ) { // En la constructora se puede crear obj. de B
objB=new B();
}
void b1( )
{
objB.b1( );
}
….
Patrón INTERFACE
Utilidad y Ventajas
Utilidad
◦ Definir un comportamiento independiente de donde
vaya a ser utilizado
Ventajas
◦ Desacople entre comportamiento y clase.
Realización de clases “Utilities”
Patrón INTERFACE
El problema
Patrón INTERFACE
La solución
Patrón INTERFACE
Implementación
Patrón INTERFACE
Ejemplo
Patrón MARKER INTERFACE
Utilidad y Ventajas
• Utilidad
◦ – Sirve para indicar atributos semánticos de una
clase.
• Ventajas:
◦ – Se puede preguntar si un objeto pertenece a una
clase de un determinado tipo o no.
◦ – Habitualmente se utiliza en clases de utilidades que
tienen que determinar algo sobre objetos sin asumir
que son instancias de una determinada clase o no.
Patrón MARKER INTERFACE
Patrón MARKER INTERFACE
Ejemplo

En Java hay clases “serializables”, “cloneables”,


etc. Para ello, basta con que implementen las
interfaces Serializable, Cloneable, etc.
Clasificación de los patrones
GoF (gang of Four) [Gamma]
Patrón SINGLETON
Implementación
Patrón SINGLETON
Implementación
– El constructor de la clase DEBE SER PRIVADO
 – Se proporciona un método ESTÁTICO en la clase que
devuelve LA ÚNICA INSTANCIA DE LA CLASE:
getInstance()
Elementos Comunes a Todos los Diagramas
Unidad II
Diseño orientado a objetos.

◦ 2.1 Diseño del sistema en base a procesos.


◦ 2.1.1 Actividades y casos de uso.
◦ 2.1.2 Interfaces de usuario.
◦ 2.2 Diseño de la lógica.
◦ 2.2.1 Clases y Objetos.
◦ 2.2.2 Interacción.
◦ 2.2.3 Estados y Transiciones.

You might also like