Un Proceso Software basado en UML
|
|
|
- Felisa Valenzuela Moreno
- hace 10 años
- Vistas:
Transcripción
1 Análisis y Diseño del Software Curso 2004/2005 Un Proceso Software basado en UML Jesús García Molina Departamento de Informática y Sistemas Universidad de Murcia Contenidos Introducción Dimensiones de un método Métodos pesados vs. Desarrollo Ágil Modelado del Negocio Modelado de Requisitos Modelado del Análisis Patrones GRASP Modelado del Diseño Casos Prácticos 2
2 Contenidos Introducción Dimensiones de un método Métodos pesados vs. Desarrollo Ágil Modelado del Negocio Modelado de Requisitos Modelado del Análisis Patrones GRASP Modelado del Diseño Patrones de Diseño 3 Método Establece cómo abordar de un modo sistemático la construcción de software. Se describe el problema y la solución mediante un conjunto de modelos. Ayuda pero no asegura el éxito. Es difícil asegurar la calidad del software. Un método ofrece guías y es fruto de la experiencia. No sustituye a la necesidad creativa. Lo más importante son las personas. 4
3 Método Dimensión Tecnológica Conceptos, Notación, Técnicas y Herramientas Dimensión Proceso Conjunto de pasos a realizarse y resultados obtenidos en cada paso ( entregables ) Dimensión Organización Cómo organizar las personas para acomodar el proceso 5 Tecnología Conceptos Qué conceptos soporta? Paradigma? Notación Modelos soportados Representación de los modelos Gráfica, Especificaciones formales, Expresividad de la notación Agregación, Generalización, Interfaces, Roles, Legibilidad de la notación 6
4 Tecnología Notación Sintaxis y Semántica bien definidos? Conexiones entre modelos. Capturan la semántica de las propiedades? Reglas para transformar y razonar sobre los modelos Crecimiento (Scalability) Ofrece el conjunto de modelos una visión consistente y completa del sistema?. Existe un mecanismo para particionar en subsistemas? Es posible generación de código? 7 Tecnología Conceptos Orientación a objetos Diseño estructurado Notación Especificaciones formales Plantillas Diagramas 8
5 Proceso Un proceso bien definido es necesario para desarrollar sistemas software de manera repetible y predecible Permite un negocio sostenible y que puede mejorar en cada nuevo proyecto, incrementando la eficiencia y productividad de la organización G. Booch 9 Proceso Un proceso software debe indicar: lasecuencia de actividades a realizar por el equipo de desarrollo: flujo de actividades los productos que deben crearse: qué y cuándo una asignación de tareas a cada miembro del equipo y al equipo como un todo heurísticas los criterios para controlar el proceso 0
6 Proceso Para qué contexto de desarrollo es apropiado? Nuevo software, Reingeniería, Prototipado, Desarrollo de componentes En qué grado cubre el ciclo de vida? Análisis, Diseño, Implementación, Pruebas Proceso Basados en casos de uso Debe ser iterativo e incremental. Conviene centrarse en los aspectos críticos en las primeras iteraciones para minimizar riesgos. Rápida retroalimentación Establecer un proceso marco: Cada empresa de desarrollo debe definir su propio proceso. 2
7 Organización Software de alta calidad no puede producirse sin una organización adecuada. Reutilización Factoría software Comprar antes que construir Especialización Trabajos y responsabilidades organizadas en una cadena de valor. Adecuar tareas a las capacidades del personal Múltiples facetas: Marketing, Ventas, Planificación, Diseño, Producción, etc. 3 Método completo Además de tecnología, proceso y organización: Guías para la gestión y planificación del proyecto Guías de estimación de costes Guías para elaboración de los entregables Métricas Políticas y procesos para asegurar calidad del software Programas de entrenamiento Descripciones de roles Ejemplos elaborados de aplicación y ejercicios para el aprendizaje Técnicas para adecuación del método 4
8 Método TECNOLOGIA (OO, UML, Rational Rose) ORGANIZACION (CARM-Sanidad) PROCESO (Larman) 5 Métodos Pesados y Agiles Proceso Unificado, UP Marco para definir procesos Rational Unified Process, RUP Estándar de facto Movimiento de la Extreme Programming, XP Rechazo a procesos pesados como RUP Movimiento del Desarrollo Agil Métodos Ágiles y Modelado Ágil 6
9 Métodos Pesados y Agiles Proceso pesado Muchos artefactos creados en un ambiente burocrático Muchas actividades realizadas con rigidez y control Planificación detallada a largo plazo Predictivos en vez de adaptativos 7 El Proceso Unificado (RUP)
10 Extreme Programming, XP Valores Comunicación Simplicidad Realimentación Valentía Principios Aceptar cambios Asumir Simplicidad Rápida Realimentación Cambio incremental Trabajo de calidad Prácticas El juego de la planificación Versiones pequeñas Metáfora Diseño simple Pruebas Recodificación Programación por parejas Código colectivo Integraciones continuas Semanas de 40 horas Cliente en el equipo Estándares de codificación Manifiesto para el Desarrollo de Software Ágil Nosotros estamos descubriendo mejores formas de desarrollar software haciéndolo y ayudando a hacerlo. A través de nuestro trabajo hemos llegado a apreciar: - Personas e interacciones antes que procesos y herramientas - Trabajar con el software antes que documentación - Colaborar con el cliente antes que la negociación de un contrato - Responder al cambio antes que seguir un plan Esto es, aunque reconocemos que los ítems de la derecha tienen valor, nosotros valoramos más los ítems de la izquierda. 20
11 Principios detrás del Manifiesto de Ágil Satisfacer al cliente es lo principal Aceptar los cambios Versiones pequeñas Integrar a la gente del negocio Motivación del equipo La conversación cara a cara es el medio más eficiente de comunicación Software funcionando es la mejor medida de progreso. Mantener velocidad constante por parte de todos Atención continua a la excelencia técnica y buenos diseños mejorar la agilidad. Simplicidad es esencial Las mejores arquitecturas, requisitos y diseños surgen de equipos que se auto-organizan. A intervalos regulares, el equipo refleja cómo llegar a ser más efectivo. 2 Métodos Ágiles Iteraciones corta de duración fijada. Refinamiento evolutivo de planificación, requisitos y diseño. Simplicidad, ligereza, comunicación. Ejemplos: Scrum, XP, DSDM,.. 22
12 Modelado Ágil ( El propósito de modelar es principalmente comprender y comunicar no documentar. No hay que modelar todo el diseño software Se define y muestra cómo poner en práctica un conjunto de valores, principios y prácticas para un modelado efectivo y ligero. Se explora como aplicar las técnicas de modelado en proyectos con enfoque ágil (XP) Explorar cómo mejorar el modelado en procesos predictivos como el RUP 23 Modelado Ágil ( Utilizar herramientas simples: pizarras y fotografías Herramientas CASE de modelado son complementarias Integrada con un IDE y con ingeniería inversa Programar por pares Modelo estructural y de comportamiento en paralelo No complicarse la vida con UML Los modelos serán imprecisos e incompletos Lo importante es el diseño OO Dedicar al modelado unas pocas horas (un día a lo sumo) al inicio de la iteración. 24
13 Tendencia Enfoque industrial para la producción de software: Capacidad de producir software de alta calidad a bajo coste Automatización Estándares Reutilización: Componentes, Patrones, Frameworks Configurar soluciones MDA: nuevo paradigma de desarrollo dirigido por modelos 25 Un proceso simple Descrito en UML y Patrones, C. Larman, Prentice-Hall, Fácil de aprender y usar. No incluye modelado del negocio. Conforma con UP Dirigido por casos de usos. Desarrollo iterativo e incremental Conforma con modelado ágil 26
14 Etapas del Proceso Inicio Comprender procesos del negocio (opcional) Obtener y especificar requisitos del sistema Identificar y especificar clases y colaboraciones para objetos del dominio (análisis) Resolver problemas de diseño (arquitectura, base de datos, redes, patrones, nuevas clases y colaboraciones,..) Implementación y pruebas Validación 27 Etapas del Proceso Modelado del Negocio (opcional) Modelado de Requisitos Modelado del Análisis Modelado del Diseño Implementación Pruebas 28
15 M odelo de Casos de Uso M odelo de Dom inio M odelo de Requisitos Diagramas de Proceso M odelo de Negocio Diagrama de Secuencia del Sistema (DSS) (uno por caso de uso) Contratos (uno por interacción) Diagrama de Clases Colaboraciones (una por contrato) M odelo de Análisis A rquitectura del Sistema Paquetes Diseño GUI Patrones de Diseño Estructuras de Datos Persistencia D istribución M odelo del Diseño El Proceso Inicio Estudio de necesidades de la empresa, ver si es viable, alternativas, análisis de riesgos, oportunidad. Definición de objetivos del proyecto Estimación aproximada del coste Duración una o dos semanas Debemos abordar el proyecto? 30
16 Inicio Primeros talleres de requisitos Plan para la primera iteración Casos de uso escritos en formato breve, excepto unos pocos que se consideran claves. Se identifican riesgos Escribir borrador del documento Visión y Especificación Complementaria Prototipado 3 Contenidos Introducción Dimensiones de un método Métodos pesados vs. Desarrollo Ágil Modelado del Negocio Modelado de Requisitos Modelado del Análisis Patrones GRASP Modelado del Diseño Patrones de Diseño 32
17 Modelado del Negocio Objetivo: Comprender el conjunto de procesos de negocio que tienen lugar dentro de una empresa, como paso previo a establecer los requisitos del sistema a desarrollar. Cómo consigue la empresa sus objetivos? 33 Procesos de Negocio Una organización tiene una serie de objetivos que satisface a través de Procesos de Negocio Elementos de un proceso de negocio: Flujo de Tareas, Agentes, Información y Reglas Negocio Reglas de Negocio regulan el funcionamiento de la empresa Describen restricciones y comportamientos NO son requisitos, pero influyen en ellos 34
18 Procesos y Reglas del Negocio Procesos del Negocio RN tarea2 datos RN3 tarea tarea3 tarea4 tarea5 Reglas del Negocio RN2 Determinan políticas y estructura de la información 35 Ejemplo Empresa que fabrica productos bajo demanda Objetivos Estratégicos Satisfacer pedido de cliente Incrementar las ventas un 25% Reducir tiempo de fabricación un 5%... Subobjetivos Procesos del Negocio Registrar pedidos de clientes Fabricar productos pedidos Gestionar almacén de materiales Realizar pedidos a proveedores Casos de Uso del Negocio Registrar pedido Fabricar productos Gestionar almacén Generar pedidos a proveedor
19 Etapas del modelado del negocio Identificar y definir los procesos de negocio según los objetivos de la organización. Definir un caso de uso del negocio para cada proceso del negocio (diagrama de casos de uso del negocio muestra el contexto y los límites de la organización). Identificar los roles implicados en los diferentes procesos del negocio (diagrama de roles). 37 Etapas del modelado del negocio Modelar el flujo de tareas asociado a cada proceso de negocio mediante escenarios (diagramas de secuencia) y diagramas de procesos (diagramas de actividades) que muestran la interacción entre roles para conseguir el objetivo. Especificar las informaciones y actividades incluidas en cada diagrama de actividades. 38
20 Diagrama Casos de Uso del Negocio Cliente Registrar Pedido Fabricar Producto Gestión Almacen Pedidos Proveedores Proveedor 39 Diagrama Casos de Uso del Negocio Operario Puesto Fabricar Producto Jefe Técnico Worker Gestión Almacen Operario Almacen 40
21 Casos de Uso del Negocio Descripción Textual Plantillas Diagramas Diagrama de casos de uso del negocio aspecto estructural de colaboración entre roles Escenario: aspecto de comportamiento de la colaboración Diagrama de Proceso: workflow que realiza el caso de uso del negocio 4 Ejemplo de Caso de Uso del Negocio Registrar Pedido. El cliente realiza un pedido que incluirá la fecha del pedido, los datos del cliente y los productos solicitados. 2. El comercial revisa el pedido (completándolo si es necesario) y le da curso, enviándolo al jefe técnico para que realice el análisis del mismo. 3. El jefe técnico analiza la viabilidad de la fabricación de cada producto del pedido por separado. - si el producto pedido está en el catálogo, se acepta la fabricación del mismo, - en caso contrario, el producto es especial, y el jefe técnico estudia su fabricación - si ésta es viable, la fabricación del producto especial es aceptada, - si no es viable, el producto no será fabricado. 4. Una vez estudiado el pedido completo, el jefe técnico - informa al departamento comercial de la aceptación/rechazo de cada producto integrante del pedido. - si todos los productos de un pedido han sido aceptados, genera una orden de trabajo para cada producto, a partir de una plantilla de fabricación (la estándar, si el producto estaba catalogado, o bien una nueva generada para el producto, si éste estaba fuera del catálogo). Cada orden de trabajo es enviada al jefe de producción, y queda pendiente de su lanzamiento. 5. El comercial comunica al cliente el resultado del análisis de su pedido. 42
22 Proceso de Negocio Objetivo Descripción Prioridad Plantilla Caso de Uso del Negocio Riesgos... Posibilidades... Tiempo Ejec.... Coste Ejec.... Registrar Pedido Registrar pedido de un cliente. El cliente envía una orden de pedido, que debe incluir la fecha de solicitud, datos del Rol Externo cliente y productos solicitados. Es posible que sea un empleado del departamento comercial quien introduzca el pedido, a petición de un cliente que realizó su pedido por teléfono o lo envió por fax o correo ordinario al dpto. comercial de la empresa. 2. El empleado revisa el pedido (completándolo, si es necesario), y comienza su procesamiento enviándolo al jefe técnico, encargado de su análisis. 3. El jefe técnico analiza la viabilidad de cada producto pedido por separado: Si el producto pedido está en el catálogo, su fabricación es aceptada. Roles Internos En caso contrario es considerado un producto especial y estudia su producción: - Si es viable, la fabricación del producto especial es aceptada; - Si no es viable, el producto especial no será fabricado. 4. Una vez estudiado el pedido completo, el jefe técnico... Informa al depto comercial de la aceptación o rechazo de cada producto pedido; Si todos los productos de un pedido han sido aceptados, se crea una orden de trabajo para cada producto, a partir de una plantilla de fabricación (la estándar si el producto estaba catalogado, o una nueva, específicamente diseñada para el producto, si éste no estaba en el catálogo). Cada orden de trabajo es enviada al jefe de producción, y queda pendiente de su lanzamiento. 5. El comercial comunica al cliente el resultado final del análisis de su pedido. Básico Modelado del negocio Identificamos los agentes o roles participantes (En el ejemplo: Cliente, Comercial, Jefe Técnico y Jefe Producción ) Creamos escenarios para mostrar la colaboración entre los agentes, distinguimos entre flujos básicos y alternativos: Escenarios: diagramas de secuencia (objetos son roles) 44
23 Workers en Registrar Pedido..n..5 Cliente Comercial Jefe Técnico..3 Jefe Producción Escenario Registrar Pedido : Comercial : Cliente : Jefe Técnico : Jefe Producción cursar pedido estudiar pedido [ok] realizar Producción responder estudio aceptar pedido
24 Flujos de actividades Mostrar flujo del proceso mediante diagramas de proceso diagramas de actividades con calles que corresponden a roles una actividad puede ser compleja para ser descrita en otro diagrama. Incluir sólo informaciones relevantes 47 Cliente Comercial Jefe Técnico Realizar Pedido Cursar Pedido Actividad compleja: otro diagrama propio? Analizar Viabilidad Rechazar Pedido viable? Diagrama de Proceso Si si Crear Plantilla Confirmar Pedido Generar Ordenes de Trabajo
25 Cliente Comercial Jefe Tecnico Jefe Produccion Inicio Introducir Pedido Cursar Pedido Analizar Pedido Viable Denegar Pedido [no] [si] Viable Diagrama de Proceso Aceptar Pedido Ordenar Fabricacion Planificar Produccion Reglas de Negocio Reglas de restricción Especifican políticas o condiciones que restringen la estructura y comportamiento de las informaciones Estímulo-Respuesta Restricción de operación Restricción de estructura Reglas de derivación Especifican políticas o condiciones para inferir nuevos hechos a partir de otros. 50
26 ... Objeto de Información: Pedido Glosario... Actividad: Ordenar fabricacion Atributos Codigo de pedido Fecha de solicitud Fecha límite de entrega Conjunto de {Producto} Cliente Importe total Estado Actual Restricciones - El código de pedido identificará unívocamente el pedido, y será asignado automáticamente por el sistema - La fecha de solicitud será anterior a la fecha límite de entrega. - Un pedido contendrá al menos un producto; no existe límite máximo de productos. - Un pedido siempre será solicitado por uno y solamente un cliente. - El importe total será calculado a partir del precio de cada producto pedido. Clase del Dominio : - por especificar - Origen: Analizar viabilidad Agente: Jefe Tecnico Precondiciones: La fabricacion de todos los productos pedidos es viable. Existe una plantilla de fabricación para cada uno de dichos productos. Postcondiciones: Ha sido creada una orden de trabajo para cada producto, con estado pendiente, y ha sido enviada al jefe de producción para su planificación. Caso de Uso : - por especificar- Actividad: Notificar aceptacion de pedido Origen: Analizar viabilidad Agente: Comercial Precondiciones: La fabricación de todos los productos pedidos es viable. Postcondiciones: Se ha comunicad al cliente la aceptación de su pedido. El estado del pedido es aceptado. Caso de Uso : - por especificar- Trazabilidad Especificación de las actividades Contrato: nombre de la actividad realizada por los actores Origen: Actividad/es precedente/s Agente: Actor que realiza la actividad Precondición: Estado previo a la realización de la actividad Postcondición: Estado posterior a la realización de la actividad Caso de uso: Nombre del caso de uso que se corresponde con la actividad. Este campo no se rellenará hasta que no se identifiquen los casos de uso. 52
27 Especificación de las informaciones Nombre de la información Atributos: Listado de los atributos de la información Restricciones: Restricciones sobre los atributos de la información, referidas tanto al significado como al valor de los mismos. Clase: Nombre de la clase que modelará esta información. En principio no se indica nada, y sólo se rellena este campo cuando la clase es identificada en el modelado conceptual. 53 Contenidos Introducción Dimensiones de un método Métodos pesados vs. Desarrollo Ágil Modelado del Negocio Modelado de Requisitos Modelado del Análisis Patrones GRASP Modelado del Diseño Patrones de Diseño 54
28 Modelado de Requisitos Objetivo: Se establecen los requisitos funcionales y no funcionales del sistema. A partir del modelo del negocio (si se hace) se construye el modelo de casos de uso y el modelo conceptual. 55 Tipos de Requisitos Funcionales No Funcionales Usabilidad Fiabilidad Rendimiento Adaptabilidad, Mantenimiento, Configurable Implementación: lenguajes, herramientas,.. GUI Legales 56
29 Del modelo de negocio al modelo de requisitos Extraer los casos de uso del sistema a partir de las actividades que aparecen en los diagramas de actividades. Establecer el modelo conceptual a partir de las informaciones incluidas en los diagramas de actividades. 57 Del modelo de negocio al modelo de requisitos De los diagramas de proceso... rol actividad actor Caso de Uso objeto Concepto del Dominio 58
30 Introducir Pedido Analizar Produccion Cliente JefeTecnico Cursar Pedido Ordenar Fabricacion Planificar Produccion JefeProduccion Comercial Informar Pedido Diagrama de Casos de Uso Registrar Pedido Identificación de casos de uso Objetivos Estrátegicos casos de uso del negocio Ejemplo: Evitar pérdidas Objetivos de Usuario casos de uso Ejemplo: Realizar Venta Subfunciones casos de uso? Ejemplo: Iniciar sesión (Login) 60
31 Identificación de casos de uso Establecer los límites del sistema Identificar los actores principales Es el cliente un actor en el sistema TPV? Identificar sus objetivos de usuario Posible uso de los eventos externos Definir un caso de uso por objetivo de usuario Excepción: casos de uso para manejar información (crear, eliminar, modificar, consultar) Formato expandido y esencial 6 Plantilla usecases.org Actor Principal Personas involucradas e Intereses Precondiciones Postcondiciones Escenario Principal (Flujo Básico) Extensiones (Flujos Alternativos) Requisitos especiales Tecnología y Lista Variaciones de datos Frecuencia Cuestiones abiertas 62
32 Ejemplo: Terminal Punto de Venta Realizar Venta Cajero Cliente Registrar Productos Casos de Uso Gerente Inicia Gestion Usuarios Administrador Sistema 63 Caso de uso Realizar Venta Resumen: Un cliente llega al TPV con un conjunto de artículos. El Cajero registra los artículos y se genera un ticket. El cliente paga en efectivo y recoge los artículos. Actor Principal: Cajero Personal Involucrado e Intereses: Cajero: quiere entradas precisas, rápida y sin errores de pago Compañía: quiere registrar transacciones y satisfacer clientes.... Precondición: El cajero se identifica y autentica Postcondiciones: Se registra la venta. Se calcula el impuesto. Se actualiza contabilidad e inventario... 64
33 Caso de uso Realizar Venta Flujo Básico:. A: El cliente llega al TPV con los artículos. 2. A: El cajero inicia una nueva venta 3. A: El cajero introduce el identificador de cada artículo. 4. S: El sistema registra la línea de venta y presenta descripción del artículo, precio y suma parcial. El Cajero repite los pasos 3 y 4 hasta que se indique. 5. S: El Sistema presenta el total 6. A: El Cajero le dice al Cliente el total a pagar 7. S: El Cliente paga y el sistema gestiona el pago. 8. S: El Sistema registra la venta completa y actualiza Inventario. 9. S: El Sistema presenta recibo 65 Caso de uso Realizar Venta Extensiones (Flujos Alternativos): 3a. Identificador no válido. El Sistema señala el error y rechaza la entrada 3-6a. El Cliente pide eliminar un artículo de la compra. El Cajero introduce identificador a eliminar 2. El sistema actualiza la suma... 7a. Pago en efectivo. El Cajero introduce cantidad entregada por el cliente 2. El Sistema muestra cantidad a devolver
34 Caso de uso Realizar Venta Requisitos especiales: - Interfaz de usuario con pantalla táctil en un monitor de pantalla plana. El texto debe ser visible a un metro de distancia. - Tiempo de respuesta para autorización de crédito de 30 sg. El 90% de las veces... Lista de Tecnología y Variaciones de Datos: - El identificador podría ser cualquier esquema de código UPC, EAN,.. - La entrada de información de la tarjeta se realiza mediante un lector de tarjetas.... Cuestiones Pendientes: - Explorar cuestiones de recuperación de accesos a servicios remotos - Qué adaptaciones son necesarias para diferentes negocios? 67 Diagramas de estado de casos de uso introducirarticulo Esperando Venta crearnuevaventa Introduciendo Articulos finalizarventa EsperandoPago realizarpagoenefectivo Autorizando Pago realizarpagoacredito Procesar Venta realizarpagoconcheque 68
35 Elaboración de casos de uso Cuándo? Al principio de la iteración en formato extendido y esencial, se refinan a lo largo de las iteraciones Dónde? En talleres de captura de requisitos Quién? Usuarios finales, clientes, desarrolladores Cómo? (Herramientas) Herramientas de requisitos web-enabled integradas con un procesador de texto (texto cdu) y herramientas CASE UML (diagramas de cdu) 69 Recomendaciones sobre casos de uso Define bien los límites del sistema. Los actores interaccionan con el sistema. Pregunta qué quieren los actores del sistema: Objetivos. Distingue el flujo normal de los flujos alternativos. Lo importante es escribir la descripción del caso de uso, no dibujar diagramas de casos de uso. Uso limitado de las relaciones include y extend 70
36 Recomendaciones sobre casos de uso Usa include para factorizar parte de un flujo que aparece en varios casos de uso. Las extensiones pueden incluirse dentro del caso de uso base como flujos alternativos en vez de incluir casos de uso aparte. El propio sistema puede disparar casos de uso. No incluir casos de uso CRUD; casos de uso Crear y Consulta si son relevantes. No especificar casos de uso que incluyan detalles de diseño de interfaces de usuario. 7 Modelo Conceptual (o Dominio) Representa el vocabulario del dominio: ideas, conceptos, objetos No son modelos de elementos software Clases conceptuales Clases no incluyen operaciones, sólo atributos Atributos: números o texto Asociaciones entre clases 72
37 Identificar Clases Conceptuales Si se hace modelado del negocio: Los objetos información, entrada y salida de las actividades de los diagrama de proceso, representan entidades y conceptos del dominio. Una clase conceptual para cada información relevante. De la especificación del diccionario se extraen: atributos, asociaciones, restricciones Se refina a lo largo de las iteraciones Más vale que sobren clases que falten 73 Del Modelo del Negocio al Modelo Conceptual Objeto información Pedido (modelo del negocio) Atributos: codigo, importe, estado, fechatopeentrega,.. Asociaciones: Pedido-Cliente y Pedido-Producto,.. Restricciones: fechatopeentrega > fecharecepcion,.. También es posible identificar objetos que pasan por varios estados (diagrama de estados preliminar) 74
38 Identificar Clases Conceptuales Si no se hace modelado del negocio: Usar una lista de categorías de clases Identificar nombres de las frases Categorías de clases Objetos físicos Especificaciones o descripciones de cosas Lugares Transacciones Líneas de una transacción 75 Identificar Clases Conceptuales Categorías de clases (continua) Contenedores de cosas Cosas en un contenedor Dispositivos externos al sistema Conceptos abstractos Eventos Procesos Reglas y Políticas Catálogos Contratos, documentos legales Instrumentos y servicios financieros Manuales, documentos, trabajos, libros 76
39 Modelo Conceptual Registra venta de Lineas Venta cantidad Pago Venta pagado por 0....n Descrita por 0..n Contenidas en capturada en iniciada por Cliente Catalogo Productos Usado-por 0..n Tienda direccion nombre..n TPV Contiene..n Iniciado por Registra Ventas Cajero Producto 0..n Almacena Item 0..n Describe Gerente Cliente..n Pedido EspecificaciónTarea Modelo Plantilla..n Tarea Puesto Producción..n Propio EnCatalogo OrdenTarea 0..n LineaMaterial Material Modelo conceptual inicial
40 Identificar Asociaciones Se incluyen aquellas: para la que el conocimiento de la relación deba mantenerse algún tiempo derivadas de la Lista de Asociaciones Lista de Asociaciones A es parte física de B A es parte lógica de B A está físicamente contenida en B A está lógicamente contenida en B A es una descripción de B 79 Identificar Asociaciones Lista de Asociaciones (continua) A es una línea de una transacción o informe B A es conocido/registrado/informado/capturado en B A es miembro de B A es una subunidad organizacional de B A usa o maneja a B A comunica con B A está relacionado a una transacción B A es el siguiente a B A es apropiado por B A es un evento relacionado con B 80
41 Identificar Asociaciones Encontrar clases conceptuales es más importante que encontrar asociaciones. Se debe dedicar más tiempo a encontrar clases conceptuales que asociaciones Centrarse en las asociaciones necesita-conocer Muchas asociaciones dificultan la comprensión de los diagramas Evitar asociaciones redundantes En la implementación se notará que falta o sobra alguna asociación 8 Asociaciones en TPV A es parte física de B TPV-Caja A es parte lógica de B LineaVenta-Venta A está físicamente contenida en B Item-Tienda, TPV-Tienda A está lógicamente contenida en B EspecificacionProducto-CatalogoProductos A es una descripción de B EspecificacionProducto-Item 82
42 Asociaciones en TPV A es una línea de una transacción o informe B LineaVenta-Venta A es conocido/registrado/informado/capturado en B Venta-TPV A es miembro de B Cajero-Tienda A usa o maneja a B Cajero-TPV, Gerente-TPV A comunica con B Cliente-Cajero A está relacionado a una transacción B Cliente-Pago, Cajero-Pago A es el siguiente a B LineaVenta-LineaVenta A es apropiado por B TPV-Tienda 83 Atributos Son valores de tipos de datos: Identidad no tiene sentido Tipos Primitivos: Boolean, Date, Numero, Time, String Tipos no primitivos: Direcciones, Colores, Número Tlfno, Número Seguridad Social, DNI, Código de Producto Universal, Código Postal,.. Tipos no primitivos se deben modelar como clases si: Están formados por varias partes Son aplicables operaciones Tiene otros atributos Es una cantidad con una unidad No utilizar atributos como claves ajenas 84
43 Documentos de Análisis Requisitos Casos de Uso Especificación Complementaria Captura otros requisitos Glosario Captura términos y definiciones Visión Define visión del producto de las personas involucradas, en términos de sus necesidades y características. 85 Especificación Complementaria Funcionalidad Abarca varios casos de uso Ej. Almacenar información errores, Cualquier uso requiere autenticación de usuario Requisitos No Funcionales (Atributos de calidad) Usabilidad, Mantenimiento, Adaptación, Fiabilidad, Rendimiento Restricciones Implementación (hardware, software, desarrollo) Componentes comprados y free open source Interfaces Reglas de Negocio (Ej. Reglas de descuento, Cálculo impuestos) Cuestiones Legales Cuestiones sobre el entorno físico y operacionales Información en dominios relacionados 86
44 Visión Oportunidad Definición del problema Alternativas Descripción personal involucrado (stakeholder) Objetivos usuario Perspectiva del producto Beneficios del producto Lista de características del producto Coste y precio Otros requisitos y restricciones 87 Lista de Características del Sistema Alguna funcionalidad no puede ser asignada a un caso de uso: El sistema debe hacer transacciones con sistemas externos de inventario, contabilidad y cálculo de impuestos Para algunas aplicaciones conviene más una lista de características que casos de uso Ej. Servidor de aplicación 88
45 Qué hacemos primero?. Escribir un borrador poco elaborado de la Visión en la Etapa Inicial 2. Identificar objetivos del usuario y casos de uso para ellos 3. Escribir algunos casos de uso y comenzar Especificación Complementaria 4. Refinar Visión 89 Elaboración de Requisitos y Visión Cuándo? Etapa Inicial, un poco Modelado de requisitos en cada iteración Dónde? Inicio en talleres de requisitos, se completa después Quién? Analista de sistemas, Arquitecto Software, Usuarios Cómo? Herramientas de requisitos web-enabled integradas con un procesador de texto 90
46 Casos de uso e iteraciones Asignar prioridad a casos de uso Escribir casos de uso en su forma expandida Asignar casos de uso a iteraciones. Varias versiones de un caso de uso complejo, para añadir complejidad de modo incremental. Necesidad de comunicación con el usuario Al final un caso de uso esencial se transforma en su forma concreta. 9 Iteraciones Dirigidas por el riesgo Asociar a cada caso de uso un nivel de riesgo e importancia para el negocio Comenzar pronto con la programación Realizar pruebas Rápida retroalimentación Se obtiene la arquitectura en las primeras iteraciones 92
47 Prototipo Inicial Utilizar los casos de uso. Incluye las interfaces de usuario Sirve para validar los requisitos: analista y usuarios llegan a un acuerdo sobre la funcionalidad y vocabulario. Prototipo desechable Fácil de construir con herramientas visuales. 93 Contenidos Introducción Dimensiones de un método Métodos pesados vs. Desarrollo Ágil Modelado del Negocio Modelado de Requisitos Modelado del Análisis Patrones GRASP Modelado del Diseño Patrones de Diseño 94
48 Objetivo: Modelo del análisis A partir de los casos de uso obtener el diseño preliminar del sistema que deberá ser refinado en el modelo del diseño. Nivel de abstracción más alto que en el diseño. Visión ideal del sistema. Se define una arquitectura del sistema. 95 Modelo del análisis Para cada caso de uso se define un diagrama de secuencia del sistema que muestra los eventos que un actor genera durante la interacción con el sistema (caja negra) Cada evento da origen a una operación del sistema El efecto de las operaciones se describen mediante contratos especificados mediante una plantilla (opcional). 96
49 Modelo del análisis Para cada operación del sistema se define una colaboración (diagrama de interacción) que muestra cómo deben colaborar los objetos para satisfacer la postcondición expresada en el contrato de dicha operación. Diseñar las colaboraciones, asignando responsabilidades a las clases. Utilizaremos patrones GRASP (luego patrones de diseño). Crear el modelo de clases a partir del modelo conceptual, conforme se definen las colaboraciones 97 Cajero Realizar Venta Cliente :Sistema : Cajero crearnuevaventa * introduciritem(upc,cantidad) finalizarventa() crearpago(cantidad) Operación Operación Operación CONTRATOS
50 Diagrama de Secuencia del Sistema (Caso de Uso Realizar Venta ). Cliente llega al TPV con item 2. Cajero inicia venta 3. Cajero introduce id item 4. Sistema registra línea de venta y presenta parcial Cajero repite pasos 3 y 4 hasta que acaba : Cajero crearnuevaventa() * introduciritem (CUP, cantidad) finalizarventa () crearpago() :Sistema Operaciones del sistema 5. Sistema presenta total 6. Cajero requiere pago eventos del sistema Contratos Descripción detallada del comportamiento del sistema en términos de cambios de estado a los objetos en el Modelo Conceptual, tras la ejecución de una operación del sistema. Definición basada en pre y postcondiciones Las postcondiciones indican Creación y Eliminación de objetos Creación o Eliminación de asociaciones Modificación de atributos 00
51 Contratos Las postcondiciones serán incompletas y se descubrirán detalles en el diseño. Escribimos las postcondiciones a partir del modelo conceptual. Son redundantes los contratos con los casos de uso? 0 Contratos Útiles cuando hay mucha complejidad y la precisión es un valor añadido Normalmente no son necesarios, si un equipo escribe un contrato para cada caso de uso es una señal de unos casos de uso muy pobres o falta de colaboración con los expertos o que les gusta escribir documentación innecesaria En la práctica la mayoría de detalles se pueden inferir de los casos de uso de modo obvio, aunque obvio es un concepto muy escurridizo. 02
52 Contratos. Identificar operaciones del sistema en DSS 2. Construir un contrato para operaciones complejas y quizá sutiles en sus resultados, o que no están claras en el caso de uso. 3. Describir postcondiciones Creación/Eliminación de instancias Creación/Eliminación de asociaciones Modificación de atributos No olvidar crear asociaciones! Se puede usar OCL 03 Plantilla de un Contrato Nombre operación Referencias cruzadas (opcional) Precondiciones Postcondiciones Signatura de la operación Casos de uso en los que puede tener lugar esta operación Suposiciones relevantes sobre el estado del sistema o de objetos del modelo conceptual, antes de ejecutar la operación. Suposiciones no triviales Estado de objetos del dominio después de que se complete la operación 04
53 Contrato IntroducirItem Nombre: introduciritem (itemid: itemid, cantidad: integer) Referencias Cruzadas: Registrar Venta Precondiciones: Hay una venta en curso Postcondiciones: - Se creó una instancia lv de LineaVenta - Se asoció ldv a la venta en curso v - Se asignó cantidad a lv.cantidad -lvse asoció a una EspecificaciónProducto según itemid 05 Colaboración Diagramas de secuencia o colaboración Crear estos diagramas es una actividad de AOO/DOO muy creativa. Diseño de colaboraciones es la parte más difícil. Punto de partida para la programación. Crear diagramas en parejas. Crear modelo de clases de análisis en paralelo. 06
54 Diagrama de Colaboración 2: [nuev venta] crear() GUI : IntroducirProducto(cup, cant) 6: AddLineaVenta(esp, cant) : TPV : Venta : Catalogo Productos 4: esp:= especificacion(cup) 3: crear() 8: add(lv) 7: crear(esp,cant) 5: esp:= find(cup) lv : Lineas Venta : Li neas Venta : Producto Modelo de clases del análisis El modelo de clases del análisis se crea a partir del modelo conceptual. Se añade una clase por cada tipo de objeto del dominio que participa en la colaboración. Se añaden atributos según los contratos. Se añaden métodos según las colaboraciones. Para aquellas clases con objetos con comportamiento dependiente del estado, se construye una máquina de estados: Dispositivos, Controladores, Ventanas, etc. 08
55 Modelo del análisis En la primera iteración, en esta fase se definen los subsistemas. En el modelo del diseño se refinarán las colaboraciones del análisis para añadir aspectos relacionados con la plataforma, patrones de diseño, etc. 09 Contenidos Introducción Dimensiones de un método Métodos pesados vs. Desarrollo Ágil Modelado del Negocio Modelado de Requisitos Modelado del Análisis Patrones GRASP Modelado del Diseño Patrones de Diseño 0
56 Patrones GRASP Describen los principios básicos de asignación de responsabilidades a clases. Distribuir responsabilidades en la parte más difícil del diseño OO. Consume la mayor parte del tiempo. Patrones GRASP: Experto Bajo Acoplamiento Controlador Indirección Creador Alta Cohesión Polimorfismo Variaciones Protegidas Responsabilidades y Métodos Contrato u obligación de una clase. Dos categorías: Conocer datos encapsulados privados existencia de objetos conectados datos derivados o calculados Hacer Algo él mismo, como crear un objeto o realizar un cálculo Iniciar una acción en otros objetos Controlar y coordinar actividades en otros objetos 2
57 Responsabilidades y Métodos Responsabilidades conocer se pueden inferir de las asociaciones y atributos del modelo conceptual. Puede asignarse a varias clases y métodos dependiendo de su granularidad. Una responsabilidad se implementa mediante uno o más métodos. Diagramas de interacción muestran elecciones en la asignación de responsabilidades. 3 Experto Cómo se asignan responsabilidades? Asignar una responsabilidad a la clase que tiene la información necesaria para cumplimentarla Heurísticas relacionadas Distribuir responsabilidades de forma homogénea No crear clases dios Beneficios Se conserva encapsulación: Bajo acoplamiento Alta Cohesión: clases más ligeras 4
58 Ejemplo Quién es el responsable de conocer el total de una venta? Venta fecha nota contiene....* LineaVenta cantidad Descrita por 0..* Producto descripcion precio codigo 5 Ejemplo Quién es el responsable de conocer el total de una venta? : Venta : LineaVenta : Producto t:=total() * st:=subtotal() p:=getprecio() 6
59 Ejemplo 2 Quién es el responsable de conocer todos los mensajes recibidos entre dos fechas? : mensajesperiodo(f,f2) 2: * mensajesperiodo(f,f2) :LectorCorreo :Buzon :Carpeta 3: * enfecha(f,f2) :Mensaje 7 Participante nombre apellidos numid domicilio direccionenv io Ejemplo 3 telef ono reputacion Subastas por internet PagoAnunc io +pa +p PujaOrdinaria +puja Adjudicacion PagoCuot a +pc datostarjeta estado +as +art +as +pujas +adjudicaciones AnuncioSubasta EdicionSubasta idedicion f echai nicio f echacierre es tado +anuncios +es pv precomend pujaminima cuota gastosenv io plazo f ormapago +articulos ArticuloConcreto codarticulo anticipo
60 Ejemplo 3 Quién es el responsable de obtener la puja ganadora? : cerraredicionsubasta(es) : ControladorAnuncios : Sistema 2: ce rra r() 5: obteneradjudicacion() : Anun ci osub asta 3: * as:= get() : EdicionSubasta 4: * cerrar() as : AnuncioSubasta 7: adj:= crearadjudicacion(this, pg,a) : CatalogoAdjudi caciones pujas : Puj aordinaria 6: pg := get() Creador Quién es responsable de crear una nueva instancia de una cierta clase? Asignar a la clase B la responsabilidad de crear instancias de una clase A si: B es una agregación de objetos de A B contiene objetos de A B registra instancias de A B hace un uso específico de los objetos de A B proporciona los datos de inicialización necesarios para crear un objeto de A 20
61 Creador Quién debería crear una instancia de la clase LineaVenta? Una instancia de la clase Venta es una agregación de instancias de la clase LineaVenta Venta incluirá crearlineaventa(int cantidad) Beneficios: Bajo acoplamiento 2 Ejemplo : CatalogoSubastas Quién debería crear una instancia de puja? 2:as := getsubasta(numanunci o) : pujaranuncio(partid, numanuncio, valorpuja, datostarjeta) 4: p := getparticipante(partid) : ControladorPujas : CatalogoParticipantes : Pujador 6: po := crearpuja(p, valorpuja, datostarjeta) 7: numpujas := comprobarpujas(p) 9: numserie := generarnumserie() 8: [numpujas < 3] po := crear(as, p, valorpuja, datostarjeta) as : AnuncioSubasta po : PujaOrdinaria 0: add(po) pujas : PujaOrdinaria
62 Bajo Acoplamiento Cómo reducir las dependencias entre clases? Asignar responsabilidad de modo que se consiga un bajo acoplamiento Es un patrón evaluativo No considerarlo de forma independiente, sino junto a los patrones Experto y Alta Cohesión. Beneficios: Facilita i) reutilización, ii) comprensión de las clases y iii) mantenimiento 23 Tipos de dependencias Existe acoplamiento entre una clase A y otra B si: i) A posee un atributo de tipo B ii) A tiene un método con un parámetro, una variable local o devuelve un valor de tipo B iii) A es subclase directa o indirecta de B iv) A implementa la interfaz B (Java) 24
63 Ejemplo :GUI : TPV p: Pago :Venta efectuarpago() crear() agregarpago(p) 25 Ejemplo :GUI : TPV : Venta :Pago efectuarpago() efectuarpago() crear() 26
64 Alta Cohesión Cúanto están de relacionadas las responsabilidades de una clase? Asignar una responsabilidad de modo que la cohesión siga siendo alta Baja Cohesión: Clases con responsabilidades que deberían haber delegado. Son clases dios. Difíciles de comprender, reutilizar, mantener. Ejemplo anterior: En el primer caso TPV tendría más operaciones, mejor delegar. 27 Alta Cohesión Muy baja cohesión: Clase AccesoBD-RPC Mezcla de funcionalidad Baja cohesión: Clase AccesoBD Muchos métodos Alta cohesión: Clase AccesoBD + Familia de clases relacionada Cohesión moderada: Clase Empresa: conoce empleados e información financiera 28
65 Alta Cohesión Una clase con alta cohesión no tiene muchos métodos, que están muy relacionados funcionalmente, y no realiza mucho trabajo. Colabora con otras clases. Beneficios Mejora reutilización Clases más claras, se comprenden mejor Mejora mantenimiento 29 Controlador Quién se encarga de atender los eventos del sistema Asignar responsabilidad de manejar eventos externos a un controlador: i) el sistema global, dispositivo o subsistema ii) un manejador de los eventos de un caso de uso El mismo controlador para todos los eventos de un mismo caso de uso. 30
66 Controlador Cualquier arquitectura distingue entre capa presentación y capa del dominio. Las clases de la interfaz (capa presentación) no deben encargarse de realizar las tareas asociadas a un evento. Deben delegarlas a un controlador. Separar interfaz de la lógica de aplicación. Las operaciones del sistema en la capa del dominio. 3 Controlador Un controlador es un objeto que no pertenece a la capa de presentación, se encarga de recibir y manejar un evento del sistema procedente normalmente de una interfaz gráfica. Una clase controlador incluye un método para cada operación del sistema que maneja. Controlador fachada vs. Controlador caso de uso 32
67 Controlador Cuándo debemos escoger un controlador de caso de uso? Cuando con las otras alternativas obtenemos controladores saturados Es posible llevar el estado de la sesión En el Proceso Unificado se distingue entre: objetos entidad (dominio) objetos control (controladores) objetos frontera (interfaces GUI) 33 Alumno Controlador Objeto Entidad Matriculacion Objeto Control GUIMatricula Objeto Frontera 34
68 Ejemplo controlador :AppletTPV :TPV :Venta introitem introitem(cant,cod) crearlineaventa(cant,cod) evento Acoplamiento adecuado de la capa presentación con la capa del dominio Ejemplo :AppletTPV :Venta introprod crearlineaventa(cant,cod) evento Acoplamiento inadecuado de la capa presentación con la capa del dominio 36
69 Controlador Dado el evento Introducir ítem, tendríamos varios posibles controladores: i) TPV, ii) Tienda, iv) Manejador Compra Beneficios de un controlador: Favorece la reutilización Posibilidad de capturar información sobre el estado de una sesión 37 Polimorfismo Cómo manejar las alternativas basadas en el tipo? Cómo crear componentes software conectables (pluggable)? Cuando las alternativas o comportamiento relacionado varían según el tipo asigne la responsabilidad para el comportamiento a los tipos para los que varía el comportamiento. 38
70 Polimorfismo No realizar análisis de casos de uso basado en el tipo de los objetos. if tipopago = Cheque then autorizarpagocheque else if tipopago = Efectivo then autorizarpagoefectivo else if tipopago = Tarjeta then autorizarpagotarjeta else if Sustituir análisis de casos de uso por jerarquía de herencia. 39 Polimorfismo Pago (from Clases) fechapago cantidad PagoCheque PagoTarjeta PagoEfectivo 40
71 Polimorfismo <<Interfac e>> IAdaptadorCalcDeImpuestos getimpuestos(v : Venta) : List of LineaImpuesto AdaptadorMasterImpuestos AdaptadorImpuestosPro Se añaden fácilmente las extensiones necesarias por nuevas variaciones. Los clientes no son afectados por nuevas implementaciones. Usar si realmente el punto de variación está motivado 4 Indirección Cómo evitar un acoplamiento directo entre dos clases? Asignar la responsabilidad a un intermediario que crea una indirección Ejemplo: Los adaptadores de cálculo de impuestos 42
72 Variaciones Protegidas (VP) Cómo diseñar objetos, subsistemas y sistemas de manera que las variaciones o inestabilidades en estos elementos no tenga un impacto indeseable sobre otros elementos? Identificar los puntos de variación previstos y asignar responsabilidades para crear una interface alrededor de ellos 43 Variaciones Protegidas (VP) Ejemplo: Adaptadores de cálculo de impuestos, se combina indirección con polimorfismo VP es un principio fundamental que motiva la mayoría de mecanismos y patrones en programación y diseño destinados a proporcionar flexibilidad y protección frente al cambio. 44
73 Variaciones Protegidas (VP) Diseños dirigidos por datos Lectura de códigos, valores, nombres de ficheros,.., de una fuente externa Búsqueda de servicios Servicios de nombres (JNDI de Java) o traders para obtener un servicio (UDDI para servicios web) Diseños dirigidos por un intérprete Diseños reflexivos o de nivel meta Usar la instropección Acceso Uniforme Principio de Sustitución de Liskov 45 Variaciones Protegidas (VP) Diseños de ocultación de la estructura Principio no hables con extraños VP se aplica a puntos de variación y puntos de evolución. VP es esencialmente lo mismo que los principios Ocultación de Información y Abierto-Cerrado 46
74 No hables con extraños No enviar mensajes sobre objetos indirectos, sino sobre la instancia actual (self), parámetros de métodos, atributos de la instancia actual y elementos de colecciones de la instancia actual. class A { class B { B at; C at2; void met() { C getat2() {return at2;} C obj = at.getat2(); } obj.met2();} } 47 No hables con extraños class A { class B { B at; C at2; void met(..) { C getat2() {return at2;} at.met3;} void met3() {at2.met2;} } } class C { void met2() {..} } Evitar recorrer largos caminos en la estructura de objetos y entonces enviar un mensaje: diseño frágil 48
75 No hables con extraños class Registro { private Venta venta; public void metodofragil () { Dinero cantidad = venta.getpago().getcantidadentregada()... } } Dinero cantidad = venta.getcantidadentregadaenpago() 49 Ejemplo : PetStore Autenticación Usuario AltaUsuario Casos de Uso RealizarPedido
76 Nombre: RealizarPedido Objetivo: Realizar una compra seleccionando y añadiendo productos al carro de compras, pudiendo cambiar el número de unidades de un producto del carro y generando un pedido en el momento que el usuario decida finalizar la compra. Actores: Usuario Precondiciones: El usuario debe estar autenticado. Flujo Principal:. A: Inicia compra 2. S: Crea un carro de compras nuevo asociado a la sesión del usuario. 3. A: El Usuario selecciona y añade un producto al carro de compras. 4. S: El sistema genera un nuevo ítem en el carro de compras correspondiente al nuevo producto. 5. S: Actualiza el importe total del carro de compras. 6. A: El Usuario selecciona un producto del carro de compras e introduce el número de unidades del producto que desea. 7. S: Actualiza el carro de compras reflejando las nuevas unidades. Si el número de unidades era cero, elimina el producto del carro de compras. 8. A: El Usuario finaliza la compra. 9. A: El Usuario introduce los datos personales del pedido: dirección, localidad, provincia, código postal. 0. A: El Usuario introduce los datos de la tarjeta de crédito: tipo de tarjeta, numero de tarjeta, mes y año de caducidad.. S: Genera pedido de compras con sus correspondientes líneas de pedido. Alternativas: 3.) El producto se encuentra en el carro de compras. 3..) S: El sistema incrementa en uno el número de unidades del producto del carro de compras. 9.) La forma de pago es contra reembolso. En este caso, el usuario no tiene que introducir los datos de la tarjeta de crédito. 9.2) La forma de pago es mediante transferencia bancaria. En este caso, el usuario no tiene que introducir los datos de la tarjeta de crédito. Comentarios: Modelo Conceptual Usuario 0..n Pedido..n LineaItem nombre nif correo usuario clave numero nifcliente direccion localidad provincia codigopostal tipotarjetacredito numerotarjetacredito caducidadmes caducidadyear tipopago LineaItems total estado unidades total CarroCompras 0..n ItemCarro Producto preciototal items tamaño unidades total nombre numero descripcion precio categoria origenfoto
77 Diagrama de Secuencia del Sistema para Realizar Pedido : Usuario : Sistema añadiritem(codigo) cambiarunidades(codigo,unidades) cerrarpedido(nif,direcc,localidad,provincia,cp,ttarjeta,nºtarjeta,cmes,caño,tpago) Colaboración AñadirItem : Usuario : añadiritem(codigo) 4: añadiritem(codigo) : recalculartotal() 2: añadiritem(codigo) 3: [primer producto] crear() : MostrarProductos : Añadir 0: [nuevoitem]put(codigo,i) : CarroCompras 6: [!nuevoitem]incrementarunidades() 5: i:=getitemcarro(codigo) 7: [nuevoitem]p:=get(codigo) 9: [nuevoitem]i:=creaitem(p) : ItemCarro : CatalagoProductos 8: [nuevoitem]p:=buscar(codigo) i : ItemCarro : Producto
78 Diagrama de Clases (Struts y JDBC) HttpServlet Action ActionServlet LoginAction EditarRegistroAction SalvarRegistroAction MostrarAnimalesAction AñadirCarroAction ModificarCarroAction EditarPedidoAction SalvarPedidoAction ExtendedActionServlet ServiceImpl FachadaCarroCompras IServicios 0..n..n 0..n ActionForm Usuario Pedido LineaItem Producto ItemCarro CarroCompras nombre numero unidades nombre unidades preciototal nif nifcliente total numero total items correo direccion descripcion tamaño usuario localidad precio LoginForm ModificarCarroForm PedidoForm RegistroForm clave provincia categoria codigopostal origenfot o tipotarjetacredito numerotarjetacredito caducidadmes caducidadyear tipopago LineaItems total DAOFactory estado JDBCDAOFactory UsuarioDAO LineaItem DAO ItemDAO PedidoDAO JDBCUsuarioDAO JDBCLineaItemDAO JDBCItemDAO JDBCPedidoDAO Colaboración Añadir Item (Struts y JDBC) : añadiritem (codigo) Obtiene AñadirCarroAction Obtiene el ActionForward Otiene un CarroCom prasvo accedido desde JSP : Usuario : M ostrarproductos 3: aca:=getaction() 6: af:=findforward("sucess") 2: process() 5: ccvo:=listarcarrocom pras() 7: m ostrar() 4: af:=perform () 5: añadiritem (codigo) : M ostrarcarro : E x tendeda c tio n S e rvle t aca : AñadirCarroAction : S e rvic e Im p l 4: recalc ulartotal() 6: añadiritem (codigo) 2: [nuevoitem ]i:= c reaitem (p) 0: [!nuevoitem ]increm entarunidades() 8: añadiritemcarro(codigo) 7: [prim er producto] crear() Hace uso del patrón DAO i : ItemCarro : CarroC om pras para recuperar el producto : FachadaCarroCom pras 3: [nuevoitem ]put(c odigo,i) 9: i:=getitemcarro(codigo) : [nuevoitem ]p:= recuperarproducto(codigo) : Item C arro : P roducto
79 Ejemplo 2: Caso de uso Realizar Venta en sistema TPV Resumen: Un cliente llega al TPV con un conjunto de artículos. El Cajero registra los artículos y se genera un ticket. El cliente paga en efectivo y recoge los artículos. Actor Principal: Cajero Personal Involucrado e Intereses: Cajero: quiere entradas precisas, rápida y sin errores de pago Compañía: quiere registrar transacciones y satisfacer clientes.... Precondición: El cajero se identifica y autentica Postcondiciones: Se registra la venta. Se calcula el impuesto. Se actualiza contabilidad e inventario... Caso de uso Realizar Venta Flujo Básico:. A: El cliente llega al TPV con los artículos. 2. A: El cajero inicia una nueva venta 3. A: El cajero introduce el identificador de cada artículo. 4. S: El sistema registra la línea de venta y presenta descripción del artículo, precio y suma parcial. El Cajero repite los pasos 3 y 4 hasta que se indique. 5. S: El Sistema presenta el total 6. A: El Cajero le dice al Cliente el total a pagar 7. S: El Cliente paga y el sistema gestiona el pago. 8. S: El Sistema registra la venta completa y actualiza Inventario. 9. S: El Sistema presenta recibo 58
80 Caso de uso Realizar Venta Extensiones (Flujos Alternativos): 3a. Identificador no válido. El Sistema señala el error y rechaza la entrada 3-6a. El Cliente pide eliminar un artículo de la compra. El Cajero introduce identificador a eliminar 2. El sistema actualiza la suma... 7a. Pago en efectivo. El Cajero introduce cantidad entregada por el cliente 2. El Sistema muestra cantidad a devolver Caso de uso Realizar Venta Requisitos especiales: - Interfaz de usuario con pantalla táctil en un monitor de pantalla plana. El texto debe ser visible a un metro de distancia. - Tiempo de respuesta para autorización de crédito de 30 sg. El 90% de las veces... Lista de Tecnología y Variaciones de Datos: - El identificador podría ser cualquier esquema de código UPC, EAN,.. - La entrada de información de la tarjeta se realiza mediante un lector de tarjetas.... Cuestiones Pendientes: - Explorar cuestiones de recuperación de accesos a servicios remotos - Qué adaptaciones son necesarias para diferentes negocios? 60
81 Modelo Conceptual Registra venta de Lineas Venta cantidad Pago Venta pagado por 0....n Descrita por 0..n Contenidas en capturada en iniciada por Cliente Catalogo Productos Usado-por 0..n Tienda direccion nombre..n TPV Contiene..n Iniciado por Registra Ventas Cajero Producto 0..n Almacena Item 0..n Describe Gerente Cajero Realizar Venta Cliente :Sistema : Cajero crearnuevaventa * introduciritem(upc,cantidad) finalizarventa() realizarpago(cantidad) Operación Operación Operación CONTRATOS
82 Operación: crearventa() Caso de Uso: Realizar venta Precondición: Postcondición: una instancia de Venta v fue creada v se asoció con TPV atributos de v fueron inicializados. crearventa : TPV : Cajero.. crear... crear : Venta : LineaVenta Operación: Caso de Uso: Precondición: Postcondición: introduciritem(itemid: itemid, cantidad: Dinero) Realizar venta se está procesando una venta una instancia de LineaVenta lv fue creada lv se asoció con la Venta actual lv.cantidad = cantidad lv se asoció con el Producto cuyo código es itemid. introduciritem(cant, id) : TPV.2. crearlv( ).2.. lv:=crear( ) : Venta lv : LineaVenta : Cajero.. p:= getproducto(id ).2.2. add(lv) : CatalogoProducto : LineaVenta... p:=get(id) : Producto
83 Operación: Caso de Uso: Precondición: Postcondición: finalizarventa() Realizar venta se está procesando una venta v.escompleta = true, siendo v la venta actual : Cajero : TPV : Venta. finalizarventa( ).. completar( ) El sistema presenta el total de la venta más impuestos public gettotal() { int total = 0; for each lv:lineaventa total = total + lv.getsubtotal; return total;}. gettotal( ).. * st:= getsubtotal( )... pr:= getprecio( ) : Venta : LineaVenta : Producto {st = lv.cantidad + lv.producto.precio }
84 Operación: Caso de Uso: Precondición: Postcondición: crearpago(cantidad:dinero) Realizar venta se está procesando una venta una instancia de Pago p fue creada p.cantidadentregada = cantidad p se asoció con la venta actual se asoció la venta actual con Tienda (para registrarla). realizarpago(cant ).. crearpago(cant ) : TPV v : Venta : Cajero.2. añadirventa(v )... crear( cant) : Pago : Tienda.2.. add(v) : Venta el sistema imprime el recibo con la cantidad a devolver.2. gettotal( ). getdevolucion( ).. getcantidad( ) :Cliente v : Venta p : Pago dev = p.cantidad - v.gettotal
85 Operación: Postcondición: Inicio Una instancia de Tienda, TPV y CatalogoProductos es creada. Instancias de Producto son creadas y asociadas a CatalogoProductos Tienda se asocia a CatalogoProductos Tienda se asocia a TPV TPV se asocia a CatalogoProductos : TPV..2. cargarprod( ).2. crear( ). crear( ).. crear( ) Raiz : Tienda : CatalogoProducto... crear( ) add(p)..2.. crear( ) p: Producto : Producto Producto precio descripcion id..n describe getprecio()..n LineaVenta..n registra CatalogoProducto cargarprod() getproducto() Usa Tienda añadirventa() posee Venta completar() Captura crearlv() crearpago() getdevolucion() gettotal() pagada Pago cantidad getcantidad() 0..n TPV crearventa() finalizarventa() introduciritem() realizarpago() Modelo de Clases
86 public class Producto { private itemid id; private Dinero precio; private String descripcion; public Producto(ItemID id, Dinero precio, String desc) { this.id = id; this.precio = precio; this.descripcion = desc;} public ItemId getid() { return id; } public Dinero getprecio() { return precio; } public String getdescripcion() { return descripcion; } } public class CatalogoProducto { private Map productos = new HashMap (); public CatalogoProductos () { ItemId id = new ItemID(00); ItemId id2 = new ItemID(200); Dinero precio = new Dinero (3); Dinero precio2 = new Dinero (5); Producto p; p:= new Producto (id, precio, producto ); productos.put(id, p);) } p = new Producto (id2, precio2, producto 2 ); productos.put(id2, p);) } } public Producto getproducto (ItemId id) { return (Producto) productos.get(id); } public class TPV { private CatalogoProducto catalogo; private Venta venta; } public TPV(CatalogoProducto cp) { catalogo = cp; } public void crearnuevaventa () { venta = new Venta(); } public void finalizarventa () { venta.completar(); } public void introduciritem (ItemId id, int cant) { Producto p = catalogo.getproducto (id); Venta.crearLineaVenta(p, cant); } public void realizarpago() { venta.crearpago(cant) } public class Pago { private Dinero cantentregada; } public Pago (Dinero cantidad) { cantentregada = cantidad; } public Dinero getcantentregada () { return cantentregada; }
87 public class Venta { private List lineaventas = new ArrayList(); private Date fecha = new Date(); private boolean escompleta; private Pago pago; } public Dinero getdevolucion() { return pago.getcantentregada(). minus(gettotal() ); } public void completar() { escompleta = true; } public void crearlineaventa(producto p, int cant) { lineaventas.add(new LineaVenta(p,cant)); } public Dinero gettotal() { Dinero total = new Dinero(); Iterator i = lineaventas.iterator(); while (i.hasnext()) { LineaVenta lv = (LineaVenta) i.next(); total.add(lv.getsubtotal()); } return total; } public void crearpago (Dinero cantentregada) { pago = new Pago(cantEntregada); } public class LineaVenta { private int cantidad; private Producto producto; } public LineaVenta(Producto p, int cant) { this.producto = p; this.cantidad = cant; } public Dinero getsubtotal () { return producto.getprecio().times(cantidad); } public class Tienda { private CatalogoProducto catalogo; private TPV tpv; } public TPV gettpv { return TPV; }
88 Ejemplo 3. La Megasubasta Realizar puja ordinaria Cerrar edición de subasta Pujador Cancelar puja ordinaria Realizar pago de subasta ordinaria Rechazar adjudicación Sistema Notif icar adjudicatario Teleoperador Participante Env iar artículo Crear edición de subasta Anular anuncio de subasta Login Administrador Anular edición de subasta Participante Conf irmar compra Incrementar of erta Devolv er artículo Participante Tarjeta de crédito Niv el de crédito n es titular nombre apellidos numid domicilio direccionenv io telef ono PagoAdjudicacion importe f echapago mediopago datostarjeta reputacion realiza 0..n PagoCuota importe f echapago PujaOrdinaria numserie v alorpuja datostarjeta f echa 0.. Adjudicacion 0..n 0.. Un pujador sólo puede hacer hasta 3 pujas por anuncio de subasta. 0..n Representa la especificación de un tipo de artículo. AnuncioSubasta EdicionSubasta idedicion f echainicio f echacierre..n numanuncio pv precomend pujaminima cuota gastosenv io plazo 0..n..n ArticuloConcreto codarticulo n Articulo idespec caracteristicas pv precomend f ormapago anticipo
89 Caso de Uso: Crear edición Use Case UC: Crear edición de subasta Personal Involucrado: Administrador: Desea que la lectura de datos sea correcta. Proveedor: Desea que el anuncio refleje fielmente la información proporcionada por él. Participante: Desea que la descripción del artículo se ajuste a la realidad, así como la fotografía. Que los datos mostrados en el anuncio sean correctos. Actor: Administrador Precondiciones: El Administrador está identificado y autenticado en el sistema. Postcondiciones: Se creó una nueva edición de subasta con un conjunto de anuncios de subasta. 77 Caso de Uso: Crear edición Escenario Principal (o Flujo Básico):. El Administrador quiere crear una edición de subasta. 2. El Administrador introduce la fecha de inicio y cierre de la edición. 3. El Sistema registra la nueva edición, le asigna un número de edición y solicita la introducción de nuevos anuncios de subasta en la misma. Para cada subasta que el Administrador desea crear se realizan los pasos 4-4. El Administrador crea una nueva subasta ordinaria. 5. El Administrador elige el artículo a subastar y el número de artículos. 6. El Administrador introduce (en cualquier orden) el valor de la puja mínima, la cuota de participación, los gastos de envío y el plazo de entrega. 7. El Sistema valida los datos. 8. El Sistema presenta al Administrador los datos introducidos con el IVA calculado al valor de puja mínima, a la cuota de participación y a los gastos de envío. 9. El Administrador guarda los cambios. 0. El Sistema registra la nueva subasta y asigna un número a la subasta.. El Sistema establece el estado de los artículos subastados a En subasta. 78
90 : Administrador : Sistema crearedicion(fechainicio, fechafin) * introducirsubasta(idespec, cantidad, puja, cuota, gastos, plazo) Con idespec se indica la especificación de un artículo. Operación: crearedicion (fechainicio: Fecha, fechafin: Fecha) Caso de Uso: Crear edición de subasta Precondiciones: El Administrador está identificado y autenticado. Postcondiciones: - Se creó una instancia edicionactual de EdicionSubasta. - Se inicializó edicionactual.idedicion - edicionactual.fechainicio = fechainicio - edicionactual.fechacierre = fechafin - Se creó una colección de tipo AnuncioSubasta y se asoció con edicionactual. - Se insertó edicionactual con el CatalogoEdiciones 3. generaridedicion(). crearedicion(fechainicio, fechafin) 2. edicionactual := crear(fechainicio, fechafin) : ControladorAnuncios edicionactual : EdicionSubasta : Administrador 5. addedicion(edicionactual) 4. anuncios:= crear() : CatalogoEdiciones : AnuncioSubasta 6. add(edicionactual) : EdicionSubasta Se crea la colección de anuncios de subasta.
91 Operación: introducirsubasta(idespec: idespec, cantidad: integer, puja: tipodinero, cuota: tipodinero, gastos: tipodinero, plazo: intervalo) Caso de Uso: Crear edición de subasta Precondiciones: Se está creando una edición de subasta (ControladorAnuncios tiene asociada una edicionactual) Postcondiciones: - Se creó una instancia as de AnuncioSubasta. - Se inicializó as.numsubasta - Se asoció as con edicionactual. - Se asoció as con cantidad instancias de ArticuloConcreto basándose en idespec. - Los atributos as.nombrearticulo, as.descarticulo y as.pvprecomend se inicializaron de acuerdo con los atributos del Articulo a cuyo a.idespec es idespec. - as.pujaminima = puja - as.cuota = cuota - as.gastosenvio = gastos - as.plazo = plazo - as.formapago y as.anticipo tomaron valores por defecto. - Se creó una colección pujas para objetos de tipo PujaOrdinaria y se asoció con as. - Se creó una colección adjudicaciones para objetos de tipo Adjudicacion y se asoció con as. - Se asoció as con la colección de AnuncioSubasta de edicionactual (se insertó en la colección). - Se insertó as en el CatalogoSubastas 5: add(as) : CatalogoSubastas : Subasta 4: addsubasta(as) : introducirsubasta(idespec, cantidad, puja, cuota, gastos, plazo) 4: as := crearsubasta(a, cantidad, puja, cuota, gastos, plazo) 3: add(as) : ControladorAnuncios edicionactual : EdicionSubasta : AnuncioSubasta : Administrador 2: a := getarticulo(idespec) 5: as := crear(edicionactual, a, cantidad, puja, cuota, gastos, plazo) : Articulo : CatalogoArticulos 6: pujas := crear() : PujaOrdinaria 3: a: = get(idespec) as : AnuncioSubasta 7: adjudicaciones := crear() as también obtiene de a los atributos nombre, descripción y pv p (se obv ia). 8: articulos := crear() 2: add(ac) 9: num := getnumarticulos() 0: [num >= cantidad] *ac := getarticuloconcreto() : Adjudicacion : Articulo : ArticuloConcreto a : Articulo : [..cantidad]* get() Itera sobre la colección buscando un artículo disponible. if (num >= cantidad) { while (cantidad > 0) { ArticuloConcreto ac = a.getarticuloconcreto(); ac.setestado("en subasta"); articulos.add(ac); cantidad--; } }
92 Use Case UC2: Realizar puja ordinaria Personal Involucrado: La Mega Subasta, Pujador Actor: Pujador Precondiciones: Pujador es autenticado Postcondiciones: Una puja ordinaria es creada. Escenario Principal (o Flujo Básico):. El Pujador decide pujar en un anuncio de subasta. 2. El Sistema comprueba que el Pujador no ha pujado tres veces en el anuncio. 3. El Pujador introduce el valor de la puja y los datos de su tarjeta de crédito (la primera vez). 4. El Sistema pide confirmación para crear la puja. 5. El Pujador acepta. 6. El Sistema se comunica con la Entidad de Crédito y carga el valor de la cuota de participación del anuncio de subasta en la tarjeta especificada por el Pujador. 7. El Sistema registra el pago de la cuota realizado (importe y fecha de pago). 8. El Sistema registra la nueva puja (le asigna un número de serie y almacena el valor de la puja, los datos de la tarjeta y la fecha de realización). 9. El Sistema notifica al usuario. : Pujador : Sistema : GestorPagos pujaranuncio(partid, numanuncio, valorpuja, datostarjeta) pagocuota() pagar(pago) Se considera el escenario en el que el Pujador es un Participante que ha entrado en el sistema y está pujando por Internet.
93 Operación: pujaranuncio (partid: NumID, numanuncio: NumSubasta, valorpuja: real, datostarjeta: DatosTarjeta) Casos de Uso: Realizar puja ordinaria Controlador: ControladorPujas Precondiciones: Postcondiciones: - Se creó una instancia po de PujaOrdinaria. - po.numserie se inicializó. - po.valorpuja = valorpuja; - po.datostarjeta = datostarjeta; - po.fecha = fechaactual - po se asoció con el AnuncioSubasta as cuyo numanuncio es numanuncio. - po se asoció con el Participante cuyo numid es partid. - po se inserto en la colección de pujas de AnuncioSubasta : CatalogoSubastas 3: as := get(numanuncio) : Subasta : Participante La puja se introduce en CatalogoPujas. 2: as := getsubasta(numanuncio) 5: p := get(partid) : pujaranuncio(partid, numanuncio, valorpuja, datostarjeta) 4: p := getparticipante(partid) : ControladorPujas : CatalogoParticipantes : Pujador 6: po := crearpuja(p, valorpuja, datostarjeta) 7: numpujas := comprobarpujas(p) 9: numserie := generarnumserie() 8: [numpujas < 3] po := crear(as, p, valorpuja, datostarjeta) as : AnuncioSubasta po : PujaOrdinaria private int comprobarpujas(participante p) { int numpujas = 0; Iterator it = pujas.iterator(); while (it.hasnext()) { PujaOrdinaria puja = (PujaOrdinaria)it.next(); if (puja.getparticipante().equals(p)) { numpujas++; } } return numpujas; } 0: add(po) pujas : PujaOrdinaria Inserción ordenada: consideramos que la colección está ordenada de mayor a menor valor de puja.
94 Operación: pagocuota() Casos de Uso: Realizar puja ordinaria Controlador: ControladorPujas Precondiciones: Se está creando una puja ordinaria po. Postcondiciones: - Se creó una instancia pc de PagoCuota. -tarjetaorigen = datostarjeta de po e importe = el valor de la cuota (en el AnuncioSubasta as asociado con la PujaOrdinaria po). - Se asoció la instancia po de PujaOrdinaria con la instancia pc de PagoCuota. - Se realizó el pago especificado en pc a través del GestorPagos. - Se asoció el PagoCuota pc con el CatalogoPagos del ControladorPujas (se insertó en el catálogo). : CatalogoPagos 7: add(pc) : Pago 6: addpago(pc) : pagocuota() : ControladorPujas 5: pagar(pc) : GestorPagos : Pujador 2: pc := anotarpagocuota() PujaOrdinaria en curso. 4: pc := crear(cuota, datostarjeta) po : PujaOrdinaria pc : PagoCuota 3: cuota := getcuota() : AnuncioSubasta
95 Use Case UC4: Cerrar edición de subasta Personal Involucrado: La Mega Subasta, los Pujadores. Actor: Sistema Precondiciones: La fecha de cierre de una edición de subasta ha vencido. Postcondiciones: Se cierran los anuncios de subasta de la edición. Se emite la lista de resultados. Escenario Principal (o Flujo Básico):. El Sistema comprueba que la fecha de cierre de una edición de subasta ha vencido y procede a cerrarla. 2. El Sistema obtiene los anuncios de subasta de la edición de subasta. Para cada anuncio de subasta el Sistema realiza los pasos 3-6: 3. El Sistema establece el estado de la subasta a Cerrado. 4. El Sistema obtiene una lista de las Pujas ganadoras (las de mayor valor y tantas como artículos subastados). 5. El Sistema registra las adjudicaciones asociando para cada una la Puja ganadora, el anuncio de subasta y uno de los artículos subastados. 6. El Sistema establece el estado de los artículos subastados a Adjudicado. 7. El Sistema emite la lista de resultados de la edición de subasta. Operación: cerraredicionsubasta(es: EdicionSubasta) Caso de Uso: Cerrar edición de subasta Precondiciones: La fecha de cierre de la edición de subasta ha vencido. Postcondiciones: Para cada AnuncioSubasta as de la EdicionSubasta es: Se crearon n instancias adj de Adjudicacion (n = número de pujas adjudicatarias de as). Para cada Adjudicacion adj: adj se asoció con as, la PujaOrdinaria adjudicataria y un ArticuloConcreto. adj se asoció a la colección de objetos de tipo Adjudicacion de as.
96 : cerraredicionsubasta(es) : ControladorAnuncios int numajudicaciones = Minimo(pujas.length(), articulos.length()); : Sistema 2: cerrar() 5: numadjs = calcularadjudicaciones() 4: * cerrar() 9: [..numadjs]* add(adj) : AnuncioSubasta : EdicionSubasta as : AnuncioSubasta adjudicaciones : Adjudicacion 3: * as := get() 8: [..numadjs]* adj := crear(as, pg, a) 6: [..numadjs]* pg := get() pujas : PujaOrdinaria 7: [..numadjs]* a:= get() Se recorre la colección de pujas obteniendo las pujas ganadoras (consideramos que la colección está ordenada de mayor a menor valor de puja). : ArticuloConcreto adj : Adjudicacion Se crean tantas adjudicaciones como pujas ganadoras haya. Cada adjudicación se asocia con un ArticuloConcreto, una puja adjudicataria y con la subasta. Profesor..n nombre dni Profesor Contratado Profesor Universitario empresa cuentabancaria Ejercicio 4. Gestión Cursos de Promoción Educativa registra Especificación Curso participa nombre horario duración num creditos corte matrícula 0..n num max alum num min alum programa criterio selección presupuesto reqpreinscripcion Laboratorio 0..n asignado 0..n Aula 0..n reservada 0..n Preinscripción matriculable posee 0..n Curso se_abre Proyecto Presupuestario posee 0..n 0..n 0..n 0.. Curso tiene 0..n Grupo pertenece..n realiza Alumno expediente dni nombre realiza 0..n tiene 0..n Matricula Catálogo Curso Calificación..n 0..n pagado por Curso Especialista Universitario Curso Master Curso P.E. Alumno Universitario Alumno Titulado Pago
97 Registrar curso Responsable Rebajar Mínimo Aprobar curso Servicio CPE Cerrar curso Crear proyecto Servicio Contabilidad Fin matriculacion Realizar preinscripción Sistema Avisar admitidos Alumno Matriculación Cancelar curso Caso de uso: Registrar Curso Actor Principal: Responsable Precondiciones: El responsable se identifica y se autentica Se está en el periodo de registro de cursos de PE. Postcondiciones: Se registra el curso Flujo Básico:. El responsable comienza un nuevo registro. 2. El responsable introduce los siguientes datos del curso: nombre, duración, fecha realización, fecha preinscripción, horario, nº créditos equivalencia, si está abierto o cerrado a titulados, nº max alumno, nº min. alumnos, programa y criterio de selección. 3. El responsable introduce el presupuesto global del curso, coste de la matricula, ayudas externas, pago del profesorado, costes de publicidad, costes en material fungible. 4. El responsable introduce las aulas y laboratorios que requiere para la ejecución del curso, así como sus horarios respectivos. 5. El sistema accede al sistema de organización docente y comprueba que los requisitos de aulas y laboratorios son factibles. 6. El responsable introduce para cada profesor su nombre, dni, la empresa a la que pertenece ( en caso de pertenecer a alguna ), si pertenece o no a la universidad, su carga respecto al curso en créditos y su cuenta bancaria si procede. 7. El sistema recoge los datos del profesorado, accede al sistema de organización docente y comprueba que las cargas asignadas a los profesores universitarios son correctas. 8. El sistema registra el curso.
98 : Responsable : SistemaGCPE :SistemaOrganizacionDocente : crearcurso(especificacion) 2: *addreqaulalab(reqaulalab) 3: *addprofesorado(nombre,dni,tipo,empresa,cuentabancaria, cargadocente) 4: datosprofesor:= *getdatosprofesor(dni) 5: finalizarregistro() Si es una nueva edición del curso y no ha habido cambio alguno en la especificación, presupuesto, ni en los requerimientos de aulas, entonces se aprueba el curso 'aprobarcurso()'. 3: espec := get(datosespecificacion) : CatalogoEspecificaciones : Especificación Curso : Matricula 2: espec := getespecificacion(datosespecificacion) Si espec se creó en 4, se añade al catálogo. Si la edición del curso no es la primera pasará a estado aprobado. : addespecificacion(espec) 0: create() : crearcurso(datosespecificacion,resp) 7: create(espec) : ControladorRegistrarCurso c : Curs o 8: create() : Preinscripcion : Responsable 4: [espec = null] create(datosespecificacion,resp) 9: create() El estado del curso : CriterioPreinscripcion espec : EspecificacionCurso es aprobado si se genera el mensaje : ParticipacionCurso 6: addcriterio(criterio) 7 y registrado si no se genera. 5: criterio:= createcriterio() Se crearán los cirterios elegidos en datosespecificación. :FactoriaCriterios
99 : Responsable : Profesor 4. create(datosprofesor) : CatalogoProfesor 3. datosprofesor:= getdatosprofesor(dni) :SistemaOrganizacionDocente Trata el caso de añadir un Si la carga en cursos de PE del profesor no excede la cantidad estipulada se realizarán los pasos del 4 al p := getprofesor(dni) Si el profesor no está en el catálogo se piden sus datos, se crea y se añade al catálogo. part : ParticipacionCurso Est e mensaj e y los sigui en te s se ge ne ra rán si e l p ro fesor cumple lascondi ciones estab lecid as en cuanto a su carga docente. profesor universitario, sino lo fuera necesitaría el resto de 6. create(cargadocente,p) datos empresa y cuentabancaria.. addp ro fesorad o(nombre,dni,ti po,empre sa,cuenta Bancaria,ca rg adocente ) 5. addparticipacion(p,cargadocente) 7. addparticipacion(part) : ControladorRegistrarCurso c : Curso p : Profesor Universita ri o Esta col aboración serí a pa ra el caso de que el profesor fuera de tipo uni versitario. Si fuese de tipo contrata do sería el mi smo proceso obviando los pasos de acceso al sistema de o rgan izaci on docente. 9. ad d(pa rt) : ParticipacionCurso 8. add(part) : ParticipacionCurso Caso de uso: Realizar Preinscripción Actor Principal: Alumno Precondiciones: El alumno se identifica y autentica. El curso ha sido aprobado por el Consejo de Gobierno. Se está en el periodo de preinscripción del curso. Postcondiciones: El alumno se preinscribe en el curso. Se envió un al alumno indicando si fue aceptada o rechaza su preinscripción. Flujo Básico:. El alumno comienza una nueva preinscripción. 2. El alumno elige un curso sobre el que se desea preinscribirse. 3. El sistema comprueba que el alumno no realizó con anterioridad el curso y que no estaba preinscrito con anterioridad. 4. El sistema accede al sistema de gestión académica y comprueba que los datos académicos del alumno cumplen los requisitos para preinscribirse en el curso. 5. El sistema crea y envía un al alumno confirmando la preinscripción. 6. El sistema añade el alumno a la lista de preinscritos.
100 : ControladorPreisncripcionCurso 3: c := get(idcurso) : Preinscripción : Catálogo Curso : Curso 9: *get() 5: add(preins) 2: c := getcurso(idcurso) 8: preinscrito:= isalumnopreinscrito(a.dni) : realizarpreinscripcion(idcurso,dnialumno) 7: addpreisncripcion(a) c : Curso 2: [expvalido= true] create(a,c) preins : Preinscripción : Alumno 4: a := getalumno(dnialumno) 0: [preinscrito= false] expvalido:= isexpedvalido(a) 3: addpreinscripcion(preins) La preinscripción : Alumno : (CatalogoAlumno) se crea en estado no admitido. a : Alumno 6: create(datosalumno) : EspecificacionCurso 5: datosalumno:= getdatosalumno(dnialumno) Si preinscrito = true, 4: add(preins) : *aplicar() los mensajes del 0 al 4 no son generados. :SistemaGestiónAcadémica Si el alumno no está en el catálogo se piden sus datos, se : Preinscripción crea y se añade al catálogo. :Criterio Contenidos Introducción Dimensiones de un método Métodos pesados vs. Desarrollo Ágil Modelado del Negocio Modelado de Requisitos Modelado del Análisis Patrones GRASP Modelado del Diseño Patrones de Diseño 200
101 Modelo del diseño Objetivo: Refinar el diseño del sistema del modelo del análisis considerando los requisitos no funcionales y restricciones del entorno de implementación. De manera iterativa se refina el modelo de clases y las colaboraciones del análisis hasta obtener un diseño del sistema adecuado para pasar a la implementación. 20 Cuestiones del diseño Identificar clases (atributos y métodos) e interfaces en el modelo de clases del diseño Establecer asociaciones entre clases. Establecer navegabilidad para todas las asociaciones. Determinar visibilidad entre clases. Incluir relaciones de dependencia entre clases. 202
102 Cuestiones del diseño Definición de la arquitectura del sistema Subsistemas: Paquetes Patrones de diseño Estructuras de datos Diseño del interfaz de usuario Manejo de la persistencia Distribución 203 Validación del sistema Utilizar los casos de uso. Para cada caso de uso comprobar que el sistema muestra el comportamiento esperado, considerando el escenario principal y los excepcionales o alternativos. Considerar requisitos no funcionales. 204
103 Programación Prueba primero Práctica promovida por XP Ciclo escribo código de prueba, escribo código de producción, pruebo Ventajas Se escriben las pruebas! Satisfacción del programador: He superado la prueba! Ayudan a comprender mejor las interfaces y comportamiento Verificación de la corrección No hay miedo a los cambios: existen cientos de pruebas de unidad! 205 Programación Prueba primero Antes de escribir el método gettotal() en la clase Venta, escribimos un método de prueba de unidad en una clase TestVenta que Crea una venta Le añade varias líneas de venta Obtiene el total y comprueba si tiene el valor esperado Luego escribimos el método gettotal() y realizamos la prueba. Junit es un framework open source para pruebas de unidad para código Java ( 206
104 Programación Prueba primero class TestVenta extends TestCase { public void pruebatotal() { Dinero total = new Dinero (7.5); Dinero precio = new Dinero (2.5); ItemID id = new ItemId (); Producto p = new Producto (id, precio, producto ); Venta venta = new Venta (); venta. crearlineaventa(p,); venta. crearlineaventa(p,2); } } assertequals(venta.gettotal(), total); 207 Arquitectura de tres capas Presentación Lógica de la Aplicación Almacenamiento Principio de Separación Modelo-Vista Los objetos del modelo o dominio no conocen directamente a los objetos de la vista o presentación 208
105 Separación Modelo-Vista Los objetos del modelo (dominio) no deben conocer directamente a los objetos de la vista (presentación). Las clases del dominio encapsulan la información y el comportamiento relacionado con la lógica de la aplicación. Las clases de la interfaz (ventanas) son responsables de la entrada y salida, capturando los eventos, pero no encapsulan funcionalidad de la aplicación. 209 Separación Modelo-Vista Justificación Clases cohesivas Permitir separar el desarrollo de las clases de la vista y del dominio Minimizar el impacto de los cambios en la interfaz sobre las clases del modelo. Facilitar conectar otras vistas a una capa del dominio existente. Permitir varias vistas simultáneas sobre un mismo modelo. Permitir que la capa del modelo se ejecute de manera independiente a la capa de presentación. 20
106 Iteración 2: Ejemplo TPV Se considera nueva funcionalidad del caso de uso Registrar Venta : desarrollo incremental Uso de servicios externos (impuestos, autorizaciones,..) Reglas para establecer precios Reglas de negocio conectables Diseño para actualizar ventana cuando cambia el total de la venta No se refina el caso de uso. Talleres de requisitos para escribir en detalle otros casos de uso 2 : Cajero : Sistema : Calculo Impuestos : Servicio Autorizacion : Servicio Contabilidad crearnuevaventa * introduciritem(id,cant) finalizarventa li := getimpuestos(venta) realizarpago (numtarj, fecha) ok:=solicitarautorizacion putadmisible(admisible) addventa(venta)
Proceso Unificado de Rational PROCESO UNIFICADO DE RATIONAL (RUP) El proceso de desarrollo de software tiene cuatro roles importantes:
PROCESO UNIFICADO DE RATIONAL (RUP) El proceso de desarrollo de software tiene cuatro roles importantes: 1. Proporcionar una guía de actividades para el trabajo en equipo. (Guía detallada para el desarrollo
Elementos requeridos para crearlos (ejemplo: el compilador)
Generalidades A lo largo del ciclo de vida del proceso de software, los productos de software evolucionan. Desde la concepción del producto y la captura de requisitos inicial hasta la puesta en producción
PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso
PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación II MODELOS y HERRAMIENTAS UML 1 1 Modelado de casos de uso (I) Un caso de uso es una técnica de modelado usada para describir lo que debería hacer
Gestión y Desarrollo de Requisitos en Proyectos Software
Gestión y Desarrollo de Requisitos en Proyectos Software Ponente: María Jesús Anciano Martín Objetivo Objetivo Definir un conjunto articulado y bien balanceado de métodos para el flujo de trabajo de Ingeniería
Metodología básica de gestión de proyectos. Octubre de 2003
Metodología básica de gestión de proyectos Octubre de 2003 Dentro de la metodología utilizada en la gestión de proyectos el desarrollo de éstos se estructura en tres fases diferenciadas: Fase de Éjecución
Los requisitos de un Sistema de Información
Captura de requisitos Captura de Requisitos en el PUD Los requisitos de un Sistema de Información Modelo de Casos de Uso Otros instrumentos 1 Iteración en PUD Planificación de la Iteración Captura de requisitos:
Fundamentos de Ingeniería del Software. Capítulo 3. Análisis de Requisitos Introducción a los casos de uso
Fundamentos de Ingeniería del Software Capítulo 3. Análisis de Requisitos Introducción a los casos de uso Cap 3. Análisis de Requisitos Estructura 1. Actividades iniciales. 2. Técnicas de recogida de la
Universidad acional Experimental Del Táchira Decanato de Docencia Departamento de Ingeniería en Informática
Universidad acional Experimental Del Táchira Decanato de Docencia Departamento de Ingeniería en Informática Metodología Evolutiva Incremental Mediante Prototipo y Técnicas Orientada a Objeto (MEI/P-OO)
CICLO DE VIDA DEL SOFTWARE
CICLO DE VIDA DEL SOFTWARE 1. Concepto de Ciclo de Vida 2. Procesos del Ciclo de Vida del Software 3. Modelo en cascada 4. Modelo incremental 5. Modelo en espiral 6. Prototipado 7. La reutilización en
I. T. en Informática de Sistemas. Facultad de Informática
I. T. en Informática de Sistemas. Facultad de Informática Construcción de Software Caso práctico para clase Modelo de casos de uso Objetivos del proyecto Los dos grandes objetivos de este proyecto son
Un proceso software basado en UML
Análisis y Diseño del Software Curso 2005/2006 Un proceso software basado en UML Jesús García Molina Departamento de Informática y Sistemas Universidad de Murcia http://dis.um.es/~jmolina Contenidos Introducción
Gestión de Configuración del Software
Gestión de Configuración del Software Facultad de Informática, ciencias de la Comunicación y Técnicas Especiales Herramientas y Procesos de Software Gestión de Configuración de SW Cuando se construye software
DISEÑO DE COMPONENTES DE SOFTWARE *
DISEÑO DE COMPONENTES DE SOFTWARE * NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP * Resumen del capítulo 10 de libro de [Pressman 2010] V:18-11-2008 (c) P. Gomez-Gil, INAOE.
Análisis del Sistema de Información
Análisis del Sistema de Información 1 1. Definición y objetivos análisis.(del gr. ἀνάλυσις). 1. m. Distinción y separación de las partesdeun todo hasta llegar a conocer sus principios o elementos. 2. m.
Capítulos 2 y 5: Modelación con UML y Modelo Objeto
Capítulos 2 y 5: Modelación con UML y Modelo Objeto Asignando Responsabilidades 2 Responsabilidades son obligaciones de un objeto, o comportamiento relacionado a su rol en el sistema Qué hace un objeto?
<Generador de exámenes> Visión preliminar
1. Introducción Proyecto Final del curso Técnicas de Producción de Sistemas Visión preliminar Para la evaluación de algunos temas de las materias que se imparten en diferentes niveles,
Planificación de Sistemas de Información
Planificación de Sistemas de Información ÍNDICE DESCRIPCIÓN Y OBJETIVOS...1 ACTIVIDAD 1: INICIO DEL PLAN DE SISTEMAS DE INFORMACIÓN...4 Tarea 1.1: Análisis de la Necesidad del...4 Tarea 1.2: Identificación
Ejercicio Guiado de Análisis y Diseño Orientado a Objetos. Ejemplo: CAJERO AUTOMÁTICO
Ejercicio Guiado de Análisis y Diseño Orientado a Objetos Ejemplo: CAJERO AUTOMÁTICO El siguiente ejercicio muestra las diferentes actividades que se realizan dentro del desarrollo de un producto software
Planificación de Sistemas de Información
Planificación de Sistemas de Información ÍNDICE DESCRIPCIÓN Y OBJETIVOS... 1 ACTIVIDAD 1: INICIO DEL PLAN DE SISTEMAS DE INFORMACIÓN... 4 Tarea 1.1: Análisis de la Necesidad del... 4 Tarea 1.2: Identificación
Solución de una Intranet bajo software Open Source para el Gobierno Municipal del Cantón Bolívar [IOS-GMCB] Gobierno Municipal del Cantón Bolívar
Gobierno Municipal del Cantón Bolívar Versión: Solución de una Intranet bajo software Open Source para el Gobierno Municipal del Cantón Bolívar [IOS-GMCB] Plan de Desarrollo de Software Universidad
Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas.
El primer paso en el diseño de una base de datos es la producción del esquema conceptual. Normalmente, se construyen varios esquemas conceptuales, cada uno para representar las distintas visiones que los
El Proceso Unificado de Desarrollo de Software
El Proceso de Desarrollo de Software Ciclos de vida Métodos de desarrollo de software El Proceso Unificado de Desarrollo de Software 1 Fases principales del desarrollo de software Captura de requisitos:
http://www.informatizate.net
http://www.informatizate.net Metodologías De Desarrollo De Software María A. Mendoza Sanchez Ing. Informático - UNT Microsoft Certified Professional - MCP Analísta y Desarrolladora - TeamSoft Perú S.A.C.
Ingeniería de Software
Ingeniería de Software Agustín J. González ElO329: Diseño y Programación Orientados a Objeto Adaptado de: http://www.dsic.upv.es/~uml http://inst.eecs.berkeley.edu/~cs169/ entre otras fuentes. Definiciones
UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos
2.1. Principios básicos del Modelado de Objetos UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos Hoy en día muchos de los procesos que intervienen en un negocio o empresa y que resuelven
Sistema para Gestión Hotelera Visión
Sistema para Gestión Hotelera Visión Tabla de Contenidos 1. Introducción 4 1.1 Propósito 4 1.2 Alcance 4 1.3 Definiciones, Acrónimos, y Abreviaciones 4 1.4 Referencias 4 2. Posicionamiento 4 2.1 Oportunidad
ANÁLISIS Y DISEÑO DE SISTEMAS DEPARTAMENTO DE CIENCIAS E INGENIERÍA DE LA COMPUTACIÓN
ANÁLISIS Y DISEÑO DE SISTEMAS DEPARTAMENTO DE CIENCIAS E INGENIERÍA DE LA COMPUTACIÓN Clase 6: Ingeniería de Requerimientos Metododología y Ejemplo Primer Cuatrimestre 2015 Mg. María Mercedes Vitturini
ESTE EJERCICIO ES DE TIPO MIXTO.
junio, 1ª semana, nacional 2012 ESTE EJERCICIO ES DE TIPO MIXTO. ES IRRELEVANTE SI CONTESTA A LA PREGUNTA DE TEST O NO. SIN EMBARGO, SE DEBE ESCANEAR DICHA HOJA JUNTO CON EL RESTO DE LA CONTESTACIÓN DEL
Fundamentos del diseño 3ª edición (2002)
Unidades temáticas de Ingeniería del Software Fundamentos del diseño 3ª edición (2002) Facultad de Informática necesidad del diseño Las actividades de diseño afectan al éxito de la realización del software
Ejemplo de Análisis Orientado a Objetos ATMs
Ejemplo de Análisis Orientado a Objetos ATMs Se desea diseñar el software necesario para una red bancaria provista de cajeros automáticos (ATMs), que serán compartidos por un consorcio de bancos. Cada
Curso. Introducción a la Administracion de Proyectos
Curso Introducción a la Administracion de Proyectos Tema 5 Procesos del área de Integración INICIAR PLANEAR EJECUTAR CONTROL CERRAR Desarrollar el Acta de Proyecto Desarrollar el Plan de Proyecto Dirigir
OMG UML 2.0 Marcando un hito en el desarrollo de software Resumen Keywords Historia del Surgimiento
OMG UML 2.0 Marcando un hito en el desarrollo de software Resumen A través de este artículo se ofrece un panorama amplio y de alto nivel sobre la especificación y los diferentes diagramas del Lenguaje
e-commerce, es hacer comercio utilizando la red. Es el acto de comprar y vender en y por medio de la red.
Comercio electrónico. (e-commerce) Las empresas que ya están utilizando la red para hacer comercio ven como están cambiando las relaciones de la empresa con sus clientes, sus empleados, sus colaboradores
Guía Metodológica para el diseño de procesos de negocio
Guía Metodológica para el diseño de procesos de negocio La guía desarrollada para apoyar TBA, se diseñó con base en las metodologías existentes para el desarrollo BPM, principalmente en aquellas que soportan
DE VIDA PARA EL DESARROLLO DE SISTEMAS
MÉTODO DEL CICLO DE VIDA PARA EL DESARROLLO DE SISTEMAS 1. METODO DEL CICLO DE VIDA PARA EL DESARROLLO DE SISTEMAS CICLO DE VIDA CLÁSICO DEL DESARROLLO DE SISTEMAS. El desarrollo de Sistemas, un proceso
Gestión de la Configuración
Gestión de la ÍNDICE DESCRIPCIÓN Y OBJETIVOS... 1 ESTUDIO DE VIABILIDAD DEL SISTEMA... 2 ACTIVIDAD EVS-GC 1: DEFINICIÓN DE LOS REQUISITOS DE GESTIÓN DE CONFIGURACIÓN... 2 Tarea EVS-GC 1.1: Definición de
Patrones de software y refactorización de código
Patrones de software y refactorización de código Introducción y antecedentes de los patrones de software Los patrones permiten construir sobre la experiencia colectiva de ingenieros de software habilidosos.
Mantenimiento de Sistemas de Información
de Sistemas de Información ÍNDICE DESCRIPCIÓN Y OBJETIVOS... 1 ACTIVIDAD MSI 1: REGISTRO DE LA PETICIÓN...4 Tarea MSI 1.1: Registro de la Petición... 4 Tarea MSI 1.2: Asignación de la Petición... 5 ACTIVIDAD
Resumen General del Manual de Organización y Funciones
Gerencia de Tecnologías de Información Resumen General del Manual de Organización y Funciones (El Manual de Organización y Funciones fue aprobado por Resolución Administrativa SBS N 354-2011, del 17 de
Diseño orientado al flujo de datos
Diseño orientado al flujo de datos Recordemos que el diseño es una actividad que consta de una serie de pasos, en los que partiendo de la especificación del sistema (de los propios requerimientos), obtenemos
Metodología Orientada a Objetos Clave 43100007 Maestría en Sistemas Computacionales
Metodología Orientada a Objetos Clave 43100007 Maestría en Sistemas Computacionales Modulo 03 UML: Vista de Casos de Uso Artefacto: Actores Catedrático MSC. Jose Juan Aviña Grimaldo e-mail [email protected]
MARCO DE REFERENCIA SISTEMAS DE INFORMACIÓN PARA LA GESTIÓN DE TI EN EL ESTADO COLOMBIANO
MARCO DE REFERENCIA PARA LA GESTIÓN DE TI EN EL ESTADO COLOMBIANO SISTEMAS DE INFORMACIÓN PLANEACIÓN Y GESTIÓN DE SIS-INF 80. Definición Estratégica de los SIS-INF Las entidades deben, en la Arquitectura
SINAUTO. (Captura Requirimientos) GRUPO 03
SINAUTO (Captura Requirimientos) GRUPO 03 Iker Jauregi [email protected] Iñigo Arregui [email protected] Javier Arce [email protected] Jorge García. [email protected] Patxi [email protected]
El Modelo Conceptual
El Modelo Conceptual Ilustra: Conceptos (Objetos) en el dominio del problema. Es el instrumento (artefacto) más importante de crear en el AOO. Es la representación de cosas del mundo real y NO de componentes
Ejemplo de desarrollo software empleando UML
Introducción El objetivo de este documento es mostrar un ejemplo de desarrollo de software para la gestión de artículos deportivos de una empresa del sector de ventas de deportes a clientes tanto a mayoristas
El Software. Es lo que se conoce como el ciclo de vida del software.
El Software Hace referencia a los programas y toda la información asociada y materiales necesarios para soportar su instalación, operación, reparación, y mejora. Para construir un nuevo elemento software
Capitulo III. Diseño del Sistema.
Capitulo III. Diseño del Sistema. Para el desarrollo del sistema en la presente tesis se utilizo el paradigma orientado a objetos utilizando el lenguaje Java en su versión 1.2. Por medio de este lenguaje
Contenidos. Parte I - Introducción Capítulo 1 - Evolución. Capítulo 2 Condiciones de trabajo en el Desarrollo de Software
IX Contenidos Prólogo... XIX Prefacio... XXI Guía de lectura...xxiii Parte I - Introducción Capítulo 1 - Evolución 1.1 Introducción... 2 1.2 Los hitos en la evolución histórica del desarrollo de software...
Sistema PYMES Ventas e Inventarios H&S
Sistema PYMES Ventas e Inventarios H&S Sistema PYMES Ventas e Inventarios H&S Visión DESARROLLADORA Teodora Vargas Tarqui Versión 0.9 Tabla de Contenidos 1. INTRODUCCION 3 1.1 Propósito 3 1.2 Alcance 3
Ingeniería del Software I
- 1 - Ingeniería del Software I Introducción al Modelo Conceptual 2do. Cuatrimestre 2005 INTRODUCCIÓN... 2 CLASES CONCEPTUALES... 3 ESTRATEGIAS PARA IDENTIFICAR CLASES CONCEPTUALES... 3 Utilizar lista
Especificación de Requisitos según el estándar de IEEE 830
Especificación de Requisitos según el estándar de IEEE 830 IEEE Std. 830-1998 22 de Octubre de 2008 Resumen Este documento presenta, en castellano, el formato de Especificación de Requisitos Software (ERS)
Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual
Introducción Algunas de las personas que trabajan con SGBD relacionales parecen preguntarse porqué deberían preocuparse del diseño de las bases de datos que utilizan. Después de todo, la mayoría de los
Unidad II. Metodología para resolver problemas aplicando la POO. Parte 3 Análisis del Problema Modelo del Dominio
Unidad II Metodología para resolver problemas aplicando la POO Parte 3 Análisis del Problema Modelo del Dominio 1 FASE II. Análisis del problema Incluye: Modelo de casos de uso Modelo del dominio Tareas:
Figure 7-1: Phase A: Architecture Vision
Fase A Figure 7-1: Phase A: Architecture Vision Objetivos: Los objetivos de la fase A son: Enfoque: Desarrollar una visión de alto nivel de las capacidades y el valor del negocio para ser entregado como
rg.o cm a Espec e i c fica c ci c ó i n ó n d e e r e r q e uer e i r mi m en e tos o l@ rza e b Di D s i e s ño d e b as a e s s s d e d at a o t s
Especificación de requerimientos Diseño de bases de datos Documento de especificación del sistema 1. Definición del problema 2. Descripción funcional 2. 3. Restricciones 4. Diagramas de flujo de datos
Empresa Financiera Herramientas de SW Servicios
Empresa Financiera Herramientas de SW Servicios Resulta importante mencionar que ésta es una empresa cuya actividad principal está enfocada a satisfacer las necesidades financieras de los clientes, a través
PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE
PRUEBAS DE SOFTWARE La prueba del software es un elemento crítico para la garantía de la calidad del software. El objetivo de la etapa de pruebas es garantizar la calidad del producto desarrollado. Además,
Tópicos Avanzados de Análisis y Diseño INGENIERIA DE SOFTWARE ING. MA. MARGARITA LABASTIDA ROLDÁN
Tópicos Avanzados de Análisis y Diseño INGENIERIA DE SOFTWARE ING. MA. MARGARITA LABASTIDA ROLDÁN Proceso de Negocio (Business Process) Conjunto estructurado, medible de actividades para producir un producto.
Ingeniería de Software
Ingeniería de Software Tabla de Contenidos PARTE I INTRODUCCIÓN Capítulo 1: Evolución Los hitos en la evolución histórica del Desarrollo de Software Problemas y soluciones... Fallas, malas estimaciones
SISTEMA DE ESPECIICACION DE REQUERIMIENTOS
SISTEMA DE ESPECIICACION DE REQUERIMIENTOS Presentado por: Jefferson Peña Cristian Álvarez Cristian Alzate 10 CONTENIDO 1. INTRODUCCIÓN 1.1. PROPÓSITO 1.2. AMBITO DEL SISTEMA 1.3. DEFINICIONES, ACRÓNIMOS
6 Anexos: 6.1 Definición de Rup:
6 Anexos: 6.1 Definición de Rup: Es un producto del proceso de ingeniería de software que proporciona un enfoque disciplinado para asignar tareas y responsabilidades dentro de una organización del desarrollo.
3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON)
3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON) 3.1.1 Introducción Este método proporciona un soporte para el diseño creativo de productos de software, inclusive a escala industrial.
1 GLOSARIO. Actor: Es un consumidor (usa) del servicio (persona, sistema o servicio).
1 GLOSARIO A continuación se definen, en orden alfabético, los conceptos básicos que se han abordado a lo largo del desarrollo de la metodología para la gestión de requisitos bajo la Arquitectura Orientada
3. GESTIÓN DE CONFIGURACIÓN DE SOFTWARE
3. GESTIÓN DE CONFIGURACIÓN DE SOFTWARE Software Configuration Management (SCM) es una disciplina de la Ingeniería de Software que se preocupa de [Ber92] [Ber84] [Bou98] [Mik97]: Identificar y documentar
MODELADO DEL DOMINIO (MODELO CONCEPTUAL)
MODELADO DEL DOMINIO (MODELO CONCEPTUAL) Es el Artefacto más importante en el Análisis Orientado a Objetos. Explica los conceptos más significativos en un dominio del problema. Previo a esto es fundamental
Unidad 1. Fundamentos en Gestión de Riesgos
1.1 Gestión de Proyectos Unidad 1. Fundamentos en Gestión de Riesgos La gestión de proyectos es una disciplina con la cual se integran los procesos propios de la gerencia o administración de proyectos.
Desarrollo de un Sistema de Gestión de Proyectos mediante el framework GWT
Proyecto de Fin de Carrera Universidad Politécnica de Valencia Escuela Técnica Superior de Informática Desarrollo de un Sistema de Gestión de Proyectos mediante el framework GWT Realizado por: Dirigido
configurándola para ser usada dentro del área de QA de una fábrica de software.
Capítulo 6 - Caso de estudio En esta sección vamos a mostrar la funcionalidad de la herramienta desarrollada configurándola para ser usada dentro del área de QA de una fábrica de software. 6.1 Definición
Modelado Avanzado con Casos de Uso. Diseño de Software Avanzado Departamento de Informática
Modelado Avanzado con Casos de Uso Especificación Gráfica de Casos de Uso Una simple secuencia de acciones no puede describir adecuadamente la riqueza de situaciones que se pueden presentar en un caso
EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011
EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011 1. (0,75 PUNTOS) Identificad a continuación las sentencias que son ciertas, descartando
PATRONES. Experto. Solución:
PATRONES. Experto. Asignar una responsabilidad a la clase que tiene la información necesaria para cumplirla. Cuál es el principio fundamental en virtud del cual asignaremos las responsabilidades a los
SIGPRE Sistema de Gestión Presupuestaria
SIGPRE Sistema de Gestión Presupuestaria Documento de Arquitectura UTN Histórico de Revisiones Fecha Versión Descripción Autor 11/17/2009 1.0 Borrador de la arquitectura Roberto López Hinojosa 12/14/2009
Adelacu Ltda. www.adelacu.com Fono +562-218-4749. Graballo+ Agosto de 2007. Graballo+ - Descripción funcional - 1 -
Graballo+ Agosto de 2007-1 - Índice Índice...2 Introducción...3 Características...4 DESCRIPCIÓN GENERAL...4 COMPONENTES Y CARACTERÍSTICAS DE LA SOLUCIÓN...5 Recepción de requerimientos...5 Atención de
DESARROLLO DE SOFTWARE DEFINICIÓN GENERAL DEL PROCESO GABY LORENA GUERRERO LEYDI ROCIO ERAZO PABLO FELIPE MIRANDA WALTER ALEXIS ANTE
DESARROLLO DE SOFTWARE DEFINICIÓN GENERAL DEL PROCESO GABY LORENA GUERRERO LEYDI ROCIO ERAZO PABLO FELIPE MIRANDA WALTER ALEXIS ANTE UNIVERSIDAD DEL CAUCA FACULTAD DE INGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES
UML, ejemplo sencillo sobre Modelado de un Proyecto
UML, ejemplo sencillo sobre Modelado de un Proyecto Normal &DOLILFDU 0L3DQRUDPD 626 (VFULEHSDUD1RVRWURV Por Armando Canchala Contenido Introducción Objetivo Requerimientos Casos de Uso Subcasos de Uso
Ejercicios Diagramas de casos de uso
Ejercicios Diagramas de casos de uso Ejercicio 1. Para cada una de las siguientes afirmaciones indicar si es Verdadera o Falsa. Los actores de un sistema representan, en particular, personas (mas precisamente
Análisis del Sistema de Información
Análisis del Sistema de Información ÍNDICE DESCRIPCIÓN Y OBJETIVOS... 2 ACTIVIDAD ASI 1: DEFINICIÓN DEL SISTEMA... 6 Tarea ASI 1.1: Determinación del Alcance del Sistema... 6 Tarea ASI 1.2: Identificación
La Necesidad de Modelar. Diseño de Software Avanzado Departamento de Informática
La Necesidad de Modelar Analogía Arquitectónica Tiene sentido poner ladrillos sin hacer antes los planos? El modelo, los planos, ayuda a afrontar la complejidad del proyecto. Cuál es el lenguaje adecuado
PROPÓSITO... 2 DETERMINANTES PARA UNA BUENA EXPERIENCIA DE USO...
Tabla de Contenido PROPÓSITO... 2 DETERMINANTES PARA UNA BUENA EXPERIENCIA DE USO... 2 1. LA PRESENCIA DE INFORMACIÓN Y AYUDA ÚTIL PARA COMPLETAR LOS TRÁMITES EN LÍNEA.... 2 2. LA DISPONIBILIDAD DE DIVERSOS
Capítulo 5. Cliente-Servidor.
Capítulo 5. Cliente-Servidor. 5.1 Introducción En este capítulo hablaremos acerca de la arquitectura Cliente-Servidor, ya que para nuestra aplicación utilizamos ésta arquitectura al convertir en un servidor
Gestión de Requisitos ULPGC
Gestión de Requisitos ULPGC Gestión de Requisitos Consiste en gestionar los cambios de los requisitos, las relaciones entre ellos, las dependencias entre la especificación de requisitos y otros documentos
Infraestructura Tecnológica. Sesión 12: Niveles de confiabilidad
Infraestructura Tecnológica Sesión 12: Niveles de confiabilidad Contextualización La confianza es un factor determinante y muy importante, con ésta se pueden dar o rechazar peticiones de negocio, amistad
Entidad Formadora: Plan Local De Formación Convocatoria 2010
Entidad Formadora: Enterprise Architect Comenzando Puede iniciar Enterprise Architect desde el ícono que se creó en su escritorio de Windows durante la instalación, o alternativamente: 1. Abrir el menú
elastic PROJECTS INFORMACIÓN COMERCIAL PROJECTS
PROJECTS elastic PROJECTS INFORMACIÓN COMERCIAL Inscripción Registro Mercantil de Pontevedra, Tomo 3116, Libro 3116, Folio 30, Hoja PO-38276 C.I.F.: B-36.499.960 [email protected] 1 INTRODUCCIÓN Mediante
Funcionalidades Software PROYECTOS GotelGest.Net Software para la gestión de Proyectos GotelGest.Net
2012 Funcionalidades Software PROYECTOS GotelGest.Net Software para la gestión de Proyectos GotelGest.Net Servinet Sistemas y Comunicación S.L. www.softwaregestionproyectos.com Última Revisión: Febrero
0. Introducción. 0.1. Antecedentes
ISO 14001:2015 0. Introducción 0.1. Antecedentes Conseguir el equilibrio entre el medio ambiente, la sociedad y la economía está considerado como algo esencial para satisfacer las necesidades del presente
Mesa de Ayuda Interna
Mesa de Ayuda Interna Documento de Construcción Mesa de Ayuda Interna 1 Tabla de Contenido Proceso De Mesa De Ayuda Interna... 2 Diagrama Del Proceso... 3 Modelo De Datos... 4 Entidades Del Sistema...
GENERALIDADES DE BASES DE DATOS
GENERALIDADES DE BASES DE DATOS A fin de evitar que idénticos datos se encuentren repetidos en múltiples archivos, parece necesario que los comunes se almacenen en un archivo único y que este archivo sea
Ingeniería del Software. Diseño. Diseño en el PUD. Diseño de software. Patrones arquitectónicos. Diseño Orientado a Objetos en UML
Diseño Diseño en el PUD Diseño de software Patrones arquitectónicos Diseño Orientado a Objetos en UML 1 Iteración en PUD Planificación de la Iteración Captura de requisitos: Modelo de casos de uso, Modelo
Programación Avanzada SOLUCIÓN EXAMEN FEBRERO 2011
Programación Avanzada SOLUCIÓN EXAMEN FEBRERO 2011 Por favor siga las siguientes indicaciones: Escriba con lápiz y de forma prolija. Escriba las hojas de un solo lado Escriba su nombre y número de documento
comunidades de práctica
1. Introducción CoSpace es una plataforma web diseñada para proporcionar un espacio virtual de interacción y colaboración entre formadores en comunidades virtuales. Se originó como resultado de las necesidades
CMMI (Capability Maturity Model Integrated)
CMMI (Capability Maturity Model Integrated) El SEI (software engineering institute) a mediados de los 80 desarrolló el CMM (modelo de madurez de la capacidad de software). CMMI: CMM integrado, una mezcla
GENERACIÓN DE TRANSFERENCIAS
GENERACIÓN DE TRANSFERENCIAS 1 INFORMACIÓN BÁSICA La aplicación de generación de ficheros de transferencias permite generar fácilmente órdenes para que la Caja efectúe transferencias, creando una base
Diagramas de Casos de Uso
Casos de Uso es una técnica para capturar información de cómo un sistema o negocio trabaja actualmente, o de cómo se desea que trabaje. No pertenece realmente al enfoque orientado a objeto, más bien es
Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA
Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Documento de trabajo elaborado para la Red Temática DocenWeb: Red Temática de Docencia en Control mediante Web (DPI2002-11505-E)
UNIVERSIDAD DE ORIENTE FACULTAD DE CIENCIAS ECONOMICAS
UNIVERSIDAD DE ORIENTE FACULTAD DE CIENCIAS ECONOMICAS AUDITORIA DE SISTEMAS COMPUTACIONALES TIPOS DE AUDITORIA LIC. FRANCISCO D. LOVOS Tipos de Auditorías Auditoría de Base de Datos Auditoría de Desarrollo
GENERACIÓN DE ANTICIPOS DE CRÉDITO
GENERACIÓN DE ANTICIPOS DE CRÉDITO 1 INFORMACIÓN BÁSICA La aplicación de generación de ficheros de anticipos de crédito permite generar fácilmente órdenes para que la Caja anticipe el cobro de créditos
Arquitectura de Aplicaciones
1 Capítulo 13: Arquitectura de aplicaciones. - Sommerville Contenidos del capítulo 13.1 Sistemas de procesamiento de datos 13.2 Sistemas de procesamiento de transacciones 13.3 Sistemas de procesamiento
