Estrategia de prompts, primeras ideas para su construcción
Diseño de Software mmmmmmmmmmmmmmmmmm.pptx
1. 1.El diseño como etapa del proceso de producción de software
2.Diseño vs. modelo funcional
3.Diseño basado en ocultación de información
4.Diseño basado en tipos abstractos de datos
5.Diseño orientado a objetos
6.Documentación de un diseño
U N I D A D I
D I S E Ñ O D E S O F T W A R E
2. 1. Dos diseños distintos, ¿cuál es el mejor?
2. Diseño basado en ocultación de la información (DBOI)
3. Diseño del software de control de una estación de peaje
4. Superioridad y limitaciones del DBOI
5. Diseño basado en tipos abstractos de datos (DTAD)
6. Diseño orientado a objetos (DOO)
7. Algunos tópicos complementarios
8. Incidencia de los lenguajes de programación en un diseño
9. Límites del DOO
10. Documentación de diseño
U N I D A D I
D I S E Ñ O D E S O F T W A R E
3. D I S E Ñ O D E S O F T W A R E
1 - D O S D I S E Ñ O S D I S T I N T O S , ¿ C U Á L E S E L M E J O R ?
4. ACONTINUACIÓN PRESENTAREMOS DOS
DISEÑOS DISTINTOS PARA EL MISMO
PROBLEMA Y ANALIZAREMOS
cuál de ellos es el mejor.
CONSIDEREMOS UN PROBLEMA CAJAS DE
AHORRO , AL CUAL
le adicionamos el siguiente requisito:
SE DEBE REGISTRAR EN UNA BITÁCORA CADA
DEPÓSITO MAYOR O IGUAL A $1.000.000.
5. RECORDEMOS QUE
DISEÑAR UN SISTEMA
DE SOFTWARE
CONSISTE EN:
1. DESCOMPONER EL SISTEMA EN
ELEMENTOS DE SOFTWARE
2. ASIGNAR UNA FUNCIONALIDAD
A CADA ELEMENTO
3. ESTABLECER LA RELACIONES
ENTRE ESOS ELEMENTOS
6. A C L A R A C I O N
CON EL FIN DE SIMPLIFICAR LA PRESENTACIÓN, DESCRIBIREMOS LOS DISEÑOS
EN TÉRMINOS DE CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS Y
SOLO NOS ENFOCAREMOS EN UNA PARTE DEL SISTEMA O LOS
REQUERIMIENTOS.
AUN ASÍ, DEBE QUEDAR MUY CLARO QUE UN DISEÑO NO SE DEBE DAR EN
TÉRMINOS DE UNA TECNOLOGÍA DE IMPLEMENTACIÓN PARTICULAR. LO
HACEMOS ASÍ PORQUE AUN NO HEMOS INTRODUCIDO LOS CONCEPTOS Y
NOTACIÓN ESPECÍFICOS DEL DISEÑO DE SOFTWARE.
8. J U N T O S P O D E M O S
L O G R A R M Á S
PRIMER DISEÑO
•
•
•
9. SEGUNDO DISEÑO
La descomposición del segundo diseño consiste de dos clases: CajaAhorros y RegistroDep-
Grandes.
La interfaz de CajaAhorros es la siguiente:
• depositar(Dinero m): suma la cantidad m al saldo actual de la cuenta.
• extraer(Dinero m): resta la cantidad m al saldo actual de la cuenta si este es mayor o igual a m.
• Dinero saldo(): retorna el saldo actual de la caja de ahorros.
La interfaz de RegistroDepGrandes es la siguiente:
• El constructor de la clase recibe un parámetro de tipo CajaAhorros que guarda en una variable de estado (o variable miembro) que
llamaremos ca.
• depositar(Dinero m): si m es mayor o igual a $1.000.000 registra los datos del depósito (e.g. número de caja de ahorros, fecha, hora, etc.)
en un archivo de texto, y luego invoca ca.depositar(m); caso contrario invoca directamente ca.depositar(m).
• extraer(Dinero m): invoca ca.extraer(m).
• Dinero saldo(): invoca ca.saldo().
Notar que ambas clases tienen la misma interfaz.
La relación entre ambas clases se establece por composición de objetos . Es decir, se declara un objeto de tipo CajaAhorros y uno de tipo
RegistroDepGrandes, luego el primero se pasa como parámetro del constructor del segundo.
En términos de código se da lo siguiente (Asumimos que el constructor de una clase tiene el mismo nombre que la clase.):
CajaAhorros c;
RegistroDepGrandes r.RegistroDepGrandes(c);
De allí en más el sistema trabaja sobre r.
Por ejemplo si queremos depositar 1.000 pesos en c hacemos r.depositar(1000).
En consecuencia cuando se efectúa un depósito, r controla si el monto es mayor o igual a 1.000.000 en cuyo caso deja el registro
correspondiente pero también hace el depósito sobre c, como lo indica la función de RegistroDepGrandes.depositar().
10. ¿Cuál de los dos diseños es el mejor? ¿Cuál es el criterio para determinar el mejor
diseño?
A N A L I S I S
El criterio es el principio de Diseño para el Cambio.
El mejor diseño es aquel que permite la implementación de cambios (modificaciones)
de manera tal que:
• Cada cambio se efectúe al menor costo posible
• La introducción de cada cambio no degrade la integridad conceptual del sistema
Entonces, para determinar cuál de los dos diseños es el mejor veremos qué costo
tendría introducir algunos cambios probables.
1. No es necesario dejar un registro de los depósitos grandes.
2. La bitácora se guarda en una base de datos (en lugar de en un archivo de texto).
3. También hay que dejar un registro de las extracciones de más de $100.000.
11. PARA INCORPORAR EL PRIMER
CAMBIO, EN EL PRIMER DISEÑO
LA INCORPORACIÓN DEL SEGUNDO CAMBIO EN
EL PRIMER DISEÑO
EN CUANTO AL TERCER CAMBIO, SIGUIENDO LA IDEA DEL PRIMER DISEÑO
12. A H O R A S U P O N G A M O S Q U E E S T E
P R O G R A M A
S E V E N D E A D I S T I N T O S B A N C O S
¡