Está en la página 1de 6

IIC2113 - Diseño Detallado de Software (2021-2)

Interrogación 1

Indicaciones

● La prueba es individual. Si se detecta copia será evaluado con nota mínima.


● Lo importante en cada pregunta es que suba algo que sea legible (ya sea una foto o un texto
plano en el espacio de la pregunta de desarrollo).
● Pueden usar cualquier material (apuntes) que les acomoden para responder la prueba, siempre
que si usan material externo al del curso lo citen. Si se suben respuestas sacadas de internet
sin su respectiva cita, se considerará como copia.
● Solo se aceptarán dudas de enunciado en el siguiente formulario de google:
https://docs.google.com/forms/d/e/1FAIpQLScArj-MaLKrzWdK991TuKQVpjI8TKJMXjqXn
EWXjMHTQUQe5Q/viewform?usp=sf_link
● Las respuestas a las preguntas del formulario serán publicadas cada 60 minutos en el siguiente
doc:
https://docs.google.com/document/d/1uTw-XTzsKC1BQTGqjOuYkjYKp3WkJW0dPzIm76
W1smE/edit
● Tiene 120 minutos desde que inicia la interrogación para contestar.
● Tienes solo 1 intento para enviar la interrogación.

Si sufre un problema de fuerza mayor durante el día Viernes de la interrogación, debe escribir cuanto
antes a mfsepulveda@uc.cl

Plazo de entrega: 10 de Septiembre a las 19:00 vía Evaluaciones en


Canvas.
Pregunta 1 [40 puntos]

Te encuentras trabajando para un gran proyecto hidroeléctrico de monitoreo. El sistema que estás construyendo
se alimenta de un servidor central que contiene la información de la central hidroeléctrica. El sistema que existe
se llama ClosedFlows, el cual es suministrado por una empresa externa que ofrece servicios y soluciones para
hidroeléctricas (Bantley). El sistema de monitoreo que estás construyendo debe alimentarse de la información de
los distintos servicios de ClosedFlows y avisar a los ingenieros comerciales del proyecto de acuerdo a ciertas
alertas que se explican más adelante en el enunciado.

A grandes rasgos la central funciona a partir de:

● Un depósito: el embalse que contiene el agua. Se describe a partir del nivel de agua y el volumen
almacenado. Junto al depósito se encuentra la presa, la cual se encuentra a una altura sobre los
cimientos, posee una longitud de coronación y se mide en base al volumen del hormigón.
● La central: que contiene el generador, las turbinas y el transformador para operar la energía que llega a
través de las tuberías. Se mide a través del salto y el caudal.
● Red de distribución: La red de distribución se compone de los distintos transformadores o estaciones, la
red de transporte que conecta las distintas estaciones con los consumidores o la demanda final. La
capacidad instalada de la planta es de alrededor de 200MW.

A través de los sistemas de ClosedFlows puedes adquirir todas las estadísticas que necesites a través de su
integración, entre estas las relacionadas a la hidroeléctrica en sí (depósito, central y red de distribución), siempre
y cuando se realice la autenticación con el sistema a través del protocolo de ClosedFlows en SAML. Por otra
parte, para la información de la distribución, el servidor se conecta con cada distribuidora de energía que le
otorga la información de la demanda de energía. Está información llega al sistema interno de ClosedFlows y
también también facilitan a sus colaboradores API's para conectarse con autenticación simple a través de token.
El sistema de monitoreo que estás construyendo monitorea principalmente el precio de la energía que se está
produciendo. Para calcular el precio primero se debe monitorear el costo, conocido como LCOE, y se calcula en
base a la capacidad, la inversión, los costos fijos, los costos variables, el factor de planta y la vida útil (todos
valores que contiene ClosedFlows). Con este valor se debe calcular un precio de la energía y el precio de la
potencia para así obtener el llamado Precios de nudo. Por otra parte, se debe alimentar de la información de la
demanda (información de cada distribuidora), obteniendo los precios a nivel de distribución. Finalmente, como
el mercado de la energía se encuentra regulado, existe una fijación de precio (valor que se obtiene a través de
una API del ministerio de energía).

