Examen del Primer parcial

Anuncio
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
Descargar