Escolar Documentos
Profissional Documentos
Cultura Documentos
SOFTWARE
Mayo de 2006
1. INTRODUCCION
El diseño es el proceso de pasar los resultados del análisis en un borrador para el sistema
en desarrollo. El diseño muestra suficientes detalles que le permiten a un grupo diverso
de administradores y programadores desarrollar el sistema.
Sin embargo, no existe una división clara entre análisis y diseño en el proceso de
desarrollo de un sistema de información
En los años 70’s las metodologías de análisis y diseño de sistemas se hicieron más
formales y proveían una manera estándar de hacer un sistema de información en papel
antes de iniciar el desarrollo. Estos métodos se centraban en el flujo de información
dentro de fuera de subsistemas funcionales.
Orden de
Orden Inventario compra Proveedor
Despachar Base de datos Ordenar
orden de inventarios inventario
Cliente
Orden
Orden Reporte
Tomar Base de datos de Despachar Administrador
orden órdenes Ordenes orden
Orden
El flujo de datos está representado por las flechas comenzando del origen (como un
cliente) pasando por el proceso (como poner una orden o generar un reporte) y
terminando en la información de los clientes (como la administración). Descomponiendo el
sistema de esta manera, los subsistemas funcionales pueden ser desarrollados
individualmente. La mayoría de los principios desarrollados en estos tempranos modelos
de análisis y diseño desembocaron en las modernas metodologías de análisis y diseño
orientado a objetos.
Examine el flujo de datos de la figura anterior. Un cliente coloca una orden, su información
es pasada a las funciones “Tomar Orden” y “Despachar Orden”. En un modelo orientado a
objetos, la información de la orden podría ser identificada como un objeto. Un objeto
mantiene propiedades acerca de su estado. Por ejemplo, el objeto orden podría mantener
una lista de ítems ordenados, una dirección de envío y un método cuenta.
Pero ¿de qué manera es un objeto diferente de los datos en un programa estructurado?.
En un programa estructurado, los datos son pasados a través de funciones que operan en
ellos. En un programa orientado a objetos, se envían mensajes a los objetos para que
ellos decidan cómo operan sobre ellos mismos. La figura 2, ilustra un objeto orden con
propiedades definidas dentro de él. En lugar de pasar el objeto orden a través de una
función, el objeto orden es enviado al mensaje “Despachar Orden” y la orden se envía ella
misma.
Orden
Despachar
Ítems
Orden Dirección de
envío
Método de pago
Una metodología de análisis y diseño orientado a objetos es un proceso que contiene una
notación para la definición del software, basado en el concepto de objetos que combinan
la estructura y el comportamiento en una entidad simple. Este proceso no es
necesariamente lineal sino predecible, repetible, es posible probarlo y hacerle
seguimiento. La notación de OOA&D es una definición visual que permite compartir el
conocimiento acerca del sistema disminuyendo ambigüedades.
Análisis y diseño tiene varios propósitos. Esto permite a los desarrolladores enfocarse en
las dificultades técnicas, ayuda a asegurar que las entregas cumplan las expectativas del
usuario y lo más importante minimiza el riesgo.
Cuando el desarrollo de un producto es demorado se dice que existe crisis del software y
los eventos que llevaron a buscar soluciones a esto fueron:
Un paradigma simple
El modelo refleja el mundo real
Mantenible: La programación orientada a objetos hacen el código mantenible,
porque es más fácil identificar el origen de los errores ya que se encuentran dentro
de los mismos objetos.
Reusable: Porque los objetos contienen datos y funciones que actúan sobre datos,
los objetos pueden ser como cajas negras. Esta característica hace fácil la
reutilización de código en nuevos sistemas. Los mensajes proveen una interfaz
predefinida de los datos y funcionalidad de un objeto.
Escalable: Los programas orientados a objetos son más escalables. Como una
interfaz de un objeto provee una ruta para la reutilización del objeto en una
aplicación nueva, también provee toda la información necesaria para reemplazar el
objeto sin afectar otro código.
La capacitación hacia estas nuevas tecnologías podría ser una desventaja porque la
programación orientada a objetos ha existido desde finales de los 80’s, sin embargo, sus
principios aparecieron en el ámbito educativo sólo hasta 1995.
1.6. CARACTERÍSTICAS PRINCIPALES DE LA PROGRAMACIÓN ORIENTADA A
OBJETOS
1.6.1. Abstracción
Se refiere al concepto de ignorar los detalles y concentrarse en las características
esenciales de un objeto o entidad. La abstracción simplifica la funcionalidad y la
información y ayuda a los usuarios interactuar con el objeto. El proceso de desarrollar
clases en términos de sus interfaces y funcionalidad, en lugar de los detalles de
implementación, es llamado abstracción.
1.6.2. Encapsulación
La encapsulación oculta los datos dentro de un objeto. Por ejemplo, el funcionamiento
interno de un teléfono está oculto para el usuario o está encapsulado. Los botones del
teléfono proveen la interfaz para que el usuario opere el teléfono.
1.6.3. Asociación
La asociación es la forma en que los objetos interactúan. Los objetos son asociados
cuando un objeto “utiliza” los servicios u operaciones de otro objeto. Por ejemplo, dos
objetos independientes pueden decidir colaborar para alcanzar cierto objetivo. Después
que el objetivo es alcanzado, ellos continúan existiendo independientemente uno del otro.
1.6.4. Agregación
La agregación define un objeto en términos de las partes que lo componen. Por ejemplo,
un carro tiene un motor, llantas, sillas, etc. Si falta alguna de ellas, el carro no funciona
adecuadamente.
El carro es definido por sus partes, o el carro tiene una relación de agregación con sus
partes. Esta clase de relación “tiene un” es llamada agregación. La agregación es un tipo
de asociación.
1.6.5. Composición
La composición se da cuando un objeto es contenido dentro de otro. La composición se
caracteriza por una relación de “contención”. Por ejemplo, un lápiz está compuesto por
una mina en la punta y un objeto de madera en forma de tubo. Sin la mina, el lápiz no
ejecutaría su función correctamente.
1.6.6. Herencia
La herencia es un mecanismo que define una clase nueva en términos de otra existente.
Esto permite agrupar clases relacionadas, por lo tanto, pueden ser usadas y manejadas
colectivamente. La herencia se identifica por las frases “Es un” o “Es una clase de”.
1.6.8. Polimorfismo
Polimorfismo es el concepto de definición operaciones similares para más de una clase.
Una función es descrita como polimórfica si es posible aplicarla a objetos de diferentes
clases para alcanzar el mismo resultado semántico.
Cuando se crea una nueva pelota, no es necesaria la instrucción para la utilización del
método. La hija reconoce la clase de pelota y aplica el método genérico “lanzar”.
Lenguaje escrito por Grady Booch, Jim Rumbaugh e Ivar Jacobson, y desde noviembre
de 1997 es un estándar y pertenece a la OMG (Object Management Group). UML es un
lenguaje gráfico para especificar, construir, visualizar y documentar los artefactos o
productos entregables de un sistema de software. UML utiliza un lenguaje de notación
gráfica para representar los artefactos que hacen parte del OOA&D.
Es importante recordar que UML no define un proceso, sólo se puede utilizar UML cuando
se tiene un proceso clara para OOA&D. El proceso OOA&D es una aplicación o un
problema independiente. A pesar que el proceso unificado (Unified Process) está
altamente relacionado con UML, UML fue desarrollado en forma separada de este
proceso y está diseñado para ser utilizado con cualquier proceso de desarrollo iterativo de
software.
UML maneja diagramas que permiten tener un modelo mental del sistema de software.
Estos diagramas son usados para construir varios artefactos en el flujo de trabajo y son
los siguientes:
Fuente: Object-Oriented Analysis and Design using UML. Student guide with instructor notes. Sun Microsystems 2003.
Revision C.
Es posible ver la vista dinámica desde dos niveles: el ciclo de vida de un objeto desde que
se crea hasta que se libera, y la interacción de los objetos con el sistema, tal es el caso
del diagrama de estados de UML que describe un objeto y los diagramas de secuencia y
colaboración que describen la interacción entre objetos.
Existen otros elementos importantes dentro de UML como lo son la notación para los
paquetes, y los mecanismos de extensión como las notas, estereotipos, y reglas.
3. PROCESO UNIFICADO DE DESARROLLO
Tiempo
Requerimientos
Análisis
Diseño
Implementación
Pruebas
El proceso está compuesto por fases, las cuales se componen de flujos de trabajos
(workflow), estos se componen de actividades específicas, las cuales involucran
trabajadores y artefactos. Un trabajador es una persona que ejecuta una actividad. Un
artefacto es una pieza tangible de información que es producida por una actividad; por
ejemplo, diagramas, documentos y el código de software.
Fuente: Object-Oriented Analysis and Design using UML. Student guide with instructor notes. Sun Microsystems
2003. Revision C.
Opcionales:
Un prototipo conceptual
Entregas ejecutables
Prototipos de comportamiento
Resultados de calidad
Documentación del sistema y del usuario
Plan de distribución
Criterios de evaluación para la siguiente iteración
Producto terminado
Análisis del proyecto
Documentación de pruebas
4. DESARROLLO DE UN SISTEMA DE SOFTWARE
Fuente: Object-Oriented Analysis and Design using UML. Student guide with instructor notes. Sun Microsystems
2003. Revision C.
Los requerimientos funcionales (FR) también incluyen la interfaz del usuario, la cual debe
ser descrita en papel o es posible construir un prototipo para ayudar a los usuarios a
entender la manera como ellos interactuarán con el sistema.
Los requerimientos no funcionales (NFR) son propiedades del sistema, como rendimiento,
utilización de memoria, confiabilidad, flexibilidad, entre otros. En muchos casos, los
requerimientos no funcionales aplican a un conjunto específico de casos de uso.
Estudiante
Múltiples usuarios pueden asumir el rol de un actor. Por ejemplo, todos los estudiantes
asumirán el rol del actor estudiante.
Los actores mantienen relaciones con los casos de uso. Un caso de uso es la descripción
de alguna actividad del software que un actor debe iniciar; también se puede describir
como la especificación de una secuencia de acciones que el sistema debe ejecutar. Un
caso de uso se representa por un ovalo con una etiqueta que identifica el caso de uso.
Matricular
Al comenzar cada semestre, los estudiantes requieren un catálogo que contiene la lista de
los cursos ofrecidos para cada semestre. La información de cada curso, como el profesor,
facultad y prerequisitos serán incluidos para ayudar a los estudiantes en la toma de
decisiones. El nuevo sistema le permitirá a los estudiantes seleccionar cuatro cursos para
el semestre entrante. Además, cada estudiante indicará dos alternativas en caso de que
un curso ofrecido se llene o sea cancelado. Ningún curso ofrecido tendrá más de 10
estudiantes, ni menos de 3 estudiantes. Un curso con menos de 3 estudiantes será
cancelado. Una vez el proceso de matrícula es completado por el estudiante, el sistema
de matrícula envía la información al sistema financiero.
Los profesores deben acceder el sistema en línea para indicar cuál curso enseñará.
También necesitan conocer cuáles estudiantes están matriculados para su curso.
Para cada semestre, existe un periodo de tiempo en el cual el estudiante puede cambiar
su horario. Los estudiantes accederán el sistema durante este tiempo y añadir y cancelar
cursos.
Actores
Estudiantes
Profesores
Sistema Financiero
Administrador Sistema
Casos de Uso
Estudiantes
Matricular
Profesores
Seleccionar cursos a enseñar
Requerir lista del curso
Administrador Sistema
Mantener información del curso
Mantener información del estudiante
Mantener información profesor
Generar catálogo
4.1.1.3. Relaciones de los Casos de Uso
Un caso de uso describe una función fundamental del sistema desde la perspectiva del
usuario. Sin embargo, existe más de una forma para terminar una función dada. Un
escenario es una instancia de un caso de uso, esto es, un camino lógico del inicio al final
del mismo; es un ejemplo concreto de un caso de uso.
Los escenarios no contienen elementos condicionales porque describen uno de los
posibles caminos de un caso de uso. Por lo tanto, nunca se debe encontrar un “if” en un
escenario. Por ejemplo, no es posible tener un escenario con la siguiente oración “si el
cliente requiere una habitación doble, le pregunta si tiene más huéspedes”. Si esto se va a
presentar, entonces es necesario crear múltiples escenarios que cubran cada caso del “if”.
Todos los escenarios comienzan de la misma manera, sin embargo, cada uno de ellos
termina diferente.
No es necesario realizar todos los escenarios, pero si los principales. Es posible dejar de
definir escenarios cuando se haya descubierto el comportamiento del sistema. Existen
dos tipos de escenarios; los primarios que son aquellos que obtienen resultados exitosos
y los secundarios que obtienen eventos de fallas.
Los escenarios se utilizan para crear los diagramas de actividades, el plan de pruebas y
los diagramas de objetos.
El sistema determina que Juan cumple con los pre-requisitos necesarios y lo agrega a la
lista de estudiantes de ese curso. El sistema indica que la actividad se ha completado,
imprime el horario del estudiante y le envía la información correspondiente al sistema
financiero.
Escenarios secundarios
Una compañía requiere un sistema de nómina. Ellos necesitan que el sistema opere en
sus dos sucursales, cada una de ellas tiene diferente moneda, impuestos y políticas de
nómina. El pago es calculado mensualmente y semanalmente dependiendo del tipo del
pago del empleado. Actualmente los tipos de pago son, mensuales, semanales y por
horas.
Los empleados pagados mensualmente tienen un salario anual dividido en doce
cantidades iguales, las cuales corresponden a los pagos de cada mes. Los empleados
pagados semanalmente, son pagados con una tarifa semanal al final de la semana. Los
empleados pagados por hora tienen una tarifa por horas. Las horas trabajadas por estos
empleados están determinadas por el tiempo de entrada y el tiempo de salida
almacenado en un sistema de tiempo. Las horas extras son pagadas según las tarifas
aplicadas en la sucursal correspondiente.
La mayoría de los empleados son pagados por hora. La información del tiempo de trabajo
para estos empleados puede ser descargada directamente del sistema. Esto debe
hacerse cada 24 horas. Los empleados se identifican con sus nombres y el número de
identificación.
Los empleados pagados por hora y semanalmente, pueden elegir si desean el pago en
efectivo o en cheque. A los empleados mensuales sólo se les paga en cheque. Todos los
pagos se hacen en la moneda local aplicable a la sucursal correspondiente.
Los pagos son calculados aplicando los impuestos correspondientes según la sucursal.
Los impuestos son acumulados para el año financiero.
Las tasas de pago y los detalles de los empleados sólo pueden ser almacenados y
modificados a través de Recursos Humanos. Semanalmente y mensualmente se corre la
opción correspondiente por la persona encargada y se generan los pagos de nómina.
Esto produce una lista resumen de los pagos y descuentos realizados a cada empleado.
Este resumen presenta el total de descuentos generado por todos los empleados. Al final
del año, la persona encargada de esta labor, requiere un resumen de pagos de impuestos
para todos los empleados durante el año.
Fuente: Object-Oriented Analysis and Design using UML. Student guide with instructor notes. Sun Microsystems
2003. Revision C.
Funcionalidad Errores
deseada
Excepciones
Camino
o flujo
básico
Funcionalidad
no deseada
Para la descripción de cada uno de los pasos de los flujos de eventos, se recomienda
utilizar la técnica del scripting como se describe a continuación:
Rol: quien tiene la responsabilidad de llevar a cabo el comportamiento del sistema (actor)
Responsabilidad: cada comportamiento desarrollado por un rol
Dos tipos de actores: iniciador y participante
Dos tipos de responsabilidades: acción y servicio
Una colaboración: entre ambos roles
Descripción del caso de uso Matricular
Este caso de uso es iniciado por un estudiante y provee la posibilidad para que el
estudiante cree, elimine, modifique y revise la información de un horario de para un
semestre dado.
Flujo alterno
Si el identificador es inválido, el sistema no le permite el acceso al sistema de
matrícula.
Si el estudiante intenta crear un horario para un semestre donde ya está
matriculado, el sistema solicita que elija otro semestre.
Crear un horario
El estudiante ingresa los 4 cursos primarios, selecciona los 2 cursos alternativos y el
sistema valida:
Verifica que los prerequisitos estén satisfechos para el curso requerido
Agrega el estudiante al curso, si éste está abierto.
Flujo alterno
Si el curso primario no está disponible, el sistema lo sustituye con un curso
alterno.
Flujo alterno
Si el estudiante no cumple con los prerrequisitos necesarios, el sistema le
presenta el mensaje al usuario y no lo matricula en el curso correspondiente.
Revisar un horario
El estudiante requiere la información de todos los cursos ofrecidos en los cuales
está matriculado para un semestre dado. El sistema muestra todos los cursos
solicitados, incluyendo el nombre del curso, número, días de la semana, tiempo,
ubicación, créditos.
Cambiar horario
Eliminar un curso
El estudiante indica cual curso va a eliminar. El sistema verifica que la fecha final
para los cambios no haya sido excedida. El sistema elimina al estudiante de los
cursos seleccionados. El sistema notifica que la solicitud ha sido tenida en
cuenta.
Agregar un curso
El estudiante indica cuál curso desea agregar. El sistema verifica que la fecha
final para cambios no haya sido excedida. El sistema:
Verifica que el máximo número de estudiantes del curso no sea excedido.
Verifica los prerequisitos
Agrega el estudiante en el curso
Finalmente, es necesario refinar las relaciones entre todos los casos de uso identificados
a través de las relaciones inclusión y extensión. Para ello se debe tener en cuenta:
A partir de la descripción de los casos de uso, se definen los casos de prueba, con el fin
de utilizarlos al final de cada iteración y verificar la funcionalidad del sistema.
Después de crear los casos de uso, se pueden realizar los diagramas de actividades para
presentar gráficamente las actividades o flujos de eventos dentro de los casos de uso. El
diagrama de actividades puede extender la descripción de los casos de uso. Son similares
a un diagrama de flujo que describe el orden de las actividades de un proceso. Se debe
realizar un diagrama de actividades por cada caso de uso.
Actividades
Decisiones
División de control
Unión de control
Iteración
Flujo de objetos
Actividad Bifurcación
Flujo Unión
Inicio
Subdivisión
Fin
Separador Unión
Selecciona
Matricular
Agregar Cursos
Consulta Selecciona
Cursos Cursos
Eliminar Cursos
Elimina
Cursos
Curso Abierto
Actualiza
Matrícula
Las flechas dirigidas entre estados de acción representan transiciones con evento
implícito que, en el caso de decisiones, pueden tener una condición o guarda asociada
(que al igual que en los diagramas de estado evalúa a true o a false).
Las decisiones se representan mediante una transición múltiple que sale de un estado y
donde cada camino tiene una etiqueta distinta. Se representa mediante un rombo al cual
llega la transición del estado origen y del cual salen las múltiples transiciones de los
estados destino. Un ejemplo se muestra en la figura 5.7 cuando no hay café y se toma
una decisión entre hay cola o no hay cola.
Dado que el diagrama de actividades permite expresar el orden en que se realizan las
cosas, resulta adecuado para el modelado de organizaciones (business modeling) y el de
programas concurrentes (permiten representa gráficamente los hilos de ejecución).
Por contra, resultan en general del todo inadecuados a la hora de mostrar la colaboración
entre objetos y la evolución del comportamiento de los objetos durante su tiempo de vida.
4.2.5. Abstracciones principales
El modelo de análisis provee más detalles de cada caso de uso, escrito en el lenguaje del
desarrollador; este modelo es una vista interna del sistema. La fase análisis identifica los
objetos requeridos por el problema para asegurar la funcionalidad del sistema y sigue el
siguiente proceso:
Definir qué debe hacer el sistema, esto es, la funcionalidad del mismo.
Identificar los candidatos a objetos y clases, analizando sus relaciones y
responsabilidades
Actualizar el diccionario de datos o glosario de términos. Todos los términos
nuevos identificados durante la fase de análisis, se deben incluir en el diccionario
de datos
Una clase es la plantilla para un objeto, es decir, una clase define un objeto. El siguiente
ejemplo de galletas ilustra el concepto. Considere la memoria dentro de un computador
como si fuera una masa para hacer galletas. Cuando se inicia, la masa no tiene
características. Cada parte luce exactamente como la otra.
Es posible utilizar un molde para crear las galletas deseadas. Sólo se posee un molde,
pero puede utilizarse para crear tantas galletas como las deseadas hasta utilizar toda la
cantidad de masa disponible. Todas las galletas son iguales después de cortadas. Cada
una de ellas puede ser única agregando diferentes caras y botones con colores y
decoraciones y todas tendrán características individuales. El molde es similar a una clase
en términos de programación orientada a objetos. Es posible definir una clase por cada
tipo de objeto que se necesita. Las clases se crean antes de que el programa se ejecute.
Todos los objetos representan un sustantivo. El objeto más simple es un ítem tangible
como una persona, un orden de compra o un reporte. Los objetos también pueden
representar sustantivos intangibles como conceptos. Un objeto puede ser:
Una cosa: Un objeto puede representar un ítem tangible que existe dentro del
mundo real como una parte de un automóvil, un cliente o un elemento de una
interfaz gráfica como un botón.
Un evento: Un objeto puede representar un suceso como la fecha de entrega,
una llamada telefónica o la activación de un elemento dentro de una interfaz
gráfica.
Un proceso: Un objeto puede representar un proceso, como colocar una orden
o la interacción con una base de datos.
Un objeto puede ser simple o complejo, real o imaginario y puede tener atributos y
operaciones. Por ejemplo, si e objetos es un nube, los atributos pueden ser forma,
tamaño, contenido de agua. Un ejemplo de las operaciones puede ser llover, nevar o
tronar.
Para encontrar, se examinan los sustantivos de los casos de uso y los escenarios. Por lo
tanto, los sustantivos del escenario de matrícula:
Juan
Sistema
Horario
Cursos primarios
Geología
Algebra
Música
Pre-requisitos
Objetos candidatos
Juan (actor)
Sistema (lo que va a ser construido)
Horario (candidato a objeto)
Cursos primarios (estado de un curso)
Geología (candidato a objeto)
Algebra (candidato a objeto)
Música (candidato a objeto)
Pre-requisitos (candidato a objeto)
Ejercicio: Identificar los posibles objetos del Sistema de Nómina.
Profesor
nombre
Id
crear()
guardar()
eliminar()
cambiar()
Los diagramas de clases son utilizados para ilustrar las relaciones entre clases y son el
fundamento para el proceso de diseño. Las clases participan principalmente en cuatro
relaciones:
Asociación
Agregación
Composición
Generalización
4.2.7.1. Asociación
Una asociación ilustra una relación “utiliza un” entre las instancias de una clase. Una
asociación provee un camino de comunicación entre objetos. Esta relación está
representada por una línea entre dos clases.
Departamento Profesor
Las asociaciones deben tener una dirección la cual indica la navegabilidad de la misma.
4.2.7.2. Multiplicidad
4.2.7.3. Agregación
La agregación es utilizada para mostrar que una clase es parte de otra. La relación se
denota utilizando un diamante y una línea entre las clases. El diamante del lado de la
clase Catálogo, indica que el “es parte de” la clase Catálogo.
4.2.7.4. Composición
La composición es el segundo tipo de una relación “es parte de” entre clases y es más
fuerte que la agregación, con la expresión “está compuesto por”. Esta relación es más
fuerte, porque las partes nacen y mueren con el todo. Está representada por un diamante
relleno y una línea entre las clases. El diamante relleno indica que el pensum “está
compuesto por” materias.
Pensum 1..* Materia
Persona
- atributo:
clase
+ operaci on() : voi d
nota
generalización
Vendedor Origen
Cliente
1..1 1..1
1..1
provi ene de
soli ci ta
0..* 0..*
atiende
Pedido
i ncl uye
Producto
navegabilidad
asociación 0..* 0..* 1..*
ItemPedido
clase asociación multiplicida
d
Una clase asociación corresponde a asociación que se modela como clase o viceversa.
Es importante tener presente que la multiplicidad entre la clase y la asociación es 1..1.
Factura Artículo
0..* 1..*
ItemFacturado
4.2.7.8. Dependencia
Una relación de dependencia significa que una clase es dependiente de otra por algún
servicio. Una relación de dependencia se indica si las operaciones de la clase cliente
crean objetos de la clase proveedora y si las operaciones de la clase cliente pasan
argumentos a las instancias de la clase proveedora.
4.2.7.9. Herencia
Existen dos tipos de herencia, la herencia simple la cual es la más común, y la herencia
múltiple. Esta última no es permitida por todos los lenguajes orientados a objetos, C++ lo
permite, pero Java no lo permite. Cuando se decida utilizar herencia múltiple, es
necesario considerar su relevancia dentro del sistema.
4.2.7.10. Generalización
El modelo del dominio es una de las vistas del modelo de requerimientos, las otras
corresponden a los requerimientos textuales del documento SRS y el modelo de casos de
uso. Las clases en el modelo del dominio son las abstracciones principales del sistema y
el modelo se representa como un diagrama de clases con las abstracciones identificadas
durante el análisis.
Una técnica para validar el modelo del dominio con el problema es construir el diagrama
de objetos desde los escenarios de los casos de uso y verificar si el diagrama de objetos
se ajusta con el diagrama de clases.
Para validar el modelo del dominio es necesario ejecutar los siguientes pasos:
1. Elegir uno o más casos de uso que estén altamente relacionados con el modelo
del dominio.
2. Elegir uno o más escenarios de los casos de uso seleccionados en el punto
anterior. Es recomendable elegir escenarios que exploren diferentes situaciones.
3. Ir a través de cada escenario en forma separada, y construir los objetos con los
datos mencionados en el escenario.
4. Comparar cada diagrama de objetos con el modelo del dominio para analizar si se
han violado algunas restricciones.
4.3. DISEÑO
Fuente: Object-Oriented Analysis and Design using UML. Student guide with instructor notes. Sun Microsystems
2003. Revision C.
Ivar Jacobson identificó tres tipos principales de clases en un sistema orientado a objetos:
entidad, interfaz y control.
Las clases entidad, modelan el mundo real. Todos los objetos estudiados hasta el
momento son de entidad. El proceso de análisis comienza identificando las entidades de
información del negocio, como diferentes tipos de reportes, información de clientes, de
inventario, entre otras. La mayoría de esta información puede ser trasladada directamente
a clases entidad.
Las clases interfaz son el puente entre el sistema y los usuarios. Los objetos que forman
una interfaz gráfica de usuario son ejemplos de clases interfaz. Estas clases
frecuentemente hacen parte de una ventana, o un objeto impresora. En análisis, cada
clase de tipo interfaz mantiene una relación con al menos un actor.
Las clases de control implementan la lógica del negocio que no puede ser fácilmente
implementada en una clase entidad o interfaz. Las clases de control representan
conceptos utilizados para mantener el sistema unido.
Una vez se han identificado los objetos es necesario modelar cómo éstos interactúan
dentro del sistema, para ello se utilizan los diagramas de secuencia y colaboración.
Los Diagramas de Secuencia presentan gráficamente los objetos que toman parte en un
escenario particular y muestra sus interacciones a través del tiempo. En análisis se debe
producir al menos un diagrama de secuencia por cada escenario, o por lo menos un
diagrama de secuencia por cada flujo básico de cada caso de uso.
Los objetos son dibujados como rectángulos con los nombres subrayados, las líneas de
vida son representadas por líneas punteadas y la interacción se indica por una línea
horizontal entre objetos.
Una clase debe tener atributos y métodos asignados, los cuales le permiten conocer sus
responsabilidades. Los atributos le permiten a una clase almacenar información
relacionada con una tarea en particular. Los métodos u operaciones, son funciones que
manipulan los valores de los atributos. Las operaciones deben ser nombradas desde la
perspectiva del proveedor de la operación, no desde el cliente. Los nombres de los
métodos y atributos deben ser únicos dentro de una clase. Se pueden obtener de la
información filtrada de los casos de uso y escenarios.
Figura 4-29: Atributos y operaciones de la clase curso
Durante la fase de diseño, todos los atributos deberían ser privados y sólo ser visibles a
otras clases a través de los métodos públicos, de esta manera se refleja la encapsulación,
una de las principales características de la programación orientada a objetos.
Cada atributo se debe definir en términos de:
Tipo de dato
Valor por defecto (si aplica)
Restricciones (si aplica)
Cada clase pueden tener métodos, existen diferentes tipos pueden ayudar a encontrar
métodos:
Métodos de acceso: para acceder atributos privados, por ejemplo, los métodos get
y set
Métodos de administración: como los constructores y destructores de C++,
consultas, cálculos, comparaciones, entre otros.
4.3.6. Paquetes
Es una forma de agrupar ítems. Se pueden utilizar para agrupar clases, componentes de
software, de hardware, otros paquetes y cualquier producto relevante dentro del modelo.
La notación de UML es similar al icono de carpeta de windows.
En las primeras fases del desarrollo del sistema es posible utilizar los paquetes para los
siguientes objetivos:
En un nivel superior se identifican tres paquetes: Interfaces, Reglas del Negocio y Entidad
y los diagramas de clase se presentan organizados por paquetes.
Existe una dependencia entre paquetes cuando por lo menos una clase de un paquete
depende de una clase dentro de un segundo paquete. Esta relación se representa con
una línea punteada. Cuando existe dependencia cíclica entre paquetes, es recomendable
dividir los paquetes por funcionalidad, para romper estas dependencias cíclicas.
C D = A B
C D = A B
C D = A B
Figura 4-31: Relaciones entre los paquetes identificados del sistema académico
4.3.7. Diagrama de clases de diseño
Fuente: Object-Oriented Analysis and Design using UML. Student guide with instructor notes. Sun Microsystems
2003. Revision C.
o Para manejo de errores: Los objetos deberían detectar errores que puedan violar
su integridad y se debe tener en cuenta que los errores pueden ser resultado de
superar sus operaciones, resultado de los parámetros recibidos por un cliente,
resultado de los valores retornados por un proveedor. Es importante tener un plan
para monitorear la “salud” del sistema.
Persona
Nombre
Telefono
Em pleado Cliente
FechaInicio Ide nti fica cio nCliente
Preferencias
Persona
ID (PK)
Nombre
Teléfono
FechaInicio
NumeroCliente
Preferencias
TipoDeObjeto
Figura 4-35: Mapeo de herencia. Una tabla para la jerarquía de la clase persona
Persona
ID (PK)
Nombre
Teléfono
TipoDeObjeto
Es un Es un
Empleado Cliente
ID (FK) ID (FK)
FechaInicio NumeroCliente
Preferencias
Factores a Considerar Una tabla para la jerarquía Una tabla por Una tabla por
entera de una clase clase concreta clase
Facilidad de Implementación Simple Media Difícil
Cualquier modelo trabajaría, sólo que cada uno tiene sus ventajas y desventajas.
El primer modelo cada clase persistente puede tener crear, leer, actualizar y
borrar.
Ventajas:
Ninguna implementación técnicamente complicada
Desventajas:
OO y RDBMS no están separados
Funcionalidad CRUD no siempre es heredada transparentemente
o Capa del cliente, consiste de un cliente liviano como un navegador. La capa del
cliente contiene todos los componentes con los cuales interactúa el usuario. En
una aplicación web son las páginas web y los formularios que el servidor web
entrega al navegador.
o Capa de presentación que provee las páginas web y formularios que son enviados
al navegador y procesa los requerimientos del usuario.
o Capa del negocio que provee los servicios del negocio y las entidades. Allí los
componentes manejan la lógica, reglas y entidades de la aplicación.
o Capa de integración que provee componentes para integrar la capa de negocio
con la de recursos. Los componentes de esta capa ejecutan las operaciones de
crear, consultar, actualizar y eliminar una entidad.
o Capa de recurso que contiene los DBMS.
Existen cientos de arquitecturas exitosos, sin embargo las más comunes son:
Fuente: Object-Oriented Analysis and Design using UML. Student guide with instructor notes. Sun Microsystems
2003. Revision C.
Fuente: Object-Oriented Analysis and Design using UML. Student guide with instructor notes. Sun Microsystems
2003. Revision C.
Fuente: Object-Oriented Analysis and Design using UML. Student guide with instructor notes. Sun Microsystems
2003. Revision C.
Los diagramas de transición de estados son similares a los diagramas de actividad. Los
estados de inicio y finalización también son representados con un círculo. Las transiciones
de los objetos van hasta su destrucción. Los estados son representados por rectángulos
con esquinas redondeadas y las transiciones entre estados son representadas por
flechas.
Cancelar Curso
Cancelar Curso
Finalización Matrícula
Cerrado
Do: Generar lista de clase
Do: Reporte curso lleno
Los componentes son grupos de piezas de software clases que representan todo el
sistema, sus relaciones y son responsables por las operaciones dentro del sistema. Los
diagramas de componentes muestran el empaquetamiento físico del código. Esto puede
ser una clase, un archivo comprimido, un paquete, un ejecutable, librerías compartidas,
bases de datos, entre otras. Cuando un componente colabora con otro, esta colaboración
es representada como una dependencia entre el componente cliente y el componente
servicio. Control y Análisis
Interfaz de Terminal
Comment
Comment
Algunos sistemas corren sobre una misma plataforma, mientras que otros están
distribuidos en una serie de máquinas. Existen diversas razones para construir soluciones
distribuidas. UML utiliza el diagrama de distribución para mostrar que el sistema corre a
través de diferentes plataformas.
Ac ceso a BD Comment
Comment
Rutinas de Coneccio n
Comment
Terminal de Consulta
Interfaz de Terminal
Rutinas de Coneccio n
Comment Comment
Punto de Venta
Rutinas de Coneccio n
Comment
Comment Comment
Fuente: Object-Oriented Analysis and Design using UML. Student guide with instructor notes. Sun Microsystems
2203. Revision C.
Otra parte del plan de desarrollo es la selección de los casos de uso para las iteraciones y
cada uno debe entregar una parte claramente definida del comportamiento del sistema
completo. Por lo tanto, casos de uso completos deben asignarse a iteraciones
específicas.
Existen tres tipos de clases y para cada una de ellas existe un código de definición
diferente.
Clases concretas:
Clases abstractas:
public abstract class AbsClass {
// members
}
Interfaz:
public interface MyInterface {
// members
}
Herencia:
4.4.2.3. Relaciones
1 1..n
Estudiante Direcciones
1..n
Catálogo Cursos
import java.util.*;
public class Catalogo {
private Cursos [] cursos;
public Catalogo (Cursos cursos, String carrera){
this.cursos[0] = cursos
}
}
//En otro código
Cursos cursos = new Cursos (H99,”Álgebra”);
Catalogo catalogo = new Catalogo(cursos, “Facultad”);
4.4.2.5. Composición
import java.util.*;
public class Catalogo {
private Cursos []cursos;
Catalogo (int codigo, String nombre, String carrera){
this.cursos[0] = new Cursos (codigo,nombre);
//demás código
}
}
//En otro código
Catalogo catalogo = new Catalogo(H99, “Álgebra”, “Facultad”);
import java.sql.*;
public class Coneccion
{
public static Connection conn = null;
public static Connection setConeccion() throws ClassNotFoundException,SQLException
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection("jdbc:odbc:DRIVER={Microsoft Access Drive (*.mdb)};
DBQ=c:\\estudiantes.mdb", "admin","");
return conn;
}
public void CerrarConexion() throws SQLException
{
conn.close();
}
}
import java.sql.*;
Intefaces
.java DB.class
<<Applet>> Intefaces
ChartMaker. .jsp
class
Base de Datos
Fuente: Object-Oriented Analysis and Design using UML. Student guide with instructor notes. Sun Microsystems
2003. Revision C.
Un caso de prueba describe una forma de probar el sistema y especifica las entradas del
sistema, las condiciones bajo las cuales deberían ser conducidas y las salidas esperadas.
Los componentes de prueba son utilizados para automatizar el proceso de prueba y son
programas o scripts que son ejecutados en contra del sistema para realizar las pruebas.
Para desarrollar una prueba funcional es necesario seguir los siguientes pasos:
Object-Oriented Application Analysis and Design for Java Technology (UML). 00-226.
Student Guide. Sun Microsystems. Revision B.2, April 2002.
Object-Oriented Analysis and Design Using UML. 00-226. Student Guide With Instructor
Notes. Sun Microsystems. Revision C. 2003.
ANEXO 1. PLANTILLA DE ESPECIFICACIÓN DE CASOS DE USO
<Project Name>
Use Case Specification: <Use-Case Name>
Version <1.0>
[Note: The following template is provided for use with the Rational Unified Process. Text enclosed in square
brackets and displayed in blue italics (style=InfoBlue) is included to provide guidance to the author and
should be deleted before publishing the document. A paragraph entered following this style will automatically
be set to normal (style=Body Text).]
[To customize automatic fields in Microsoft Word (which display a gray background when selected), select
File>Properties and replace the Title, Subject and Company fields with the appropriate information for this
document. After closing the dialog, automatic fields may be updated throughout the document by selecting
Edit>Select All (or Ctrl-A) and pressing F9, or simply click on the field and press F9. This must be done
separately for Headers and Footers. Alt-F9 will toggle between displaying the field names and the field
contents. See Word help for more information on working with fields.]
Revision History
Date Version Description Author
<dd/mmm/yy> <x.x> <details> <name>
Table of Contents
1. Use-Case Name 70
1.1 Brief Description 70
2. Flow of Events 70
2.1 Basic Flow 70
2.2 Alternative Flows 70
2.2.1 < First Alternative Flow > 70
2.2.2 < Second Alternative Flow > 70
3. Special Requirements 71
3.1 < First Special Requirement > 71
4. Pre-conditions 71
4.1 < Pre-condition One > 71
5. Post-conditions 71
5.1 < Post-condition One > 71
Brief Description
[The description briefly conveys the role and purpose of the use case. A single paragraph will suffice for this
description.]
Flow of Events
Basic Flow
[This use case starts when the actor does something. An actor always initiates use cases. The use case describes
what the actor does and what the system does in response. It is phrased in the form of a dialog between the actor
and the system.
The use case describes what happens inside the system, but not how or why. If information is exchanged, be specific
about what is passed back and forth. For example, it is not very illuminating to say that the actor enters customer
information. It is better to say the actor enters the customer’s name and address. A Glossary of Terms is often useful
to keep the complexity of the use case manageable you may want to define things like customer information there
to keep the use case from drowning in details.
Simple alternatives may be presented within the text of the use case. If it only takes a few sentences to describe what
happens when there is an alternative, do it directly within the Flow of Events section. If the alternative flow is more
complex, use a separate section to describe it. For example, an Alternative Flow subsection explains how to
describe more complex alternatives.
A picture is sometimes worth a thousand words, though there is no substitute for clean, clear prose. If it improves
clarity, feel free to paste graphical depictions of user interfaces, process flows or other figures into the use case. If a
flow chart is useful to present a complex decision process, by all means use it! Similarly for state-dependent
behavior, a state-transition diagram often clarifies the behavior of a system better than pages upon pages of text.
Use the right presentation medium for your problem, but be wary of using terminology, notations or figures that
your audience may not understand. Remember that your purpose is to clarify, not obscure.]
Alternative Flows
Pre-conditions
[A pre-condition of a use case is the state of the system that must be present prior to a use case being performed.]
< Pre-condition One >
Post-conditions
[A post-condition of a use case is a list of possible states the system can be in immediately after a use case has
finished.]
< Post-condition One >
ANEXO 2. EJEMPLO DE PLANTILLA DE CASO DE USO
<Portales UNAB>
Especificación del Caso de Uso
<Solicitud Usuario UNAB>
Versión <1.0>
Historia de Revisiones
Fecha Versión Descripción Autor
26/08/2004 <1.0> Especificación inicial del caso de uso Camilo Ernesto Rodríguez
28/08/2004 <1.0> Ajuste de flujos alternos, especificación Sandra Johanna Moreno
de referencias, definiciones, Valero
requerimientos especiales y
poscondiciones.
31/08/2004 <1.0> Modificación de flujos alternos que Karol Dalila Reyes
verifica la coincidencia del correo
registrado en el sistema de información
con LDAP, antes de presentar el
mensaje que ya tiene un correo
asignado.
06/09/2004 <1.0> Agregar la validación que la persona Karol Dalila Reyes
que solicita no sea del Instituto Caldas
Tabla de Contenido
1. Introducción 75
1.1 Referencias 75
1.2 Definiciones, Acrónimos, y Abreviaturas 75
2. Flujo de Eventos 75
2.1 Descripción breve 75
2.2 Descripción del flujo normal 75
2.3 Descripción del flujo alterno 76
3. Requerimientos especiales 77
4. Precondiciones 77
5. Poscondiciones 77
Especificación del Caso de Uso
<Solicitud de usuario UNAB>
Introducción
Este documento presenta la especificación funcional del caso de uso solicitud de usuario
UNAB. El propósito de este documento es describir el comportamiento del servicio e identificar
los subsistemas relacionados. También describir los requerimientos no funcionales,
restricciones del diseño y otros factores necesarios para proveer una completa y comprensiva
descripción de los requerimientos del software.
Referencias
Caso de uso aplicación Alpha.
Manual de usuario aplicación Alpha.
Casos de prueba del caso de uso Solicitud de usuario UNAB. Doc N.
Manual de uso del correo electrónico UNAB.
Flujo de Eventos
Descripción breve
Usuario no registrado
{3.1}. La persona que solicita la creación de usuario UNAB, ya tiene registrada una cuenta
de correo en el sistema correspondiente y el sistema verifica que las cédula
registrada en LDAP de ese nombre de usuario, coincide con la cédula registrada en
el sistema de información.
{3.2}. El sistema presenta un mensaje indicando que la persona que solicita ya tiene un
usuario y cuenta de correo creada y le presenta el nombre de usuario con el cual
puede ingresar al portal del estudiante o IntraUNAB según corresponda y al correo
UNAB. Además, el sistema actualiza en LDAP los atributos correspondientes según
el caso. Para estudiantes, actualiza los atributos facultad, código y estudiante, para
administrativos, actualiza los atributos cargo, dependencia y administrativo y para los
docentes, actualiza los atributos cargo, dependencias y docente.
{3.1.1}. La persona que solicita la creación de usuario UNAB, ya tiene registrada una cuenta
de correo en el sistema correspondiente y el sistema verifica que la cédula registrada en
LDAP de ese nombre de usuario, no coincide con la cédula registrada en el sistema de
información.
{3.1.2}. El sistema le presenta el formulario para que pueda solicitar usuario UNAB y se
ejecutan los pasos registrados en el flujo de eventos normal, presentados en el punto
2.2.
{3.1.3}. La persona envía la solicitud y el sistema verifica que no exista un usuario asignado
a la persona solicitante, crea el usuario, actualiza el dato correo en el sistema de
información correspondiente y presenta un mensaje indicando que se ha creado
satisfactoriamente el usuario.
Cuenta de correo errónea registrada en el sistema de información y si existe usuario
en LDAP para la persona solicitante
Requerimientos especiales
Precondiciones
La persona que va a solicitar usuario y cuenta de correo UNAB debe ser un estudiante que se
encuentre registrado en el sistema Cosmos, o un empleado que se encuentre registrado en el
sistema SARA. La persona que no pertenezca a estos sistemas de información y desee usuario
y correo electrónico UNAB, necesitará comunicarse con la dependencia encargada para que se
le asigne utilizando un procedimiento diferente al especificado en este caso de uso.
Poscondiciones
Portal de Estudiante
Especificación de Caso de Prueba:
Caso de Pruebas de Solicitud de Usuario UNAB
Version 1.0
Historial de Revisiones
Fecha Version Description Author
25/08/2004 1.0 Especificación inicial del caso de Camilo Ernesto Rodríguez
prueba
28/08/2004 1.0 Detalle de los resultados esperados y Sandra Johanna Moreno Valero
evaluación de la prueba. Quedaron
pendientes algunas pruebas por
desconocimiento de qué es lo que se
verifica.
Tabla de Contenido
1.Descripción
2.1 Descripción
2.3 Entrada
3. Estudiante que solicita un usuario UNAB, pero ya tiene registrado el correo institucional en
Cosmos
3.1 Descripción
3.3 Entrada
4. Estudiante que es administrativo y tiene una cuenta de correo UNAB, pero no están
actualizados los atributos de estudiante en LDAP.
4.1 Descripción
4.3 Entrada
5.1 Descripción
5.3 Entrada
6. Empleado que solicita un usuario UNAB, pero ya tiene registrado el campo email en SARA.
6.1 Descripción
7. Empleado que tiene un usuario UNAB, pero no están actualizados los atributos de
empleado en LDAP.
7.1 Descripción
7.3 Entrada
El entorno del cual partiremos para realizar las pruebas será el formulario de
entrada de la aplicación, según sea el caso, Portal del estudiante o IntraUNAB.
2.1 Descripción
Las condiciones de ejecución del caso de prueba es que el usuario con la cedula
63557609 se encuentre registrado en Cosmos y que la tabla General.Goremal de
Cosmos no tenga registrado ninguna cuenta de correo UNAB y en LDAP no tenga
asignado un usuario.
2.3 Entrada
La prueba superada con éxito, ya que se verificó la creación del usuario en LDAP, se
accedió a la cuenta de correo a través de la web y comprobó la actualización de la
tabla General.Goremal en Cosmos.
3.1 Descripción
Las condiciones de ejecución del caso de prueba es que el usuario con la cedula
13722001 se encuentra registrado en Cosmos y que en la tabla General.Goremal de
Cosmos se encuentre registrado el correo institucional.
3.3 Entrada
No se hizo la creación de la cuenta de correo UNAB, por que ya tiene asignada una
cuenta de correo en Cosmos
La prueba superada con éxito, ya que se verificó, que no se creó el usuario en LDAP, y
se verifico también, que en Cosmos en la tabla General.Goremal la cuenta de correo
crodrigr@unab.edu.co pertenece al estudiante con la cedula 13722001.
4.1 Descripción
Las condiciones de ejecución del caso de prueba es que el usuario con la cedula
77185418 se encuentra registrado en Cosmos y que la tabla General.Goremal no
tenga registrado ninguna cuenta de correo UNAB y que en LDAP tenga asignado una
cuenta de correo.
4.3 Entrada
5.1 Descripción
Las condiciones de ejecución del caso de prueba es que el usuario con la cedula
“13842037” se encuentre registrado en SARA y no tenga registrado ninguna cuenta de
correo UNAB y en LDAP no tenga asignado una cuenta de correo.
5.3 Entrada
6. Empleado que solicita usuario UNAB, pero ya tiene registrado el dato email en
SARA.
6.1 Descripción
Ingresamos a la IntraUNAB y hacemos clic en “Solicitud usuario UNAB”, seguidamente
nos envía a la página de solicitud de correo donde nos muestra una caja de texto,
ingresamos la cédula del empleado y procedemos a solicitar el usuario UNAB.
Las condiciones de ejecución del caso de prueba es que el usuario con la cedula
13722001 se encuentra registrado en SARA y tiene registrado el dato email en SARA.
6.3 Entrada
No se hizo la creación de la cuenta de correo UNAB, por que ya tiene asignada una
cuenta en SARA.
La prueba superada con éxito, se verificó en Ldap que ya existe una cuenta de correo
con la cedula 13722001 que corresponde al empleado Camilo Ernesto Rodríguez
Moreno, con cédula 13722001 y con la cuenta de correo crodrigr@unab.edu.co ,
también se verificó que la información con respecto al nombre, cédula y cuenta de
correo en LDAP es igual a la de SARA.
7.1 Descripción
Las condiciones de ejecución del caso de prueba es que el usuario con la cédula
13746331 se encuentra registrado en SARA y que no tenga registrado ninguna cuenta
de correo UNAB, pero que en LDAP tenga asignado una cuenta de correo.
7.3 Entrada
La prueba superada con éxito, se verifico que se hizo la correcta actualización de los
atributos administrativo “si” ,docente “si” y facdocente “UNAB TECNOLÓGICA” en
LDAP y también se verificó que se actualizó en SARA en la tabla
ACTUALIZACION_CORREO el login “eagudel2” y cédula ”13746331”.