Las alertas que la aplicación debe gatillar ocurren cuando:

● El Precio de nudo es menor al LCOE


● El Precio de nudo es igual al precio fijado
● El Precio final del usuario (suma del precio de nudo y precio de distribución) para un distribuidor es
superior al precio promedio de mercado (valor que se obtiene a través de una API del ministerio de
energía).

1) ¿Qué metodología de trabajo propone para abordar este proyecto? Considerar su respuesta en dos
partes: metodología con el equipo no técnico y metodología en cuanto al software en cuestión.
Responder en un máximo de 6 líneas. [10 puntos]
2) Realice un diagrama de despliegue del sistema. Puede usar https://draw.io/, usar un software de
diagramado a gusto o realizar el diagrama en papel y tomar una foto. Lo importante es respetar la
notación y las convenciones. Recuerde ser concreto y no dejar detalles importantes fuera. [15 puntos]
3) Realice un diagrama de clases que abstraiga el sistema de monitoreo que estará desarrollando, poniendo
énfasis en la sección de alerta sobre el precio final del usuario. Puede usar https://draw.io/, usar un
software de diagramado a gusto o realizar el diagrama en papel y tomar una foto. Lo importante es
respetar la notación y las convenciones. Recuerde ser concreto y no dejar detalles importantes fuera.
[15 puntos]
Pregunta 2 [30 puntos]
Considere el siguiente código en C# y su equivalente en Ruby el cual es parte de un programa de juego de cartas
con baraja inglesa. En base a lo anterior responda las siguientes preguntas.
public class Clover : Card
{

public int n;
public string c;

public Clover(int numero_pica, string color)


{
this.n = numero_pica;
this.c = color;
}

public GraphicRepresentation GetImage() {


string nameCard = "";

if (numero_pica > 10 || numero_pica <= 1)


{
switch(number)
{
case 11:
nameCard = "J";
break;
case 12:
nameCard = "Q";
break;
case 13:
nameCard = "K";
break;
case 1:
nameCard = "Ace";
break;
case 0:
nameCard = "Joker";
break;
}
}

GraphicRepresentation lqm = new GraphicRepresentation("Clover",


nameCard, color)
return lqm;
}
}

class Clover < Card


attr_accessor :n, :c

def initialize(numero_pica, color)


@n = numero_pica
@c = color
end

def getImage
nameCard = ""

if n > 10 || n <= 1
case n
when 11
nameCard = "J"
when 12
nameCard = "Q"
when 13
nameCard = "K"
when 1
nameCard = "Ace"
when 0
nameCard = "Joker"
end
end

lqm = GraphicRepresentation.new("Clover", nameCard, color)


lqm
end
end

1. ¿Cuál es la complejidad ciclomática de la función GetImage()? Explique cómo llegó a su resultado puede
utilizar un diagrama para apoyar su respuesta. [5 puntos]
2. Identifique y justifique para cada principio SOLID sí el principio se cumple, se transgrede o no aplica en la
clase. Utilice como máximo 5 líneas para cada principio. [15 puntos]
3. ¿Qué inconsistencias identifica en el código que afecten la mantenibilidad? Identifique a lo menos 2 y para
cada problema identificado ofrezca una solución. [10 puntos]
Pregunta 3 [20 puntos]
De acuerdo a los contenidos del curso y charlas de invitados, argumente y justifique a favor o en contra cada una
de las siguientes afirmaciones. Justifique en un máximo de 5 líneas. Si utiliza fuentes, citas o afirmaciones
externas, recuerde mencionar la fuente de su afirmación.

1. En un proyecto de software siempre existe una solución óptima [10 puntos]


2. Está bien sacrificar adaptabilidad en razón de aumentar la consistencia [10 puntos]

También podría gustarte