Examen del Primer parcial Las soluciones propuestas son esquemáticas. Por supuesto al puntuar se han valorado conocimentos adicionales y soluciones alternativas. Definir abstracción, refinamiento, modularidad y jerarquía de control. a) Abstracción: En general, la abstracción consiste en eliminar de aquello que se quiere representar los detalles no esenciales. En el contexto del diseño del software, la abstracción tiene varios niveles. Tipos de abstracción (según Pressman): procedimental, de datos y de control. b) Refinamiento: Es una estrategia de diseño descendente (Niclaus Wirth). Un programa se realiza refinando los niveles de detalle procedimentales. Consiste en descomponer una o más sentencias en instrucciones más detalladas. c) Modularidad: El software se divide en componentes llamados módulos que se integran. El motivo es reducir la complejidad del problema. Basado en el principio de “divide y vencerás”. d) Jerarquía de control: Representa la organización de los módulos. No representa loa aspectos procedimentales del softare. Existen varias notaciónes, la más usual la de árbol. Conceptos relacionados: Profundidad, anchura, grado de entrada, grado de salida. Enumere y defina las cualidades deseables de un producto software a las que contribuye el empleo correcto de una metodología de desarrollo. 1. Adecuación: El sistema satisface las necesidades del usuario. 2. Mantenibilidad: Facilidad para realizar cambios. 3. Usabilidad: Grado de dificultad en aprender a manejar el sistema. 4. Fiabilidad: Capacidad del sistema para funcionar correctamente. Dos parametros importantes: • MTBF: Tiempo medio entre fallos. • Disponibilidad: Probabilidad de que el sistema funcione en un instante dado. 5. Corrección: Densidad de defectos baja. 6. Eficiencia: Mínimo consumo de recursos. 1 Un cajero de un supermercado (persona que atiende a los clientes en la caja) sigue el siguiente proceso cada vez que llega un cliente: Inicia una sesión de venta en la caja registradora; cíclicamente la caja registradora lee el código de barras y el número de unidades de cada tipo de artículo que el cliente lleva en el carrito; cuando termina, calcula el montante total de la operación; pide entonces la tarjeta de cliente al cliente, si la tiene, la caja registradora lee el código de barras de la tarjeta y calcula el descuento; sea como sea, al final se imprime el montante total; el cliente paga y se va, con lo que la caja vuelve al estado inicial y puede comenzar con otro cliente. Por otra parte, un ordenador central recibe información de la caja registradora: El inicio y final de cada sesión de ventas, el montante de cada venta y los descuentos si los hubiera. Además de todo esto, la caja registradora cada vez que lee un código de barras obtiene el precio unitario de ese producto de una base de datos, en la que anota también el número de unidades para llevar la contabilidad de los productos que quedan en stock. La base de datos está asimismo situada en el ordenador central. Si en una lectura cualquiera del código de barras se detecta un error, se intenta leer de nuevo. Si existe un nuevo error se aborta la operación y el cliente tiene que ir a otro cajero. El párrafo anterior describe una aplicación distribuida donde la caja registradora y el ordenador central están conectados en una red de área local. Diseñe el diagrama de secuencias asociado al texto anterior en la notación UML. 2 Solución: CajaRegistradora Ord.Central Cajero Create InicioSesion *[HayProductos]GestionarProducto LeerCodigoArticulo_i La linea de puntos indica el bucle mientras haya productos en la bolsa del cliente [Error 1º]LeerCodigoArticulo_i [Error 2º]Abortar ObtenerInfoProducto_i InformarNumUnidadesArticulo_i FinSesion CalcularMontante ImprimirMontante RegistrarMontanteEnBD [Tiene Tarjeta]LeerCodigoTarjeta CalcularDescuento RegistrarDescuentoClienteBD FinSesion Destroy 3