MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
1 parcial Arquitectura de Software
1. Universidad de Cartagena
Programa de Ingeniería de Sistemas
Arquitecturas de Software
Primer Parcial
Moises Correa – Gustavo Rojas – Gabriel Dizzet
Enunciado: “El Salto del Caballo”
El problema del caballo es un antiguo problema matemático en el que se pide que, teniendo
una cuadrícula de n x n casillas y un caballo de ajedrez colocado en una posición cualquiera
(x, y ), el caballo pase por todas las casillas y una sola vez. Lo que resulta en n2
-1 movimientos.
En el ajedrez, el caballo es una pieza del juego distinta a las otras piezas en su forma de moverse.
Es la única pieza que puede saltar por encima de las demás, describiendo una trayectoria en
forma de L. Es decir, se desplaza dos casillas en dirección horizontal o vertical y una en dirección
perpendicular a la anterior.
El Juego
Un recorrido del caballo es una secuencia de saltos, sin repetir casillas, desde una casilla inicial
hasta otra final, desde la cual no se puede avanzar, sin pasar por una casilla ya visitada.
Llamamos tamaño al número de casillas que visita y longitud al número de saltos que da.
El juego ofrece cuatro opciones de dimensión del tablero: 1) 4 x 4, 2) 6 x 6, 3) 9 x 9, 4) 12 x 12.
El juego es para dos personas. Empieza un jugador colocando el 1 en una casilla, le sigue el otro
colocando un 2 en una nueva casilla que se obtiene desde la 1 por salto del caballo. Así
sucesivamente hasta que un jugador no pueda seguir jugando, éste sería el que pierde.
Se pide:
1. Establecer la relación existente entre el concepto de ocultación de la información y el
concepto de independencia modular (1 pto)
La modularidad es producto de la necesidad de descomponer los problemas, esto trae
entre tantos beneficios como facilidad de mantenimiento y solución de problemas así
como mayor eficiencia en reutilización de código y uso de patrones.
La ocultación de información implica que se puede conseguir una modularidad
eficaz en base a la definición de módulos que aunque sean independientes se
comuniquen entre ellos, paro el flujo de datos que manejaran será solo la información
necesaria para conseguir la función del software.
La independencia del módulo es un producto directo de la modularidad, que se
interesa solo en que cada módulo cumpla con su responsabilidad (Cohesión) sin tantas
dependencias de terceros (Acoplamiento), y que además provea sus servicios a otros
módulos de una forma sencilla.
2. 2. Explique los siguientes niveles de acoplamiento y clasifíquelos según sean: bajo, moderado
o alto. (1 pto)
a. Acoplamiento normal (BAJO)
Una unidad de software llama a otra de un nivel inferior y tan solo
intercambian datos.
b. Acoplamiento de datos (BAJO)
Una unidad de software está acoplada a otra por los datos cuando ambas
necesitan del mismo conjunto local de datos para funcionar.
c. Acoplamiento por estampado (MEDIO)
Los módulos se pasan datos con estructura de registro. No es muy
deseable si el módulo receptor sólo requiere parte de los datos que se le
pasan.
d. Acoplamiento de control (ALTO)
Decimos que un método está acoplado a otro por control cuando de
alguna manera un método controla la ejecución del otro. En general,
suele ocurrir cuando un método pasa algún parámetro a otro, y en
función de él se comporta de una u otra manera.
e. Acoplamiento externo (MEDIO)
Las unidades de software están ligadas a componentes externos, como
por ejemplo dispositivos de entrada / salida, protocolos de
comunicaciones, etc.
f. Acoplamiento común (MEDIO)
Dos unidades de software acceden a un mismo recurso común,
generalmente memoria compartida, una variable global o un fichero.
g. Acoplamiento de contenido (ALTO)
Ocurre cuando una unidad de software necesita acceder a una parte de
otra unidad de software.
3. Realice una consulta sobre el “enfoque de refinamiento stepwise”. Aplique este enfoque
para desarrollar tres niveles distintos de abstracciones del procedimiento para el problema
del salto del caballo (1.5 ptos)
El refinamiento Stepwise es una estrategia de diseño propuesta originalmente por Niklaus
Wirth. Un programa se elabora por medio del refinamiento sucesivo de los detalles del
procedimiento. Se desarrolla una jerarquía con la descomposición de un enunciado
macroscópico de la función (abstracción del procedimiento) en forma escalonada hasta
llegar a los comandos del lenguaje de programación.
En realidad, el refinamiento es un proceso de elaboración. Se comienza con un enunciado
de la función (o descripción de la información), definida en un nivel de abstracción alto. Es
decir, el enunciado describe la función o información de manera conceptual, pero no dice
nada sobre los trabajos internos de la función o de la estructura interna de la información.
Después se trabaja sobre el enunciado original, dando más y más detalles conforme tiene
lugar el refinamiento (elaboración) sucesivo.
3. La abstracción y el refinamiento son conceptos complementarios. La primera permite
especificar internamente el procedimiento y los datos, pero elimina la necesidad de que los
“extraños” conozcan los detalles de bajo nivel. El refinamiento ayuda a revelar estos
detalles a medida que avanza el diseño. Ambos conceptos permiten crear un modelo
completo del diseño conforme éste evoluciona.
NIVEL ALTO DE ABTRACCIÓN
Mover caballo en el tablero
NIVEL MEDIO DE ABTRACCIÓN
Mover caballo en forma de ele (L) en el tablero
Marcar casillas ya visitadas
No repetir casillas ya visitadas
NIVEL BAJO DE ABTRACCIÓN
Situar el caballo en una posición inicial cualquiera en un tablero de nxn
dimensiones.
Mover caballo dos casillas en dirección horizontal o vertical y una en dirección
perpendicular a la anterior.
Marcar casillas ya visitadas respectivamente con el número correspondiente a cada
jugador (1 o 2).
No repetir casillas ya visitadas y si no puede mover ha perdido el juego.
4. Realice una consulta sobre Modelo de Contexto del Sistema y Modelos de Utilización.
Explíquelos. (0.5 pto)
El modelo de contexto y el modelo de utilización del sistema representan dos
modelos complementarios entre un sistema y su entorno:
El modelo contexto del sistema es un modelo estático que describe a los
otros sistemas su entorno, El contexto del sistema es la parte del entorno
del sistema relevante para definir, entender, e interpretar los
requerimientos del sistema. se utiliza con frecuencia como fuente de
inspiración para el diseño de los objetos software. Muestra (a los
modeladores) clases conceptuales significativas en un dominio de problema.
El modelo de utilización del sistema es un modelo dinámico que describe
cómo el sistema interactúa con su entorno. Describe la funcionalidad
propuesta del nuevo sistema. Representa la interacción entre un usuario
(humano o máquina) y el sistema.
4. 5. Realice los Modelos de Contexto del Sistema y Modelos de Utilización para El Juego. (1 pto)
Contexto del Sistema