Está en la página 1de 3

INGENIERÍA DE SOFTWARE 2 CURSO 2020-21 CURSO DIURNO

Haga coincidir el principio con su respectiva descripción y corrija la descripción en caso de ser necesario.
Principio Enunciado
A - SRP - Single Responsibility Principle 1-Habla sólo con tus “conocidos”, para mantener bajas las
dependencias.
B – Alta cohesión 2 - "Las responsabilidades de una clase, interface o subsistema,
deberían estar muy estrechamente relacionadas entre sí".
C- Deméter 3 - "Una clase debería tener solo una razón para cambiar"

Principio Enunciado
A - SRP - Single Responsibility 1 - "Diseñar hacia las interfaces y no hacia las implementaciones.”
Principle
B- OCP - Open/Closed Principle 2 - "Una operación se debe encargar de una sola responsabilidad, de un solo
tipo de cosas”
D – Desing to Interface 3 - “Al diseñar una solución, se deben dejar puntos abiertos para modificar el
código cuando aparezcan nuevos cambios y cerrado para las extensiones”

EJERCICIO 1 BUSCANDO SOLUCIONES ÓPTIMAS

Un sistema para la búsqueda de soluciones óptimas a problemas matemáticos complejos de asignación de


recursos, tiene modelado el concepto de Algoritmo para dar solución al problema. Originalmente existía un
único algoritmo y se recibían los datos del usuario a partir de consola, fue implementado por el desarrollador X.
Luego apareció un segundo tipo de algoritmo, que lo implementó un segundo desarrollador, esta vez
capturando los datos por modo gráfico.

Algoritmo1EntradaTexto Algoritmo2EntradaVisual

Iniciar() Iniciar()
RecibirEntradaUsuarioConsola() RecibirEntradaUsuarioPantalla()
InicializarEstructurasAuxiliares() InicializarEstructurasAuxiliares()
CorrerAlgoritmo() CorrerAlgoritmo()
Paso1Algoritmo() Paso1Algoritmo()
Paso2Algoritmo() Paso2Algoritmo()
OptimizaciónTipo11() OptimizaciónTipo22()
AlmacenarResultadosBD() AlmacenarResultadosBD()

Las operaciones: Iniciar(), IniciarEstructurasAuxiliares, ()CorrerAlgoritmo(), Paso1Algoritmo(), Paso2Algoritmo()


y AlmacenarResultadosBD() son la misma en ambas clases. La operación RecibirEntradaUsuarioConsola() y
RecibirEntradaUsuarioPantalla() reciben ciertos datos del usuario lo que por distintas vías. En el algoritmo 1
aparece realiza la optimización tipo11 y el algoritmo 2 la optimización tipo12
1- Si adicionalmente a lo expresado, se conoce que pueden aparecer nuevos tipos de algoritmo y nuevas
formas de recibir los datos (por ejemplo, de un servicio web o de un fichero). Indique qué principios de
diseño se están violando con esta solución.
2- El diseñador está enfrentando la problemática de que le han pedido hacer una implementación del
algoritmo de tipo 2 con entrada texto, igualmente le han pedido hacer un tipo 1, pero con entrada visual. Ha
intentado plantear la solución al problema con el uso de la herencia, pero tras pedirle la implementación de
un algoritmo tipo 3 con entrada desde fichero, ya la solución se le ha ido de las manos. Plantee una
solución al problema y enuncié qué principios de diseño ha tenido en cuenta como base para sus
razonamientos.
Indicaciones metodológicas:
 En la pizarra hay que tener las clases como estaban originalmente y después de la solución con los
métodos declarados donde corresponda.
 Fíjense que no solo son clases sino interfaces que permitan ver la realización del algoritmo para los
diferentes tipos de entrada.
INGENIERÍA DE SOFTWARE 2 CURSO 2020-21 CURSO DIURNO

Solución:

EJERCICIO 2 GESTIÓN DE ESTUDIANTES


Dada la siguiente situación:
La gestión de los datos de los estudiantes desde el momento que ingresan a la universidad hasta que culminan
sus estudios son gestionados a través de una aplicación Web llamada GESTUD. Es decir, este sistema lleva el
control de toda la trayectoria del estudiante. El diseño de las clases que se previó para este sistema consiste en
que cada clase que manipula la lógica de negocio sobre un determinado recurso, tiene la responsabilidad
además de la comunicación con la base de datos.
La Universidad también cuenta con disimiles aplicaciones tales como: Biblioteca, Comedor, Profesores,
Servicios de redes (correo, acceso telefónico, acceso a internet), DSS (Sistema de apoyo a la toma de
decisiones), Sistema de encuestas, Estipendio, Gestión universitaria, entre otros. Hoy en día cada uno de estos
sistemas, llevan también el registro de los estudiantes, resultando complejo conocer qué estudiante permanece
en la universidad, cuál es su año actual, así como si fue sancionado a un determinado servicio. Como se puede
apreciar, la duplicidad de la información puede provocar problemas legislativos y financieros a la universidad. El
expediente del estudiante incluye un volumen considerable de datos que no son necesarios para cada sistema,
sin embargo, cada uno registra todos los datos.
a. Represente la situación actual. ¿Qué principios de diseño se están violando?
b. Teniendo en cuenta que la Universidad requiere una única fuente de acceso a la gestión de información
del estudiante y que el resto de los sistemas se comuniquen con GESTUD. ¿Qué principios de diseño
se tomaría en cuenta en la solución?
Indicaciones metodológicas:
 Con el objetivo de vincular este tema con el anterior, preguntar a los estudiantes qué problemas
frecuentes se nos pueden dar con el marco actual?.
 Para que les sea más fácil a los estudiantes entender por qué la solución viola determinados principios
de diseño, discuta cómo ellos lo harían y que le expliquen por qué sobre la base de aplicar principios de
diseño.
Solución:
a) Principios de diseño más evidente en GESTUD (Pueden que existan otros principios de diseño, pero
los + relevantes son estos)
 Once & Only One rule: Cuando se produzca un cambio en el acceso a los datos, habría que
cambiar en todas las dependencias.
 Single responsibility: Las clases controladoras se están dedicando a otras responsabilidades que
no son su razón de ser. Las piezas de un sistema (clases, subsistemas, paquetes), deben dedicarse
a una sola cosa y hacerla bien.
 Encapsular la variabilidad: Elementos variables y elementos que no varían, relación con Once &
Only One rule.
 Open close: Las clases de control las estamos dejando abierto a modificaciones.

b) Principios de diseño que pueden estar en la nueva solución: La solución vamos a separarla en dos
partes, solución del acoplamiento de las soluciones con GESTUD (única solución con el recurso de
estudiante) y la segunda parte cambios que se tendrían que introducir en siguen, para que la solución
considere principios de diseño que se están violando.

Primera parte: Comunicación de las aplicaciones y GESTUD


 Desing to Interface: Se podía brindar una interface para que cada aplicación consuma el recurso
estudiante, y existe un único lugar donde buscar el recurso. Implícito el principio One &Only one
rule. De esta forma estamos teniendo en cuenta Encapsular la variabilidad, también estamos
garantizando encapsular todo lo que tenga que ver con el estudiante en un único lugar.
 Interface Segregation Principle: Se podrían diseñar varias interfaces específicas para brindar a
cada sistema solo lo que necesitan. Bajo acomplamiento. Single responsibility, cada interface
se va a encargar de una única cosa.
 Hollywood: GESTUD se encargaría de notificar al resto de las aplicaciones cuando se produzca un
cambio respecto a la entrada o modificación del estudiante. Dont call me, we will call you.

Segunda parte
Con el objetivo de diseñar teniendo en cuenta los principios de diseño que se están violando podríamos:
INGENIERÍA DE SOFTWARE 2 CURSO 2020-21 CURSO DIURNO

 Once & Only One rule: Un fichero de recurso, donde estableceríamos el puente de conexión, de
tal manera que cada vez que se acceda a la BD se busca en un único lugar.
 Single responsibility: Las clases controladoras solo se dedicarán a la lógica de negocio, el
acceso a los datos estará en otro lugar.
 Encapsular la variabilidad: Diseñaríamos un mecanismo de diseño de acceso a datos,
garantizando separar los elementos variables de los no variables.

También podría gustarte